From patchwork Fri Sep 4 04:47:20 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Kiszka X-Patchwork-Id: 33 Return-Path: Delivered-To: ilbers.mnt@gmail.com Received: by 2002:a4a:eb04:0:0:0:0:0 with SMTP id f4csp1228858ooj; Fri, 4 Sep 2020 05:47:26 -0700 (PDT) X-Received: by 2002:a05:6512:3189:: with SMTP id i9mr3728823lfe.41.1599223645986; Fri, 04 Sep 2020 05:47:25 -0700 (PDT) ARC-Seal: i=3; a=rsa-sha256; t=1599223645; cv=pass; d=google.com; s=arc-20160816; b=uktDhkeE5j5iGIarBT9X8Eutgyy2rp3WOvljMwU9z5UcBuQoZkM04GN4ScjvikHkF7 3t0rmX0MB2RpRDVP7nJXJeVqMDLFxHXc4jxJhItGH6qBtwTP+i24SiAKauu0/XxufEKU kaf93CgWdfdUSe1EAoA1J0/wv1HPj9WvZURQzw37SDcWMSptu7/G8b8SVkbxu2XMzjr1 di/++DGLro3C0IioY7JdjDT5z+N9AUhP4xC8qTYhEH4joeLNdOiW8C9F15iF0xqYEea4 mN67NV3/ccSnWr9oKWEQNWkJV3bpvGUDdV6HZqQEgNvRl42X1EenswcNLI5A6b4cBtyk ZwUg== 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=jXryd4mmVzB4b1p0KdGrzdX66y1qU8EY3KKCA0qiHWo=; b=dASL4jCoieLLvZ9f+QX1SI1E3ysuKAXOGOn+INwpQvs+ZGlo1ttQT4g3FpCfUAyoXv ZYypqrXamF82wmmBaAC1zNluzLV/YMU60ja0WABsYcpmSFv65Y0WpeeeoZQgP6kuOQYz 07dD9Zps/VZHJRRZoUNICyRDvN1jl0dEXHG1E88Mp0yxBSeTK6ZTp4c7/4713NZaCHG4 te5ZQo7Rcrw/BEQtlrhDTlWdAK76RrbWY/6oYXxX4zqLzDCtzRVuUH8jHnTlDHwIm5Bb JBgUYJrVKluLudplAi4nFel+0FJAJ7e7suVUJJ/kuMo01FGuG9cNJA1VNAYHEE723gNb 1DpA== ARC-Authentication-Results: i=3; mx.google.com; dkim=pass header.i=@googlegroups.com header.s=20161025 header.b="NW2Q/O3A"; arc=pass (i=2 spf=pass spfdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of isar-users+bncbcji7smnv4nbbxpozd5akgqedvxtuyy@googlegroups.com designates 209.85.220.55 as permitted sender) smtp.mailfrom=isar-users+bncBCJI7SMNV4NBBXPOZD5AKGQEDVXTUYY@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 l4sor3220921ljn.0.2020.09.04.05.47.25 (Google Transport Security); Fri, 04 Sep 2020 05:47:25 -0700 (PDT) Received-SPF: pass (google.com: domain of isar-users+bncbcji7smnv4nbbxpozd5akgqedvxtuyy@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="NW2Q/O3A"; arc=pass (i=2 spf=pass spfdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of isar-users+bncbcji7smnv4nbbxpozd5akgqedvxtuyy@googlegroups.com designates 209.85.220.55 as permitted sender) smtp.mailfrom=isar-users+bncBCJI7SMNV4NBBXPOZD5AKGQEDVXTUYY@googlegroups.com; dmarc=fail (p=NONE sp=NONE dis=NONE arc=pass) header.from=siemens.com ARC-Seal: i=2; a=rsa-sha256; t=1599223645; cv=pass; d=google.com; s=arc-20160816; b=Ey7ayuiU5NAb+RFbclLFE6W/H1f8RCX6B/e9iBrr8o1rQEtZpsdm3jl0P8RJGHELhO fxFJNGSATx56XzZfwbPEw0Z4f1SGnB5OC4ZvBRbRDu4DJ4821V+6hOwFlKGmM6p0AL57 mGxUhyjWNBS7N42e83uOou4I9IeajpWoUhax2WMgaAMKG49wIRB0OTExsmUfb1pPpIj3 wnumwiEQWBdQTBPrB1Nmq298/rOFZmX0F3VytG+dCHLNwanlDN41NpqHZI4TjPVVuw+P fQUiZ+TrZ5WU92iFDO6vVGRK2DZx40HLpxbxBUXe5LeYVRbOnAhgGieNPbhSTVZwrLIg yEwQ== 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=jXryd4mmVzB4b1p0KdGrzdX66y1qU8EY3KKCA0qiHWo=; b=DcmhtQzHDOfxlsAsViDTp/86/RrFs7NtLpKy43IsPnNhAmsdCHt2rjqzM4lt4vulZv 43F9rtRE+fqNP+CjgIgxxVitgJuZZG76FtQham/xfahCyIaik1+J396zOWcPPCxV6GEk V44x5L8IO4b5fFOqTtvC9oZqt3yyQX+NF1G2Yxohcc96iNIA+/0K1CFsEYJeO2r0V6OP LEI9VbdczXsTFxIgS5BaTZrjNnnf8M4PKU1TgY80GMNgjIj5pEg1kAsyzeW11znG3Ngz WWhlB9SzynqiAvRpuKVdh3hq9pvek+OIGVsCQtChamQo2eGkgPBDds5Ou7l2Lv3rK4s7 WMpw== ARC-Authentication-Results: i=2; gmr-mx.google.com; spf=pass (google.com: domain of jan.kiszka@siemens.com designates 192.35.17.14 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=jXryd4mmVzB4b1p0KdGrzdX66y1qU8EY3KKCA0qiHWo=; b=NW2Q/O3A/vXwShafmIwSa1dM6OsIHgh2aYaBiVwZV9fWkst5LWhtg0F0TIRS1OWnXW 4+a8GyDsweLq1E//54VRuzbns4qU9rPN7QGl2P2hT1X+0xxtxHtzE4A4YbqNeXpu5yYv 8M0fXXbAVyCfsYBMP0ax75mv77gnXgbzZQbCUAFug+ZhsK+XzBFGZPc4XVTouaVDGeo/ GReOFm9cCQRIqmsnDozw6oNFJ/meZfFSOV9pQUCuZSe86WKuaTwjlFwC85QcGjp4ccCD MS3vlVwRKJ/aY8gq4p5EOAJLt57mpZ4vsL0JEslt+lBDMwUd9PzYF6fTCkZqp66AcODi k3BA== 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=jXryd4mmVzB4b1p0KdGrzdX66y1qU8EY3KKCA0qiHWo=; b=hYQk5zCjkxeLALq/9Ccsih6FCiLVTo2M083FS4rpboqjH7EntVHfboDoLM2daaxdbI WCzKYSBTXh0BdFoO7Z8CJhGFMHlT6QXVYNYWEYzy8DETGJSsfycL62/6i6PnHlBjt1nS PBoO0USv0CiL6KHjvYm3Cl4202LLuuU+wByZk/kOmLcaZ8J2d/Q4a7sJhzy4A25f4UUY XlAV4dQoJM59cnqpJFWMfQcV61mXcih6YidK3tpBeLXPV9EvfBX3OM878hriH5kPzXFy lTVKttQXZ0k+//6YRUqY7fH/XCbeEHLryJoTSE9SLaYKMRivKSr5ECzjykyOzwVLr3wQ /DMg== Sender: isar-users@googlegroups.com X-Gm-Message-State: AOAM533p4dPeAHVYvWMTL+bJjBDbw75U4XMPDlbM0uupK352osdmTVyp pT8yK9NTYMVvFuCdUClVDFs= X-Google-Smtp-Source: ABdhPJyGhKshtqegI/sDv5gglGSblb0xakBitn38g05ibFT80ye+JWcYxeUSF3M2js0DoH97543W7Q== X-Received: by 2002:a2e:84ca:: with SMTP id q10mr3973226ljh.68.1599223645620; Fri, 04 Sep 2020 05:47:25 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a19:6e4d:: with SMTP id q13ls1109lfk.1.gmail; Fri, 04 Sep 2020 05:47:23 -0700 (PDT) X-Received: by 2002:a19:901:: with SMTP id 1mr3723161lfj.147.1599223643685; Fri, 04 Sep 2020 05:47:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1599223643; cv=none; d=google.com; s=arc-20160816; b=FBi1KGzwfnlETn4K1WyxQlswFc2ynOHUO+XnD6wuPz6QyykZZqiaPvmQDsKkZOeu4c tO9Ka6N01ddR5ffKnK2jerT9+H7Xx0XLAreCAP89Vbex5UeNf1Ro+maVo48iz8uB0WcW 6ioJPO3xyW5u8pva29JKTBZdnkZsq45YvCaRC8+H6oEe4bZvWOp1KW/qGXix1JTQlCKm 2MNyCRs8B9OzDZFwhp6JwcgIiq4pBOYrGZG+9ZSv5z1AEcHT7mZnEKDnc4XEIh3uJ8gU Rh7gx+9ZFoskt3ZYpqEv9NxXRQ+8N+wyiHBvHTufmo+nGjLsOB0S+TxVhs6SejAlyEKf tQHw== 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=cQlhsoQByOOL+fDUgzG5gdPntk8FLBNVflMs5Ma6aRI=; b=K7U3L6XROEtnJEp4FKS8RGqnh49ImVLN9a3CHtpxhV0GI3iafOQhqtrJIyECLCpiVK 0LDm0+H38oVyHqIVcUiVynx6CccEWUh5Caf+j04cPf6SrdawRDaV1I9HctzqIApKX1Ls ODhG/Zo6btjcHMqBwFx1263mcrRzuzXocqJ8OaJuKBM9D23sUb2x7zV473lHy9INrfgK Ojj1q6IQzZSmCQk5uZq2RnkQ99Sg+XsX8yRlHAjuy27sHDYxcJDl9Qeb9rY7+BP20lOu utWFUVCfRRccegA8HffbhDxzzam12CiTTbpcZ7KTuGDjv7T6yig82LUHNqj5YhwbwNSa C9KQ== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of jan.kiszka@siemens.com designates 192.35.17.14 as permitted sender) smtp.mailfrom=jan.kiszka@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Received: from david.siemens.de (david.siemens.de. [192.35.17.14]) by gmr-mx.google.com with ESMTPS id r16si95959ljg.1.2020.09.04.05.47.23 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 Sep 2020 05:47:23 -0700 (PDT) Received-SPF: pass (google.com: domain of jan.kiszka@siemens.com designates 192.35.17.14 as permitted sender) client-ip=192.35.17.14; Received: from mail2.sbs.de (mail2.sbs.de [192.129.41.66]) by david.siemens.de (8.15.2/8.15.2) with ESMTPS id 084ClMaI003043 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 4 Sep 2020 14:47:22 +0200 Received: from md1f2u6c.ad001.siemens.net ([167.87.249.163]) by mail2.sbs.de (8.15.2/8.15.2) with ESMTP id 084ClL1G005130 for ; Fri, 4 Sep 2020 14:47:22 +0200 From: Jan Kiszka To: isar-users Subject: [PATCH 1/2] Add compat architecture support via multiarch Date: Fri, 4 Sep 2020 14:47:20 +0200 Message-Id: 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 192.35.17.14 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?1676907533975976367?= X-GMAIL-MSGID: =?utf-8?q?1676907533975976367?= 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 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}"