From: Michael Olbrich <m.olbrich@pengutronix.de>
To: ptxdist@pengutronix.de
Cc: Roland Hieber <rhi@pengutronix.de>
Subject: Re: [ptxdist] [APPLIED] image-rauc: pick up hook script if it exists
Date: Fri, 24 Nov 2023 08:28:22 +0100 [thread overview]
Message-ID: <20231124072822.1912010-1-m.olbrich@pengutronix.de> (raw)
In-Reply-To: <20231114220708.2816211-1-rhi@pengutronix.de>
Thanks, applied as ae5c38009cceca58fb793c8de2c717f28dc31861.
Michael
[sent from post-receive hook]
On Fri, 24 Nov 2023 08:28:22 +0100, Roland Hieber <rhi@pengutronix.de> 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 <rhi@pengutronix.de>
> Message-Id: <20231114220708.2816211-1-rhi@pengutronix.de>
> Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
>
> 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)" \
prev parent reply other threads:[~2023-11-24 7:28 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-06 10:55 [ptxdist] [PATCH] " Roland Hieber
2023-11-10 8:03 ` Michael Olbrich
2023-11-14 22:07 ` [ptxdist] [PATCH v2] " Roland Hieber
2023-11-24 7:28 ` Michael Olbrich [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231124072822.1912010-1-m.olbrich@pengutronix.de \
--to=m.olbrich@pengutronix.de \
--cc=ptxdist@pengutronix.de \
--cc=rhi@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox