public inbox for isar-users@googlegroups.com
 help / color / mirror / Atom feed
From: "Moessbauer, Felix" <felix.moessbauer@siemens.com>
To: "amikan@ilbers.de" <amikan@ilbers.de>,
	"isar-users@googlegroups.com" <isar-users@googlegroups.com>
Subject: Re: [PATCH 4/5] meta: unify cross selection
Date: Tue, 20 Dec 2022 02:49:44 +0000	[thread overview]
Message-ID: <2ce0f1be11d26b68139c3d19d06a170bf45dbbe5.camel@siemens.com> (raw)
In-Reply-To: <20221219142933.12437-5-amikan@ilbers.de>

On Mon, 2022-12-19 at 17:29 +0300, Anton Mikanovich wrote:
> 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"):

Our use of getVar is very inconsistent regarding the second parameter.
True or no-value means it is expanded. Maybe we can clean that up while
refactoring the code.
I prefer to always be precise about the expansion, as the default value
also changed over time (it was False till Yocto 2.1).

Felix

> +        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
> 


  reply	other threads:[~2022-12-20  2:49 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 ` [PATCH 4/5] meta: unify cross selection Anton Mikanovich
2022-12-20  2:49   ` Moessbauer, Felix [this message]
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=2ce0f1be11d26b68139c3d19d06a170bf45dbbe5.camel@siemens.com \
    --to=felix.moessbauer@siemens.com \
    --cc=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