From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 7041881252872323072 X-Received: by 2002:a5d:6dc3:: with SMTP id d3mr3846770wrz.159.1639565744584; Wed, 15 Dec 2021 02:55:44 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 2002:adf:a4cc:: with SMTP id h12ls147384wrb.2.gmail; Wed, 15 Dec 2021 02:55:43 -0800 (PST) X-Google-Smtp-Source: ABdhPJzhf+IPFYsbWhFHgir1ee5bdIFxwRSIaBCpuIqh03RK7OugrfZY/+sckalYizbMeb9ulWdz X-Received: by 2002:a5d:6a0b:: with SMTP id m11mr3800303wru.65.1639565743566; Wed, 15 Dec 2021 02:55:43 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1639565743; cv=pass; d=google.com; s=arc-20160816; b=TjMxlKdGoSmFnr1nzY/W0LOzOqLYeDf5Kd+T3LOwikVugVa+D0oMraFikwz4W/q5tY pg1ADwRPm8Dd0AlCbbplXHkgSnwUgSwEWUu4yd3JaWEW/c09gzJ+m/rR59aW5Kvyqi13 yaP9tPjW6Atghw0NzC+zl7jdbIPHm2JVNZtpFWr+y0LCodqJWTvr43wH55uJqCZYdG6A bplmDbVYSi+diqCoD/yF8sgmNkvLl8g3/XCKY07kxTzN58Ah2sg6+kNzFLvQayKiYUdz GimNLcRRgl29TkYpoz40a1UhH22/gXQjGzQL80JWONIc7/zAaYBXl3yDmm9X/HmJl0Kc U3fQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:dkim-signature; bh=lIpbkhfgnmHftVoAG3NTfUxpu2rRSrsGOYsTheW/VT0=; b=fP/J2lJxnUPO4aDiSraeF1s/UhYYgK7Atxnq+rltVzb1s8ysQe4R8bJhq917nDCj2p 7DZlepJUBgUcqfQ08uthVwz2s/7s3dZvUBx6iHQM/R78d/b9QmX0pkEoXfqaF4rYylZc hD4hK1T1phz6Ce2ZeiDT309FSLJLpic/ExofZVIvnUZ8+e2kjbfqJ1FWTJ3r/7C2WaB/ I8gnualzkq6vUrrAcujz+AERYIUhGVyQK1h5BV7z8Llz9WKHSx4w1onNohLEPb6XRJcn l/QLo84xFJ1SJk04cA3RqR8VcA+WnuN9bahPsm39oFnEfqgsbaSXw0dETmweIvbjiob4 hNwQ== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=S5g7d2Vy; arc=pass (i=1 spf=pass spfdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of adriaan.schmidt@siemens.com designates 40.107.13.78 as permitted sender) smtp.mailfrom=adriaan.schmidt@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Return-Path: Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-eopbgr130078.outbound.protection.outlook.com. [40.107.13.78]) by gmr-mx.google.com with ESMTPS id c5si82554wri.7.2021.12.15.02.55.43 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 15 Dec 2021 02:55:43 -0800 (PST) Received-SPF: pass (google.com: domain of adriaan.schmidt@siemens.com designates 40.107.13.78 as permitted sender) client-ip=40.107.13.78; Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=S5g7d2Vy; arc=pass (i=1 spf=pass spfdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of adriaan.schmidt@siemens.com designates 40.107.13.78 as permitted sender) smtp.mailfrom=adriaan.schmidt@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Llrn0yDKLrrc/LJDyAEKCLuu00V7/acqLoVdPuXBlZZY5FbUoChr7ai8Z0rRf4lJ+eta/RXqElpqY7e92TYxZXEJcj4N4H7tb1x5JQlhp8l476iiWcuwimrfDBb84BmrAtoXx1y+P+31Spk9fOZo6sl5igMzSx+NdEMCdAGdRi2F7qPpIRKvT5KnvbCsyt9d8jQ8ESm5n6m4g+YSdYUNAoLTt5XvmX2SAU8xhWCwS9x+o4uoYU+peW96q22Dr+DmwbWq0NeqhhM6zpH3V+JEX1TQtzqrrIZ9VJUwYZx3okNRNad9k23nLSa6z9GsuXhk4cH1OdQserF5soAvV+8MYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=lIpbkhfgnmHftVoAG3NTfUxpu2rRSrsGOYsTheW/VT0=; b=XM3PbUpHKItMFSutZtL1t3jCduGqtpK3wXZb7kONvSB3r4jB7QV+JVRCwxeTi/jcEaPLm0ZjdTtZXRShrhj92uw0SmIwJceiNbECuTh9hvSbYomfkZGN95RkhNCXcoIg8VcPqDpli/HQZpKhrOO85vJ0P24Fdp+wNgvgUaWbD5Y2Zfwuckv7TUeJzexQnK0XbGKSOJZ61t+N49ALfPPEyYEDbDXOlb+ui0HOdGADPp4rccmuhidp9r1QRielhKaLt8eHtjS9vDlQ40KafV6nLJLT2Fbpsez+RS0vKVfd9qC9vYIVHhE1RlsMWucNh/Zcbzf0qT8y8c/qI1zcXTmaNA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 194.138.21.71) smtp.rcpttodomain=googlegroups.com smtp.mailfrom=siemens.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=siemens.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=siemens.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lIpbkhfgnmHftVoAG3NTfUxpu2rRSrsGOYsTheW/VT0=; b=S5g7d2Vy7pFjBPupRod2TJUm6ArNMwRe1eIHUQ5Cuq7CWnRPqqhWmrN2Jd148ryRz+0iqWN3TAlD92/vsMNtXzXLV16x50L0VwQElHoX8p2BXRO9U4igDaQnScn4TPetV/MTS5Q5U5oOW7HtuaMAuH4kEVTkcLEVPpfbeJJbsMWnZz7+/0gnW2+x/u7r1jU+NET/p3toQPm7F79hFyjlGwl+T/JOmY+6jDf4YwPNT0WYfKJKz1MbKLXZGvoV6guUhHOCiV6F8XDbad2jL/zjUtruGMpDQi78HGAg/7hBljO1jfPFBb8vAzauqOAisF4Cnc+xUtiM9dqGjOgRWD4Guw== Received: from FR3P281CA0042.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:4a::13) by PAXPR10MB4828.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:102:1db::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4755.21; Wed, 15 Dec 2021 10:55:41 +0000 Received: from VE1EUR01FT020.eop-EUR01.prod.protection.outlook.com (2603:10a6:d10:4a:cafe::4c) by FR3P281CA0042.outlook.office365.com (2603:10a6:d10:4a::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4801.9 via Frontend Transport; Wed, 15 Dec 2021 10:55:40 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 194.138.21.71) smtp.mailfrom=siemens.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=siemens.com; Received-SPF: Pass (protection.outlook.com: domain of siemens.com designates 194.138.21.71 as permitted sender) receiver=protection.outlook.com; client-ip=194.138.21.71; helo=hybrid.siemens.com; Received: from hybrid.siemens.com (194.138.21.71) by VE1EUR01FT020.mail.protection.outlook.com (10.152.2.234) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4778.12 via Frontend Transport; Wed, 15 Dec 2021 10:55:40 +0000 Received: from DEMCHDC89YA.ad011.siemens.net (139.25.226.104) by DEMCHDC9SKA.ad011.siemens.net (194.138.21.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.17; Wed, 15 Dec 2021 11:55:40 +0100 Received: from random.ppmd.siemens.net (139.25.68.25) by DEMCHDC89YA.ad011.siemens.net (139.25.226.104) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.17; Wed, 15 Dec 2021 11:55:39 +0100 From: Adriaan Schmidt To: CC: Adriaan Schmidt Subject: [PATCH v2] sdk: make SDK an image Date: Wed, 15 Dec 2021 11:55:13 +0100 Message-ID: <20211215105513.3398693-1-adriaan.schmidt@siemens.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain Return-Path: adriaan.schmidt@siemens.com X-Originating-IP: [139.25.68.25] X-ClientProxiedBy: DEMCHDC89YA.ad011.siemens.net (139.25.226.104) To DEMCHDC89YA.ad011.siemens.net (139.25.226.104) X-TM-AS-Product-Ver: SMEX-14.0.0.3080-8.6.1018-26590.007 X-TM-AS-Result: No-10--12.515200-8.000000 X-TMASE-MatchedRID: P5gQY7PBHxOT5dDfN8TpsY5UqPDkit6fcJsCSs5qF7zece0aRiX9WmtN ZoZ5+7ekdow3WKW6wplKIN4U/X/6AivPMHDJzZH4wgjZzFiquOklN5xJwQZgeQrgwFF/sjummTM khNp6sQXDQeGGV/t6W6FJS1sWNSLSqqrAsM2ndmysfSoTuROcDDcnxLnjDSYFPwKTD1v8YV5MkO X0UoduuVeIuu+Gkot8VonuiLTPficHqGRa/b8dwsKHlSQGL2ITTtQdqyGOG6EkNyKZAiu8eAV54 COoxb6XvGAx/1ATZ5t5vY4YhCIgbtaZK2x7WPSCCg2XI4948jS4Ha6KHPba+X0OE02QLVC++Kgi yLtJrSAMR2L8iw5VqpppbopMrhvLN/wMLRcdDFMpi7UEc2E2Zg66dAsNpdQEJUA2ZkrfN4OxXA8 wqNmbVkZFbGDuYtcomUDgikHuA04CNg9xxABytXJQeExCp4DD3WMxx3WjnrSCCtrY06jaLdDEMP vvoocvLxVXVjyd6UcwfXHHXt4W1J5P0RB3ICIcsP7ae80q56kpsn9kdROMaY6MisxJraxH3WFax VW7M2gY/Qz8XxXcqEIeTQRgIkOGOwUe/DAUr1THdrJ/xoH4ij6YhiGxG3G6lTsGW3DmpUtgFto/ VVnNJQQsw9A3PIlL9fGw1nQ95T8qUmuRRtpjNc22ZN2hprkrS4qvHz0/B8n+xRIVoKNMvF5i/Oo nw8bSV7MQTbTl02+EvesJDpTT5G3GfH3smB3fmyiLZetSf8mfop0ytGwvXiq2rl3dzGQ1l3+bAt /YFVQdg2GiPkqfSJmbDy3e0GTHJEv3w7wBeP4/XgeeRnkj9FgpWCbva+Mm X-TM-AS-User-Approved-Sender: No X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--12.515200-8.000000 X-TMASE-Version: SMEX-14.0.0.3080-8.6.1018-26590.007 X-TM-SNTS-SMTP: 1F199EBCB577069FCC6B4FDDEB926DAE7BCAD582CAF67905D6D9A45A6985299D2000:8 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d4b7b05e-3f84-4991-f970-08d9bfb96f2e X-MS-TrafficTypeDiagnostic: PAXPR10MB4828:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2201; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: sbFd08GRw26pfQ4alFWIQh40cWRkzYCe7Wro00oqojuOVford1vgOUp09UlGtrKIPzR28YaRvfB1KYzKATA9lzd0OLlot8+FpxaymB82d25O5PslaIhgrERGtlxDFvuFkanCoKnqOQcTbK6ntFAd7PoZ0f8MsewlPlPGWJFePU4PlYz3vNWUXkel5V3kPwsF3PyusxARMbJx1LhH3GUOCczUNgublt6jRCxDFMifVN612YMMfWtUPO8ahhOASTf9bf2poZwQCK4yr/q+lAia5h+SG3+zxxBe20VVGgDcZaPszfkcWJPpnRPoCUPZzuI/UcIXv0hIwPHbRt9tV6mOWmuEVagdyIBISoTMMBul/k3bcDIsh7Loi6JnbM7Y2PzTe2yM+gmAOPxP0qp6eoKPJIAGo4o/++mkVxGuQ3sVcLyZ3a3f7o2nxBK3CQN1I2875oT/VPJrQkOD+jpS5XsVezXkRTIS/odd68z1/8QT36sZ+7anLeEAmvw1R/+5fAqjCnlOdXThoaHvU/wdqBxU90W/LV9gJrNuTr+hzvbCIhcXDwH8Ob46d+4gBdKjw+vLNmAlE2lpHNzL0Ex/WeiZmS0EAqeve0vVafTl5Y95ubwcgOINAEgnlnRYAkBwPtcUH8JE9uQsUVxkU2+3wOOumlNR3ddWjhCq+KKaoi5AaQDIibaQBlMDOdPv6bXi7/Uvjrx1JPt4EzUqnscamYsos2Oz3pOll97xm/iLI/7UWVlwpC94gi+XgGEkw3XRDkEBUDc01IwzHWmS4tqutvnTrekXYn9L+qEmD+2OFbiDJ/f31LeCtIOCsEu8SD/dA85InWxGaTlcwWHjdvF67A6LSSAY9ZA5obse4+PdPhtwDH7MfFH87i+Or3jLf7XuKRZ7CGs/8nrPUyOfrVSNadhKhg== X-Forefront-Antispam-Report: CIP:194.138.21.71;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:hybrid.siemens.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(4636009)(46966006)(36840700001)(40470700001)(2616005)(36756003)(47076005)(4326008)(956004)(44832011)(5660300002)(70206006)(16526019)(336012)(8676002)(6916009)(26005)(186003)(40460700001)(316002)(6666004)(86362001)(82960400001)(81166007)(70586007)(107886003)(36860700001)(508600001)(8936002)(83380400001)(30864003)(356005)(2906002)(1076003)(82310400004)(403724002)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Dec 2021 10:55:40.4371 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d4b7b05e-3f84-4991-f970-08d9bfb96f2e X-MS-Exchange-CrossTenant-Id: 38ae3bcd-9579-4fd4-adda-b42e1495d55a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=38ae3bcd-9579-4fd4-adda-b42e1495d55a;Ip=[194.138.21.71];Helo=[hybrid.siemens.com] X-MS-Exchange-CrossTenant-AuthSource: VE1EUR01FT020.eop-EUR01.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR10MB4828 X-TUID: xMfKwIDRjuv7 This derives the SDK from image.bbclass (currently it only inherits rootfs), removing the custom packaging, and instead relying on existing features of image.bbclass. Note that because there is not tarxz-img IMAGE_TYPE, we switch the SDK type to targz-img. This is only temporary, until we have the OE-inspired imagetypes. API change: SDK_FORMATS and SDK_INCLUDE_ISAR_APT can no longer be set in the image recipe. This follows the (possibly buggy) behavior SDK_[PRE]INSTALL. Currently a good location to set these might be the machine.conf. API change: to get the container-sdk, you need to set SDK_FORMAT to `container-img` and CONTAINER_FORMATS to the desired container type (just like you would for any other image). Signed-off-by: Adriaan Schmidt --- doc/user_manual.md | 25 +++---- meta/classes/image-sdk-extension.bbclass | 74 +------------------- meta/classes/targz-img.bbclass | 3 +- meta/recipes-devtools/sdkchroot/sdkchroot.bb | 58 +++++++++++++-- 4 files changed, 70 insertions(+), 90 deletions(-) diff --git a/doc/user_manual.md b/doc/user_manual.md index c81c6e4..0859667 100644 --- a/doc/user_manual.md +++ b/doc/user_manual.md @@ -1010,14 +1010,14 @@ mount devtmpfs $1/dev -t devtmpfs -o mode=0755,nosuid mount devpts $1/dev/pts -t devpts -o gid=5,mode=620 mount tmpfs $1/dev/shm -t tmpfs -o rw,seclabel,nosuid,nodev -$ sudo scripts/mount_chroot.sh ../build/tmp/deploy/images/qemuarm/sdk-debian-buster-armhf +$ sudo scripts/mount_chroot.sh ../build/tmp/deploy/sdkchroot/debian-buster-armhf ``` - chroot to isar SDK rootfs: ``` -$ sudo chroot build/tmp/deploy/images/qemuarm/sdk-debian-buster-armhf +$ sudo chroot build/tmp/deploy/sdkchroot/debian-buster-armhf ``` - Check that cross toolchains are installed @@ -1082,18 +1082,19 @@ User specifies the variable `SDK_FORMATS` providing a space-separated list of SDK formats to generate. Supported formats are: - - `tar-xz`: (default) is the non-containerized format that results from + - `targz-img`: (default) is the non-containerized format that results from following the instructions in "[Create an ISAR SDK root filesystem](#create-an-isar-sdk-root-filesystem)" - - `docker-archive`: an archive containing a Docker image that can be imported - with - [`docker load`](https://docs.docker.com/engine/reference/commandline/load) - - `docker-daemon`: resulting container image is made available on the local - Docker Daemon - - `containers-storage`: resulting container image is made available to tools - using containers/storage back-end (e.g. Podman, CRIO, buildah,...) - - `oci-archive`: an archive containing an OCI image, mostly for archiving as - seed for any of the above formats + - `container-img`: select the container formats by setting `CONTAINER_FORMATS`: + - `docker-archive`: an archive containing a Docker image that can be imported + with + [`docker load`](https://docs.docker.com/engine/reference/commandline/load) + - `docker-daemon`: resulting container image is made available on the local + Docker Daemon + - `containers-storage`: resulting container image is made available to tools + using containers/storage back-end (e.g. Podman, CRIO, buildah,...) + - `oci-archive`: an archive containing an OCI image, mostly for archiving as + seed for any of the above formats User manually triggers creation of SDK formats for his target platform by launching the task `do_populate_sdk` for target image, f.e. diff --git a/meta/classes/image-sdk-extension.bbclass b/meta/classes/image-sdk-extension.bbclass index 426b925..ec1c300 100644 --- a/meta/classes/image-sdk-extension.bbclass +++ b/meta/classes/image-sdk-extension.bbclass @@ -5,83 +5,11 @@ # # This class extends the image.bbclass to supply the creation of a sdk -SDK_INCLUDE_ISAR_APT ?= "0" -SDK_FORMATS ?= "tar-xz" - -sdk_tar_xz() { - # Copy mount_chroot.sh for convenience - sudo cp ${SCRIPTSDIR}/mount_chroot.sh ${SDKCHROOT_DIR} - - # Create SDK archive - cd -P ${SDKCHROOT_DIR}/.. - sudo tar --transform="s|^rootfs|sdk-${DISTRO}-${DISTRO_ARCH}|" \ - -c rootfs | xz -T0 > ${DEPLOY_DIR_IMAGE}/sdk-${DISTRO}-${DISTRO_ARCH}.tar.xz - bbdebug 1 "SDK rootfs available in ${DEPLOY_DIR_IMAGE}/sdk-${DISTRO}-${DISTRO_ARCH}.tar.xz" -} - do_populate_sdk[stamp-extra-info] = "${DISTRO}-${MACHINE}" do_populate_sdk[depends] = "sdkchroot:do_build" do_populate_sdk[vardeps] += "SDK_INCLUDE_ISAR_APT SDK_FORMATS" do_populate_sdk() { - local sdk_container_formats="" - - if [ "${SDK_INCLUDE_ISAR_APT}" = "1" ]; then - # Copy isar-apt with deployed Isar packages - sudo cp -Trpfx ${REPO_ISAR_DIR}/${DISTRO} ${SDKCHROOT_DIR}/isar-apt - else - # Remove isar-apt repo entry - sudo rm -f ${SDKCHROOT_DIR}/etc/apt/sources.list.d/isar-apt.list - fi - - sudo umount -R ${SDKCHROOT_DIR}/dev || true - sudo umount ${SDKCHROOT_DIR}/proc || true - sudo umount -R ${SDKCHROOT_DIR}/sys || true - - # Remove setup scripts - sudo rm -f ${SDKCHROOT_DIR}/chroot-setup.sh ${SDKCHROOT_DIR}/configscript.sh - - # Make all links relative - for link in $(find ${SDKCHROOT_DIR}/ -type l); do - target=$(readlink $link) - - if [ "${target#/}" != "${target}" ]; then - basedir=$(dirname $link) - new_target=$(realpath --no-symlinks -m --relative-to=$basedir ${SDKCHROOT_DIR}/${target}) - - # remove first to allow rewriting directory links - sudo rm $link - sudo ln -s $new_target $link - fi - done - - # Set up sysroot wrapper - for tool_pattern in "gcc-[0-9]*" "g++-[0-9]*" "cpp-[0-9]*" "ld.bfd" "ld.gold"; do - for tool in $(find ${SDKCHROOT_DIR}/usr/bin -type f -name "*-linux-gnu*-${tool_pattern}"); do - sudo mv "${tool}" "${tool}.bin" - sudo ln -sf gcc-sysroot-wrapper.sh ${tool} - done - done - - # separate SDK formats: TAR and container formats - for sdk_format in ${SDK_FORMATS} ; do - case ${sdk_format} in - "tar-xz") - sdk_tar_xz - ;; - "docker-archive" | "oci" | "oci-archive" | "docker-daemon" | "containers-storage") - sdk_container_formats="${sdk_container_formats} ${sdk_format}" - ;; - *) - die "unsupported SDK format specified: ${sdk_format}" - ;; - esac - done - - # generate the SDK in all the desired container formats - if [ -n "${sdk_container_formats}" ] ; then - bbnote "Generating SDK container in ${sdk_container_formats} format" - containerize_rootfs "${SDKCHROOT_DIR}" "sdk-${DISTRO}-${DISTRO_ARCH}" "${sdk_container_formats}" - fi + : } addtask populate_sdk after do_rootfs diff --git a/meta/classes/targz-img.bbclass b/meta/classes/targz-img.bbclass index bf94af0..f90e9fb 100644 --- a/meta/classes/targz-img.bbclass +++ b/meta/classes/targz-img.bbclass @@ -4,10 +4,11 @@ # SPDX-License-Identifier: MIT TARGZ_IMAGE_FILE = "${DEPLOY_DIR_IMAGE}/${IMAGE_FULLNAME}.tar.gz" +TAR_OPTIIONS ?= "" do_targz_image() { rm -f ${TARGZ_IMAGE_FILE} - sudo tar -cvzf ${TARGZ_IMAGE_FILE} --one-file-system -C ${IMAGE_ROOTFS} . + sudo tar ${TAR_OPTIIONS} -cvzf ${TARGZ_IMAGE_FILE} --one-file-system -C ${IMAGE_ROOTFS} . sudo chown $(id -u):$(id -g) ${TARGZ_IMAGE_FILE} } diff --git a/meta/recipes-devtools/sdkchroot/sdkchroot.bb b/meta/recipes-devtools/sdkchroot/sdkchroot.bb index e367eae..0dacd57 100644 --- a/meta/recipes-devtools/sdkchroot/sdkchroot.bb +++ b/meta/recipes-devtools/sdkchroot/sdkchroot.bb @@ -16,6 +16,8 @@ SRC_URI = " \ PV = "0.1" SDK_INSTALL ?= "" +SDK_FORMATS ?= "targz-img" +SDK_INCLUDE_ISAR_APT ?= "0" DEPENDS += "${SDK_INSTALL}" @@ -26,7 +28,11 @@ TOOLCHAIN_${HOST_ARCH} = "build-essential" TOOLCHAIN_i386 = "build-essential" TOOLCHAIN_append_compat-arch = " crossbuild-essential-${COMPAT_DISTRO_ARCH}" -inherit rootfs +IMAGE_FSTYPES = "${SDK_FORMATS}" +IMAGE_FULLNAME = "sdk-${DISTRO}-${DISTRO_ARCH}" +TAR_OPTIONS += "--transform=\"s|^rootfs|sdk-${DISTRO}-${DISTRO_ARCH}|\"" + +inherit image ROOTFS_ARCH = "${HOST_ARCH}" ROOTFS_DISTRO = "${HOST_DISTRO}" ROOTFSDIR = "${S}" @@ -35,6 +41,11 @@ ROOTFS_FEATURES += "clean-package-cache generate-manifest export-dpkg-status" ROOTFS_MANIFEST_DEPLOY_DIR = "${DEPLOY_DIR_SDKCHROOT}" ROOTFS_DPKGSTATUS_DEPLOY_DIR = "${DEPLOY_DIR_SDKCHROOT}" +# Override settings from image.bbclass: SDK is not MACHINE-specific +WORKDIR = "${TMPDIR}/work/${DISTRO}-${DISTRO_ARCH}/${PN}/${PV}-${PR}" +STAMP = "${STAMPS_DIR}/${DISTRO}-${DISTRO_ARCH}/${PN}/${PV}-${PR}" +STAMPCLEAN = "${STAMPS_DIR}/${DISTRO}-${DISTRO_ARCH}/${PN}/*-*" + SDK_PREINSTALL += " \ debhelper \ autotools-dev \ @@ -50,10 +61,17 @@ SDK_INCLUDE_ISAR_APT ?= "0" S = "${WORKDIR}/rootfs" -ROOTFS_CONFIGURE_COMMAND += "${@'rootfs_configure_isar_apt_dir' if d.getVar('SDK_INCLUDE_ISAR_APT') == '1' else ''}" +do_rootfs_install[vardeps] += "SDK_INCLUDE_ISAR_APT" + +ROOTFS_CONFIGURE_COMMAND += "rootfs_configure_isar_apt_dir" rootfs_configure_isar_apt_dir() { - # Copy isar-apt instead of mounting: - sudo cp -Trpfx ${REPO_ISAR_DIR}/${DISTRO} ${ROOTFSDIR}/isar-apt + if [ "${SDK_INCLUDE_ISAR_APT}" = "1" ]; then + # Copy isar-apt with deployed Isar packages + sudo cp -Trpfx ${REPO_ISAR_DIR}/${DISTRO} ${SDKCHROOT_DIR}/isar-apt + else + # Remove isar-apt repo entry + sudo rm -f ${SDKCHROOT_DIR}/etc/apt/sources.list.d/isar-apt.list + fi } ROOTFS_POSTPROCESS_COMMAND =+ "sdkchroot_install_files" @@ -66,6 +84,38 @@ sdkchroot_install_files() { sudo chroot ${S} /configscript.sh ${DISTRO_ARCH} } +ROOTFS_POSTPROCESS_COMMAND += "sdk_finalize" +sdk_finalize() { + sudo umount -R ${SDKCHROOT_DIR}/dev || true + sudo umount ${SDKCHROOT_DIR}/proc || true + sudo umount -R ${SDKCHROOT_DIR}/sys || true + + # Remove setup scripts + sudo rm -f ${SDKCHROOT_DIR}/chroot-setup.sh ${SDKCHROOT_DIR}/configscript.sh + + # Make all links relative + for link in $(find ${SDKCHROOT_DIR}/ -xdev -type l); do + target=$(readlink $link) + + if [ "${target#/}" != "${target}" ]; then + basedir=$(dirname $link) + new_target=$(realpath --no-symlinks -m --relative-to=$basedir ${SDKCHROOT_DIR}/${target}) + + # remove first to allow rewriting directory links + sudo rm $link + sudo ln -s $new_target $link + fi + done + + # Set up sysroot wrapper + for tool_pattern in "gcc-[0-9]*" "g++-[0-9]*" "cpp-[0-9]*" "ld.bfd" "ld.gold"; do + for tool in $(find ${SDKCHROOT_DIR}/usr/bin -xdev -type f -name "*-linux-gnu*-${tool_pattern}"); do + sudo mv "${tool}" "${tool}.bin" + sudo ln -sf gcc-sysroot-wrapper.sh ${tool} + done + done +} + do_sdkchroot_deploy[dirs] = "${DEPLOY_DIR_SDKCHROOT}" do_sdkchroot_deploy() { ln -Tfsr "${ROOTFSDIR}" "${SDKCHROOT_DIR}" -- 2.30.2