From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 7041816029032349696 X-Received: by 2002:adf:d20e:: with SMTP id j14mr2947086wrh.220.1639550558024; Tue, 14 Dec 2021 22:42:38 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a7b:cbcc:: with SMTP id n12ls2128935wmi.1.canary-gmail; Tue, 14 Dec 2021 22:42:37 -0800 (PST) X-Google-Smtp-Source: ABdhPJykREz6Io9oEAWFKmVbzpBlRQ4s7mg0hIJD7MzNopt/9iXFzfaR2M4KWNnYxPdctfHumVzx X-Received: by 2002:a7b:c8d5:: with SMTP id f21mr3292150wml.146.1639550557053; Tue, 14 Dec 2021 22:42:37 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1639550557; cv=pass; d=google.com; s=arc-20160816; b=xHs26qk9CPNOm+TRj9DgbPFtqRsMHq1dkhC4Q3lBpc33iafeduWez/ZbCc/8xyUiSq zJfiibsGXGPIxQvD1T2eJIHhqfIYBZUjYKkGWKop9Qhj+3KzRumQpyRFrVZA83+jmsij zldtjVOdIEscBkCAtpCoolOM71NcsXLG8KwaY7MDtpxZnKoAg32eBnM374eV5VM3eInK S9fJ1M+LTpMHY1gRCbhe95UcedgHb4mI3pnI3NyeRFKmm95bISi7oLKg8iZu5Oek2axm AQspRIqpNppicYHCLaA0IpCvNkbphYNXm8UjiwzDg2pgN9wdUz8pOsFKBiu4RFaBjLHu qfqQ== 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=IUASbDofn+4uZG2G1G6o+N/EAdt8ebdVvBk6yP+C/g4=; b=A9Acz+CF0Bol4Hizs/AEj1dymAfEdjhDr5A2V3sya3JgQLVQW1ZqH5leR3oMbTmu4/ zWXc5jyirl/pq/R7j/CYuR74qVp8jehGo6qmXIgSdBnFgp5xSZeLfAccRRViC+LeW99c ytGrb8I/qmK0PGev5NmZXEp7J0FkmpA0LIEyf454AfbTYCzph1XkPUElzo2mS/KX8x3g IGeBFFuhgznRKu1CvAJ1/jN0f3d5PxxOw4NxgslYTWtPpZuFJQQpvqhaRdaA0jYTfsFI WpFc/lI6jAQ9OfHMezN55GwpbHPPT7eh+1vPLb741r8+DfTORy9UcFrKlbJ5/azmviWk YaLw== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b="R/yR+Tpy"; 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.4.87 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 EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40087.outbound.protection.outlook.com. [40.107.4.87]) by gmr-mx.google.com with ESMTPS id bd15si74453wmb.1.2021.12.14.22.42.36 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Dec 2021 22:42:37 -0800 (PST) Received-SPF: pass (google.com: domain of adriaan.schmidt@siemens.com designates 40.107.4.87 as permitted sender) client-ip=40.107.4.87; Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b="R/yR+Tpy"; 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.4.87 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=flciB4RfEH0Owvs0wzE1ubiLYHrE5p0vs5S78LdJGQvtdoKXhMQaAyqFWKK6yWML1GJfBWCN1TlEH6tICSjXUslke9PP8nQbiVX3sjTPCMyUrmRd02W3uB6SfUxse8AvuRCC62flHqecxIKNnPvTIEFoILeNY5jXtEWs9p0rZINdq18TipHJ/tOuPemey0WTijtfSMbOssHKDTPc48TxwqKVUi3g0vk4BXqqeT1omkT/cS+S2Tdb6OEFY72YK5+70C4hLk/c6AvZDeLSQ/bh/zY+/BHX75yyIAyO/VuzRt80kXuChbxQRjbveK2Kc/LZ4S154YXCVZO8H1+z36nyyw== 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=IUASbDofn+4uZG2G1G6o+N/EAdt8ebdVvBk6yP+C/g4=; b=CV1xB9muFAXMm5lgNV8dovgvZDxiiDIKAB0Xf8dnCeHGDb631Epm1Tw7G+IG9G3hT1hNNX8fsSnOyGRvKp0CPNrOjINLELby2+d6mFOuu1NAi78yJWeOPTMFoyZMFGWOIkx1ym4KWXlvz2/SM+I/8uJ2u7kOoyNUyKOFYVlvXun2hdKCy6lI03NGxZG8OEcaGBTsHia9l0NaOWunnRGZhbx563iI08gO8A01X36ScgH6aEg8JmJOEXt98HG64l6pFN/YkQlbwErjTX1d91O3cBJZ4LSf4Yau1GWL3Bhg0cT9VlQ+vJ2vsv3ffmlySpMEgDjknnN9q5yL7tfDc3S4CQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 194.138.21.72) 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=IUASbDofn+4uZG2G1G6o+N/EAdt8ebdVvBk6yP+C/g4=; b=R/yR+TpyGKCdThtrbvUTMbWxcDXGAD/tkwWrYYR+AurkemfNeDmP61q65KzLT25EZnr8GDUvbRbJEdgI4ESYDsmhcWdzYmaeqlarfr2jPD0MIyHdv6fjMd4HwYxXpcabYfxZNO4YIR9B+9WTl9zEsWHKewoq9bh7uGGOG2LEigD1HGUPf8XC5WbPNTqQyAvU375mDETHBlWu3ZdFnPzbc7rmO57ePWX//qD6gohas+QcBwFvj2xvYM95ijxHShJ7KrCGCd63lm9v+DaOi4/1lOdy1H7q40mFuKbq9ON52oBteS2BDYY85CL7K2sop4HddiGdgq1vxmH2VlFDhiJYjg== Received: from DB6PR0802CA0044.eurprd08.prod.outlook.com (2603:10a6:4:a3::30) by AM6PR10MB3046.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:e5::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4755.11; Wed, 15 Dec 2021 06:42:35 +0000 Received: from DB5EUR01FT040.eop-EUR01.prod.protection.outlook.com (2603:10a6:4:a3:cafe::1e) by DB6PR0802CA0044.outlook.office365.com (2603:10a6:4:a3::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4778.14 via Frontend Transport; Wed, 15 Dec 2021 06:42:35 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 194.138.21.72) 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.72 as permitted sender) receiver=protection.outlook.com; client-ip=194.138.21.72; helo=hybrid.siemens.com; Received: from hybrid.siemens.com (194.138.21.72) by DB5EUR01FT040.mail.protection.outlook.com (10.152.5.25) 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 06:42:35 +0000 Received: from DEMCHDC89XA.ad011.siemens.net (139.25.226.103) by DEMCHDC9SMA.ad011.siemens.net (194.138.21.72) 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 07:42:16 +0100 Received: from random.ppmd.siemens.net (139.25.68.25) by DEMCHDC89XA.ad011.siemens.net (139.25.226.103) 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 07:42:15 +0100 From: Adriaan Schmidt To: , CC: Adriaan Schmidt Subject: [PATCH] sdk: make SDK and image Date: Wed, 15 Dec 2021 07:41:58 +0100 Message-ID: <20211215064158.3313004-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: DEMCHDC8A0A.ad011.siemens.net (139.25.226.106) To DEMCHDC89XA.ad011.siemens.net (139.25.226.103) X-TM-AS-Product-Ver: SMEX-14.0.0.3080-8.6.1018-26590.006 X-TM-AS-Result: No-10--10.703300-8.000000 X-TMASE-MatchedRID: 04gHLlJC4S2T5dDfN8TpsY5UqPDkit6fXOFTT+immjZbUzvsaHW6Bsog jZd9ImzZZnsOZQrya10E4LIyCVCWSD9JLqb4lSiCieHav54SvD6/VUMPnABec8b6dLbgzMd5I0t Tv9t0pTaOVdQAiMmbZwJMiypgNuc/Eqpbe+fpFMpLTmvmHr3PYq0iin8P0KjVqoeab9Xgz8+XBP RemiwRNf2YGfh2VHW3d8u5EqsUWd/LKYztBLtB9S3jHIS53h8laxzY5VD83IJHg88w74mNDpkzJ ITaerEFjklQr1R1iScvdxtZJg3nTJySuma5vKL7UXUCyy0k8+ib6lvlo0eypIIK2tjTqNotUXlp 1FHYSPXRVD7e21K6NTnRiQbMAyihuSbXQd8Ng6pX+PPL86ez+zuP8LNrii1sSHCU59h5KrFuJXM xOF5JsB0zI+Wuf+4ma3A6hcNu8nARCeW03Fc6UJ68+1RTyPC+uB2uihz22vl9DhNNkC1QvvioIs i7Sa0gDEdi/IsOVaqg/Wg77SeMXoUxbiHDL7HTDxPgDDGSw/bDol0QueqMd/7FEhWgo0y8eVSob lIv62IKA2OoGAlTk6yaw9ZbX5wGdDtyrAUAFQMk6hi9T3GK53GrLUT2gjr1AR/vNquC4fz7At+A n9uo85Bz1ZAU7t9TGqNaKnIr6GG0LMwXr3wYwzjtL1PlGvrZ6hRcWNzk9u8K3Ma88LL+bl7OZ6h rwwnzSg8ufp5n3T40muCEDVWB6aGZTKCz3DViFXQRPpObc2k+bbrostf/+vbta0OAYFzyv8jdqv FOu+Jrvf5eVgMu7NSLORr4Zhm86/iIVAB5vkibKItl61J/yZ+inTK0bC9eKrauXd3MZDWXf5sC3 9gVVOmFpU70nw4HzHY8t7kQlrGGsEQLiDrRYagiOlo0q7HuYDttQUGqHZU= X-TM-AS-User-Approved-Sender: No X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--10.703300-8.000000 X-TMASE-Version: SMEX-14.0.0.3080-8.6.1018-26590.006 X-TM-SNTS-SMTP: 9428B05E6356DFF151BB4460E2938499048AF2806FA07144F68B033F562A817D2000:8 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fd5f4b6a-6794-43b9-38c4-08d9bf961439 X-MS-TrafficTypeDiagnostic: AM6PR10MB3046:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4125; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 39Hlvt5kf1AoXVV8Zq1hYD5xRbf9i6qw/5RcMPqqCDr2dxo2uZxd5aTlA1tAro84oIbWO765HkBU26jLXVtUhXy+99K1X7K8m05qFTftrb9mHee8/yB1Rth/hLzreSFj5I2U0s/opezRIEroSzS4w+t/hahFksCpvwdo6p0MPIyYGBURkB80GWGgt0HdkttBn+degKNZl3Jlk25o4Ao4KBwdpmI/fpXvIKKC61B5s0axndYoKRmKriMDzYEZ7rrrmfkwdqZAuojt0Gr8/pgGGzKuFgIOciOIwa41K2xQKkNw0g9gv5UpN6JK69i70Awa6gYV60c9g/5YBjKkaRwU8S+QEArtXKifdbIEnhGqgg67cDoIb1o7beBTAmOsOsLcwMHAJ5mh5XRTo+8tOHL3N7Xy2nji+BiUEIIGaIAwI9tBjGkGiWnd7b9156UtEhi/1do23nDadJW3rPbubznX/sU7v2wqFK5MB5uQcv6ubbqhVFDnKnj0mfjh6PZCez01kNDG4ayBTkdab66Ovp8EW9Z7eaOTf2Y+A9Go2Z4XuS0XxTaeO9iMoAFwAfqDVHz7tIRQdyinBHfZxug0uWC8e22exJyslAIDsm2HVia+hcbfw079iLBdG0dd3dKFtnnRKHsz+lbq7qXEwP6dzL1XwvxSx/WjD1HQG8pZtiIXaZWR3lU7QGwUoH2ZlmwRMQG5zxxWdixAg5IeXM19Q9JWy3M3fYiS0HVcFD8YRxRqQVHIzCr8P9mogqOv64naVRBY2n+a2k6MwDLppPeZmBIaBo17c52zAawEChwcsfFtrquB8q27uaBpXUsDvYYhgaU0QOV1f7cg8ttjbCa+/S0B4SAMne824/MQko+ZW9jIChXeL5gY8JuhsxMBadTh7ioh2ZNyAz+zHg+8Med2RpmOyg== X-Forefront-Antispam-Report: CIP:194.138.21.72;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:hybrid.siemens.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(4636009)(46966006)(36840700001)(40470700001)(107886003)(36756003)(82310400004)(26005)(5660300002)(336012)(356005)(16526019)(4326008)(36860700001)(47076005)(86362001)(498600001)(30864003)(83380400001)(956004)(8936002)(1076003)(186003)(2906002)(70586007)(70206006)(2616005)(8676002)(82960400001)(44832011)(110136005)(81166007)(40460700001)(6666004)(403724002)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Dec 2021 06:42:35.4226 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fd5f4b6a-6794-43b9-38c4-08d9bf961439 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.72];Helo=[hybrid.siemens.com] X-MS-Exchange-CrossTenant-AuthSource: DB5EUR01FT040.eop-EUR01.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR10MB3046 X-TUID: GnSdNJiemaZo This derives the SDK from image.bbclass (currently it only inherits rootfs), removing the awkward and custom tar-xz'ing. 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 is now no longer built using `bitbake my_image -cpopulate_sdk`, but using `bitbake isar-sdk`. We could of course keep the old commands working, but I could not find any connection between the target image and the contents of the SDK (while building the SDK using the target image recipe confusingly makes it look like there is such a connection). 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 | 43 +++--- meta/classes/image-sdk-extension.bbclass | 87 ------------ meta/classes/image.bbclass | 1 - meta/classes/targz-img.bbclass | 3 +- .../{sdkchroot => isar-sdk}/files/README.sdk | 0 .../files/configscript.sh | 0 .../files/gcc-sysroot-wrapper.sh | 0 .../files/relocate-sdk.sh | 0 meta/recipes-devtools/isar-sdk/isar-sdk.bb | 126 ++++++++++++++++++ meta/recipes-devtools/sdkchroot/sdkchroot.bb | 78 ----------- testsuite/build_test/build_test.py | 8 +- 11 files changed, 154 insertions(+), 192 deletions(-) delete mode 100644 meta/classes/image-sdk-extension.bbclass rename meta/recipes-devtools/{sdkchroot => isar-sdk}/files/README.sdk (100%) rename meta/recipes-devtools/{sdkchroot => isar-sdk}/files/configscript.sh (100%) rename meta/recipes-devtools/{sdkchroot => isar-sdk}/files/gcc-sysroot-wrapper.sh (100%) rename meta/recipes-devtools/{sdkchroot => isar-sdk}/files/relocate-sdk.sh (100%) create mode 100644 meta/recipes-devtools/isar-sdk/isar-sdk.bb delete mode 100644 meta/recipes-devtools/sdkchroot/sdkchroot.bb diff --git a/doc/user_manual.md b/doc/user_manual.md index c81c6e4..3da2f69 100644 --- a/doc/user_manual.md +++ b/doc/user_manual.md @@ -978,12 +978,12 @@ target binary artifacts. Developer chroots to sdk rootfs and develops applicatio ### Solution -User manually triggers creation of SDK root filesystem for his target platform by launching the task `do_populate_sdk` for target image, f.e. -`bitbake -c do_populate_sdk mc:${MACHINE}-${DISTRO}:isar-image-base`. +User manually triggers creation of SDK root filesystem for his target platform by building the recipe `isar-sdk`, e.g., +`bitbake mc:${MACHINE}-${DISTRO}:isar-sdk`. Packages that should be additionally installed into the SDK can be appended to `SDK_PREINSTALL` (external repositories) and `SDK_INSTALL` (self-built). -The resulting SDK rootfs is archived into `tmp/deploy/images/${MACHINE}/sdk-${DISTRO}-${DISTRO_ARCH}.tar.xz`. -It is additionally available for direct use under `tmp/deploy/images/${MACHINE}/sdk-${DISTRO}-${DISTRO_ARCH}/`. +The resulting SDK rootfs is archived into `tmp/deploy/images/${MACHINE}/isar-sdk-${DISTRO}-${DISTRO_ARCH}.tar.xz`. +It is additionally available for direct use under `tmp/deploy/images/${MACHINE}/isar-sdk-${DISTRO}-${DISTRO_ARCH}/`. The SDK rootfs directory `/isar-apt` contains a copy of isar-apt repo with locally prebuilt target debian packages (for ). One may chroot into the SDK and install required target packages with the help of `apt-get install :` command. @@ -992,7 +992,7 @@ One may chroot into the SDK and install required target packages with the help o - Trigger creation of SDK root filesystem ``` -bitbake -c do_populate_sdk mc:qemuarm-buster:isar-image-base +bitbake mc:qemuarm-buster:isar-sdk ``` - Mount the following directories in chroot by passing resulting rootfs as an argument to the script `mount_chroot.sh`: @@ -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,26 +1082,27 @@ 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. -`bitbake -c do_populate_sdk mc:${MACHINE}-${DISTRO}:isar-image-base`. +building the recipe `isar-sdk` for target image, e.g., +`bitbake mc:${MACHINE}-${DISTRO}:isar-sdk`. Packages that should be additionally installed into the SDK can be appended to `SDK_PREINSTALL` (external repositories) and `SDK_INSTALL` (self-built). -Following formats don't work if running `bitbake -c do_populate_sdk ...` (to +Following formats don't work if running `bitbake isar-sdk` (to generate the containerized SDK) from inside of a container (e.g. using `kas-container`): `docker-daemon` and `containers-storage`. It's technically possible, but requires making host resources (e.g. the Docker @@ -1133,7 +1134,7 @@ export SDK_FORMATS="docker-archive" - Trigger creation of SDK root filesystem ``` -bitbake -c do_populate_sdk mc:qemuarm-buster:isar-image-base +bitbake mc:qemuarm-buster:isar-sdk ``` - Load the SDK container image into the Docker Daemon diff --git a/meta/classes/image-sdk-extension.bbclass b/meta/classes/image-sdk-extension.bbclass deleted file mode 100644 index 426b925..0000000 --- a/meta/classes/image-sdk-extension.bbclass +++ /dev/null @@ -1,87 +0,0 @@ -# This software is a part of ISAR. -# Copyright (C) Siemens AG, 2019 -# -# SPDX-License-Identifier: MIT -# -# 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/image.bbclass b/meta/classes/image.bbclass index d757256..0d0e60f 100644 --- a/meta/classes/image.bbclass +++ b/meta/classes/image.bbclass @@ -78,7 +78,6 @@ ROOTFS_DPKGSTATUS_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}" ROOTFS_POSTPROCESS_COMMAND_prepend = "${@bb.utils.contains('BASE_REPO_FEATURES', 'cache-deb-src', 'cache_deb_src', '', d)} " inherit rootfs -inherit image-sdk-extension inherit image-tools-extension inherit image-postproc-extension inherit image-locales-extension 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/files/README.sdk b/meta/recipes-devtools/isar-sdk/files/README.sdk similarity index 100% rename from meta/recipes-devtools/sdkchroot/files/README.sdk rename to meta/recipes-devtools/isar-sdk/files/README.sdk diff --git a/meta/recipes-devtools/sdkchroot/files/configscript.sh b/meta/recipes-devtools/isar-sdk/files/configscript.sh similarity index 100% rename from meta/recipes-devtools/sdkchroot/files/configscript.sh rename to meta/recipes-devtools/isar-sdk/files/configscript.sh diff --git a/meta/recipes-devtools/sdkchroot/files/gcc-sysroot-wrapper.sh b/meta/recipes-devtools/isar-sdk/files/gcc-sysroot-wrapper.sh similarity index 100% rename from meta/recipes-devtools/sdkchroot/files/gcc-sysroot-wrapper.sh rename to meta/recipes-devtools/isar-sdk/files/gcc-sysroot-wrapper.sh diff --git a/meta/recipes-devtools/sdkchroot/files/relocate-sdk.sh b/meta/recipes-devtools/isar-sdk/files/relocate-sdk.sh similarity index 100% rename from meta/recipes-devtools/sdkchroot/files/relocate-sdk.sh rename to meta/recipes-devtools/isar-sdk/files/relocate-sdk.sh diff --git a/meta/recipes-devtools/isar-sdk/isar-sdk.bb b/meta/recipes-devtools/isar-sdk/isar-sdk.bb new file mode 100644 index 0000000..1e33743 --- /dev/null +++ b/meta/recipes-devtools/isar-sdk/isar-sdk.bb @@ -0,0 +1,126 @@ +# SDK Root filesystem +# +# This software is a part of ISAR. +# Copyright (C) 2015-2018 ilbers GmbH + +DESCRIPTION = "Isar SDK Root filesystem" + +LICENSE = "gpl-2.0" +LIC_FILES_CHKSUM = "file://${LAYERDIR_core}/licenses/COPYING.GPLv2;md5=751419260aa954499f7abaabaa882bbe" + +SRC_URI = " \ + file://configscript.sh \ + file://relocate-sdk.sh \ + file://gcc-sysroot-wrapper.sh \ + file://README.sdk" +PV = "0.1" + +SDK_INSTALL ?= "" +SDK_FORMATS ?= "targz-img" + +DEPENDS += "${SDK_INSTALL}" + +DEPENDS_append_riscv64 = "${@' crossbuild-essential-riscv64' if d.getVar('ISAR_CROSS_COMPILE', True) == '1' and d.getVar('PN') != 'crossbuild-essential-riscv64' else ''}" + +TOOLCHAIN = "crossbuild-essential-${DISTRO_ARCH}" +TOOLCHAIN_${HOST_ARCH} = "build-essential" +TOOLCHAIN_i386 = "build-essential" +TOOLCHAIN_append_compat-arch = " crossbuild-essential-${COMPAT_DISTRO_ARCH}" + +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}" +ROOTFS_PACKAGES = "${SDK_PREINSTALL} ${SDK_INSTALL} ${TOOLCHAIN}" +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 \ + dpkg \ + locales \ + docbook-to-man \ + apt \ + automake \ + devscripts \ + equivs" + +SDK_INCLUDE_ISAR_APT ?= "0" + +S = "${WORKDIR}/rootfs" + +ROOTFS_CONFIGURE_COMMAND += "rootfs_configure_isar_apt_dir" +rootfs_configure_isar_apt_dir() { + 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 =+ "sdk_install_files" +sdk_install_files() { + # Configure root filesystem + sudo install -m 644 ${WORKDIR}/README.sdk ${S} + sudo install -m 755 ${WORKDIR}/relocate-sdk.sh ${S} + sudo install -m 755 ${WORKDIR}/gcc-sysroot-wrapper.sh ${S}/usr/bin + sudo install -m 755 ${WORKDIR}/configscript.sh ${S} + 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_sdk_deploy[dirs] = "${DEPLOY_DIR_SDKCHROOT}" +do_sdk_deploy() { + ln -Tfsr "${ROOTFSDIR}" "${SDKCHROOT_DIR}" +} +addtask sdk_deploy before do_build after do_rootfs + +CLEANFUNCS = "clean_deploy" +clean_deploy() { + rm -f "${SDKCHROOT_DIR}" +} diff --git a/meta/recipes-devtools/sdkchroot/sdkchroot.bb b/meta/recipes-devtools/sdkchroot/sdkchroot.bb deleted file mode 100644 index e367eae..0000000 --- a/meta/recipes-devtools/sdkchroot/sdkchroot.bb +++ /dev/null @@ -1,78 +0,0 @@ -# SDK Root filesystem -# -# This software is a part of ISAR. -# Copyright (C) 2015-2018 ilbers GmbH - -DESCRIPTION = "Isar SDK Root filesystem" - -LICENSE = "gpl-2.0" -LIC_FILES_CHKSUM = "file://${LAYERDIR_core}/licenses/COPYING.GPLv2;md5=751419260aa954499f7abaabaa882bbe" - -SRC_URI = " \ - file://configscript.sh \ - file://relocate-sdk.sh \ - file://gcc-sysroot-wrapper.sh \ - file://README.sdk" -PV = "0.1" - -SDK_INSTALL ?= "" - -DEPENDS += "${SDK_INSTALL}" - -DEPENDS_append_riscv64 = "${@' crossbuild-essential-riscv64' if d.getVar('ISAR_CROSS_COMPILE', True) == '1' and d.getVar('PN') != 'crossbuild-essential-riscv64' else ''}" - -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}" -ROOTFS_DISTRO = "${HOST_DISTRO}" -ROOTFSDIR = "${S}" -ROOTFS_PACKAGES = "${SDK_PREINSTALL} ${SDK_INSTALL} ${TOOLCHAIN}" -ROOTFS_FEATURES += "clean-package-cache generate-manifest export-dpkg-status" -ROOTFS_MANIFEST_DEPLOY_DIR = "${DEPLOY_DIR_SDKCHROOT}" -ROOTFS_DPKGSTATUS_DEPLOY_DIR = "${DEPLOY_DIR_SDKCHROOT}" - -SDK_PREINSTALL += " \ - debhelper \ - autotools-dev \ - dpkg \ - locales \ - docbook-to-man \ - apt \ - automake \ - devscripts \ - equivs" - -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 ''}" -rootfs_configure_isar_apt_dir() { - # Copy isar-apt instead of mounting: - sudo cp -Trpfx ${REPO_ISAR_DIR}/${DISTRO} ${ROOTFSDIR}/isar-apt -} - -ROOTFS_POSTPROCESS_COMMAND =+ "sdkchroot_install_files" -sdkchroot_install_files() { - # Configure root filesystem - sudo install -m 644 ${WORKDIR}/README.sdk ${S} - sudo install -m 755 ${WORKDIR}/relocate-sdk.sh ${S} - sudo install -m 755 ${WORKDIR}/gcc-sysroot-wrapper.sh ${S}/usr/bin - sudo install -m 755 ${WORKDIR}/configscript.sh ${S} - sudo chroot ${S} /configscript.sh ${DISTRO_ARCH} -} - -do_sdkchroot_deploy[dirs] = "${DEPLOY_DIR_SDKCHROOT}" -do_sdkchroot_deploy() { - ln -Tfsr "${ROOTFSDIR}" "${SDKCHROOT_DIR}" -} -addtask sdkchroot_deploy before do_build after do_rootfs - -CLEANFUNCS = "clean_deploy" -clean_deploy() { - rm -f "${SDKCHROOT_DIR}" -} diff --git a/testsuite/build_test/build_test.py b/testsuite/build_test/build_test.py index a957cdc..fd95871 100644 --- a/testsuite/build_test/build_test.py +++ b/testsuite/build_test/build_test.py @@ -99,9 +99,9 @@ class SdkTest(CIBaseTest): :avocado: tags=sdk,fast,full """ def test_sdk(self): - targets = ['mc:qemuarm-stretch:isar-image-base'] + targets = ['mc:qemuarm-stretch:isar-sdk'] - self.perform_build_test(targets, 1, 'do_populate_sdk') + self.perform_build_test(targets, 1) class NoCrossTest(CIBaseTest): @@ -215,6 +215,6 @@ class ContainerSdkTest(CIBaseTest): """ @skipUnless(UMOCI_AVAILABLE and SKOPEO_AVAILABLE, 'umoci/skopeo not found') def test_container_sdk(self): - targets = ['mc:container-amd64-stretch:isar-image-base'] + targets = ['mc:container-amd64-stretch:isar-sdk'] - self.perform_container_test(targets, 'do_populate_sdk') + self.perform_container_test(targets) -- 2.30.2