From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 7349190070423781376 X-Forwarded-Encrypted: i=2; AJvYcCUibLvpR7bvteMTjPQVXchSNKeJj7IosPvKzAY8u38kiVjRq53tK5kOA4wRQ3+qZicUe2YKvu0eMGh3XsDhhieQqcG4NPK6BYT9rKk= X-Received: by 2002:a05:6871:3a24:b0:229:f035:f5b2 with SMTP id pu36-20020a0568713a2400b00229f035f5b2mr1231226oac.17.1711116655671; Fri, 22 Mar 2024 07:10:55 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a05:6870:2a4a:b0:229:fc9a:b317 with SMTP id jd10-20020a0568702a4a00b00229fc9ab317ls86544oab.2.-pod-prod-03-us; Fri, 22 Mar 2024 07:10:54 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXKzKaYQcKiUCiDAI8hPgu0XbCtmMNsEXHAeA4LihVjlbBB9jtqA13F5/m7aUN8I2KSjeWrj/53yeoCX6TUwK01vKuMq2Y529cEgCM= X-Google-Smtp-Source: AGHT+IGkhkBzJdsP0P8DtTQPV33k/lzbqFKpspdc00EkDDRKflNe0oYYMZTWZPxQJwfUZb8uH5Fe X-Received: by 2002:a05:6871:4082:b0:229:87ae:aca9 with SMTP id kz2-20020a056871408200b0022987aeaca9mr2408446oab.33.1711116653863; Fri, 22 Mar 2024 07:10:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1711116653; cv=none; d=google.com; s=arc-20160816; b=A1iROTtVwhlUP0WM2Ht8qYPBFnoddkuKz9VBnfm7baqUkwxNAKLyjerEebbkWJV9fu Q19ehRnkps5unuDFdnZPHtZwfEwPipIdaAmXiw4a4MlBbIYIfkAecPT2uzP4zJbFOebP M7zJ7R1QEEwNDkaXddcM+SaRWUyq+yQ1NJDUmO0gEqVT4UxIBLxga+J14E5cQtYTrcDw ASK9pc+C3e/GAOzIZnNoKwWlNqyV5OrtLH0FZLicn/yBw+UTauSzhrlgVRaTRau/a5he X9Ta5dmmd9oxA9CIlNwtH7GUfiQ3Dj3+7ING1SF4d70KNIMkHXlsqO8FEEM4RvOS5YcM nFqg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=feedback-id:content-transfer-encoding:mime-version:references :in-reply-to:message-id:date:subject:to:from:dkim-signature; bh=+URAaekKsc/z32ojbIMndYwCFw70tdFI5VLvrswMlC8=; fh=rpHsxb7lPfJJgFX8BDY3/IlKBNbRtI9Z0SHxGoqscuk=; b=hd4t7PxXQBPjmERiZBGFGPpYoEKR+w2uVYab50YjcEn8YYfNrp3Qva9SdLkS2MEHmG MbhjmokBdwq6sOFyi4OSBQ4jqgqRyBjjnaeXc9ea+CCqO/9CcumlSwWUlIc97irC2955 6K8b4Ii8voeA/7CTFYLll1m2K4lSV8PFDr6QFFeRDWJwqPvlCaExXIbisJvw9ao4wSkg oApQml/yhDxdQdk4+eZUo56ZP5DIjVMXpnTXBmafsLBO8co7Phr9YXGUysNUYN7xW9rB AVZuECYxFynpb18iUrPacLCES4yI6JxSQF2q601bcc/evUZVuadxi2Tsercz5y1SBD3u AFTw==; dara=google.com ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=TVEP7AAa; spf=pass (google.com: domain of fm-51332-20240322141051f7980f591db435eafc-a72lz_@rts-flowmailer.siemens.com designates 185.136.64.227 as permitted sender) smtp.mailfrom=fm-51332-20240322141051f7980f591db435eafc-A72lz_@rts-flowmailer.siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com Return-Path: Received: from mta-64-227.siemens.flowmailer.net (mta-64-227.siemens.flowmailer.net. [185.136.64.227]) by gmr-mx.google.com with ESMTPS id gu8-20020a056870ab0800b00222b478e83esi256982oab.1.2024.03.22.07.10.53 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 22 Mar 2024 07:10:53 -0700 (PDT) Received-SPF: pass (google.com: domain of fm-51332-20240322141051f7980f591db435eafc-a72lz_@rts-flowmailer.siemens.com designates 185.136.64.227 as permitted sender) client-ip=185.136.64.227; Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=TVEP7AAa; spf=pass (google.com: domain of fm-51332-20240322141051f7980f591db435eafc-a72lz_@rts-flowmailer.siemens.com designates 185.136.64.227 as permitted sender) smtp.mailfrom=fm-51332-20240322141051f7980f591db435eafc-A72lz_@rts-flowmailer.siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com Received: by mta-64-227.siemens.flowmailer.net with ESMTPSA id 20240322141051f7980f591db435eafc for ; Fri, 22 Mar 2024 15:10:51 +0100 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; s=fm1; d=siemens.com; i=Quirin.Gylstorff@siemens.com; h=Date:From:Subject:To:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:References:In-Reply-To; bh=+URAaekKsc/z32ojbIMndYwCFw70tdFI5VLvrswMlC8=; b=TVEP7AAaZJCNhGjiDyNT5RfeaON6TwQL6WKi3Jc0HHSpb1/SPs+0ipElZEngDJ+iEtgUaU ngIGCVSnyNYWaHoQ2ZSPQjpP58qBfHm5+G1AHRqvOCPlcUScvch5iy1J5nrLbo5fsv9xCjX5 W4XpZvaxWQXeY6n/6046EnS/NNjeE=; From: Quirin Gylstorff To: felix.moessbauer@siemens.com, isar-users@googlegroups.com Subject: [PATCH v2 1/2] add new class to add files directly to the rootfs Date: Fri, 22 Mar 2024 15:10:32 +0100 Message-ID: <20240322141050.256793-2-Quirin.Gylstorff@siemens.com> In-Reply-To: <20240322141050.256793-1-Quirin.Gylstorff@siemens.com> References: <20240322141050.256793-1-Quirin.Gylstorff@siemens.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Flowmailer-Platform: Siemens Feedback-ID: 519:519-51332:519-21489:flowmailer X-TUID: EXhcHhWmXsE+ From: Quirin Gylstorff This allows to add files like the installer target directly to rootfs without compressing the target file. It also reduces the sstate size. Signed-off-by: Quirin Gylstorff --- meta/classes/rootfs-add-files.bbclass | 45 +++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 meta/classes/rootfs-add-files.bbclass diff --git a/meta/classes/rootfs-add-files.bbclass b/meta/classes/rootfs-add-files.bbclass new file mode 100644 index 00000000..dfee440f --- /dev/null +++ b/meta/classes/rootfs-add-files.bbclass @@ -0,0 +1,45 @@ +# This software is a part of ISAR. +# Copyright (C) Siemens AG, 2024 +# This class allows to add a file directly to +# the rootfs. +# An example usecase would be an installer which +# contains an complete rootfs added with multiconfig. +ROOTFS_INSTALL_COMMAND =+ "rootfs_add_files" +ROOTFS_ADDITIONAL_FILES ??= "" + +# ROOTFS_ADDITIONAL_FILES ??= "installer-target" +# +# ROOTFS_ADDITIONAL_FILE_installer-target[source] = \ +# "${DEPLOY_DIR_IMAGE}/${IMG_DATA_FILE}.${IMAGE_DATA_POSTFIX}" +# ROOTFS_ADDITIONAL_FILE_installer-target[destination] = \ +# "/install/${IMG_DATA_FILE}.${IMAGE_DATA_POSTFIX}" + + +python rootfs_add_files() { + import os + if d.getVar("SOURCE_DATE_EPOCH") != None: + os.environ["SOURCE_DATE_EPOCH"] = d.getVar("SOURCE_DATE_EPOCH") + + postprocess_additional_files = d.getVar('ROOTFS_ADDITIONAL_FILES').split() + rootfsdir = d.getVar("ROOTFSDIR") + + for entry in postprocess_additional_files: + additional_file_entry = f"ROOTFS_ADDITIONAL_FILE_{entry}" + destination = d.getVarFlag(additional_file_entry, "destination") or "" + source = d.getVarFlag(additional_file_entry, "source") or "" + if os.path.exists(f"{rootfsdir}/{destination}"): + bb.process.run([ "/usr/bin/rm", "-f", f"{destination}"]) + + # empty source creates only an empty destination file + if not source: + dest_dir = os.path.dirname(destination) + bb.process.run(["sudo", "-E", "/usr/bin/install", "-d", "-m", "600", f"{rootfsdir}/{dest_dir}" ]) + bb.process.run(["sudo", "-E", "/usr/bin/touch", f"{rootfsdir}/{destination}" ]) + return + + if not os.path.exists(f"{source}"): + bb.error(f"{source} does not exists and cannot be copied to the rootfs!") + # no recursive copy only single files + bb.process.run(["sudo", "-E", "/usr/bin/install", "-D", "-m", "600", f"{source}", f"{rootfsdir}/{destination}" ]) +} +ROOTFS_INSTALL_COMMAND += "rootfs_add_files" -- 2.43.0