From: Anton Mikanovich <amikan@ilbers.de>
To: isar-users@googlegroups.com
Cc: Anton Mikanovich <amikan@ilbers.de>
Subject: [PATCH 4/5] meta: unify cross selection
Date: Mon, 19 Dec 2022 17:29:32 +0300 [thread overview]
Message-ID: <20221219142933.12437-5-amikan@ilbers.de> (raw)
In-Reply-To: <20221219142933.12437-1-amikan@ilbers.de>
Unify and move ISAR_CROSS_COMPILE related logic into one location.
Signed-off-by: Anton Mikanovich <amikan@ilbers.de>
---
meta/classes/buildchroot.bbclass | 18 +----------------
meta/classes/crossvars.bbclass | 34 ++++++++++++++++++++++++++++++++
meta/classes/dpkg-base.bbclass | 2 +-
meta/classes/dpkg.bbclass | 2 +-
meta/classes/sbuild.bbclass | 18 +----------------
meta/classes/sdk.bbclass | 17 +++-------------
6 files changed, 41 insertions(+), 50 deletions(-)
create mode 100644 meta/classes/crossvars.bbclass
diff --git a/meta/classes/buildchroot.bbclass b/meta/classes/buildchroot.bbclass
index 72eb80bc..06acc2da 100644
--- a/meta/classes/buildchroot.bbclass
+++ b/meta/classes/buildchroot.bbclass
@@ -3,23 +3,7 @@
#
# SPDX-License-Identifier: MIT
-ISAR_CROSS_COMPILE ??= "0"
-
-# Choose the correct buildchroot: host or target
-python __anonymous() {
- mode = d.getVar('ISAR_CROSS_COMPILE', True)
- distro_arch = d.getVar('DISTRO_ARCH')
- if mode == "0" or d.getVar('HOST_ARCH') == distro_arch or \
- (d.getVar('HOST_DISTRO') == "debian-stretch" and distro_arch == "i386"):
- dep = "buildchroot-target:do_build"
- rootfs = d.getVar('BUILDCHROOT_TARGET_DIR', False)
- else:
- dep = "buildchroot-host:do_build"
- rootfs = d.getVar('BUILDCHROOT_HOST_DIR', False)
-
- d.setVar('BUILDCHROOT_DEP', dep)
- d.setVar('BUILDCHROOT_DIR', rootfs)
-}
+inherit crossvars
MOUNT_LOCKFILE = "${BUILDCHROOT_DIR}.lock"
diff --git a/meta/classes/crossvars.bbclass b/meta/classes/crossvars.bbclass
new file mode 100644
index 00000000..9fc0f81a
--- /dev/null
+++ b/meta/classes/crossvars.bbclass
@@ -0,0 +1,34 @@
+# This software is a part of ISAR.
+# Copyright (C) 2022 ilbers GmbH
+
+ISAR_CROSS_COMPILE ??= "0"
+
+python __anonymous() {
+ import pwd
+ d.setVar('SCHROOT_USER', pwd.getpwuid(os.geteuid()).pw_name)
+
+ mode = d.getVar('ISAR_CROSS_COMPILE', True)
+ distro_arch = d.getVar('DISTRO_ARCH')
+ if mode == "0" or d.getVar('HOST_ARCH') == distro_arch or \
+ (d.getVar('HOST_DISTRO') == "debian-stretch" and distro_arch == "i386"):
+ d.setVar('BUILD_HOST_ARCH', distro_arch)
+ schroot_dir = d.getVar('SCHROOT_TARGET_DIR', False)
+ sbuild_dep = "sbuild-chroot-target:do_build"
+ buildchroot_dir = d.getVar('BUILDCHROOT_TARGET_DIR', False)
+ buildchroot_dep = "buildchroot-target:do_build"
+ sdk_toolchain = "build-essential"
+ else:
+ d.setVar('BUILD_HOST_ARCH', d.getVar('HOST_ARCH'))
+ schroot_dir = d.getVar('SCHROOT_HOST_DIR', False)
+ sbuild_dep = "sbuild-chroot-host:do_build"
+ buildchroot_dir = d.getVar('BUILDCHROOT_HOST_DIR', False)
+ buildchroot_dep = "buildchroot-host:do_build"
+ sdk_toolchain = "crossbuild-essential-" + distro_arch
+ d.setVar('SCHROOT_DIR', schroot_dir)
+ d.setVar('SCHROOT_DEP', sbuild_dep)
+ d.setVar('BUILDCHROOT_DIR', buildchroot_dir)
+ d.setVar('BUILDCHROOT_DEP', buildchroot_dep)
+ if d.getVar('ISAR_ENABLE_COMPAT_ARCH', True) == "1":
+ sdk_toolchain += " crossbuild-essential-" + d.getVar('COMPAT_DISTRO_ARCH')
+ d.setVar('TOOLCHAIN', sdk_toolchain)
+}
diff --git a/meta/classes/dpkg-base.bbclass b/meta/classes/dpkg-base.bbclass
index f2b883a6..c4aefded 100644
--- a/meta/classes/dpkg-base.bbclass
+++ b/meta/classes/dpkg-base.bbclass
@@ -291,7 +291,7 @@ python do_devshell() {
schroot = d.getVar('SBUILD_CHROOT')
isar_apt = d.getVar('ISAR_APT_REPO')
pkg_arch = d.getVar('PACKAGE_ARCH', True)
- build_arch = d.getVar('SBUILD_HOST_ARCH', True)
+ build_arch = d.getVar('BUILD_HOST_ARCH', True)
pp_pps = os.path.join(d.getVar('PP'), d.getVar('PPS'))
install_deps = ":" if d.getVar('BB_CURRENTTASK') == "devshell_nodeps" else f"mk-build-deps -i \
diff --git a/meta/classes/dpkg.bbclass b/meta/classes/dpkg.bbclass
index 7822b14d..c084fdf0 100644
--- a/meta/classes/dpkg.bbclass
+++ b/meta/classes/dpkg.bbclass
@@ -102,7 +102,7 @@ dpkg_runbuild() {
DSC_FILE=$(find ${WORKDIR} -name "${DEB_SOURCE_NAME}*.dsc" -print)
sbuild -A -n -c ${SBUILD_CHROOT} --extra-repository="${ISAR_APT_REPO}" \
- --host=${PACKAGE_ARCH} --build=${SBUILD_HOST_ARCH} ${profiles} \
+ --host=${PACKAGE_ARCH} --build=${BUILD_HOST_ARCH} ${profiles} \
--no-run-lintian --no-run-piuparts --no-run-autopkgtest --resolve-alternatives \
--no-apt-update \
--chroot-setup-commands="echo \"Package: *\nPin: release n=${DEBDISTRONAME}\nPin-Priority: 1000\" > /etc/apt/preferences.d/isar-apt" \
diff --git a/meta/classes/sbuild.bbclass b/meta/classes/sbuild.bbclass
index b49eae79..d61f0fda 100644
--- a/meta/classes/sbuild.bbclass
+++ b/meta/classes/sbuild.bbclass
@@ -5,23 +5,7 @@ SCHROOT_CONF ?= "/etc/schroot"
SCHROOT_MOUNTS ?= ""
-python __anonymous() {
- import pwd
- d.setVar('SCHROOT_USER', pwd.getpwuid(os.geteuid()).pw_name)
-
- mode = d.getVar('ISAR_CROSS_COMPILE', True)
- distro_arch = d.getVar('DISTRO_ARCH')
- if mode == "0" or d.getVar('HOST_ARCH') == distro_arch or \
- (d.getVar('HOST_DISTRO') == "debian-stretch" and distro_arch == "i386"):
- d.setVar('SBUILD_HOST_ARCH', distro_arch)
- d.setVar('SCHROOT_DIR', d.getVar('SCHROOT_TARGET_DIR', False))
- dep = "sbuild-chroot-target:do_build"
- else:
- d.setVar('SBUILD_HOST_ARCH', d.getVar('HOST_ARCH'))
- d.setVar('SCHROOT_DIR', d.getVar('SCHROOT_HOST_DIR', False))
- dep = "sbuild-chroot-host:do_build"
- d.setVar('SCHROOT_DEP', dep)
-}
+inherit crossvars
SBUILD_CHROOT ?= "${DEBDISTRONAME}-${SCHROOT_USER}-${ISAR_BUILD_UUID}-${@os.getpid()}"
diff --git a/meta/classes/sdk.bbclass b/meta/classes/sdk.bbclass
index 79e01a19..598e7243 100644
--- a/meta/classes/sdk.bbclass
+++ b/meta/classes/sdk.bbclass
@@ -5,6 +5,8 @@
#
# This class extends the image.bbclass to supply the creation of a sdk
+inherit crossvars
+
# hook up the -sdk image variant
BBCLASSEXTEND = "sdk"
BPN = "${PN}"
@@ -42,23 +44,10 @@ SDK_PREINSTALL += " \
devscripts \
equivs"
-# Choose the correct toolchain: cross or native
-python __anonymous() {
- mode = d.getVar('ISAR_CROSS_COMPILE', True)
- distro_arch = d.getVar('DISTRO_ARCH')
- if mode == "0" or d.getVar('HOST_ARCH') == distro_arch:
- toolchain = "build-essential"
- else:
- toolchain = "crossbuild-essential-" + distro_arch
- if d.getVar('ISAR_ENABLE_COMPAT_ARCH', True) == "1":
- toolchain += " crossbuild-essential-" + d.getVar('COMPAT_DISTRO_ARCH')
- d.setVar('TOOLCHAIN', toolchain)
-}
-
# rootfs/image overrides for the SDK
ROOTFS_ARCH_class-sdk = "${HOST_ARCH}"
ROOTFS_DISTRO_class-sdk = "${HOST_DISTRO}"
-ROOTFS_PACKAGES_class-sdk = "sdk-files ${TOOLCHAIN} ${SDK_PREINSTALL} ${SDK_INSTALL}"
+ROOTFS_PACKAGES_class-sdk = "sdk-files ${SDK_TOOLCHAIN} ${SDK_PREINSTALL} ${SDK_INSTALL}"
ROOTFS_FEATURES_append_class-sdk = " clean-package-cache generate-manifest export-dpkg-status"
ROOTFS_MANIFEST_DEPLOY_DIR_class-sdk = "${DEPLOY_DIR_SDKCHROOT}"
ROOTFS_DPKGSTATUS_DEPLOY_DIR_class-sdk = "${DEPLOY_DIR_SDKCHROOT}"
--
2.17.1
next prev parent reply other threads:[~2022-12-19 14:29 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-19 14:29 [PATCH 0/5] Fix ccache issues Anton Mikanovich
2022-12-19 14:29 ` [PATCH 1/5] ccache: fix dirs creation Anton Mikanovich
2022-12-19 15:21 ` Henning Schild
2023-02-08 8:01 ` Anton Mikanovich
2022-12-20 2:39 ` Moessbauer, Felix
2022-12-19 14:29 ` [PATCH 2/5] ccache: fix CCACHE_DIR owner for sbuild Anton Mikanovich
2022-12-19 15:23 ` Henning Schild
2022-12-20 2:40 ` Moessbauer, Felix
2023-01-12 10:00 ` Moessbauer, Felix
2023-02-08 8:15 ` Anton Mikanovich
2022-12-19 14:29 ` [PATCH 3/5] dpkg-base: remove deprecated code Anton Mikanovich
2022-12-19 14:29 ` Anton Mikanovich [this message]
2022-12-20 2:49 ` [PATCH 4/5] meta: unify cross selection Moessbauer, Felix
2022-12-19 14:29 ` [PATCH 5/5] ccache: separate cache based on cross compile Anton Mikanovich
2022-12-20 2:59 ` Moessbauer, Felix
2023-01-11 6:49 ` [PATCH 0/5] Fix ccache issues Moessbauer, Felix
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221219142933.12437-5-amikan@ilbers.de \
--to=amikan@ilbers.de \
--cc=isar-users@googlegroups.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox