From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 7197016923412889600 X-Received: by 2002:ac2:546c:0:b0:4dc:807a:d147 with SMTP id e12-20020ac2546c000000b004dc807ad147mr459429lfn.6.1677838851470; Fri, 03 Mar 2023 02:20:51 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a05:651c:220b:b0:28b:d53d:2e29 with SMTP id y11-20020a05651c220b00b0028bd53d2e29ls502726ljq.2.-pod-prod-gmail; Fri, 03 Mar 2023 02:20:49 -0800 (PST) X-Google-Smtp-Source: AK7set+AeAO0UnZN+Mt2DxG1gKCz4A0VG5rPTA0QghYxpp+akZjeXhoAyTUqYHu7EjirYfe4Dxi4 X-Received: by 2002:a05:651c:54c:b0:295:9010:6f76 with SMTP id q12-20020a05651c054c00b0029590106f76mr526662ljp.1.1677838849809; Fri, 03 Mar 2023 02:20:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677838849; cv=none; d=google.com; s=arc-20160816; b=Mj3WRekgIXK6AqyFYMi2DY3nDzJ9Zpzzk7m5nEguQpdK/QuyCrGAEderuToccJ2Epf PCD7YA/rlSrtVrg36DPk4/1vhRA6aDqnmAi45vgV0AZCG792AM1tG1k+m8qpAu71ug4T Q8hTnqIJWfUdMMwTTKYe64Ca41Nd3WMeszOr6Qhe1jKiyi78CLdl0+GIfQSLbUWbcZQO q4mHt1/EmFt2By2ysMzcJjIyJlVnIKYqedyU7THo3ymC2AG6E0lEW5ruJCicVtPTYIns WSW+Jo6U5RG5WX8D6wqEUsfZcGxXkj49fCWIPjg8nJdmZrBzyUqIIE/9dkQcqTCRwNOq 3A7A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=feedback-id:content-transfer-encoding:mime-version:message-id:date :subject:cc:to:from:dkim-signature; bh=ovZ3qEA8O9kKQByec0xkOisAEygPA+rCpu8Gm1551Zo=; b=qKfoEnnw+SqwloB2cGEetITu+kbBCKNAv2L4p4YwchPZZf/0dQA4JSX0xqos8Tt54v 20mDrzsqil+T5NJKVBzPMI1mYEM6/XJM2VHeFHh+pXSHEGbsrqXsZLjVjMpOd/FkQAoI jj4gZAP/7HFaIKZgQBabd5tT+k2fC5G+/cPXlbz32nDxJnmPGdCOmf0l3+aM5r9HswMF m4PITPY2YdnbOxHHREVsipuydu0ez3k01Q+It7yoqcSu3+vv+vroeblHbJ15K6HtUCbe hc7SgRLuflpQf+j2lPBJgsLBZ7DzjE3/LMfOHE4tq0KQJQREZ0X+QCfsBKjPYhcW7Trq 5Kow== ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=Kl7kh3o9; spf=pass (google.com: domain of fm-526363-202303031020477dee7728a62092cfc0-xxjv1k@rts-flowmailer.siemens.com designates 185.136.65.225 as permitted sender) smtp.mailfrom=fm-526363-202303031020477dee7728a62092cfc0-xxjv1k@rts-flowmailer.siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Return-Path: Received: from mta-65-225.siemens.flowmailer.net (mta-65-225.siemens.flowmailer.net. [185.136.65.225]) by gmr-mx.google.com with ESMTPS id y14-20020a05651c154e00b00295a255ee26si69981ljp.6.2023.03.03.02.20.49 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 03 Mar 2023 02:20:49 -0800 (PST) Received-SPF: pass (google.com: domain of fm-526363-202303031020477dee7728a62092cfc0-xxjv1k@rts-flowmailer.siemens.com designates 185.136.65.225 as permitted sender) client-ip=185.136.65.225; Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=Kl7kh3o9; spf=pass (google.com: domain of fm-526363-202303031020477dee7728a62092cfc0-xxjv1k@rts-flowmailer.siemens.com designates 185.136.65.225 as permitted sender) smtp.mailfrom=fm-526363-202303031020477dee7728a62092cfc0-xxjv1k@rts-flowmailer.siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Received: by mta-65-225.siemens.flowmailer.net with ESMTPSA id 202303031020477dee7728a62092cfc0 for ; Fri, 03 Mar 2023 11:20:47 +0100 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; s=fm1; d=siemens.com; i=adriaan.schmidt@siemens.com; h=Date:From:Subject:To:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:Cc; bh=ovZ3qEA8O9kKQByec0xkOisAEygPA+rCpu8Gm1551Zo=; b=Kl7kh3o9aIshnpyqFb8oGc953d4C7Wvvd6+ExVKpDhgCXrucbqwqNZ9TMZmOvmDahZ6M6E 0Q0bTOyGuP1tWcjgK8/0irQROwro8VqsiKVp1pLgptshzOvbDVIf1FNZHVlRp050caoO1qwT IxOinTQy+FvP2aL1Q6pt4Zgym5Dks=; From: Adriaan Schmidt To: isar-users@googlegroups.com Cc: Adriaan Schmidt Subject: [PATCH v4 0/4] multiarch support Date: Fri, 3 Mar 2023 11:20:41 +0100 Message-Id: <20230303102045.4140027-1-adriaan.schmidt@siemens.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Flowmailer-Platform: Siemens Feedback-ID: 519:519-526363:519-21489:flowmailer X-TUID: ot+bAodvDPS7 This adds `-compat` and `-native` bitbake targets to all recipes inheriting dpkg-base. The new -compat build variant replaces the old compat mechanism. Note that `ISAR_ENABLE_COMPAT_ARCH="1"` is still required to ensure that the bootstrap and buildchroot is prepared correctly. Regarding testing of the new features: - we have (limited) testing of compat, by adding `hello-isar-compat` to amd64 and arm64 builds. - currently no testing of native. There are two main use cases for the feature: - SDK that needs `-native`. This could be turned into a test easily, by setting/appending SDK_INSTALL. Would require a new option in testsuite, similar to `image_install` introduced in 57a0ade9a. - A build tool that is provided by a recipe, when using it in cross compilation. E.g. if someone needed a patched cmake, they would write cmake.bb, and applications that need it would (in case cross compilation is enabled) DEPEND+="cmake-native". Or, another real-world example from a downstream layer: packaging applications with goreleaser, which is not found in the Debian apt repos. Instead, I'm fetching it via a dpkg-prebuilt recipe, written to support multiple architectures (architecture is part of the download URL). Now if I want to cross compile go applications, they DEPEND+="goreleaser-native", and DEBIAN_BUILD_DEPENDS_append=", goreleaser:native". These cases are more complex, but maybe we can find an example along those lines and add it to meta-isar. As testing of the native feature would (in the simple case) need an extension of the test classes (for SDK_INSTALL), or introduce something completely new into meta-isar, I'd like to do that after discussion, in a later series. Adriaan changes since v3: - removed the unneeded (expand=)True argument from d.getVar() calls - changed "calculate" to "determine" in comment - added note to RECIPE-API-CHANGELOG changes since v2: - fixed a bug that completely broke things for targets without a compat arch (e.g., i386). The compat variant of packages is now only available when it can actually be built. - the native variant is only generated if it differs from the target. If DISTRO_ARCH==HOST_ARCH, then `-native` is automatically provided by the target package. - also do the bitbake-target->debian-package transformation on SDK_INSTALL - fix compat packages in testsuite: when we add hello-isar-compat, we need to remove hello-isar. changes since v1: - fixed an issue that prevented arch overrides of ISAR_ENABLE_COMPAT_ARCH, which is used in testsuite - added `-native` expansion to contents of IMAGE_INSTALL - documentation in user_manual Adriaan Schmidt (4): bitbake.conf: use PACKAGE_ARCH in overrides add multiarch support remove obsolete compat-arch override doc: add compat/native targets to user manual RECIPE-API-CHANGELOG.md | 8 ++ doc/user_manual.md | 19 ++-- .../recipes-app/hello-isar/hello-isar.bb | 3 - meta-isar/recipes-app/libhello/libhello.bb | 3 - .../recipes-app/samefile/samefile_2.14.bb | 2 +- meta/classes/compat.bbclass | 40 +++++++++ meta/classes/debianize.bbclass | 2 +- meta/classes/dpkg-base.bbclass | 1 + meta/classes/image.bbclass | 4 +- meta/classes/multiarch.bbclass | 88 +++++++++++++++++++ meta/classes/native.bbclass | 10 +++ meta/classes/sdk.bbclass | 2 +- meta/conf/bitbake.conf | 6 +- .../isar-bootstrap/isar-bootstrap.inc | 2 + .../sbuild-chroot/sbuild-chroot.inc | 14 +-- testsuite/cibuilder.py | 4 + 16 files changed, 182 insertions(+), 26 deletions(-) create mode 100644 meta/classes/compat.bbclass create mode 100644 meta/classes/multiarch.bbclass create mode 100644 meta/classes/native.bbclass -- 2.30.2