From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6927266035414335488 X-Received: by 2002:a50:fd97:: with SMTP id o23mr4579413edt.306.1613151979828; Fri, 12 Feb 2021 09:46:19 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a17:906:6a87:: with SMTP id p7ls4993798ejr.10.gmail; Fri, 12 Feb 2021 09:46:19 -0800 (PST) X-Google-Smtp-Source: ABdhPJw8Mm094xZ0oTL0fXjEgB8F8AcjHbtpbinKhOvDrZu3NZATtrRqd5fR5sKM0B+sXRP2i349 X-Received: by 2002:a17:906:c9cc:: with SMTP id hk12mr4230571ejb.134.1613151978886; Fri, 12 Feb 2021 09:46:18 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1613151978; cv=pass; d=google.com; s=arc-20160816; b=NN9COq1n9ajHUBFYy2wLdu3jGS+Cq5M/hWKTGY6hBeOXqPuzc+ajU4doKJE4SMiDzr 9FmIqML7vycG0s7I/QbkVzX8vaEOIK9yXO8iN+nTnbsQEiIbDN2Fwq3Vplz6F64pcmSM tduzaX3cLLRtfBiCy3lCeiqz/AF4piwxBcaX8wxrr+zqW0tHQYxiOdd+64U+AA4XKJxI SoBbtdXQM2w5e81DnLaEtrgjZ6dOK9lhU2dBXN0AJ24zLtRMZ6tq/kD78QICfbGBURQR Ei6s/G7uuF8ByiVRFHNqcApOvv2iZ9d+BIgTKgtU44GIDmxvl+eIWSR/8MQp7L18P6wn U+TQ== 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=470CMH/kQKacC45bpZ9YCntB2kxhJ3X8Wf0f61OHtzg=; b=yyV2LApzmU+mTNm5z+EXiWh8lYigM50WR5aYc7O57P0bDFpSDnvgo6KbpKnd8SkUOs /5fp2ZqNhzKSrTR7/VTR5Cfu6amOJ8wl9nYaKwgP9+MeB7jouvLG/SHy4vtOrUpHY7ZN h72AXYKE2SjDv96syuGYIpDnSz4nIAjhE6aTaXYeXCW+gez+6MPxF0Y2/ZTL1YJLRShi dtiJI7VC22fmKm1ZTgjCxZnJHSotCVRHLmoKNUF02Sd4y8n1xIRG1dZbvM87dGsWHSnA dc1eXaqusBHAJ0chsXL1IPBTrd/zmjb1oz9osVHS1tPvzJd0XFdPa7WeUqdpogGMp50w UCjw== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.onmicrosoft.com header.s=selector1-siemens-onmicrosoft-com header.b=GU5U8Whj; 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.21.85 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 EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2085.outbound.protection.outlook.com. [40.107.21.85]) by gmr-mx.google.com with ESMTPS id cx3si473206edb.0.2021.02.12.09.46.18 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 12 Feb 2021 09:46:18 -0800 (PST) Received-SPF: pass (google.com: domain of silvano.cirujano-cuesta@siemens.com designates 40.107.21.85 as permitted sender) client-ip=40.107.21.85; Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.onmicrosoft.com header.s=selector1-siemens-onmicrosoft-com header.b=GU5U8Whj; 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.21.85 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=bigV4olsKgq+On9NZGawbQ0EdsV0/8nY132jyOe+pR2hW2J0YNffPsDMaaqB0SgOpVtE3+qBs5fuVZZ+1Yc5qXPQTHu6bYoNOScx4vTV5nnmohJanArKD1G3hnhEhteGDhB7pLqzRnu0LJSZ8d2cEU+UHEPud3I7jlyB/ABSL3ORKS4KHfo/KBb9u/OuKna6UzzeJWweNThQYxgLapASu/S1fe98LJ2Iox2VMnHsokc8os7mdquwdcpAypWezav7UKPWRm8I9LPaEl0RD8jKw66EPJX7XzhoQd6KwUYLdliIbVgJR/Yl96w32URlMxhkp4aKHbOZFsoBbpVAbrzXbw== 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=470CMH/kQKacC45bpZ9YCntB2kxhJ3X8Wf0f61OHtzg=; b=P2yXEaaO6rdJd6Y+OMfeFVQs0721ZZDXGrfYDinsqvaW5IpwgMXGHB+YsWPMgsyAutx7iPMCs03nNjhoQ8VOcSFuB/G6wNLgQ1dIHtl4WJ0WaceOFdSg/NuIEiuUL4iby2Su2O3WVzj48iU308oGORTIYA0LRxg7isggoZWhVUvG7Wdv9sr0PVJVzySu1b1IkA/b43qMpWqMbd2LXKowUeD2OA3E6rU5TBkOMit2jjBpXQSyuBID1T74vDomvR3YWkloLnFL2ZSxBjsYtAyBj/IaA0KYmH/lJ18O3L3xY6xzVo3kryG1TRzGq265NHZGN4Ntxvje2M1Fvc8rViIfMA== 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=470CMH/kQKacC45bpZ9YCntB2kxhJ3X8Wf0f61OHtzg=; b=GU5U8Whj6yAqGExAWVhqAHJ/LrnUDOc+Nr3qEmTmDk8yZfYTtjwEYoFW4xHZ1f5m1L26X/IYu4SChkOtX7GvPV4Xy0FwpTyIXk98/yO3kR0k2m8FyewxVzNumsepGlNyp4S11A6FcGk5RYEqEC4Uzsq8ZmjIr8q2NpsbMN65u98= 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 AM5PR1001MB1185.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:203:10::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3846.27; Fri, 12 Feb 2021 17:46:17 +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 17:46:17 +0000 Subject: Re: [PATCH v3 1/2] images: add support for container images To: Jan Kiszka , 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: Date: Fri, 12 Feb 2021 18:46:15 +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: AM3PR07CA0142.eurprd07.prod.outlook.com (2603:10a6:207:8::28) 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 AM3PR07CA0142.eurprd07.prod.outlook.com (2603:10a6:207:8::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3868.12 via Frontend Transport; Fri, 12 Feb 2021 17:46:17 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: fa1e1d28-27b6-44d3-7679-08d8cf7e195b X-MS-TrafficTypeDiagnostic: AM5PR1001MB1185: X-LD-Processed: 38ae3bcd-9579-4fd4-adda-b42e1495d55a,ExtAddr X-MS-Exchange-Transport-Forked: True 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: Ru0RoJnz2n5bJT2A5o8r9EDGHn3yWWDFGoLZrxOYxp+DYFgTmT+X/N2jvQBSj6sRk55ukSbXlF4I6X4mupUlhX2z/7Hlx0c1PQZrxOZqAgpQ09MNTnXsZgasjAXMN8jH3Gs9jtTFTHrkeoJFulu7e/NWKyU2owp4hWeL9grst5NBGLNhs3fywfy56LL0eMipWY3UAIWMhmmypoS21xKjwggSc/V1fv1rKHe/mt4RhimBKxH3X9PTkZhwKBAMucZn2jMrEYt8il0zSsQROc+RSBOCU9ivGtSZQeiySwAFEqTcWw/WZUTUP+bZUbAoK2fVrqngfO8s3ao2aIGYkUH2JmVWITNyvBD+oZtZV+hrVe+m8LLVHtkm5Y2ypOZuyzHJugB7GOt6n3Yi/hBbP7WjBe9dUCqJ4keCQ1i2t+01bwzwDOFYbr8aAjQ0XLva8YKcgjRtmEghGOxebhGowt1I9140U+TaMtTQhCi9ybywWvqsEqbpp/5wAV69oHY0rpBv5YXBmiWvAhYkqajoicgCTqy3O3p9UcyWuRk1nA9r16ZyiUPAQs3Ess8eDJ0wmPeqSoG0+5yWab7krs7Vwor8g58Fy5BV6wiIW4vGvTNN2GE= 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)(396003)(366004)(346002)(39860400002)(136003)(376002)(16526019)(186003)(8936002)(86362001)(5660300002)(31696002)(66946007)(316002)(66556008)(83380400001)(36756003)(2616005)(478600001)(31686004)(8676002)(6486002)(53546011)(2906002)(66476007)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?M2hJOTVtYkRQdkh3aU9BUkU4VUdobWt1QWRkald5UkYrQ1ZzbWZIRFpGL0JG?= =?utf-8?B?dXNDNW1Iaysxa1BpS1dFRElsc0dLWDhZM2FtRXVtWldHeDRzdE14UjBXUVZK?= =?utf-8?B?NjRiUFUvaEMyOEZCSXJ2ZTdSQ25ldkVrTHFRTzhmajJ5bnQrTEJhbkpXNm45?= =?utf-8?B?L2tYVWp0WVVNYTlTVkhWN3IwYzYveHJhOEdod2MxbDg1R0hhMFJBN3NGdDlh?= =?utf-8?B?czBFK1B6a0ROSXBOTFZHMDIrWGl0ajk4TWhoY0llOUZxeFpzWTVpR0xXUnpx?= =?utf-8?B?bitYdEd1bURtRjhWU3NINWUxUXRiL0d2M3BwcHNpV1VwSExGWjlGQ203akxj?= =?utf-8?B?c1JLS2JLQkVuWFJrQm9Jd0hqTEFFNC9wTFRtOWpIeVo0M1p5MHJ0SUVDUzha?= =?utf-8?B?Um1XRHVyRlR3aElhN3FkMy9pb2tGVTBWUksrZWlwdW42SWsxd3NqQzNlNDdR?= =?utf-8?B?TkJsYVdhejhKV1hYZ2tXMzNhYzhPeElOZU1jUjZvVCs2cm5oM1RTMXlXcWtD?= =?utf-8?B?SHQvVDhMcFdNcDVZem9PSWF0VE9LVFE0L2duMDZGcEpTQ01lWklTVDN3SXFq?= =?utf-8?B?Zmtpa3VzMStWbVhyeTBNaE1FS1hmOG1MWlhQS1dWRnFZUUE5OUd2TEV0akw2?= =?utf-8?B?c2daRjNtcDk1YWVOOVlmTGZiM1NZUFRObFdDOWJTZmIrejNxMGdyWko3MTdU?= =?utf-8?B?ZXF3SXBVRW1ITHpRbmVIQ2VKWkhTTUNCTlN1ajZaQjRuNVlXWmdJTkJjVHFL?= =?utf-8?B?cEpXZzV5eEZCYXdydzh4Y0ZaaFFJN2JreXF3MkQ5OUhLWEJwSnYzUkdQR2ZI?= =?utf-8?B?NGZkSEdNUmtPMW1xNTZ6N1V2ZUJ0UlhwMUdmK3Bsd0FqaFdpYVY2ZFpnR2p0?= =?utf-8?B?cjZDQzhGZm5jR295VFlCSC8rSmJ2YVgzc2pMaEJIQWlzcll6OGszQStqZkZI?= =?utf-8?B?eDRkYktjUnFpTzZqdzY4WG9HOVA2c2FQUHVTTXhsWTF6b3dCek95ZnA1T3F2?= =?utf-8?B?WWU4R2cyYkhIVEY2Q3ZRM2ZZUXFGb3VXUmxhb0NBb3BINnFVMmlTbFN5RUUy?= =?utf-8?B?VWFTUW1RVHNkSVhlOHlhelBWMzB6TU9wazV5LytITVUwUmlmMW1NMHBXTmIr?= =?utf-8?B?OUE3azFlaEYycGRCYnZaYTA0aGcrY2gwd1oxb2tpQjlpTlpwTEt6dEU4UmRG?= =?utf-8?B?QWZ2RkZ0YXFoa1grZTdDcmVFVkM0em1oT3o2NEpMK2xmdU9SZFZWOUhVL3pa?= =?utf-8?B?UGNOcTltRkwySmRxeVd5VGtUY3ovdnJ6VWcxNDdlTnhQOEpZKzBvc0JrdXAz?= =?utf-8?B?ZndUNnBhU1RwQSs0bldsY2ZUV2hZaXhLTDRyRnZNb1EveDhCWTZ0bzV2Mmdo?= =?utf-8?B?WCs0OHUxZW9aWEVzWkxMSzFCNEZKMkNLLzlxTDZjTTJjejFMZDRYdUdwc2d4?= =?utf-8?B?UmRnVDJPZWRiMVFFeDJtaVBXeHVpRURVQm1mL2UwK2tJUG9hZmVCMjFRZitE?= =?utf-8?B?K0NxdHl4ODJTOWxCUmxrbWlFeVlpT1RGM1RLQTBZMkU2Z1hQZElSMVhNRkZa?= =?utf-8?B?bElrTTdqa0c1Z0Z2eEt4ejdNVWY1TTZhc05iWHhJMXc3WjFuTHg1bkpFRUlL?= =?utf-8?B?c2VIdXpyTEc3R2l3aVVvM3A4ekFMMklIY3JaV1Voa3NEbDlUUFRwVURma3Y0?= =?utf-8?B?M3VEOTd2U3F4YU9PL2QxcHhBNHVvM3JpZ2h2RS9oMVNwWTRYVmZ3VUdIcThy?= =?utf-8?B?a2JETEVOUjk0TVlUOW1zblluY0V3dWFiOGxEckt4RVRybTNtWXZKbVBBdmNK?= =?utf-8?B?bXMyNkJ4TlZsQnEvWU5MUGpsSENuQjc5OVZkd2E3Yk1wUFN1Ukg0eE10ZjlH?= =?utf-8?Q?Hq5EmKOb4DNWP?= X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-Network-Message-Id: fa1e1d28-27b6-44d3-7679-08d8cf7e195b X-MS-Exchange-CrossTenant-AuthSource: AM6PR10MB2709.EURPRD10.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Feb 2021 17:46:17.5806 (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: z1bcA8tJvdk6Xmr59QvPZkGrE/oKclrefkBlWJ9uyMsy8OqZO9e94B/WFHq1+wsIepoXmWofopdeZF6iSMlHfXOPzsd6Ai9HWyMD5mXgYyXZ/FsdkZ/dlSN2T60XmyFh X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR1001MB1185 X-TUID: WyPE9pAhB6q3 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() { >> + 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 -- Siemens AG, T RDA IOT SES-DE Corporate Competence Center Embedded Linux