From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Fri, 24 Nov 2023 08:28:56 +0100 Received: from metis.whiteo.stw.pengutronix.de ([2a0a:edc0:2:b01:1d::104]) by lore.white.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1r6QcR-0077TZ-2Z for lore@lore.pengutronix.de; Fri, 24 Nov 2023 08:28:56 +0100 Received: from localhost ([127.0.0.1] helo=metis.whiteo.stw.pengutronix.de) by metis.whiteo.stw.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1r6QcS-00080T-3H; Fri, 24 Nov 2023 08:28:56 +0100 Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.whiteo.stw.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1r6Qbu-0006fV-Q4; Fri, 24 Nov 2023 08:28:22 +0100 Received: from [2a0a:edc0:0:1101:1d::54] (helo=dude05.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r6Qbu-00BDRd-Dl; Fri, 24 Nov 2023 08:28:22 +0100 Received: from mol by dude05.red.stw.pengutronix.de with local (Exim 4.96) (envelope-from ) id 1r6Qbu-0081Sw-1A; Fri, 24 Nov 2023 08:28:22 +0100 From: Michael Olbrich To: ptxdist@pengutronix.de Date: Fri, 24 Nov 2023 08:28:22 +0100 Message-Id: <20231124072822.1912010-1-m.olbrich@pengutronix.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231114220708.2816211-1-rhi@pengutronix.de> References: <20231114220708.2816211-1-rhi@pengutronix.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: Re: [ptxdist] [APPLIED] image-rauc: pick up hook script if it exists X-BeenThere: ptxdist@pengutronix.de X-Mailman-Version: 2.1.29 Precedence: list List-Id: PTXdist Development Mailing List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: ptxdist@pengutronix.de Cc: Roland Hieber Sender: "ptxdist" X-SA-Exim-Connect-IP: 127.0.0.1 X-SA-Exim-Mail-From: ptxdist-bounces@pengutronix.de X-SA-Exim-Scanned: No (on metis.whiteo.stw.pengutronix.de); SAEximRunCond expanded to false Thanks, applied as ae5c38009cceca58fb793c8de2c717f28dc31861. Michael [sent from post-receive hook] On Fri, 24 Nov 2023 08:28:22 +0100, Roland Hieber wrote: > Introduce a new kconfig option to package a hook script into the RAUC > bundle and reference it in the manifest. Otherwise leave the [hooks] > section in the manifest empty. The hook script is searched > config/images/rauc-hooks.sh in the usual search locations. RAUC will > complain if a hook script is referenced but no hook script is found in > the image (i.e. IMAGE_RAUC_HOOK_SCRIPT is empty). > > As hooks that should be called by RAUC need to be mentioned in the > manifest too (in the relevant slot or the [bundle] section), the image > config will still need to be forked by BSPs in order to adapt the > manifest for that use case. However, the mechanism to find the hook > script is then already in place, and can be used as-is. > > Signed-off-by: Roland Hieber > Message-Id: <20231114220708.2816211-1-rhi@pengutronix.de> > Signed-off-by: Michael Olbrich > > diff --git a/config/images/rauc.config b/config/images/rauc.config > index e4169cc8cd95..4a6b34deee29 100644 > --- a/config/images/rauc.config > +++ b/config/images/rauc.config > @@ -1,6 +1,7 @@ > image @IMAGE@ { > rauc { > file root.tar.gz { image = "root.tgz" } > + @RAUC_HOOK_FILE@ > manifest = " > [update] > compatible=@RAUC_BUNDLE_COMPATIBLE@ > @@ -11,6 +12,9 @@ image @IMAGE@ { > [bundle] > format=@RAUC_BUNDLE_FORMAT@ > > + [hooks] > + @RAUC_HOOK_MANIFEST@ > + > [image.rootfs] > filename=root.tar.gz > " > diff --git a/platforms/image-rauc.in b/platforms/image-rauc.in > index 391956a42f81..2070cf0069c1 100644 > --- a/platforms/image-rauc.in > +++ b/platforms/image-rauc.in > @@ -58,4 +58,13 @@ config IMAGE_RAUC_INTERMEDIATE > verification. The certificates must be stored in the CA of the > "update-intermediate" role of the code signing provider. > > +config IMAGE_RAUC_HOOK > + bool "include hook script" > + help > + If you enable this option and create a file named > + config/images/rauc-hooks.sh in any PTXDIST_PATH component, it will be > + included in the bundle and declared as a hook script in the manifest. > + Note that you still need to define the respective install or slot > + hooks in the manifest so that RAUC calls them. > + > endif > diff --git a/rules/image-rauc.make b/rules/image-rauc.make > index 23d8d83b5251..e267e78c68f2 100644 > --- a/rules/image-rauc.make > +++ b/rules/image-rauc.make > @@ -19,6 +19,10 @@ IMAGE_RAUC := image-rauc > IMAGE_RAUC_DIR := $(BUILDDIR)/$(IMAGE_RAUC) > IMAGE_RAUC_IMAGE := $(IMAGEDIR)/update.raucb > IMAGE_RAUC_CONFIG := rauc.config > +IMAGE_RAUC_HOOK_FILE := $(call ptx/in-path, PTXDIST_PATH, config/images/rauc-hooks.sh) > + > +$(call ptx/cfghash, IMAGE_RAUC, $(IMAGE_RAUC_HOOK_FILE)) > +$(call ptx/cfghash-file, IMAGE_RAUC, $(IMAGE_RAUC_HOOK_FILE)) > > # ---------------------------------------------------------------------------- > # Image > @@ -36,6 +40,16 @@ ifdef PTXCONF_IMAGE_RAUC_BUNDLE_FORMAT_CRYPT > IMAGE_RAUC_BUNDLE_FORMAT := "crypt" > endif > > +ifdef PTXCONF_IMAGE_RAUC_HOOK > +IMAGE_RAUC_ENV_HOOK = \ > + RAUC_HOOK_FILE="file hooks.sh { image = \\"$(IMAGE_RAUC_HOOK_FILE)\\" }" \ > + RAUC_HOOK_MANIFEST="filename=hooks.sh" > +else > +IMAGE_RAUC_ENV_HOOK = \ > + RAUC_HOOK_FILE="" \ > + RAUC_HOOK_MANIFEST="" > +endif > + > IMAGE_RAUC_ENV = \ > $(CODE_SIGNING_ENV) \ > RAUC_BUNDLE_COMPATIBLE="$(call remove_quotes,$(PTXCONF_RAUC_COMPATIBLE))" \ > @@ -43,6 +57,7 @@ IMAGE_RAUC_ENV = \ > RAUC_BUNDLE_VERSION="$(call remove_quotes, $(PTXCONF_RAUC_BUNDLE_VERSION))" \ > RAUC_BUNDLE_BUILD=$(call ptx/sh, date +%FT%T%z) \ > RAUC_BUNDLE_DESCRIPTION=$(PTXCONF_IMAGE_RAUC_DESCRIPTION) \ > + $(IMAGE_RAUC_ENV_HOOK) \ > RAUC_KEY="$(shell cs_get_uri update)" \ > RAUC_CERT="$(shell cs_get_uri update)" \ > RAUC_KEYRING="$(shell cs_get_ca update)" \