From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6927266035414335488 X-Received: by 2002:a1c:ed10:: with SMTP id l16mr3815557wmh.36.1613153067931; Fri, 12 Feb 2021 10:04:27 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a7b:c1ce:: with SMTP id a14ls3686612wmj.3.gmail; Fri, 12 Feb 2021 10:04:27 -0800 (PST) X-Google-Smtp-Source: ABdhPJxPIIebwqqmvnRazI0AfLFCnZgGNSWJjRGPxEGUCdBBa8XzVE2+g7lEyL5Ar3KYRcYJygtO X-Received: by 2002:a1c:bc46:: with SMTP id m67mr3878660wmf.82.1613153067080; Fri, 12 Feb 2021 10:04:27 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1613153067; cv=pass; d=google.com; s=arc-20160816; b=sIt2wLkz8lCxqsoJH9/QeceCeTmYeJB0rWr+KHihWYZ7/chu1bIdRkxsg6ATAMEkl/ cGzMdPEZdFyKOLSqp4CynK4Lxw2YCxPddiENa3pcpcu+1b6bawrHqdRCGbwtDXxhbddh Ard6+LriwdtZj7qTJ8kNKqEQ7swQV+sfsU39g3zSHXVlWr6QUj8WJYsKCJ3UKMdYSGgL 9FkcSbY48R4eBZPpxcXnM3md9QXIx5cD57+ZcW8j03wF9dX6NsOOFx93XyWzA0Kjst52 xPK6tRjQR6WDrsYeK1b+bWb62YqHgVfEBHuJ587WVdLjADyyVRWmEpdVpq4y3I4ohVwY v6PA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:content-language:content-transfer-encoding:in-reply-to :user-agent:date:message-id:from:references:to:subject :dkim-signature; bh=e3c83kpWXSnQyUjpcTK0eieh3hffjZC/W21oaPEdg4E=; b=tGMU0j6PkYCH6r/jVLzHzaowoB22NRQYlZn2TGxICvygURN7bEDxmbsUDZklyI2PD8 0iiOU9ZINsdGSvhTVwRe92Sw71HLNVDwhnyix5LWY72cbvksWSowtGwB6yAvDR7eAFSR iaFB0A+MGqio9a68vVntsCDWBXhNi+RC/gwoamesQT1srtmanVMIRlFNsZSCccfxX0sF zVbz2bKUsvKug9bmMgSwpQBCwicS+zJVQrLL0VFmurBhdpUrXOWrx1IDhtC/vUSY+/Rw 1YoQRXgEVuk5ZLVheJvlIEJx0JpA8Xewcon61FO+/7UFeOHBERBFm8mGeX/cBft8evbb vdvg== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.onmicrosoft.com header.s=selector1-siemens-onmicrosoft-com header.b=Pq6JOQAR; arc=pass (i=1 spf=pass spfdomain=siemens.com dkim=pass dkdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of silvano.cirujano-cuesta@siemens.com designates 40.107.3.41 as permitted sender) smtp.mailfrom=silvano.cirujano-cuesta@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Return-Path: Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-eopbgr30041.outbound.protection.outlook.com. [40.107.3.41]) by gmr-mx.google.com with ESMTPS id z16si478297wml.1.2021.02.12.10.04.26 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 12 Feb 2021 10:04:27 -0800 (PST) Received-SPF: pass (google.com: domain of silvano.cirujano-cuesta@siemens.com designates 40.107.3.41 as permitted sender) client-ip=40.107.3.41; Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.onmicrosoft.com header.s=selector1-siemens-onmicrosoft-com header.b=Pq6JOQAR; arc=pass (i=1 spf=pass spfdomain=siemens.com dkim=pass dkdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of silvano.cirujano-cuesta@siemens.com designates 40.107.3.41 as permitted sender) smtp.mailfrom=silvano.cirujano-cuesta@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=Cpqx7hIvewwx9QP/fsOFwpIApBh6J2vdAyoey5IRnVAnuFr8ACgHJJrXF8jrTzMNrcRR/vDWttl+TtAdtc/28aZU61zSxKYmJW087pYoykQHEFRFqfJoYre2K2ybry1kNRV2BEdZDIbl8HIyel3X0S5BPhKiUGX0CXRx2iucSnEuLZFb/24c2gj9CYM5Wgcz3ffCiZ0mOTAgrGMTIkvd7xGOUypa5gkF6vSpBvwEDdpkm5Sq8qvQfuXTy99WY1xhAAbVdNm/BmAbqpjasCANi05EWC/KXFG260pEHtYoSitvSzRaX3H5WtgVR+eQQTnVQZhC3YtuhboqEOP309mCtw== 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-SenderADCheck; bh=e3c83kpWXSnQyUjpcTK0eieh3hffjZC/W21oaPEdg4E=; b=IkulVAj3oo8aCVKQ9AN/lRxufdk7SaTdl3BI2gjFtMjh65O4w3XKlBC05gj+dVzYZmYLcQaSSRILdHQW3NAEJM9xnK0jYmEUFjd4dQLs1ZlBR9zIN7Bu5jQqldzxaXDSkqOC3vTKv8x6BGDyTstnGBQEdQdkqfYZAqqA4OWvEkbHALhoiGopwlY68HoRYg5p6778/+OFl73SSsS8JwINWxFvKvG+kdj8bFRvDwEIZg/2VRMWN3dONi7D26DXEIBbURvEpco+YQOvguiAT7NfFihn+m8s9Bc1XXQ5vwEEaWpvZxFfWzVHy3IoVTWjhSb4TRElax24IXFIY457BqVFKQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=siemens.com; dmarc=pass action=none header.from=siemens.com; dkim=pass header.d=siemens.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=siemens.onmicrosoft.com; s=selector1-siemens-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=e3c83kpWXSnQyUjpcTK0eieh3hffjZC/W21oaPEdg4E=; b=Pq6JOQARjYBU9uz/xivrFEwtppRvlhfsf+h8QVeF4CvQ/C51xDZytza/BIXzzw+fr0dz4O4vKQVFyvhfqw/uNhvtESd7lkn3HjU01u5jLRaS7SLqWwEq48AHrexdLR+7E8oJdCWAgwMrbRmY8EPDM1W2+6SMhJK0L+cvHZ49+Rs= Authentication-Results: googlegroups.com; dkim=none (message not signed) header.d=none;googlegroups.com; dmarc=none action=none header.from=siemens.com; Received: from AM6PR10MB2709.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:ad::28) by AS8PR10MB4502.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:2e5::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3846.26; Fri, 12 Feb 2021 18:04:26 +0000 Received: from AM6PR10MB2709.EURPRD10.PROD.OUTLOOK.COM ([fe80::9976:138b:a036:d45d]) by AM6PR10MB2709.EURPRD10.PROD.OUTLOOK.COM ([fe80::9976:138b:a036:d45d%5]) with mapi id 15.20.3825.030; Fri, 12 Feb 2021 18:04:26 +0000 Subject: Re: [PATCH v3 1/2] images: add support for container images To: isar-users@googlegroups.com References: <20210212085113.11013-1-silvano.cirujano-cuesta@siemens.com> <20210212085113.11013-2-silvano.cirujano-cuesta@siemens.com> From: Silvano Cirujano Cuesta Message-ID: <120fe807-5432-296e-1ff2-fd55865a5db8@siemens.com> Date: Fri, 12 Feb 2021 19:04:23 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Content-Language: en-US X-Originating-IP: [2001:a61:b9b:ac02:de3a:1146:19ca:44b6] X-ClientProxiedBy: AM0PR05CA0074.eurprd05.prod.outlook.com (2603:10a6:208:136::14) To AM6PR10MB2709.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:ad::28) Return-Path: silvano.cirujano-cuesta@siemens.com MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [IPv6:2001:a61:b9b:ac02:de3a:1146:19ca:44b6] (2001:a61:b9b:ac02:de3a:1146:19ca:44b6) by AM0PR05CA0074.eurprd05.prod.outlook.com (2603:10a6:208:136::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3846.25 via Frontend Transport; Fri, 12 Feb 2021 18:04:26 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: a473bcfe-dfb1-4234-df6d-08d8cf80a273 X-MS-TrafficTypeDiagnostic: AS8PR10MB4502: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2276; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Ckfy4Ny9po/i+LA/hNPqdHkDrIyTPnTbql8KARvegcSqfCfmDQXbfu8hasQlUQf41FwbS6yLrBCQ2w54y5jHsm84EyWasgvcyjRaEWtKvztcKs6HkbLm1/TSyHH8RlDusgN6jiYgBH0sbDrNWWgEXBugwj9a6wg6sp52nimPiJOkv5lkV4krYnWYmC+Si+81ZpANetNpCbp/KADpt6zqLgjKs53UEp9zI8X0/p9Oa+VcmMZCoAIZZBj1IPo7X52W6DZlgqr9KP+PzrCzxiM8olUGaHwkIYbtInfY87j2/NWbziK1vMPWbDaY31YCpElXzB9BGb1dBcQhgdbVNMl9yibgbWhVotudoqnUpawiy/9Fk2nfcNYBFP4F8jlD2FNUCySTE4o76InIJrSQ5CeutGt02caRVmF3s141f8v91feL+I7y7im6x9hKg0CS7+Z3lB0GexF+Y1blO36auV/nyGJIshpStChlyH2L6diNSA3jTi/WCalo5RDw5FpelsNYCH/0IHrWDu/wRow//gkD0bJE70g9LzU+7YgSB44wh/kr+9BCl0SPobjekbR7nfDi3N7FkwJYk0Sxa9eC9cVkOz9FjXcur7K31+6XKVdF5To= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR10MB2709.EURPRD10.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(4636009)(346002)(376002)(136003)(366004)(39860400002)(396003)(86362001)(31686004)(2906002)(31696002)(6486002)(5660300002)(66556008)(53546011)(316002)(6916009)(8936002)(2616005)(16526019)(36756003)(8676002)(478600001)(66476007)(186003)(66946007)(6666004)(83380400001)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?eXd6SC9Ib0htcE4wUzNPRnhIMUpBOGtpTUswb2RieTA2b2xYWGhzbzRIU29t?= =?utf-8?B?UE1CQ1JjM0c2dG1vWlhxTzdPYlk0b0hZdU5ndiswdDM5R2tlSXpwTGxWZXI3?= =?utf-8?B?VEJ5ZW5GZ2ZiU0pUcktqL25YT21YRk9lQ2tTV3o1T3JXQWltSllMKzd0QXRz?= =?utf-8?B?YXh6OWVIMkFjNmZMOG9qbllNRzliVzl6elp1UGJ5VE9wU2ZsOVJlYUppeEx2?= =?utf-8?B?a3h2UW9TbVVHOWxYRk1CaWlvbldDcnkxa2ZaUUJWdlJ2WkVzUlp0S1NZT1M5?= =?utf-8?B?Y3dkck9FbUFhM2xzeXFYZEhKYlVLdkxmazhXNDVFdUFIUkxzaitCYUh2VjNa?= =?utf-8?B?Wmp4a1dMdTh5N3lMeEZlVmlDSnA5WTZ6WGF2bVBKMHFvaDdLZmFPZUxva1VJ?= =?utf-8?B?WDNyZFFGVjRWczB2bmNTeWx5NGw0Z1J0SlhsS0ljYUQ5ajU4blVZbHc2a0dp?= =?utf-8?B?Z0VQUGRGTWJ2NHhKazgyd0VydVRyL2l6OTVTTC82eDhxSnpxMy9FNU1teVpm?= =?utf-8?B?Z1FmSVJhMU1iN1MvdjZCTmtBQjU3a1ppQ3VuMlVWOHUvSjRXRkJZakNTb05Y?= =?utf-8?B?aDdMSkcyVmxTajBrL0ZvT20vREk0bUpXRXpnNEdUWnA5ZHBJZHUwdWJYU0Vz?= =?utf-8?B?ZTVJOXBYV2NOQmJDKzFnTG84dm5PaEZibVFMRlk4OGdDanlYZFZGSitRMDBz?= =?utf-8?B?V01WRE9TM3pBUUl5R0lKdSsrSzZoK3IvcEllRVJGemVHdStkMGFyYjRoVTMw?= =?utf-8?B?MVhsNXhXd3dscWNpd0p6cHVoN2hIRFNTQVVSVEdhemk3Z0xEeWpSVnhnOWFn?= =?utf-8?B?S1czQjE2enlaZDAxNkZlZmV1VW5ydWk3eWNmSkI3dm9acEI2Uk5VWVF3R3c5?= =?utf-8?B?K0ovYldxQmFINlo1TDJ3QmcvNEtNQUFHWnB3Ymc0OExHcDE2YkhGbGF1Wngy?= =?utf-8?B?VCsxbzJpRjI5djlUeVUxWkNaWFB0bElpREM2QmZ3R2xoU21NN2tzRTZyK2Jq?= =?utf-8?B?SlVEYUZaZG42ZVVRSXFoem5vNktXdTFTM0NZdjl3MzlhU0JCNFZPZGFIYkc5?= =?utf-8?B?a3VBVm1FT3hhbWRpZkhFVi9zV0hIYlRQTEZ1dW5jTmc0d2FaOWhybTNQRzRE?= =?utf-8?B?YUtFOEN3NG5rV0VaWjhudlAzTm1pR2pKdjVkUm1WVllBZ1EvSEFXMkZ6V3Jq?= =?utf-8?B?anZpaENxdlJqVk4zUGwyVGNaOUQ2R3piM1k5UDZTM3JRRGI0dEQ2L2NMS0lD?= =?utf-8?B?L3VFclFleWZ2M200RE5oU2dXMHpyMTIway9ZUXAvNFFRUG9Kb1hDYzl1SUFx?= =?utf-8?B?U2pxZi9NQ29pWkN3cFdka0VvY3hVZmZuYlk5cGgvU1cwcjVwTUFEZkkvUldq?= =?utf-8?B?WW5ieFZyalFtVXdhUU1MWExrV2NIZVdmeHd1L054N0M3LzhYSTBmWk5pVVhJ?= =?utf-8?B?UWdrWjYySWg3d0lMajhzS0o2WUtuVVBnV3djNStaTmVrblh2SkpVZktXOVIz?= =?utf-8?B?SWFmQW53TFA1WVBaSnBzMjRRMXZDa21STlNabXNsRzZLcDJ6d1VIMnlFSklZ?= =?utf-8?B?MkJvVHRxaWtCREdVOWdNbmNGNjdpRlR6VEZCVEI0S1JNQVRWcGJKUU5xZGlH?= =?utf-8?B?Yk9vOU9QdGxRdmQ2TVhJb0I5Sks4UzN0VkV1cDJWczlZOSs4OTdUV1pIL1cy?= =?utf-8?B?YUtSWXc4TzcySTVmK1pmNU9pSTNseVpEZG9iMFdJbzRMb3RXV05xQ0lDb01u?= =?utf-8?B?TTNKTFBhdGprdW9vSElpM0crL0lmbEhpUzBmMXVCbS9yZUsxTEduaDJCTks5?= =?utf-8?B?UmM0ZGhOb3ZLbTh2UU1rS3JZTk1wOTdDL3ZqakVlZkNRWHhFV0xRcVJVK2tt?= =?utf-8?Q?6stabfBthKeEo?= X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-Network-Message-Id: a473bcfe-dfb1-4234-df6d-08d8cf80a273 X-MS-Exchange-CrossTenant-AuthSource: AM6PR10MB2709.EURPRD10.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Feb 2021 18:04:26.3540 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 38ae3bcd-9579-4fd4-adda-b42e1495d55a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Bw/is4er8yg9A5L8isKnhOUOuoIBnGzPSaDtVAImDthmAlXFBXL3jKU3PUlSH1Igo9Ase1+mxtlnL4+GPxjFNyXZopK6VQ+MOMU7UkIiidyJlanUVyov69fT50G2jGAd X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR10MB4502 X-TUID: DgBWhJ26nUDC On 12/02/2021 18:46, [ext] Silvano Cirujano Cuesta wrote: > On 12/02/2021 18:10, Jan Kiszka wrote: >> On 12.02.21 09:51, [ext] Silvano Cirujano Cuesta wrote: >>> Add support for creation of container images with the build root >>> filesystems. >>> >>> Extend also task "populate_sdk" to support the creation of a container image >>> containing the SDK. >> Should be done in to steps: container-img.bbclass frirst, and then a >> patch to use it for the SDK as well. > Ok. There are some many different tastes WRT to big vs small commits :-) > >>> Signed-off-by: Silvano Cirujano Cuesta >>> --- >>> meta/classes/container-img.bbclass | 88 ++++++++++++++++++++++++ >>> meta/classes/image-sdk-extension.bbclass | 51 ++++++++++++-- >>> meta/classes/image.bbclass | 1 + >>> 3 files changed, 133 insertions(+), 7 deletions(-) >>> create mode 100644 meta/classes/container-img.bbclass >>> >>> diff --git a/meta/classes/container-img.bbclass b/meta/classes/container-img.bbclass >>> new file mode 100644 >>> index 0000000..35c7bbc >>> --- /dev/null >>> +++ b/meta/classes/container-img.bbclass >>> @@ -0,0 +1,88 @@ >>> +# This software is a part of ISAR. >>> +# Copyright (C) Siemens AG, 2021 >>> +# >>> +# SPDX-License-Identifier: MIT >>> +# >>> +# This class provides the tasks 'containerize_rootfs' and 'containerize_sdk' >> Nope, it now only provides the former. > Yes, you're right, will fix it. >>> +# to create container images containing the target rootfs and the SDK >>> +# respectively. >>> + >>> +CONTAINER_FORMATS ?= "docker-archive" >>> + >>> +containerize_rootfs() { Wouldn't it make sense to put the "containerize_rootfs" function in a separate class "container.bbclass" or "image-container-extension.bbclass" or similar and let "image.bbclass" inherit from it? The current structure that I have come up to seems weird to me, it isn't obvious that "containerize_rootfs" is meant to be reused. (-) an additional class for a single function (+) better structured code >>> + local cmd="/bin/dash" >>> + local empty_tag="empty" >>> + local full_tag="latest" >>> + local oci_img_dir="${WORKDIR}/oci-image" >>> + local rootfs="$1" >>> + local rootfs_id="$2" >>> + local container_formats="$3" >>> + >>> + # prepare OCI container image skeleton >>> + bbdebug 1 "prepare OCI container image skeleton" >>> + rm -rf "${oci_img_dir}" >>> + sudo umoci init --layout "${oci_img_dir}" >>> + sudo umoci new --image "${oci_img_dir}:${empty_tag}" >>> + sudo umoci config --image "${oci_img_dir}:${empty_tag}" \ >>> + --config.cmd="${cmd}" >>> + sudo umoci unpack --image "${oci_img_dir}:${empty_tag}" \ >>> + "${oci_img_dir}_unpacked" >>> + >>> + # add root filesystem as the flesh of the skeleton >>> + sudo cp -a "${rootfs}"/* "${oci_img_dir}_unpacked/rootfs/" >>> + >>> + # pack container image >>> + bbdebug 1 "pack container image" >>> + sudo umoci repack --image "${oci_img_dir}:${full_tag}" \ >>> + "${oci_img_dir}_unpacked" >>> + sudo umoci remove --image "${oci_img_dir}:${empty_tag}" >>> + sudo rm -rf "${oci_img_dir}_unpacked" >>> + >>> + # no root needed anymore >>> + sudo chown --recursive $(id -u):$(id -g) "${oci_img_dir}" >>> + >>> + # convert the OCI container image to the desired format >>> + image_name="isar-${rootfs_id}" >>> + for image_type in ${CONTAINER_FORMATS} ; do >>> + image_archive="${DEPLOY_DIR_IMAGE}/${rootfs_id}-${image_type}.tar" >>> + bbdebug 1 "Creating container image type: ${image_type}" >>> + case "${image_type}" in >>> + "docker-archive" | "oci-archive") >>> + if [ "${image_type}" = "oci-archive" ] ; then >>> + target="${image_type}:${image_archive}:latest" >>> + else >>> + target="${image_type}:${image_archive}:${image_name}:latest" >>> + fi >>> + rm -f "${image_archive}" "${image_archive}.xz" >>> + bbdebug 2 "Converting OCI image to ${image_type}" >>> + skopeo --insecure-policy copy \ >>> + "oci:${oci_img_dir}:${full_tag}" "${target}" >>> + bbdebug 2 "Compressing image" >>> + xz -T0 "${image_archive}" >>> + ;; >>> + "oci") >>> + tar --create --xz --directory "${oci_img_dir}" \ >>> + --file "${image_archive}.xz" . >>> + ;; >>> + "docker-daemon" | "containers-storage") >>> + skopeo --insecure-policy copy \ >>> + "oci:${oci_img_dir}:${full_tag}" \ >>> + "${image_type}:${image_name}:latest" >>> + ;; >> Missing check for "Am I in a container?", like in the SDK. Maybe move >> that test here and share. > Not needed, since the usage of IMAGE_TYPE is fixing already to container type. > > In the case of the SDK the same task is provides the non-containerized format tar-xz. > >>> + *) >>> + die "Unsupported format for containerize_rootfs: ${image_type}" >>> + ;; >>> + esac >>> + done >>> +} >>> + >>> +do_container_image[stamp-extra-info] = "${DISTRO}-${MACHINE}" >>> +do_container_image[vardeps] += "CONTAINER_FORMATS" >>> +do_container_image(){ >>> + rootfs_id="${DISTRO}-${DISTRO_ARCH}" >>> + >>> + bbnote "Generate container image in these formats: ${CONTAINER_FORMATS}" >> Probabably more "bbdebug"? Unsure. But we aren't using bbnote in the >> core so far. Nor bbdebug, though. > At least bbdebug is IMO needed for debbuging if goes wrong. > > BTW I'm using bbdebug a lot in the containerize_rootfs section because I've missed those kind of traces much too often when trying to debug some issues on ISAR recipes. > > Perhaps we should have more debug verbosity in the logs to ease debugging... > >>> + containerize_rootfs "${IMAGE_ROOTFS}" "${rootfs_id}" "${CONTAINER_FORMATS}" >>> +} >>> + >>> +addtask container_image before do_image after do_image_tools >>> diff --git a/meta/classes/image-sdk-extension.bbclass b/meta/classes/image-sdk-extension.bbclass >>> index a8c708a..63138da 100644 >>> --- a/meta/classes/image-sdk-extension.bbclass >>> +++ b/meta/classes/image-sdk-extension.bbclass >>> @@ -6,11 +6,25 @@ >>> # 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 >>> + bbnote "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" >>> +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 >>> @@ -48,12 +62,35 @@ do_populate_sdk() { >>> done >>> done >>> >>> - # Copy mount_chroot.sh for convenience >>> - sudo cp ${SCRIPTSDIR}/mount_chroot.sh ${SDKCHROOT_DIR} >>> + # 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") >>> + if [ -z "${sdk_container_formats}" ] ; then >> Unneeded, just use the else part unconditionally. > The else part alone adds a heading whitespace. It's being ignored in containerize_rootfs, but it's still messing up some outputs. > > Not really useless, but not important (in fact that was my 1st version). I can change it in the next patch series version that I need anyway. > >>> + sdk_container_formats="${sdk_format}" >>> + else >>> + sdk_container_formats="${sdk_container_formats} ${sdk_format}" >>> + fi >>> + ;; >>> + "docker-daemon" | "containers-storage") >>> + if [ -f /.dockerenv ] || [ -f /run/.containerenv ] ; then >>> + die "Adding the SDK container image to a container runtime (${sdk_format}) not supported if running from a container (e.g. 'kas-container')" >>> + fi >> See above, should likely go into containerize_rootfs(). > Right, will fix it. > > In fact this case section is really messed up, I have to clean it up completely. > >>> + ;; >>> + *) >>> + die "unsupported SDK format specified: ${sdk_format}" >>> + ;; >>> + esac >>> + done >>> >>> - # 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 >>> + # 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 eddc444..7fb7b7e 100644 >>> --- a/meta/classes/image.bbclass >>> +++ b/meta/classes/image.bbclass >>> @@ -76,6 +76,7 @@ inherit image-tools-extension >>> inherit image-postproc-extension >>> inherit image-locales-extension >>> inherit image-account-extension >>> +inherit container-img >>> >>> # Extra space for rootfs in MB >>> ROOTFS_EXTRA ?= "64" >>> >> Jan > Silvano > Silvano