[v3] meta: Enable cross-compilation by default

Message ID 20241202153001.2212785-1-amikan@ilbers.de
State Accepted, archived
Headers show
Series [v3] meta: Enable cross-compilation by default | expand

Commit Message

Anton Mikanovich Dec. 2, 2024, 3:30 p.m. UTC
Make cross-compilation to be default mode if no ISAR_CROSS_COMPILE
value was set or local.conf.sample from meta-isar was used.
This will speedup the build with default settings.

Also fix CI and kas logic to address those changes.

Signed-off-by: Anton Mikanovich <amikan@ilbers.de>
---
Changes since v2:
- Simplify kas logic.
- Update source headers.

Changes since v1:
- Fix testsuite cross compile setting logic.
- Fix kas cross compile setting logic.
- Update source headers.

 RECIPE-API-CHANGELOG.md          |  9 +++++++++
 kas/opt/Kconfig                  | 11 +++++++++--
 kas/opt/crosscompile.yaml        |  6 ++++--
 meta-isar/conf/local.conf.sample |  9 ++++++---
 meta/classes/crossvars.bbclass   |  7 +++++--
 testsuite/cibuilder.py           | 10 +++++++++-
 6 files changed, 42 insertions(+), 10 deletions(-)

Comments

Uladzimir Bely Dec. 10, 2024, 7:47 a.m. UTC | #1
On Mon, 2024-12-02 at 17:30 +0200, Anton Mikanovich wrote:
> Make cross-compilation to be default mode if no ISAR_CROSS_COMPILE
> value was set or local.conf.sample from meta-isar was used.
> This will speedup the build with default settings.
> 
> Also fix CI and kas logic to address those changes.
> 
> Signed-off-by: Anton Mikanovich <amikan@ilbers.de>
> ---
> Changes since v2:
> - Simplify kas logic.
> - Update source headers.
> 
> Changes since v1:
> - Fix testsuite cross compile setting logic.
> - Fix kas cross compile setting logic.
> - Update source headers.
> 
>  RECIPE-API-CHANGELOG.md          |  9 +++++++++
>  kas/opt/Kconfig                  | 11 +++++++++--
>  kas/opt/crosscompile.yaml        |  6 ++++--
>  meta-isar/conf/local.conf.sample |  9 ++++++---
>  meta/classes/crossvars.bbclass   |  7 +++++--
>  testsuite/cibuilder.py           | 10 +++++++++-
>  6 files changed, 42 insertions(+), 10 deletions(-)
> 
> diff --git a/RECIPE-API-CHANGELOG.md b/RECIPE-API-CHANGELOG.md
> index deb1c4e1..f310553a 100644
> --- a/RECIPE-API-CHANGELOG.md
> +++ b/RECIPE-API-CHANGELOG.md
> @@ -693,3 +693,12 @@ Previous implementation still can be selected by
> setting in local.conf:
>  
>  PREFERRED_PROVIDER_bootstrap-host ?= "isar-bootstrap-host"
>  PREFERRED_PROVIDER_bootstrap-target ?= "isar-bootstrap-target"
> +
> +### Cross-compilation is enabled by default
> +
> +Default ISAR_CROSS_COMPILE value was changed to "1".
> +There is no more need to set global ISAR_CROSS_COMPILE = "1" in
> local.conf to
> +enable cross-compilation. Otherwize ISAR_CROSS_COMPILE = "0" now
> should be set
> +in local.conf to disable cross-compilation for all the recipes.
> +Sample local.conf from meta-isar used by isar-init-build-env is also
> changed
> +to enable cross-compilation by default.
> diff --git a/kas/opt/Kconfig b/kas/opt/Kconfig
> index b1b1ff16..1ec4b112 100644
> --- a/kas/opt/Kconfig
> +++ b/kas/opt/Kconfig
> @@ -1,8 +1,11 @@
>  # This software is a part of ISAR.
> -# Copyright (C) 2023 ilbers GmbH
> +# Copyright (C) 2023-2024 ilbers GmbH
> +# Copyright (C) 2024 Siemens AG
>  #
>  # Authors:
>  #  Uladzimir Bely <ubely@ilbers.de>
> +#
> +# SPDX-License-Identifier: MIT
>  
>  menu "Mirror selection"
>  	depends on DEBIAN_BUSTER || DEBIAN_BULLSEYE ||
> DEBIAN_BOOKWORM || DEBIAN_TRIXIE || DEBIAN_SID || UBUNTU_FOCAL ||
> UBUNTU_JAMMY
> @@ -149,10 +152,14 @@ config ISAR_CROSS_COMPILE
>  	bool "Enable cross compilation mode"
>  	default y
>  
> +config KAS_ISAR_CROSS_COMPILE
> +	string
> +	default "1" if ISAR_CROSS_COMPILE
> +	default "0" if !ISAR_CROSS_COMPILE
> +
>  config KAS_INCLUDE_ISAR_CROSS_COMPILE
>  	string
>  	default "kas/opt/crosscompile.yaml"
> -	depends on ISAR_CROSS_COMPILE
>  
>  
>  config USE_CCACHE
> diff --git a/kas/opt/crosscompile.yaml b/kas/opt/crosscompile.yaml
> index 1b927ebd..4ec26d92 100644
> --- a/kas/opt/crosscompile.yaml
> +++ b/kas/opt/crosscompile.yaml
> @@ -1,9 +1,11 @@
>  # This software is a part of ISAR.
> -# Copyright (C) 2023 ilbers GmbH
> +# Copyright (C) 2023-2024 ilbers GmbH
> +#
> +# SPDX-License-Identifier: MIT
>  
>  header:
>    version: 14
>  
>  local_conf_header:
>    crosscompile: |
> -    ISAR_CROSS_COMPILE = "1"
> +    ISAR_CROSS_COMPILE = "${KAS_ISAR_CROSS_COMPILE}"
> diff --git a/meta-isar/conf/local.conf.sample b/meta-
> isar/conf/local.conf.sample
> index 14cac313..b59f310b 100644
> --- a/meta-isar/conf/local.conf.sample
> +++ b/meta-isar/conf/local.conf.sample
> @@ -1,5 +1,8 @@
>  # This software is a part of ISAR.
> -# Copyright (C) 2023 ilbers GmbH
> +# Copyright (C) 2016-2024 ilbers GmbH
> +# Copyright (C) 2017-2024 Siemens AG
> +#
> +# SPDX-License-Identifier: MIT
>  
>  #
>  # This file is your local configuration file and is where all local
> user settings
> @@ -157,8 +160,8 @@ IMAGE_INSTALL:remove:qemuamd64-sb = "example-
> module-${KERNEL_NAME}"
>  IMAGE_INSTALL:append:qemuamd64-sb = " example-module-signed-
> ${KERNEL_NAME}"
>  
>  #
> -# Enable cross-compilation support
> -ISAR_CROSS_COMPILE ?= "0"
> +# Uncomment this to disable cross-compilation support
> +#ISAR_CROSS_COMPILE ?= "0"
>  
>  #
>  # Uncomment to enable 32-bit compat architecture support
> diff --git a/meta/classes/crossvars.bbclass
> b/meta/classes/crossvars.bbclass
> index 00326c9a..1a88d457 100644
> --- a/meta/classes/crossvars.bbclass
> +++ b/meta/classes/crossvars.bbclass
> @@ -1,7 +1,10 @@
>  # This software is a part of ISAR.
> -# Copyright (C) 2022 ilbers GmbH
> +# Copyright (C) 2023-2024 ilbers GmbH
> +# Copyright (C) 2023-2024 Siemens AG
> +#
> +# SPDX-License-Identifier: MIT
>  
> -ISAR_CROSS_COMPILE ??= "0"
> +ISAR_CROSS_COMPILE ??= "1"
>  
>  inherit compat
>  
> diff --git a/testsuite/cibuilder.py b/testsuite/cibuilder.py
> index 9fa3d86c..b5b6a093 100755
> --- a/testsuite/cibuilder.py
> +++ b/testsuite/cibuilder.py
> @@ -1,4 +1,10 @@
>  #!/usr/bin/env python3
> +#
> +# This software is a part of ISAR.
> +# Copyright (C) 2022-2024 ilbers GmbH
> +# Copyright (C) 2022-2024 Siemens AG
> +#
> +# SPDX-License-Identifier: MIT
>  
>  import logging
>  import os
> @@ -168,7 +174,9 @@ class CIBuilder(Test):
>                  f.write('ISAR_ENABLE_COMPAT_ARCH:arm64 = "1"\n')
>                  f.write('IMAGE_INSTALL:remove:arm64 = "hello-
> isar"\n')
>                  f.write('IMAGE_INSTALL:append:arm64 = " hello-isar-
> compat"\n')
> -            if cross:
> +            if not cross:
> +                f.write('ISAR_CROSS_COMPILE = "0"\n')
> +            else:
>                  f.write('ISAR_CROSS_COMPILE = "1"\n')
>                  f.write(
>                      'IMAGE_INSTALL:append:hikey = '
> -- 
> 2.34.1
> 

Applied to next.

Patch

diff --git a/RECIPE-API-CHANGELOG.md b/RECIPE-API-CHANGELOG.md
index deb1c4e1..f310553a 100644
--- a/RECIPE-API-CHANGELOG.md
+++ b/RECIPE-API-CHANGELOG.md
@@ -693,3 +693,12 @@  Previous implementation still can be selected by setting in local.conf:
 
 PREFERRED_PROVIDER_bootstrap-host ?= "isar-bootstrap-host"
 PREFERRED_PROVIDER_bootstrap-target ?= "isar-bootstrap-target"
+
+### Cross-compilation is enabled by default
+
+Default ISAR_CROSS_COMPILE value was changed to "1".
+There is no more need to set global ISAR_CROSS_COMPILE = "1" in local.conf to
+enable cross-compilation. Otherwize ISAR_CROSS_COMPILE = "0" now should be set
+in local.conf to disable cross-compilation for all the recipes.
+Sample local.conf from meta-isar used by isar-init-build-env is also changed
+to enable cross-compilation by default.
diff --git a/kas/opt/Kconfig b/kas/opt/Kconfig
index b1b1ff16..1ec4b112 100644
--- a/kas/opt/Kconfig
+++ b/kas/opt/Kconfig
@@ -1,8 +1,11 @@ 
 # This software is a part of ISAR.
-# Copyright (C) 2023 ilbers GmbH
+# Copyright (C) 2023-2024 ilbers GmbH
+# Copyright (C) 2024 Siemens AG
 #
 # Authors:
 #  Uladzimir Bely <ubely@ilbers.de>
+#
+# SPDX-License-Identifier: MIT
 
 menu "Mirror selection"
 	depends on DEBIAN_BUSTER || DEBIAN_BULLSEYE || DEBIAN_BOOKWORM || DEBIAN_TRIXIE || DEBIAN_SID || UBUNTU_FOCAL || UBUNTU_JAMMY
@@ -149,10 +152,14 @@  config ISAR_CROSS_COMPILE
 	bool "Enable cross compilation mode"
 	default y
 
+config KAS_ISAR_CROSS_COMPILE
+	string
+	default "1" if ISAR_CROSS_COMPILE
+	default "0" if !ISAR_CROSS_COMPILE
+
 config KAS_INCLUDE_ISAR_CROSS_COMPILE
 	string
 	default "kas/opt/crosscompile.yaml"
-	depends on ISAR_CROSS_COMPILE
 
 
 config USE_CCACHE
diff --git a/kas/opt/crosscompile.yaml b/kas/opt/crosscompile.yaml
index 1b927ebd..4ec26d92 100644
--- a/kas/opt/crosscompile.yaml
+++ b/kas/opt/crosscompile.yaml
@@ -1,9 +1,11 @@ 
 # This software is a part of ISAR.
-# Copyright (C) 2023 ilbers GmbH
+# Copyright (C) 2023-2024 ilbers GmbH
+#
+# SPDX-License-Identifier: MIT
 
 header:
   version: 14
 
 local_conf_header:
   crosscompile: |
-    ISAR_CROSS_COMPILE = "1"
+    ISAR_CROSS_COMPILE = "${KAS_ISAR_CROSS_COMPILE}"
diff --git a/meta-isar/conf/local.conf.sample b/meta-isar/conf/local.conf.sample
index 14cac313..b59f310b 100644
--- a/meta-isar/conf/local.conf.sample
+++ b/meta-isar/conf/local.conf.sample
@@ -1,5 +1,8 @@ 
 # This software is a part of ISAR.
-# Copyright (C) 2023 ilbers GmbH
+# Copyright (C) 2016-2024 ilbers GmbH
+# Copyright (C) 2017-2024 Siemens AG
+#
+# SPDX-License-Identifier: MIT
 
 #
 # This file is your local configuration file and is where all local user settings
@@ -157,8 +160,8 @@  IMAGE_INSTALL:remove:qemuamd64-sb = "example-module-${KERNEL_NAME}"
 IMAGE_INSTALL:append:qemuamd64-sb = " example-module-signed-${KERNEL_NAME}"
 
 #
-# Enable cross-compilation support
-ISAR_CROSS_COMPILE ?= "0"
+# Uncomment this to disable cross-compilation support
+#ISAR_CROSS_COMPILE ?= "0"
 
 #
 # Uncomment to enable 32-bit compat architecture support
diff --git a/meta/classes/crossvars.bbclass b/meta/classes/crossvars.bbclass
index 00326c9a..1a88d457 100644
--- a/meta/classes/crossvars.bbclass
+++ b/meta/classes/crossvars.bbclass
@@ -1,7 +1,10 @@ 
 # This software is a part of ISAR.
-# Copyright (C) 2022 ilbers GmbH
+# Copyright (C) 2023-2024 ilbers GmbH
+# Copyright (C) 2023-2024 Siemens AG
+#
+# SPDX-License-Identifier: MIT
 
-ISAR_CROSS_COMPILE ??= "0"
+ISAR_CROSS_COMPILE ??= "1"
 
 inherit compat
 
diff --git a/testsuite/cibuilder.py b/testsuite/cibuilder.py
index 9fa3d86c..b5b6a093 100755
--- a/testsuite/cibuilder.py
+++ b/testsuite/cibuilder.py
@@ -1,4 +1,10 @@ 
 #!/usr/bin/env python3
+#
+# This software is a part of ISAR.
+# Copyright (C) 2022-2024 ilbers GmbH
+# Copyright (C) 2022-2024 Siemens AG
+#
+# SPDX-License-Identifier: MIT
 
 import logging
 import os
@@ -168,7 +174,9 @@  class CIBuilder(Test):
                 f.write('ISAR_ENABLE_COMPAT_ARCH:arm64 = "1"\n')
                 f.write('IMAGE_INSTALL:remove:arm64 = "hello-isar"\n')
                 f.write('IMAGE_INSTALL:append:arm64 = " hello-isar-compat"\n')
-            if cross:
+            if not cross:
+                f.write('ISAR_CROSS_COMPILE = "0"\n')
+            else:
                 f.write('ISAR_CROSS_COMPILE = "1"\n')
                 f.write(
                     'IMAGE_INSTALL:append:hikey = '