[PATCH] meta: Enable cross-compilation by default

17 views
Skip to first unread message

Anton Mikanovich

unread,
Nov 27, 2024, 4:42:34 AM11/27/24
to isar-...@googlegroups.com, Anton Mikanovich
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.

Signed-off-by: Anton Mikanovich <ami...@ilbers.de>
---
RECIPE-API-CHANGELOG.md | 9 +++++++++
meta-isar/conf/local.conf.sample | 4 ++--
meta/classes/crossvars.bbclass | 2 +-
3 files changed, 12 insertions(+), 3 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/meta-isar/conf/local.conf.sample b/meta-isar/conf/local.conf.sample
index 14cac313..fffe5e6a 100644
--- a/meta-isar/conf/local.conf.sample
+++ b/meta-isar/conf/local.conf.sample
@@ -157,8 +157,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..7bd7ab94 100644
--- a/meta/classes/crossvars.bbclass
+++ b/meta/classes/crossvars.bbclass
@@ -1,7 +1,7 @@
# This software is a part of ISAR.
# Copyright (C) 2022 ilbers GmbH

-ISAR_CROSS_COMPILE ??= "0"
+ISAR_CROSS_COMPILE ??= "1"

inherit compat

--
2.34.1

Anton Mikanovich

unread,
Nov 29, 2024, 6:21:23 AM11/29/24
to isar-...@googlegroups.com, Anton Mikanovich
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 <ami...@ilbers.de>
---
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 | 10 +++++++++-
kas/opt/nocrosscompile.yaml | 11 +++++++++++
meta-isar/conf/local.conf.sample | 4 ++--
meta/classes/crossvars.bbclass | 2 +-
testsuite/cibuilder.py | 10 +++++++++-
6 files changed, 41 insertions(+), 5 deletions(-)
create mode 100644 kas/opt/nocrosscompile.yaml

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..3ae921bd 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 <ub...@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
@@ -154,6 +157,11 @@ config KAS_INCLUDE_ISAR_CROSS_COMPILE
default "kas/opt/crosscompile.yaml"
depends on ISAR_CROSS_COMPILE

+config KAS_INCLUDE_NO_ISAR_CROSS_COMPILE
+ string
+ default "kas/opt/nocrosscompile.yaml"
+ depends on !ISAR_CROSS_COMPILE
+

config USE_CCACHE
bool "Use ccache during build"
diff --git a/kas/opt/nocrosscompile.yaml b/kas/opt/nocrosscompile.yaml
new file mode 100644
index 00000000..99713e1e
--- /dev/null
+++ b/kas/opt/nocrosscompile.yaml
@@ -0,0 +1,11 @@
+# This software is a part of ISAR.
+# Copyright (C) 2024 ilbers GmbH
+#
+# SPDX-License-Identifier: MIT
+
+header:
+ version: 14
+
+local_conf_header:
+ nocrosscompile: |
+ ISAR_CROSS_COMPILE = "0"
diff --git a/meta-isar/conf/local.conf.sample b/meta-isar/conf/local.conf.sample
index 14cac313..fffe5e6a 100644
--- a/meta-isar/conf/local.conf.sample
+++ b/meta-isar/conf/local.conf.sample
@@ -157,8 +157,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..7bd7ab94 100644
--- a/meta/classes/crossvars.bbclass
+++ b/meta/classes/crossvars.bbclass
@@ -1,7 +1,7 @@
# This software is a part of ISAR.
# Copyright (C) 2022 ilbers GmbH

-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

Jan Kiszka

unread,
Nov 29, 2024, 6:31:00 AM11/29/24
to Anton Mikanovich, isar-...@googlegroups.com
On 29.11.24 19:21, 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.
>

The reason to cross-compile is clear, and I suspect - but have no hard
data - that most downstream users are actually setting
ISAR_CROSS_COMPILE to 1 today. Still, those that don't will see this
change, probably more likely as broken builds than faster compilation.

The original motivation to keep this default-off is that this is also in
line with upstream Debian (except that upstream will not build via qemu
then). I'm not sure yet what is the best option, I'm only wondering what
your deeper thoughts were.

Jan
Siemens AG, Technology
Linux Expert Center

Anton Mikanovich

unread,
Nov 29, 2024, 6:56:34 AM11/29/24
to Jan Kiszka, isar-...@googlegroups.com
29/11/2024 13:30, Jan Kiszka wrote:
> On 29.11.24 19:21, 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.
>>
> The reason to cross-compile is clear, and I suspect - but have no hard
> data - that most downstream users are actually setting
> ISAR_CROSS_COMPILE to 1 today. Still, those that don't will see this
> change, probably more likely as broken builds than faster compilation.
Just like any other change mentioned in RECIPE-API-CHANGELOG.md this should
be taking into account when updating to the newer Isar version.
> The original motivation to keep this default-off is that this is also in
> line with upstream Debian (except that upstream will not build via qemu
> then). I'm not sure yet what is the best option, I'm only wondering what
> your deeper thoughts were.

My motivation was to improve user experience with default settings when Isar
is using manually with source->bitbake running scheme. I think anyone
who used
it like that experienced slow builds forgetting to set cross compile one
day.

> Jan


Anton Mikanovich

unread,
Dec 2, 2024, 10:30:12 AM12/2/24
to isar-...@googlegroups.com, Anton Mikanovich
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 <ami...@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 <ub...@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
2.34.1

Uladzimir Bely

unread,
Dec 10, 2024, 2:47:34 AM12/10/24
to Anton Mikanovich, isar-...@googlegroups.com
Applied to next.

--
Best regards,
Uladzimir.



Reply all
Reply to author
Forward
0 new messages