From patchwork Tue Sep 22 07:28:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Kiszka X-Patchwork-Id: 78 Return-Path: Delivered-To: ilbers.mnt@gmail.com Received: by 2002:a4a:eb04:0:0:0:0:0 with SMTP id f4csp4472471ooj; Tue, 22 Sep 2020 08:30:53 -0700 (PDT) X-Received: by 2002:a5d:6784:: with SMTP id v4mr6356861wru.132.1600788540680; Tue, 22 Sep 2020 08:29:00 -0700 (PDT) ARC-Seal: i=3; a=rsa-sha256; t=1600788540; cv=pass; d=google.com; s=arc-20160816; b=AAJgMc2WyNLvbRdOqrULoP5jWou5bZhLgk+fih3Ohmf3taKUPVyRIbl4zVaWBtGOWo QuKfswQfvFzZGqrgULVoHzoAIWwHtNn6du06AeuFT/eTFPkXUXR5PK9ZReOMRh7aU3XM KS7ErUXKExYjc9OgTLz4jkZYztEZyXKNMTSlpNPGXpBitKnQw7WNLme+3yaEbtq/S5sM 9lkoqyVyHGpbAOa1mDcayQAaA7l9exc6K5TdaNLyYI2JZ6D//XsuFB+xk+MZbv6/9duH xAHCndyviP6EUbqfcLRKGADeqNtNStfJhFGFMW9JLEdt2MoGWTADBmmgPeF7aSx1V0qN nF/A== ARC-Message-Signature: i=3; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:mime-version:references:in-reply-to :message-id:date:subject:to:from:sender:dkim-signature; bh=IEpnvT2JSqnPqcdI333DPdYSMzl5wzRxKcb1kaIJqmg=; b=sXZAIgUgtHRP+0+oimREdDffkn+9jKcX86NCgVFhIs6w+AV+0jMYS+Uuajw1a8/ep0 yYJHQbTSH8Xvytt2+P66P6+wPxEUWUVsSzoTRWdyVb7SWomo5j9Ty9lQyKBs3AsikXn6 KNiIsOSUYejGCfBOGa79RJ/6wJsu/cA5CSOYdSBFzKXqyDkBO2a6nTjYmYwLcGS1945f x9VweoabyNPcSfvHl+SHFflXWWOBETTbdD0B2B9ivy21jRkGzIUsgOx2DdOOIMBhqsGA kSis30BRT3m+vMxrKqlGebOpn6KRYHZppj+eybatpzZpH3zd0uaV1y2h2FzagGqMMdWl kQRw== ARC-Authentication-Results: i=3; mx.google.com; dkim=pass header.i=@googlegroups.com header.s=20161025 header.b=j4Ulls37; arc=pass (i=2 spf=pass spfdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of isar-users+bncbcji7smnv4nbbpfqvd5qkgqexb7ppfa@googlegroups.com designates 209.85.220.55 as permitted sender) smtp.mailfrom=isar-users+bncBCJI7SMNV4NBBPFQVD5QKGQEXB7PPFA@googlegroups.com; dmarc=fail (p=NONE sp=NONE dis=NONE arc=pass) header.from=siemens.com Received: from mail-sor-f55.google.com (mail-sor-f55.google.com. [209.85.220.55]) by mx.google.com with SMTPS id v132sor2080983wmb.26.2020.09.22.08.29.00 (Google Transport Security); Tue, 22 Sep 2020 08:29:00 -0700 (PDT) Received-SPF: pass (google.com: domain of isar-users+bncbcji7smnv4nbbpfqvd5qkgqexb7ppfa@googlegroups.com designates 209.85.220.55 as permitted sender) client-ip=209.85.220.55; Authentication-Results: mx.google.com; dkim=pass header.i=@googlegroups.com header.s=20161025 header.b=j4Ulls37; arc=pass (i=2 spf=pass spfdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of isar-users+bncbcji7smnv4nbbpfqvd5qkgqexb7ppfa@googlegroups.com designates 209.85.220.55 as permitted sender) smtp.mailfrom=isar-users+bncBCJI7SMNV4NBBPFQVD5QKGQEXB7PPFA@googlegroups.com; dmarc=fail (p=NONE sp=NONE dis=NONE arc=pass) header.from=siemens.com ARC-Seal: i=2; a=rsa-sha256; t=1600788540; cv=pass; d=google.com; s=arc-20160816; b=hBCTLcV6TJFG0Jre+MjaMlK/qF72tGYUED+VKCQKWGmHoTC2uoJh3sScLsmiJt/S53 IBSeZwEK3hMvto6aeUa5kxG/Jx3snejEKgy/Ue8DrLgh+ixeYK/EvW7AGrJigLz0YWO7 NPHEoLtJ4hd3PAsU/M1esUJNC/3CLs4k6FO4e3aGowqcFI6t5c3h5RPHWJlBZnxEqWy3 ZGDvPpcKEZxNLKip++WGItDcVzw0tCDNeLnn2AE0WdN5KTGUwPALLfn3lI44JVysQxz2 reivAyeZ8Ga3vnyoawm8yApHJfW9L4AQPQxdC08de5GDQhDyu4BE/O5vejhgDahelHyk LlIA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:mime-version:references:in-reply-to :message-id:date:subject:to:from:sender:dkim-signature; bh=IEpnvT2JSqnPqcdI333DPdYSMzl5wzRxKcb1kaIJqmg=; b=RqxhnjHNZfEuIXMwunwYsXurw/Us905m2p7yh7LQa7c8lTumM82Trpap09YudgalEF CXIPyT/PJINbHfeis59yEBh27bjW5j5c9wJx1OUQAtmg27tHGwdReU8/o98Iv8IOcVn0 L9MkLmXKbgqNEJz9LGeYRFAN491cEH+NgdwqcyNc0fFtlNn2/T3/VTgXL1Y5QjSN3nlQ K3NV1kkjZqnf6Lw4uuEhpyNIEBAc14KAIfU5R4liSaWuWS5YW8OVAb4I1sc3e/FQXM69 M+KR0+ei3QDE06HvNIs7U9Kk1bUUReZE1kERAXzod2QEtvHKijvy1js5KpCieVSl4UUr gY4A== ARC-Authentication-Results: i=2; gmr-mx.google.com; spf=pass (google.com: domain of jan.kiszka@siemens.com designates 194.138.37.39 as permitted sender) smtp.mailfrom=jan.kiszka@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20161025; h=sender:from:to:subject:date:message-id:in-reply-to:references :mime-version:x-original-sender:x-original-authentication-results :precedence:mailing-list:list-id:list-post:list-help:list-archive :list-subscribe:list-unsubscribe; bh=IEpnvT2JSqnPqcdI333DPdYSMzl5wzRxKcb1kaIJqmg=; b=j4Ulls37rcym4ydhyJEsW+lCx+OFvmINJVWLyQyfKbvoF87OXAdRfT70WxqnX3GI9I PiT0oWpEToQookeAFCrmxZXx4195DrvzXScMuOEA1bXl5hRYVDWoTs+ECsjLC5J8370C mCCN99DsGtem4ZNSi6QkqqKua+A2zXD8GeI4DT8HuBLeCd4lHol8Y2jL5bi+4xHuM1pL 9lLo7vgi+FwXc66dFAobcp1F5Gx26HYiKgsirKskyOyoT2ayAe+tQtLSpn3si40YAxVV bt7rgPJDA+gvyPejNzfhgJlDTFwDBnIzA7j7OEwJ4Hg1J6mKB5t0Dw5N9AZyagRUaqey QyqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=sender:x-gm-message-state:from:to:subject:date:message-id :in-reply-to:references:mime-version:x-original-sender :x-original-authentication-results:precedence:mailing-list:list-id :x-spam-checked-in-group:list-post:list-help:list-archive :list-subscribe:list-unsubscribe; bh=IEpnvT2JSqnPqcdI333DPdYSMzl5wzRxKcb1kaIJqmg=; b=X4cfomgJEypTxCavYocxMVarGnO8DqWttisXaclA3haCp7dxRpFsxlZ0f22jV4G/rE lUkdEbO3ImBrdo2Oh7k/Yx6cevXhiSJ5rNCBufjBgCaybqcENs7OaVbwNN/glPWH6d2a B5/vZFqE3GEnntURl5JiLIw+xGK5VoaqxFjcpUXQBmvADrED35dFXexN6MsArDd/bNlu qsEYd9pHn27przLgY0oIH+9TjqnKvyZmCyDaJp6mLDqIq5C8+W0LqbCTO16aEOFGhoim Lv7Yqa3figRjkiBxhUvOSrfmuN0vgLVc2Rk9gh78ApmrjEt4f5FVsOO7xB6gZ60HjXnG KwqQ== Sender: isar-users@googlegroups.com X-Gm-Message-State: AOAM530BGfeToq8WnJNOO/HH/N0Ui+xpl7Sgk63iAhM/zIPX9juHy/LF DdXjxYCWGPI+TEgtpuWqb20= X-Google-Smtp-Source: ABdhPJyPfXo787geSZy/KNPdToBfbvyqJnCeAXhgmGIz3sWI3mjuaQVgvwNer1gZTN4HwkmCIkoEVg== X-Received: by 2002:a7b:c151:: with SMTP id z17mr1684051wmi.53.1600788540290; Tue, 22 Sep 2020 08:29:00 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a1c:98cf:: with SMTP id a198ls1751530wme.1.gmail; Tue, 22 Sep 2020 08:28:59 -0700 (PDT) X-Received: by 2002:a1c:6a08:: with SMTP id f8mr1622279wmc.151.1600788539349; Tue, 22 Sep 2020 08:28:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1600788539; cv=none; d=google.com; s=arc-20160816; b=w2eu3QzCcguCA6/2Wbe9HI9ypvwfCKq7kwFXrcqGbfUTB2mBhocjV9+LrFC/2GPVQJ 4PATXh65satds7FvsXppOdrWWqAe92qsHu/uoVk6EoHRnVeRP86bUohbwDqGgmbOMS7N 4ubDmO3FJUqVk7sjK1YjWmcQWlnJmsWkI2ISxHqYLU6L3I5sFoH1Tz3igNsz2LWhFLzn 7aJGVz5VQ7NklXGctzTfAuP4hjjEu65OnRvKcYqCPyCMwkwqzcTv3hXzIlfTCFXBUHyG m5BDfQoYGwyIHHUDzD6InntLWA4OLUET6g9HlIv5tcDIyvgniGYeBw1uhJHnn6AAV2zA 5cIw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from; bh=MgeWQsfiH8wTSN/wMcmu/f40vy/396kJwTJr6IupQNY=; b=T9tMJng7DSR78bF6e2Osi65HqpztBIbNBd96BfKBN/mfDfaTGPySyHLljSDK2f0Lau PiIt9VJd8kNy6wPSK3cKQcL2xqZJ30MyNU+/QrsBm1PhKkvB3jFrdhjrr83FS33Yps6N Yc3oS7s6BqRyePmJVVwGnhLi2uiJ6DBThuWHF8/GXIbFnOHUPasfoe9iAj0QxUIDy5nH 9CKE1HjII6zlllZnxpkvH6QNNtJqBnhs4LjkrVhfjS38enIRaFjubCOCBCDklOsBR0M+ +Pq5JMAi/RTJDXgVEpszXvjT5PBJoi/5VDkJUV5yXH0lPUV41vMws8ET27mT1Uu02+Tu vi1Q== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of jan.kiszka@siemens.com designates 194.138.37.39 as permitted sender) smtp.mailfrom=jan.kiszka@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Received: from lizzard.sbs.de (lizzard.sbs.de. [194.138.37.39]) by gmr-mx.google.com with ESMTPS id 21si89553wmj.2.2020.09.22.08.28.59 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 22 Sep 2020 08:28:59 -0700 (PDT) Received-SPF: pass (google.com: domain of jan.kiszka@siemens.com designates 194.138.37.39 as permitted sender) client-ip=194.138.37.39; Received: from mail2.sbs.de (mail2.sbs.de [192.129.41.66]) by lizzard.sbs.de (8.15.2/8.15.2) with ESMTPS id 08MFSxYc008508 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 22 Sep 2020 17:28:59 +0200 Received: from md1f2u6c.ad001.siemens.net ([139.22.130.132]) by mail2.sbs.de (8.15.2/8.15.2) with ESMTP id 08MFSsVF031723 for ; Tue, 22 Sep 2020 17:28:58 +0200 From: Jan Kiszka To: isar-users Subject: [PATCH v3 12/16] Add compat architecture support via multiarch Date: Tue, 22 Sep 2020 17:28:50 +0200 Message-Id: <970e3659843f28908d0cd08d6604ebbfac6c9cf0.1600788534.git.jan.kiszka@siemens.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: References: MIME-Version: 1.0 X-Original-Sender: jan.kiszka@siemens.com X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of jan.kiszka@siemens.com designates 194.138.37.39 as permitted sender) smtp.mailfrom=jan.kiszka@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Precedence: list Mailing-list: list isar-users@googlegroups.com; contact isar-users+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: isar-users@googlegroups.com X-Google-Group-Id: 914930254986 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: =?utf-8?q?1678548444796842798?= X-GMAIL-MSGID: =?utf-8?q?1678548444796842798?= From: Jan Kiszka 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 --- 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 44ded532..a3e2af2c 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 82b430b3..c96cc772 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}"