mailarchive of the ptxdist mailing list
 help / color / mirror / Atom feed
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)" \



      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