From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 7041881252872323072 X-Received: by 2002:a67:c296:: with SMTP id k22mr745080vsj.84.1639732256010; Fri, 17 Dec 2021 01:10:56 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a67:b00f:: with SMTP id z15ls717900vse.8.gmail; Fri, 17 Dec 2021 01:10:55 -0800 (PST) X-Google-Smtp-Source: ABdhPJzrxtyOVaJaoQ0yUGMbTEhIj0TBpwkz3g/Wz5jwbBwUVwBUPX9wktP4eY2G23Gq0CdS39jg X-Received: by 2002:a67:308e:: with SMTP id w136mr614731vsw.72.1639732255350; Fri, 17 Dec 2021 01:10:55 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1639732255; cv=pass; d=google.com; s=arc-20160816; b=ntZ06hFR3keD70/O/ImUtt4G9cIryu7nGdoQ4B2vADV2tOxR6OZZhZH6nIP0/0BGpl xSxbDGBTzUF+hXGQ+QVuRJxYJo5yYy5Lt9aH4DP293nVgnLDEApvDOiojWaZvQDmKl/y V1LNmgTDZd2h1RTI2ZoE+fj9yDUXLQzukmeAbVxnR74mlfJXRBeIR5pnyuJ8HNgV1Kvi 4xyrOn9UXHinwSgTXo0PlfnzQpMrxaBdVJQBj48bxaGHAxNcVns8CiopiE3xPD6JCRn8 KVd08IMq5YvCk9t2X3tqG9hsS8XdhM6+wbxH6EZzzuk3deUZJYHAwe+7qorf/jSN9xEH JDMg== ARC-Message-Signature: i=2; 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:cc:to:from:dkim-signature; bh=qnG7cyQdDQ6sWq2s83n70rkGMVAbXZVKI/RknunXeJk=; b=F1mq8ulGIH21OM54+RWXeKuy1mvBz25FdP1WU1Tshq8PmQeyMMsZebSD1+YMcfUaIL cGw+M4FWsLOjjiX7qJMV0H4TRrcqZEUwYo2GaIDmIktfVGuuK9BdUUpjcZk4RGqZFN6D tpc2TZ3Ism/+S6aOUPpcpf7H83G/vqcWpSrONFvdLKyCUMsZATGOIUSiBk6Cn3MTW038 uNsdOeon2uffljUxk97DzBHySE6HvROdmyAYXL2Me/N3z+czJ/Id4RfE1tvczQvTuEwx XjerW4YJP0JZlWE7m6pS9/FZRDClr9I2uCnvXb86lw3fbZQSosnXelFstLmFri/G0EjQ qd3Q== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=a9CAKgXG; 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.53 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-eopbgr40053.outbound.protection.outlook.com. [40.107.4.53]) by gmr-mx.google.com with ESMTPS id v5si404278vsm.1.2021.12.17.01.10.54 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 17 Dec 2021 01:10:55 -0800 (PST) Received-SPF: pass (google.com: domain of adriaan.schmidt@siemens.com designates 40.107.4.53 as permitted sender) client-ip=40.107.4.53; Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=a9CAKgXG; 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.53 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=Jhv66+w8H1MD6DSx5LabMAs2FAwkxLioKtF5fj5dHaRUZnamCZvJ1aqLNxZhgtO9pbxDYASorPapEtq7a2qmz1NJZqDtRbXlzlOGGyk6zGN7C2NXBMBp7YuYyTAvOuGO8KoHu2MBFTCLTkjSfytwsM4N5MwFTqwy4HVvOryUz2u9BblrvDD9eLu/J1+j6baZKgCbQAZZKQj0C6AprkwEDv05CxMpfxD1qvVayeCbS/JEQ+tKfB+KNpLLbAG0lwZFs+qzBwdlElwddXJen04b32hOO2fbOdW/PbcbX9UxdOqzQH/agDkfPk4tDOLtYdRVWZpbBrJxBctwZBA6V7odhA== 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=qnG7cyQdDQ6sWq2s83n70rkGMVAbXZVKI/RknunXeJk=; b=gjMBl+ATKGAkIF9HyB1gF5Bo0QxqlDDTCzEWqkXwNNvIER1zrOChKUl1xNhucVgfrIoP0KnRw8b/CkbJcG3AvGBc6E2uUeoDbwIOExH5huQ1QLNnH96XotvQ1FInUk6SPiJMFXUkQoBC3toGvKnsUmiKgJuv6PAg4cKldXnQH9d1T8FP+5uaWLKvfB9Q1d5KY8pq/I28n9SrVloN/L20zu/jiWoOFuZkkHH71+HVn737NeR+sT5cV3smq1PUdP3hV9eVSB7gStI00QhyCBs+xAXC3DJ3bmN8YGzw4u9eGe1B/6JpnGEqjNxRevd7JrTuxq3mBzpm6ouWvEpWKiJr1g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 194.138.21.70) 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=qnG7cyQdDQ6sWq2s83n70rkGMVAbXZVKI/RknunXeJk=; b=a9CAKgXG5z4D146BJgCOOiH+raLihDS/ah/01Ve43PNUa0hsDqQkln7GEoa/cljwBd5gew/iXOYgqx2zPhLDUsN19OyM0np25RrP9WQ4LfmzX8niHjkJu7y4fPRfeqyj+Lu5PEMat6402vtEBegScfVY3ttFsFFfsYclAOc1pha7RQ6GpU43bxbvLLPD0kfEwL0P2TUOuvt36ALxGL1Zv/ctbtNhfFomKFjgj6aio7W482hhcBi3dLQZExNCZyQoUAIx53XeR/SrfTEMFg7G+oc8w3QVUKz2pjW3Hu6Jg00m94jAbv68cg6VNjvx/qqWcarM/9YhwvF6nofSgsDs8w== Received: from DB6PR0802CA0033.eurprd08.prod.outlook.com (2603:10a6:4:a3::19) by VE1PR10MB2959.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:803:107::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4801.15; Fri, 17 Dec 2021 09:10:52 +0000 Received: from DB5EUR01FT061.eop-EUR01.prod.protection.outlook.com (2603:10a6:4:a3:cafe::f8) by DB6PR0802CA0033.outlook.office365.com (2603:10a6:4:a3::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4801.14 via Frontend Transport; Fri, 17 Dec 2021 09:10:52 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 194.138.21.70) 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.70 as permitted sender) receiver=protection.outlook.com; client-ip=194.138.21.70; helo=hybrid.siemens.com; Received: from hybrid.siemens.com (194.138.21.70) by DB5EUR01FT061.mail.protection.outlook.com (10.152.5.197) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4801.14 via Frontend Transport; Fri, 17 Dec 2021 09:10:52 +0000 Received: from DEMCHDC89XA.ad011.siemens.net (139.25.226.103) by DEMCHDC9SJA.ad011.siemens.net (194.138.21.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.17; Fri, 17 Dec 2021 10:10:51 +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; Fri, 17 Dec 2021 10:10:50 +0100 From: Adriaan Schmidt To: CC: Adriaan Schmidt Subject: [PATCH v3 2/3] image: refactor SDK Date: Fri, 17 Dec 2021 10:10:29 +0100 Message-ID: <20211217091030.474380-3-adriaan.schmidt@siemens.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20211217091030.474380-1-adriaan.schmidt@siemens.com> References: <20211217091030.474380-1-adriaan.schmidt@siemens.com> 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 DEMCHDC89XA.ad011.siemens.net (139.25.226.103) X-TM-AS-Product-Ver: SMEX-14.0.0.3080-8.6.1018-26594.006 X-TM-AS-Result: No-10--11.446700-8.000000 X-TMASE-MatchedRID: f6Rj31JPTe6T5dDfN8TpsRjGdv/OQelyLFD07/Dk8EbDJ+l7OPOolSUn Lzk1+IxzzwO4AjhpI8hyKMxmuvaJnZ/pqLrD52g7aQCt577mlyTzeC+Is7Gv5OcFyNaDjVbg6qG 5M9QNAO2H4I6QZJ07kYdYwzPgNbi6vDxegIKDqbqaF7+MAnd7vAFPyo0NTF0myl2yL95kDWNMkO X0UoduuaShvRjfn4cUXsmnlayA9wlRQk2usXqRT1Tc4Z0AZzK6qj01FlWBadqTeuX4xo2DEHHv4 qNcyiZVHeN0FoxUAvrwr0hp4ZyVdSVHmJGtieUtwQzLZR+1m08rHEi7S0KU+W12v13Qb606UXlp 1FHYSPWQc9WQFO7fU+yA7WWewtfEE3RVIIrNFYDA2ZaU3Vq+6gIjBs/56eDrhLMcPZH93bxF5qV UCGhwT8j0QMA/92m2KUD+tLTtC+F08SF1pHAaTiiduIFM7gsu7DLY2FGw/JtyMswwR1sr68tDHw 9RrCNbIFBEE5CFomI0fAEAYiHbyxLg/KpeJ9kUHqmH5intJM5GPOixR/euoUOTmmhJhc2XMsovp /h9OdFirg8tJChsdMZE1hoM4QIsDIaK37rz7stMFByGxeT+yOfjMrfHxUqlqhcdnP91eXF+CWCc HScOEwrcqCL3+emlPVGDVAzeGHwtZpudd3exsVQFP6X4GAcenPekcWtexz3o5fsYXP0fUIQu+Xf LPysKeI05t861ylGAvBJAefUltNnALnxpVDIzMNGhuzepJ+g7BOj1lchJLKubsOtSWY2QgDLqnr RlXrZ8nn9tnqel2MprJP8FBOIajLMjbxyitwx2FXPqBBOEf/7xNFJETIxqMJ6N82hYFQ4k8LbWs ZZjJQ== X-TM-AS-User-Approved-Sender: No X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--11.446700-8.000000 X-TMASE-Version: SMEX-14.0.0.3080-8.6.1018-26594.006 X-TM-SNTS-SMTP: A3C6FD2E48B4D1A84FEF11ADCA2BF44B807CEA761C54ADB3D2876620ADAEFC812000:8 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c808deef-0b53-4dee-dcc5-08d9c13d1ff0 X-MS-TrafficTypeDiagnostic: VE1PR10MB2959:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2276; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 48Ra35ESDZYi4QOzbWmZy6dcDOJji31tTw8IgHOb/3xwlQ+/T2dsB8UIjHhdFZlJspCwz2sxntW47YJppyEzcoF7axmSpEY9eAof5vBjsyARNVwvihb1/mVFHRWYWGSsz4QrsMYjTbLcbo1kvIQTD9NwJ64qdTvPC+7+2xdtY5wh2w9qDgDXAa7rGKnw4nfzFKON009s3T0jAAAQvZ6MhoiqJawo4DNKZsPOHp9fBE6xVgSqTa7DUw5zfP/O2OExYjv3TM3bMrow8RnGy3w/LlPcPcFwCeIgRpOK/a0hRFtMHwsZ895M3eZmILRdwF36UEULEWHqEa5DFplunIIJ3FRNkB+N8y9kwiy9psFVVuXinRAgE5wVddvECQeC4QWSSMHnjyxSsy9m8hp9CVQe8HMbSYWVraPNnUQG4zm2StavH8PXKwtzWbJBSzIrFmIdLZ7jpKFCraKEuBBO7JZKDJcBb2tzs18qkBoNU6PNxatKA6kdtVoVEXiV9W8jPNlX/HJ18ZwU0LDyxkWi7sK0WZTqQGkQHTZRV7twSG9WWQlTnn+iukEZIbN67uIYwdUZOWxJpJxEi7cZG+ZO5rRMgMrjF6aeUzP4epFA63dTIJO/YUHT1nIQpiiGgRlPU2PafTawUb9wnWZfb+eDt5J1Dx4X1RwfIoQ1e/dM3AzssfKaBU6T0dubUCNnILd7wNAeO24opYNnbm3cLnHbj5aX+IyUTx9rhsbPWzQ0qda5i/TjDcNMkV8IiM2ORQJQ+3tNicgtvRvV9QjHW6SbQF7Syg== X-Forefront-Antispam-Report: CIP:194.138.21.70;CTRY:DE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:hybrid.siemens.com;PTR:hybrid.siemens.com;CAT:NONE;SFS:(4636009)(46966006)(36840700001)(40470700001)(70586007)(356005)(86362001)(44832011)(16526019)(316002)(7636003)(7596003)(83380400001)(82960400001)(36860700001)(40460700001)(956004)(82310400004)(6666004)(70206006)(1076003)(2616005)(4326008)(186003)(47076005)(107886003)(36756003)(336012)(8936002)(508600001)(30864003)(5660300002)(2906002)(26005)(6916009)(8676002);DIR:OUT;SFP:1101; X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Dec 2021 09:10:52.2055 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c808deef-0b53-4dee-dcc5-08d9c13d1ff0 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.70];Helo=[hybrid.siemens.com] X-MS-Exchange-CrossTenant-AuthSource: DB5EUR01FT061.eop-EUR01.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR10MB2959 X-TUID: v1iRxSNgvl1p - turn the image-sdk-extension into an image recipe variant (requires renaming of the class to `sdk` to use BBCLASSEXTEND). - put the logic from sdkchroot into that variant - turn the remainder of sdkcroot into the package sdk-files that that is then installed into SDKs API change: SDK_FORMATS now has the same semantics (and knows the same formats) as IMAGE_FSTYPES. Because there is no image type to generate tar.xz images, for now the default SDK_FORMAT is `targz-img`. NOTE: this patch does not work stand-alone. It requires changes to the way image types are handled. Signed-off-by: Adriaan Schmidt --- meta/classes/image-sdk-extension.bbclass | 87 ----------- meta/classes/image.bbclass | 2 +- meta/classes/sdk.bbclass | 137 ++++++++++++++++++ .../{sdkchroot => sdk-files}/files/README.sdk | 0 .../files/configscript.sh | 0 .../files/gcc-sysroot-wrapper.sh | 0 .../files/relocate-sdk.sh | 0 meta/recipes-devtools/sdk-files/sdk-files.bb | 26 ++++ meta/recipes-devtools/sdkchroot/sdkchroot.bb | 78 ---------- 9 files changed, 164 insertions(+), 166 deletions(-) delete mode 100644 meta/classes/image-sdk-extension.bbclass create mode 100644 meta/classes/sdk.bbclass rename meta/recipes-devtools/{sdkchroot => sdk-files}/files/README.sdk (100%) rename meta/recipes-devtools/{sdkchroot => sdk-files}/files/configscript.sh (100%) rename meta/recipes-devtools/{sdkchroot => sdk-files}/files/gcc-sysroot-wrapper.sh (100%) rename meta/recipes-devtools/{sdkchroot => sdk-files}/files/relocate-sdk.sh (100%) create mode 100644 meta/recipes-devtools/sdk-files/sdk-files.bb delete mode 100644 meta/recipes-devtools/sdkchroot/sdkchroot.bb 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 b4d20f8..d2512d3 100644 --- a/meta/classes/image.bbclass +++ b/meta/classes/image.bbclass @@ -76,7 +76,7 @@ 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 sdk inherit image-tools-extension inherit image-postproc-extension inherit image-locales-extension diff --git a/meta/classes/sdk.bbclass b/meta/classes/sdk.bbclass new file mode 100644 index 0000000..adf9a1f --- /dev/null +++ b/meta/classes/sdk.bbclass @@ -0,0 +1,137 @@ +# 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 + +# hook up the -sdk image variant +BBCLASSEXTEND = "sdk" +BPN = "${PN}" + +python sdk_virtclass_handler() { + pn = e.data.getVar('PN') + if pn.endswith('-sdk'): + e.data.setVar('BPN', pn[:-len('-sdk')]) + e.data.appendVar('OVERRIDES', ':class-sdk') + # sdkchroot deploy only for sdk image + bb.build.addtask('deploy_sdkchroot', 'do_build', 'do_rootfs', d) + else: + # add do_populate_sdk only to the non-sdk variant + # it only exists to preserve the interface... + bb.build.addtask('populate_sdk', '', '', e.data) + e.data.appendVarFlag('do_populate_sdk', 'depends', '${BPN}-sdk:do_build') + e.data.appendVarFlag('do_clean', 'depends', '${BPN}-sdk:do_clean') +} +addhandler sdk_virtclass_handler +sdk_virtclass_handler[eventmask] = "bb.event.RecipePreFinalise" + +# SDK is image-specific: +SDKCHROOT_DIR = "${DEPLOY_DIR_SDKCHROOT}/${BPN}-${MACHINE}" + +# SDK settings +SDK_INCLUDE_ISAR_APT ?= "0" +SDK_FORMATS ?= "targz-img" +SDK_INSTALL ?= "" +SDK_PREINSTALL += " \ + debhelper \ + autotools-dev \ + dpkg \ + locales \ + docbook-to-man \ + apt \ + automake \ + devscripts \ + equivs" + +TOOLCHAIN = "crossbuild-essential-${DISTRO_ARCH}" +TOOLCHAIN_${HOST_ARCH} = "build-essential" +TOOLCHAIN_i386 = "build-essential" +TOOLCHAIN_append_compat-arch = " crossbuild-essential-${COMPAT_DISTRO_ARCH}" + +# rootfs/image overrides for the SDK +ROOTFS_ARCH_class-sdk = "${HOST_ARCH}" +ROOTFS_DISTRO_class-sdk = "${HOST_DISTRO}" +ROOTFS_PACKAGES_class-sdk = "sdk-files ${TOOLCHAIN} ${SDK_PREINSTALL} ${SDK_INSTALL}" +ROOTFS_FEATURES_append_class-sdk = " clean-package-cache generate-manifest export-dpkg-status" +ROOTFS_MANIFEST_DEPLOY_DIR_class-sdk = "${DEPLOY_DIR_SDKCHROOT}" +ROOTFS_DPKGSTATUS_DEPLOY_DIR_class-sdk = "${DEPLOY_DIR_SDKCHROOT}" + +IMAGE_FSTYPES_class-sdk = "${SDK_FORMATS}" + +# bitbake dependencies +SDKDEPENDS += "sdk-files ${SDK_INSTALL}" +SDKDEPENDS_append_riscv64 = "${@' crossbuild-essential-riscv64' if d.getVar('ISAR_CROSS_COMPILE', True) == '1' and d.getVar('PN') != 'crossbuild-essential-riscv64' else ''}" +DEPENDS_class-sdk = "${SDKDEPENDS}" + +SDKROOTFSDEPENDS = "" +SDKROOTFSDEPENDS_class-sdk = "${BPN}:do_rootfs" +do_rootfs_install[depends] += "${SDKROOTFSDEPENDS}" + +SDKROOTFSVARDEPS = "" +SDKROOTFSVARDEPS_class-sdk = "SDK_INCLUDE_ISAR_APT" +do_rootfs_install[vardeps] += "${SDKROOTFSVARDEPS}" + +# additional SDK steps +ROOTFS_CONFIGURE_COMMAND_append_class-sdk = " ${@'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_prepend_class-sdk = "sdkchroot_configscript " +sdkchroot_configscript () { + sudo chroot ${ROOTFSDIR} /configscript.sh ${DISTRO_ARCH} +} + +ROOTFS_POSTPROCESS_COMMAND_append_class-sdk = " sdkchroot_finalize" +sdkchroot_finalize() { + if [ "${SDK_INCLUDE_ISAR_APT}" = "0" ]; then + # Remove isar-apt repo entry + sudo rm -f ${ROOTFSDIR}/etc/apt/sources.list.d/isar-apt.list + fi + + sudo umount -R ${ROOTFSDIR}/dev || true + sudo umount ${ROOTFSDIR}/proc || true + sudo umount -R ${ROOTFSDIR}/sys || true + + # Remove setup scripts + sudo rm -f ${ROOTFSDIR}/chroot-setup.sh ${ROOTFSDIR}/configscript.sh + + # Make all links relative + for link in $(find ${ROOTFSDIR}/ -type l); do + target=$(readlink $link) + + if [ "${target#/}" != "${target}" ]; then + basedir=$(dirname $link) + new_target=$(realpath --no-symlinks -m --relative-to=$basedir ${ROOTFSDIR}/${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 ${ROOTFSDIR}/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 +} + +do_deploy_sdkchroot[dirs] = "${DEPLOY_DIR_SDKCHROOT}" +do_deploy_sdkchroot() { + ln -Tfsr "${ROOTFSDIR}" "${SDKCHROOT_DIR}" +} + +CLEANFUNCS_class-sdk = "clean_deploy" +clean_deploy() { + rm -f "${SDKCHROOT_DIR}" +} + +do_populate_sdk[noexec] = "1" +do_populate_sdk() { + : +} diff --git a/meta/recipes-devtools/sdkchroot/files/README.sdk b/meta/recipes-devtools/sdk-files/files/README.sdk similarity index 100% rename from meta/recipes-devtools/sdkchroot/files/README.sdk rename to meta/recipes-devtools/sdk-files/files/README.sdk diff --git a/meta/recipes-devtools/sdkchroot/files/configscript.sh b/meta/recipes-devtools/sdk-files/files/configscript.sh similarity index 100% rename from meta/recipes-devtools/sdkchroot/files/configscript.sh rename to meta/recipes-devtools/sdk-files/files/configscript.sh diff --git a/meta/recipes-devtools/sdkchroot/files/gcc-sysroot-wrapper.sh b/meta/recipes-devtools/sdk-files/files/gcc-sysroot-wrapper.sh similarity index 100% rename from meta/recipes-devtools/sdkchroot/files/gcc-sysroot-wrapper.sh rename to meta/recipes-devtools/sdk-files/files/gcc-sysroot-wrapper.sh diff --git a/meta/recipes-devtools/sdkchroot/files/relocate-sdk.sh b/meta/recipes-devtools/sdk-files/files/relocate-sdk.sh similarity index 100% rename from meta/recipes-devtools/sdkchroot/files/relocate-sdk.sh rename to meta/recipes-devtools/sdk-files/files/relocate-sdk.sh diff --git a/meta/recipes-devtools/sdk-files/sdk-files.bb b/meta/recipes-devtools/sdk-files/sdk-files.bb new file mode 100644 index 0000000..36cdb31 --- /dev/null +++ b/meta/recipes-devtools/sdk-files/sdk-files.bb @@ -0,0 +1,26 @@ +# 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" + +inherit dpkg-raw + +SRC_URI = " \ + file://configscript.sh \ + file://relocate-sdk.sh \ + file://gcc-sysroot-wrapper.sh \ + file://README.sdk" +PV = "0.1" + +do_install() { + install -m 644 ${WORKDIR}/README.sdk ${D} + install -m 755 ${WORKDIR}/relocate-sdk.sh ${D} + install -m 755 -d ${D}/usr/bin + install -m 755 ${WORKDIR}/gcc-sysroot-wrapper.sh ${D}/usr/bin + install -m 755 ${WORKDIR}/configscript.sh ${D} +} 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}" -} -- 2.30.2