public inbox for isar-users@googlegroups.com
 help / color / mirror / Atom feed
From: Anton Mikanovich <amikan@ilbers.de>
To: isar-users@googlegroups.com
Cc: Anton Mikanovich <amikan@ilbers.de>
Subject: [PATCH v2 3/4] meta: unify cross selection
Date: Mon, 13 Feb 2023 09:56:10 +0200	[thread overview]
Message-ID: <20230213075611.5694-4-amikan@ilbers.de> (raw)
In-Reply-To: <20230213075611.5694-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 | 17 +---------------
 meta/classes/crossvars.bbclass   | 33 ++++++++++++++++++++++++++++++++
 meta/classes/dpkg-base.bbclass   |  2 +-
 meta/classes/dpkg.bbclass        |  2 +-
 meta/classes/sbuild.bbclass      | 17 +---------------
 meta/classes/sdk.bbclass         | 17 +++-------------
 6 files changed, 40 insertions(+), 48 deletions(-)
 create mode 100644 meta/classes/crossvars.bbclass

diff --git a/meta/classes/buildchroot.bbclass b/meta/classes/buildchroot.bbclass
index 3d68d29..e4a7a57 100644
--- a/meta/classes/buildchroot.bbclass
+++ b/meta/classes/buildchroot.bbclass
@@ -3,22 +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:
-        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 0000000..3686dbe
--- /dev/null
+++ b/meta/classes/crossvars.bbclass
@@ -0,0 +1,33 @@
+# 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')
+    distro_arch = d.getVar('DISTRO_ARCH')
+    if mode == "0" or d.getVar('HOST_ARCH') ==  distro_arch:
+        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') == "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 ad28f7b..4c0fdc7 100644
--- a/meta/classes/dpkg-base.bbclass
+++ b/meta/classes/dpkg-base.bbclass
@@ -295,7 +295,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'))
     debdistroname = d.getVar('DEBDISTRONAME')
 
diff --git a/meta/classes/dpkg.bbclass b/meta/classes/dpkg.bbclass
index d528503..52c200d 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 ea3fb34..995f7a5 100644
--- a/meta/classes/sbuild.bbclass
+++ b/meta/classes/sbuild.bbclass
@@ -5,22 +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:
-        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 0a98ea0..d7add82 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.34.1


  parent reply	other threads:[~2023-02-13  7:56 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-13  7:56 [PATCH v2 0/4] Fix ccache issues Anton Mikanovich
2023-02-13  7:56 ` [PATCH v2 1/4] ccache: fix dirs creation Anton Mikanovich
2023-02-13  7:56 ` [PATCH v2 2/4] ccache: fix CCACHE_DIR owner for sbuild Anton Mikanovich
2023-02-13  7:56 ` Anton Mikanovich [this message]
2023-02-13  7:56 ` [PATCH v2 4/4] ccache: separate cache based on cross compile Anton Mikanovich
2023-02-13  8:01 ` [PATCH v2 0/4] Fix ccache issues Anton Mikanovich
2023-03-27  5:27 ` Uladzimir Bely
2023-03-28 15:51   ` Moessbauer, Felix
2023-03-28 15:56     ` Uladzimir Bely
2023-03-29 12:43       ` Moessbauer, Felix
2023-03-30  7:37         ` Uladzimir Bely
2023-04-02 18:44         ` Baurzhan Ismagulov
2023-04-05 11:56           ` Moessbauer, Felix
2023-04-05 13:28             ` Baurzhan Ismagulov
2023-04-10  5:44               ` 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=20230213075611.5694-4-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