[PATCH 0/2] 32-bit compat arch support

18 views
Skip to first unread message

Jan Kiszka

unread,
Sep 4, 2020, 8:47:24 AM9/4/20
to isar-users
This allows to build and install 32-bit packages for/on amd64 and arm64
targets. SDK is enhanced as well.

Jan

Jan Kiszka (2):
Add compat architecture support via multiarch
ci: Add compat arch support

meta-isar/conf/local.conf.sample | 5 +++++
meta-isar/recipes-app/hello-isar/hello-isar.bb | 3 +++
meta-isar/recipes-app/libhello/libhello.bb | 3 +++
meta/classes/dpkg.bbclass | 8 +++++---
meta/conf/bitbake.conf | 3 ++-
meta/conf/distro/debian-common.conf | 3 +++
.../recipes-core/isar-bootstrap/isar-bootstrap.inc | 14 +++++++++++++-
meta/recipes-devtools/buildchroot/buildchroot.inc | 5 +++++
meta/recipes-devtools/sdkchroot/sdkchroot.bb | 1 +
scripts/ci_build.sh | 6 ++++++
10 files changed, 46 insertions(+), 5 deletions(-)

--
2.26.2

Jan Kiszka

unread,
Sep 4, 2020, 8:47:25 AM9/4/20
to isar-users
From: Jan Kiszka <jan.k...@siemens.com>

Allow building and installing 32-bit packages an 64-bit architectures
that support this. Namely, these are amd64 and arm64 for us so far,
minus stretch-amd64 which lacks crossbuild-essential-i386 in that
version.

Control the target architecture of a package is added via the
PACKAGE_ARCH variable that defaults to DISTRO_ARCH. When set to
COMPAT_DISTRO_ARCH, the package is built for i386 on amd64 and armhf on
arm64.

If the build environment and the target image should contain the compat
arch is controlled via setting ISAR_ENABLE_COMPAT_ARCH to 1.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
meta-isar/conf/local.conf.sample | 5 +++++
meta/classes/dpkg.bbclass | 8 +++++---
meta/conf/bitbake.conf | 3 ++-
meta/conf/distro/debian-common.conf | 3 +++
.../recipes-core/isar-bootstrap/isar-bootstrap.inc | 14 +++++++++++++-
meta/recipes-devtools/buildchroot/buildchroot.inc | 5 +++++
meta/recipes-devtools/sdkchroot/sdkchroot.bb | 1 +
7 files changed, 34 insertions(+), 5 deletions(-)

diff --git a/meta-isar/conf/local.conf.sample b/meta-isar/conf/local.conf.sample
index e842c129..2f82020d 100644
--- a/meta-isar/conf/local.conf.sample
+++ b/meta-isar/conf/local.conf.sample
@@ -175,6 +175,11 @@ IMAGE_INSTALL = "hello-isar example-raw example-module-${KERNEL_NAME} enable-fsc
# Enable cross-compilation support
ISAR_CROSS_COMPILE ?= "0"

+#
+# Uncomment to enable 32-bit compat architecture support
+# NOTE: this works for amd64 and arm64 targets so far
+#ISAR_ENABLE_COMPAT_ARCH ?= "1"
+
#
# Uncomment this to enable use of cached base repository
#ISAR_USE_CACHED_BASE_REPO ?= "1"
diff --git a/meta/classes/dpkg.bbclass b/meta/classes/dpkg.bbclass
index acccc1f2..a24386df 100644
--- a/meta/classes/dpkg.bbclass
+++ b/meta/classes/dpkg.bbclass
@@ -3,16 +3,18 @@

inherit dpkg-base

+PACKAGE_ARCH ?= "${DISTRO_ARCH}"
+
# Install build dependencies for package
do_install_builddeps() {
dpkg_do_mounts
E="${@ isar_export_proxies(d)}"
deb_dl_dir_import "${BUILDCHROOT_DIR}"
sudo -E chroot ${BUILDCHROOT_DIR} /isar/deps.sh \
- ${PP}/${PPS} ${DISTRO_ARCH} --download-only
+ ${PP}/${PPS} ${PACKAGE_ARCH} --download-only
deb_dl_dir_export "${BUILDCHROOT_DIR}"
sudo -E chroot ${BUILDCHROOT_DIR} /isar/deps.sh \
- ${PP}/${PPS} ${DISTRO_ARCH}
+ ${PP}/${PPS} ${PACKAGE_ARCH}
dpkg_undo_mounts
}

@@ -27,5 +29,5 @@ dpkg_runbuild() {
E="${@ isar_export_proxies(d)}"
export PARALLEL_MAKE="${PARALLEL_MAKE}"
sudo -E chroot --userspec=$( id -u ):$( id -g ) ${BUILDCHROOT_DIR} \
- /isar/build.sh ${PP}/${PPS} ${DISTRO_ARCH}
+ /isar/build.sh ${PP}/${PPS} ${PACKAGE_ARCH}
}
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
index d2834f53..3f136ca1 100644
--- a/meta/conf/bitbake.conf
+++ b/meta/conf/bitbake.conf
@@ -62,8 +62,9 @@ KERNEL_FILE ?= "vmlinuz"
KERNEL_FILE_mipsel ?= "vmlinux"
KERNEL_FILE_riscv64 ?= "vmlinux"

-OVERRIDES = "${DISTRO_ARCH}:${MACHINE}:${DISTRO}:forcevariable"
+OVERRIDES = "${DISTRO_ARCH}:${COMPAT_OVERRIDE}:${MACHINE}:${DISTRO}:forcevariable"
FILESOVERRIDES = "${DISTRO_ARCH}:${MACHINE}"
+COMPAT_OVERRIDE = "${@'compat-arch' if d.getVar('ISAR_ENABLE_COMPAT_ARCH') == '1' else ''}"

# Setting default QEMU_ARCH variables for different DISTRO_ARCH:
QEMU_ARCH_amd64 = "x86_64"
diff --git a/meta/conf/distro/debian-common.conf b/meta/conf/distro/debian-common.conf
index 7d681c49..582678f6 100644
--- a/meta/conf/distro/debian-common.conf
+++ b/meta/conf/distro/debian-common.conf
@@ -22,3 +22,6 @@ GRUB_BOOTLOADER_INSTALL_armhf = "grub-efi-arm-bin"
GRUB_BOOTLOADER_INSTALL_arm64 = "grub-efi-arm64-bin"

SYSLINUX_BOOTLOADER_INSTALL = "syslinux syslinux-common"
+
+COMPAT_DISTRO_ARCH_amd64 = "i386"
+COMPAT_DISTRO_ARCH_arm64 = "armhf"
diff --git a/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc b/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc
index da0d436b..fbfe669d 100644
--- a/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc
+++ b/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc
@@ -222,7 +222,7 @@ def get_host_release():
rel = platform.release()
return rel

-do_bootstrap[vardeps] += "DISTRO_APT_PREMIRRORS"
+do_bootstrap[vardeps] += "DISTRO_APT_PREMIRRORS ISAR_ENABLE_COMPAT_ARCH"
do_bootstrap[dirs] = "${DEPLOY_DIR_BOOTSTRAP}"
do_bootstrap[depends] = "base-apt:do_cache"

@@ -236,6 +236,14 @@ isar_bootstrap() {
esac
shift
done
+ if [ "${ISAR_ENABLE_COMPAT_ARCH}" = "1" ]; then
+ if [ -z "${COMPAT_DISTRO_ARCH}" ]; then
+ bbfatal "${DISTRO_ARCH} does not have a compat arch"
+ fi
+ if [ "${@get_distro_suite(d, True)}-${COMPAT_DISTRO_ARCH}" = "stretch-i386" ]; then
+ bbfatal "compat arch build for stretch-i386 not supported"
+ fi
+ fi
debootstrap_args="--verbose --variant=minbase --include=${DISTRO_BOOTSTRAP_BASE_PACKAGES}"
if [ -f "${DISTRO_BOOTSTRAP_KEYRING}" ]; then
debootstrap_args="$debootstrap_args --keyring=${DISTRO_BOOTSTRAP_KEYRING}"
@@ -330,6 +338,10 @@ isar_bootstrap() {
chroot "${ROOTFSDIR}" /usr/bin/dpkg --add-architecture ${DISTRO_ARCH}
fi

+ if [ "${ISAR_ENABLE_COMPAT_ARCH}" = "1" ]; then
+ chroot "${ROOTFSDIR}" /usr/bin/dpkg --add-architecture ${COMPAT_DISTRO_ARCH}
+ fi
+
chroot "${ROOTFSDIR}" /usr/bin/apt-get update -y
chroot "${ROOTFSDIR}" /usr/bin/apt-get install -y -f
chroot "${ROOTFSDIR}" /usr/bin/apt-get dist-upgrade -y \
diff --git a/meta/recipes-devtools/buildchroot/buildchroot.inc b/meta/recipes-devtools/buildchroot/buildchroot.inc
index b4d7b764..835968de 100644
--- a/meta/recipes-devtools/buildchroot/buildchroot.inc
+++ b/meta/recipes-devtools/buildchroot/buildchroot.inc
@@ -22,7 +22,12 @@ ROOTFS_CLEAN_FILES = ""
ROOTFS_MANIFEST_DEPLOY_DIR = "${DEPLOY_DIR_BUILDCHROOT}"
ROOTFS_FEATURES += "generate-manifest"

+BUILDCHROOT_COMPAT_PREINSTALL_compat-arch = " \
+ libc6:${COMPAT_DISTRO_ARCH} \
+ crossbuild-essential-${COMPAT_DISTRO_ARCH}"
+
BUILDCHROOT_PREINSTALL_COMMON = " \
+ ${BUILDCHROOT_COMPAT_PREINSTALL} \
make \
debhelper \
autotools-dev \
diff --git a/meta/recipes-devtools/sdkchroot/sdkchroot.bb b/meta/recipes-devtools/sdkchroot/sdkchroot.bb
index bf3f6fb4..2bf3f5bc 100644
--- a/meta/recipes-devtools/sdkchroot/sdkchroot.bb
+++ b/meta/recipes-devtools/sdkchroot/sdkchroot.bb
@@ -22,6 +22,7 @@ DEPENDS += "${SDK_INSTALL}"
TOOLCHAIN = "crossbuild-essential-${DISTRO_ARCH}"
TOOLCHAIN_${HOST_ARCH} = "build-essential"
TOOLCHAIN_i386 = "build-essential"
+TOOLCHAIN_append_compat-arch = " crossbuild-essential-${COMPAT_DISTRO_ARCH}"

inherit rootfs
ROOTFS_ARCH = "${HOST_ARCH}"
--
2.26.2

Jan Kiszka

unread,
Sep 4, 2020, 8:47:25 AM9/4/20
to isar-users
From: Jan Kiszka <jan.k...@siemens.com>

Build hello-isar and libisar for the compat arch if that is enabled.
Set ISAR_ENABLE_COMPAT_ARCH for all supported combinations in CI.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
meta-isar/recipes-app/hello-isar/hello-isar.bb | 3 +++
meta-isar/recipes-app/libhello/libhello.bb | 3 +++
scripts/ci_build.sh | 6 ++++++
3 files changed, 12 insertions(+)

diff --git a/meta-isar/recipes-app/hello-isar/hello-isar.bb b/meta-isar/recipes-app/hello-isar/hello-isar.bb
index 144a433e..8c3ba8b2 100644
--- a/meta-isar/recipes-app/hello-isar/hello-isar.bb
+++ b/meta-isar/recipes-app/hello-isar/hello-isar.bb
@@ -20,4 +20,7 @@ SRC_URI = " \
file://yet-another-change.txt;apply=yes;striplevel=0"
SRCREV = "a18c14cc11ce6b003f3469e89223cffb4016861d"

+# NOTE: This is just to test 32-bit building on 64-bit archs.
+PACKAGE_ARCH_compat-arch = "${COMPAT_DISTRO_ARCH}"
+
inherit dpkg
diff --git a/meta-isar/recipes-app/libhello/libhello.bb b/meta-isar/recipes-app/libhello/libhello.bb
index ab271b58..5c44de50 100644
--- a/meta-isar/recipes-app/libhello/libhello.bb
+++ b/meta-isar/recipes-app/libhello/libhello.bb
@@ -13,4 +13,7 @@ PV = "0.1-98f2e41"
SRC_URI = "git://github.com/ilbers/libhello.git;protocol=https;destsuffix=${P}"
SRCREV = "98f2e41e7d05ab8d19b0c5d160b104b725c8fd93"

+# NOTE: This is just to test 32-bit building on 64-bit archs.
+PACKAGE_ARCH_compat-arch = "${COMPAT_DISTRO_ARCH}"
+
inherit dpkg
diff --git a/scripts/ci_build.sh b/scripts/ci_build.sh
index d2c707b8..461fd5cc 100755
--- a/scripts/ci_build.sh
+++ b/scripts/ci_build.sh
@@ -139,6 +139,12 @@ if [ ! -d "$BUILD_DIR" ]; then
fi
source isar-init-build-env "$BUILD_DIR"

+cat >>conf/local.conf <<EOF
+ISAR_ENABLE_COMPAT_ARCH_amd64 = "1"
+ISAR_ENABLE_COMPAT_ARCH_arm64 = "1"
+ISAR_ENABLE_COMPAT_ARCH_debian-stretch_amd64 = "0"
+EOF
+
if [ -n "$CROSS_BUILD" ]; then
sed -i -e 's/ISAR_CROSS_COMPILE ?= "0"/ISAR_CROSS_COMPILE ?= "1"/g' conf/local.conf
fi
--
2.26.2

Jan Kiszka

unread,
Sep 8, 2020, 4:54:00 AM9/8/20
to isar-users
This triggers a problem:

In a multiconfig setup like our CI, building the 32-bit package from
both the native 32-bit arch as well as the 64-bit arch now races. If the
64-bit arch tries to install its self-built compat package, that may
just be under re-deployment by the 32-bit arch, and the build fails.

Options:
- somehow express that both archs provide the same package (though that
may defeat the purpose of testing the compat build)
- split isar-apt per arch, not just per distro

Suggestions?

Jan

--
Siemens AG, Corporate Technology, CT RDA IOT SES-DE
Corporate Competence Center Embedded Linux

Henning Schild

unread,
Sep 9, 2020, 9:44:45 AM9/9/20
to [ext] Jan Kiszka, isar-users
The purpose is that people want to use compat because they have just
one image.

> - split isar-apt per arch, not just per distro

But would the compat not need to include both now, and the mc enemy
would still mess with one of them?

- better/more locking around isar-apt readers and writers

> Suggestions?

Well one thing ... but i do not want to repeat myself ...

Henning

> Jan
>

Jan Kiszka

unread,
Sep 10, 2020, 2:51:34 AM9/10/20
to Henning Schild, isar-users
Well, one could imagine building a legacy application for both an old
ARMv7 device as well as for a new ARMv8 design. All that in one build
run (mc:...). Then the user would have to express that
my_beloved_legacy_app is actually a dependency that only needs to be
built once, and it would not matter if that is done by the armhf
buildchroot or via compat by the arm64 one.

>
>> - split isar-apt per arch, not just per distro
>
> But would the compat not need to include both now, and the mc enemy
> would still mess with one of them?

We would have isar-apt/apt/debian-buster-armhf, debian-buster-arm64
etc., but all of them able to carry packages for any arch.

>
> - better/more locking around isar-apt readers and writers
>

Nope, that would only paper over the fact that a package is built twice
and the one to be used would be chosen by chance. Bad for reliable testing.

Jan

>> Suggestions?
>
> Well one thing ... but i do not want to repeat myself ...
>
> Henning
>
>> Jan
>>
>

Jan Kiszka

unread,
Sep 10, 2020, 2:54:02 AM9/10/20
to Henning Schild, isar-users
I think I know the answer for our testing scenario: call the the
compat-variant of hello-isar "hello-isar-compat" and request that
package in the 64-bit image. Then both build paths are stressed, and
everyone gets what is desired.

Let me try that later...

Jan

Henning Schild

unread,
Sep 10, 2020, 6:34:14 AM9/10/20
to Jan Kiszka, isar-users
Am Thu, 10 Sep 2020 08:54:00 +0200
schrieb Jan Kiszka <jan.k...@siemens.com>:
If you manage to just rename it on the bitbake side ... maybe. Think
about a compat rebuild of a lib where you want to keep using debian
packages using that shared lib and not mess with all deps. You would
also create conflicting packages if you rename in debian.

Henning

Jan Kiszka

unread,
Sep 11, 2020, 8:13:11 AM9/11/20
to isar-users
This allows to build and install 32-bit packages for/on amd64 and arm64
targets. SDK is enhanced as well.

Changes in v2:
- switched from hello-isar to samefile as compat package, resolving
conflicts with 32-bit arch when building in parallel
- add doc entry

Jan

Jan Kiszka (4):
Add compat architecture support via multiarch
ci: Add compat arch support
doc: Enhance list of supported cross-archs, drop QEMU reference
doc: Describe new compat arch support

doc/user_manual.md | 25 ++++++++++++++++---
meta-isar/conf/local.conf.sample | 10 ++++++++
.../recipes-app/samefile/samefile_2.14.bb | 6 +++++
meta/classes/dpkg.bbclass | 8 +++---
meta/conf/bitbake.conf | 3 ++-
meta/conf/distro/debian-common.conf | 3 +++
.../isar-bootstrap/isar-bootstrap.inc | 14 ++++++++++-
.../buildchroot/buildchroot.inc | 5 ++++
meta/recipes-devtools/sdkchroot/sdkchroot.bb | 1 +
scripts/ci_build.sh | 6 +++++
10 files changed, 72 insertions(+), 9 deletions(-)

--
2.26.2

Jan Kiszka

unread,
Sep 11, 2020, 8:13:12 AM9/11/20
to isar-users
From: Jan Kiszka <jan.k...@siemens.com>

Build samefile for the compat arch if that is enabled. Set
ISAR_ENABLE_COMPAT_ARCH for all supported combinations in CI.

As deploy this 32-bit package from the 64-bit image build would conflict
with the same package generated by the 32-bit image build, rename the
compat package in that case.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
meta-isar/conf/local.conf.sample | 5 +++++
meta-isar/recipes-app/samefile/samefile_2.14.bb | 6 ++++++
scripts/ci_build.sh | 6 ++++++
3 files changed, 17 insertions(+)

diff --git a/meta-isar/conf/local.conf.sample b/meta-isar/conf/local.conf.sample
index 2f82020d..cefdbae9 100644
--- a/meta-isar/conf/local.conf.sample
+++ b/meta-isar/conf/local.conf.sample
@@ -180,6 +180,11 @@ ISAR_CROSS_COMPILE ?= "0"
# NOTE: this works for amd64 and arm64 targets so far
#ISAR_ENABLE_COMPAT_ARCH ?= "1"

+#
+# NOTE: This is just to test 32-bit building on 64-bit archs.
+IMAGE_INSTALL_remove_compat-arch = " samefile"
+IMAGE_INSTALL_append_compat-arch = " samefile-compat"
+
#
# Uncomment this to enable use of cached base repository
#ISAR_USE_CACHED_BASE_REPO ?= "1"
diff --git a/meta-isar/recipes-app/samefile/samefile_2.14.bb b/meta-isar/recipes-app/samefile/samefile_2.14.bb
index 5e36a2ac..50f9ced0 100644
--- a/meta-isar/recipes-app/samefile/samefile_2.14.bb
+++ b/meta-isar/recipes-app/samefile/samefile_2.14.bb
@@ -15,6 +15,12 @@ DESCRIPTION = "utility that finds files with identical contents"
SRC_URI = "http://www.schweikhardt.net/samefile-2.14.tar.gz"
SRC_URI[md5sum] = "0b438249f3549f18b49cbb49b0473f70"

+# NOTE: This is just to test 32-bit building on 64-bit archs.
+# We need to rename the package to avoid the conflict with parallel armhf
+# image builds.
+PACKAGE_ARCH_compat-arch = "${COMPAT_DISTRO_ARCH}"
+PN_compat-arch = "samefile-compat"
+
do_prepare_build[cleandirs] += "${S}/debian"
do_prepare_build() {
# You could also create parts of your debianization before calling
diff --git a/scripts/ci_build.sh b/scripts/ci_build.sh
index d2c707b8..461fd5cc 100755
--- a/scripts/ci_build.sh
+++ b/scripts/ci_build.sh
@@ -139,6 +139,12 @@ if [ ! -d "$BUILD_DIR" ]; then
fi
source isar-init-build-env "$BUILD_DIR"

+cat >>conf/local.conf <<EOF
+ISAR_ENABLE_COMPAT_ARCH_amd64 = "1"
+ISAR_ENABLE_COMPAT_ARCH_arm64 = "1"
+ISAR_ENABLE_COMPAT_ARCH_debian-stretch_amd64 = "0"
+EOF
+
if [ -n "$CROSS_BUILD" ]; then
sed -i -e 's/ISAR_CROSS_COMPILE ?= "0"/ISAR_CROSS_COMPILE ?= "1"/g' conf/local.conf
fi
--
2.26.2

Jan Kiszka

unread,
Sep 11, 2020, 8:13:12 AM9/11/20
to isar-users
From: Jan Kiszka <jan.k...@siemens.com>

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
doc/user_manual.md | 13 +++++++++++++
1 file changed, 13 insertions(+)

diff --git a/doc/user_manual.md b/doc/user_manual.md
index 9c28d165..60802dc6 100644
--- a/doc/user_manual.md
+++ b/doc/user_manual.md
@@ -723,6 +723,19 @@ Debian cross-compilation works out of the box starting from Debian stretch distr

Experimental support for riscv64 is available as well.

+### Cross-building for a compat architecture
+
+Some architectures, under Isar amd64 and arm64 so far, support running 32-bit
+legacy applications on 64-bit kernels. Debian supports this via the multiarch
+concept.
+
+Isar can build 32-bit packages as part of a 64-bit image build and also enable
+the image with the necessary packages. To activate the compat mode of a build,
+set `ISAR_ENABLE_COMPAT_ARCH = "1"` in `local.conf`. Packages that shall be
+built for the compat arch need to be tagged individually by setting
+`PACKAGE_ARCH = "${COMPAT_DISTRO_ARCH}"` in the package recipe. Non-tagged
+packages will continue to be built for the primary target architecture.
+

## Examining and debugging package generation inside their buildchroot

--
2.26.2

Jan Kiszka

unread,
Sep 11, 2020, 8:13:12 AM9/11/20
to isar-users
From: Jan Kiszka <jan.k...@siemens.com>

Allow building and installing 32-bit packages an 64-bit architectures
that support this. Namely, these are amd64 and arm64 for us so far,
minus stretch-amd64 which lacks crossbuild-essential-i386 in that
version.

Control the target architecture of a package is added via the
PACKAGE_ARCH variable that defaults to DISTRO_ARCH. When set to
COMPAT_DISTRO_ARCH, the package is built for i386 on amd64 and armhf on
arm64.

If the build environment and the target image should contain the compat
arch is controlled via setting ISAR_ENABLE_COMPAT_ARCH to 1.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
meta-isar/conf/local.conf.sample | 5 +++++
meta/classes/dpkg.bbclass | 8 +++++---
meta/conf/bitbake.conf | 3 ++-
meta/conf/distro/debian-common.conf | 3 +++
.../recipes-core/isar-bootstrap/isar-bootstrap.inc | 14 +++++++++++++-
meta/recipes-devtools/buildchroot/buildchroot.inc | 5 +++++
meta/recipes-devtools/sdkchroot/sdkchroot.bb | 1 +
7 files changed, 34 insertions(+), 5 deletions(-)

diff --git a/meta-isar/conf/local.conf.sample b/meta-isar/conf/local.conf.sample
index e842c129..2f82020d 100644
--- a/meta-isar/conf/local.conf.sample
+++ b/meta-isar/conf/local.conf.sample
@@ -175,6 +175,11 @@ IMAGE_INSTALL = "hello-isar example-raw example-module-${KERNEL_NAME} enable-fsc
# Enable cross-compilation support
ISAR_CROSS_COMPILE ?= "0"

+#
+# Uncomment to enable 32-bit compat architecture support
+# NOTE: this works for amd64 and arm64 targets so far
+#ISAR_ENABLE_COMPAT_ARCH ?= "1"
+
#
# Uncomment this to enable use of cached base repository
#ISAR_USE_CACHED_BASE_REPO ?= "1"

Jan Kiszka

unread,
Sep 11, 2020, 8:13:13 AM9/11/20
to isar-users
From: Jan Kiszka <jan.k...@siemens.com>

We also test mipsel in cross-builds. RISC-V 64-bit is available but
experimental.

Furthermore, remove the reference to qemu because Isar also supports
building cross for physical targets. This might be confusing.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
doc/user_manual.md | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/doc/user_manual.md b/doc/user_manual.md
index fb6574bb..9c28d165 100644
--- a/doc/user_manual.md
+++ b/doc/user_manual.md
@@ -714,10 +714,14 @@ put into Isar apt.

Debian cross-compilation works out of the box starting from Debian stretch distribution. Currently the following build configurations are supported in Isar:

- - qemuarm-stretch
- - qemuarm-buster
- - qemuarm64-stretch
- - qemuarm64-buster (for host >= buster)
+ - arm-stretch
+ - arm-buster
+ - arm64-stretch
+ - arm64-buster (for host >= buster)
+ - mipsel-stretch
+ - mipsel-buster (for host >= buster)
+
+Experimental support for riscv64 is available as well.

Jan Kiszka

unread,
Sep 21, 2020, 5:24:54 AM9/21/20
to isar-users
Any feedback on this? We are about to move this into production,
exposing it to end-users.

Baurzhan Ismagulov

unread,
Sep 21, 2020, 5:41:48 AM9/21/20
to isar-users
On Mon, Sep 21, 2020 at 11:24:51AM +0200, Jan Kiszka wrote:
> Any feedback on this? We are about to move this into production, exposing it
> to end-users.

Thanks for the info, will have a more detailed look and let you know.

Regarding "qemuarm-stretch" stuff: Those reference verbatim file names under
meta-isar/conf/multiconfig. Just cutting the "qemu" part is confusing as well,
as the remaining part isn't how it's called in Debian.

I've re-read the preceding paragraph, literally it doesn't imply only qemu
stuff is cross-buildable; but I see what you mean. The obvious options are 1.
to mention non-qemu configurations in the list and 2. rewrite the entries using
Debian arch names ("stretch armhf", etc.).

But let me ask the other way round, are there configurations in stock Isar that
don't support cross-building? Do we need to document the ones that do so
explicitly?

With kind regards,
Baurzhan.

Jan Kiszka

unread,
Sep 21, 2020, 8:06:37 AM9/21/20
to isar-users
On 21.09.20 11:41, Baurzhan Ismagulov wrote:
> On Mon, Sep 21, 2020 at 11:24:51AM +0200, Jan Kiszka wrote:
>> Any feedback on this? We are about to move this into production, exposing it
>> to end-users.
>
> Thanks for the info, will have a more detailed look and let you know.
>
> Regarding "qemuarm-stretch" stuff: Those reference verbatim file names under
> meta-isar/conf/multiconfig. Just cutting the "qemu" part is confusing as well,
> as the remaining part isn't how it's called in Debian.
>
> I've re-read the preceding paragraph, literally it doesn't imply only qemu
> stuff is cross-buildable; but I see what you mean. The obvious options are 1.
> to mention non-qemu configurations in the list and 2. rewrite the entries using
> Debian arch names ("stretch armhf", etc.).

I would go for option 2.

>
> But let me ask the other way round, are there configurations in stock Isar that
> don't support cross-building? Do we need to document the ones that do so
> explicitly?

Depends on what you define as being in stock Isar. If that implies
having a multiconf in meta-isar and also just being experimental
(riscv64), likely no. But there is also no statement that meta-isar
defines what works with Isar, is there?
Reply all
Reply to author
Forward
0 new messages