From patchwork Fri Sep 11 04:13:06 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Kiszka X-Patchwork-Id: 45 Return-Path: Delivered-To: ilbers.mnt@gmail.com Received: by 2002:a4a:eb04:0:0:0:0:0 with SMTP id f4csp119699ooj; Fri, 11 Sep 2020 05:13:12 -0700 (PDT) X-Received: by 2002:a5d:620e:: with SMTP id y14mr1936650wru.371.1599826392591; Fri, 11 Sep 2020 05:13:12 -0700 (PDT) ARC-Seal: i=3; a=rsa-sha256; t=1599826392; cv=pass; d=google.com; s=arc-20160816; b=jRKk+W7JbA6iyZ+8cMhG52MgPVcKZIYIKVXQwThKP75HHxQIMB35Cw13wwRM3dRT// +s6L5iGBfpv+7OBGrrHYKAG8fEJjraSv16vqE8jnoFR+PoDqOoXFt/1K+tBhyxv669bm StcrBLTZYLbNnVk1uayzUA/aG3j7UZWdU8BfR2KLZ6sCgjx44PrUOhGJVP79+WQY0OlZ vTnnGeVEstIJqY38I5f8WkZdLzFEVXNqPSMfmmq7JxPQ1g11RVqON3qZ9f81qxOEjg+P URKhYXetKdl5dEcvEm6q6CsDl4KDV8W9zRql2WX9NhsIaLR4DxAsGyhxna5ZzEKWgAhP cqLA== 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=MNkw9RTNmYUCm0pRc2qHBSNhBKvOTCrSAPWi4O6QoKQ=; b=IAUkZn16L8si/MQ/dRLyDO1UTNFTEIJSIyxS7i1xUMjjgrQhWumQ5NflLrMtWlHXLi de4IeQ9b/Z7fX4Ny5BtGoy83XYnXhtA+MetovZNyXYiMoAaTiPXNily2j48KtydvEdfE Wo0MpKGUPUxANmkZsXjvZW54UFBWFJ1DIn0b18czgDeJHNA4ROoYtqPTH5DQsKD6Zi7u 4yZ7gplWJkL/daRcom3G2cccUUUwJNX1H2Vt4VtFdgwlHW7S+YT9bqxJ/kOHAjemcjiX WcfLbsoUXBsHsryX1z/ftIhlYAgSK4pjnYZzHJhQ2Xg9x3VrIDwTVQvZHuqRqtUmElnI R9FQ== ARC-Authentication-Results: i=3; mx.google.com; dkim=pass header.i=@googlegroups.com header.s=20161025 header.b=cVQPBKxq; arc=pass (i=2 spf=pass spfdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of isar-users+bncbcji7smnv4nbbwgt5x5akgqe3tcd3kq@googlegroups.com designates 209.85.220.55 as permitted sender) smtp.mailfrom=isar-users+bncBCJI7SMNV4NBBWGT5X5AKGQE3TCD3KQ@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 c17sor1033483wre.28.2020.09.11.05.13.12 (Google Transport Security); Fri, 11 Sep 2020 05:13:12 -0700 (PDT) Received-SPF: pass (google.com: domain of isar-users+bncbcji7smnv4nbbwgt5x5akgqe3tcd3kq@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=cVQPBKxq; arc=pass (i=2 spf=pass spfdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of isar-users+bncbcji7smnv4nbbwgt5x5akgqe3tcd3kq@googlegroups.com designates 209.85.220.55 as permitted sender) smtp.mailfrom=isar-users+bncBCJI7SMNV4NBBWGT5X5AKGQE3TCD3KQ@googlegroups.com; dmarc=fail (p=NONE sp=NONE dis=NONE arc=pass) header.from=siemens.com ARC-Seal: i=2; a=rsa-sha256; t=1599826392; cv=pass; d=google.com; s=arc-20160816; b=W3rfuRws4VS9UZh3YvGggMZvSXxKJfouliF+oF7x7RgIckFGasnuPCorfz0SPewLYQ /o4uDZhm8ZwkEkU/YLW9OuYB4YdTD3Lfi86nKQYKCCm7BEkhWtvHzy91gKWpuf6VPG+I IgOqmu73nRvVjGT+rWWcSD1Fq3WDeq3fGLfDYpYQgg15F5qcxDvsR69GJM0aGIYQSIIV Sj0QzvkrNXXQkLX+ArSnkaNUUu6ih6ekb54Y1Uu5VJsJWIQ7nNZMB+OZMCXBax9/27nP RYMb1wteDL0KpuWSLGm06eHOLg5hIYq50Lgx0q4Xt7QwFGuFxUXuzO5XVW9Ni0vOITrZ fdGw== 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=MNkw9RTNmYUCm0pRc2qHBSNhBKvOTCrSAPWi4O6QoKQ=; b=zSWJQhbtLUjNAnqlxGHu+LWN64E/JyJIKvmGf0rRh8/GLFR1nvbvL/y6sA0j27oPq1 MwKpbvsqVq/Zrxnqj7B0gf+m2+6342QYaw9FqkmfFceMX9LW8uEO7+nwOIfF7Ua7QrnC CBvC8E8kgwqoPIYYEu6JkYewMo0FlGH7kgG0f1wF5up88n4Ya5XiNp0N54DE8fUcjUHm IMwltJ21+GYPp8WLPz0E5sSTLL+S9Eb6Th0Qk09Pts2m++Y8F1NzUTmM0IplXtqwG4xu eJ5M4rTgCP1pI+BOci88GwxEWjQ6f73yh73nYAd/lt+0CelTFs9EQXu55BtE6o0kduzk 8XZA== 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=MNkw9RTNmYUCm0pRc2qHBSNhBKvOTCrSAPWi4O6QoKQ=; b=cVQPBKxqJLlXKba7uge18kRBAVSa3BjbjPc1BeUaNRyoVclYHRoDjP0wPjKD2lOc+7 CnwI3M8TV7Q6bTyuyapPRcDsSci0cRTSuU2fnhwcejfQ3Usez42qsDr4GgLTKbT5fWzG VE3p3SXUtrY/rFcZiI67dygVAJCMK1JQ+D+qkrJsMZdTzsOTwsecSsA26Uv6cav+0qqt 7qJozFnMj+NEY6+oqSbSxUU4yP+xsrnB9FiYoOWiugGIgY9aKN+NKBYV0V5+ci3AYC61 W/bQXSMsi0nXy/+RjKOfdiA3DSNxA1hElj5prQcjEbKs8ubVq1Z0ldBuxQMqzTPPHP5U 82yA== 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=MNkw9RTNmYUCm0pRc2qHBSNhBKvOTCrSAPWi4O6QoKQ=; b=nxfswtmY3mY+C1HlJwjZp0R6/gvzjXWswnXNwJvuWLG0BRXjeN1YiYxOKzRSSWwInI aGmtj7uYltPxH3CwVSz3biVSmk5LwxBMXYE8F1PStB8xMsoCnN0HjtKBfJ04YHWWCroj 3SwaS104OVO0qIRY0OuuFJTycbaa5FAKHobV+7b+krlwz0nb7YibozkrfWE+dSx1LgDy x36fqzDG6tFlyMyPIY2Jjl6UYnlaGlt0TDQ7mu5frLOo5hkQQxa7LEjq0innsloBAsHh XXrmEb3JX6oUFh+xKv9AWopongsYamY3azs/dRLhGV6vLorDLJJVG1XjJ+/UJI3vG1cW rHqg== Sender: isar-users@googlegroups.com X-Gm-Message-State: AOAM530wD6avx0msOSsdgQ4JQqSA7eqJlXq0T7SYcU/WpsvnvvtpN3EF 2UCnLwnKH4uYuuIdcspsDig= X-Google-Smtp-Source: ABdhPJy+eOiUcQJRtYCY7WF+rjGRDtaioIb2g124zCM+9/fHX5Rwjk3CqJXeMfLx9I0fBuy5jSsxkA== X-Received: by 2002:adf:ec92:: with SMTP id z18mr1920576wrn.53.1599826392260; Fri, 11 Sep 2020 05:13:12 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a05:6000:8:: with SMTP id h8ls2470295wrx.3.gmail; Fri, 11 Sep 2020 05:13:11 -0700 (PDT) X-Received: by 2002:adf:df05:: with SMTP id y5mr1961789wrl.39.1599826391115; Fri, 11 Sep 2020 05:13:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1599826391; cv=none; d=google.com; s=arc-20160816; b=q47d4be+Ep0Hqc5BPb7DV1y6y85W+7HvA0v8e2hDT0V0ZWavogPpvh0s2dhMSrn7Gl id5eCUvcEHWTh4p8XqlPg1Bro1o/L5v/VsQ1TDmwNFoqGgL70tSJ3TkM2ujGfqwOJuff AmG1/jIcQhGWRtHnIa3RnwmV8rnrFqmYuXWh+WHaDLMaeCsN+cq/IdT8MMjqFjgrwgy5 2QOC3WDe34wfFdTeKug44R3olwcatA8ZRZyPhXVEoSILD1YlakX76twXe81QLnc93zrO I8kQJbHaE9WfA0fgc/s2y7DJ21U1LApRRmWt0eM0IinqqtXowF0Er1X+FghcfSWf2fUl uBmg== 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=MqSzjSEOHPU2e4JKWdiDP3pvkbruWA7QRFvZ4qjcyCMAsLCYMz0F1a+f0AOpmi9cTe 8kQanh2Q9JwGSo9pEqzvvJDyxmHsd1zELYep0U0IISxYusPsfaCXDWCzT2iu1xageJIG LiPnVAzYILCoKq+2xka5iL1Su7U5IsXP1WzEaAXZTlRFwrmt/EDCm244UkKPnk509Wnw AWvXQm6L3d8SFlWFVItgvIA+bssyPjvQXLDbhoV/GFSvT31tY0rx/Rc6bj4WlpAw0NR4 AXx7jVXWKSY/iVvjoAs0SlsMD9/pzht/S0eQanHTavy3A5ddlLJeU/fFTlYA2JkBTdEf Bhlg== 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 b1si76018wmj.1.2020.09.11.05.13.11 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 11 Sep 2020 05:13:11 -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 08BCDARB019539 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 11 Sep 2020 14:13:10 +0200 Received: from md1f2u6c.ad001.siemens.net ([167.87.49.221]) by mail2.sbs.de (8.15.2/8.15.2) with ESMTP id 08BCD974012908 for ; Fri, 11 Sep 2020 14:13:10 +0200 From: Jan Kiszka To: isar-users Subject: [PATCH v2 1/4] Add compat architecture support via multiarch Date: Fri, 11 Sep 2020 14:13:06 +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?1677539559810951766?= X-GMAIL-MSGID: =?utf-8?q?1677539559810951766?= 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}"