mailarchive of the ptxdist mailing list
 help / color / mirror / Atom feed
From: Michael Olbrich <m.olbrich@pengutronix.de>
To: Roland Hieber <rhi@pengutronix.de>, ptxdist@pengutronix.de
Subject: Re: [ptxdist] [PATCH] image-rauc: pick up hook script if it exists
Date: Fri, 10 Nov 2023 09:03:18 +0100	[thread overview]
Message-ID: <ZU3jxlTCGumwWZ0I@pengutronix.de> (raw)
In-Reply-To: <20231106105534.3640846-1-rhi@pengutronix.de>

On Mon, Nov 06, 2023 at 11:55:35AM +0100, Roland Hieber wrote:
> Look for a hook script in any config/images/rauc-hooks.sh in the usual
> search locations, and if one is found, package it into the RAUC bundle
> and reference it in the manifest. Otherwise leave the [hooks] section
> in the manifest empty.

No. This must be explicit. Otherwise, accidentally placing the file in the
wrong location does not result in an error.
Please add an option for it and error out if no script is found.

Michael

> 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>
> ---
>  config/images/rauc.config |  4 ++++
>  platforms/image-rauc.in   |  4 ++++
>  rules/image-rauc.make     | 15 +++++++++++++++
>  3 files changed, 23 insertions(+)
> 
> 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..2850045c313e 100644
> --- a/platforms/image-rauc.in
> +++ b/platforms/image-rauc.in
> @@ -17,6 +17,10 @@ menuconfig IMAGE_RAUC
>  	  To customize the bundle, copy and adapt the genimage configuration
>  	  in configs/images/rauc.config.
>  
> +	  If you create a file 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.
> +
>  if IMAGE_RAUC
>  
>  config IMAGE_RAUC_DESCRIPTION
> diff --git a/rules/image-rauc.make b/rules/image-rauc.make
> index 23d8d83b5251..860f69834687 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_SCRIPT	:= $(call ptx/in-path, PTXDIST_PATH, config/images/rauc-hooks.sh)
> +
> +$(call ptx/cfghash, IMAGE_RAUC, $(IMAGE_RAUC_HOOK_SCRIPT))
> +$(call ptx/cfghash-file, IMAGE_RAUC, $(IMAGE_RAUC_HOOK_SCRIPT))
>  
>  # ----------------------------------------------------------------------------
>  # Image
> @@ -36,6 +40,16 @@ ifdef PTXCONF_IMAGE_RAUC_BUNDLE_FORMAT_CRYPT
>  IMAGE_RAUC_BUNDLE_FORMAT := "crypt"
>  endif
>  
> +ifneq ($(IMAGE_RAUC_HOOK_SCRIPT),)
> +IMAGE_RAUC_ENV_HOOK = \
> +	RAUC_HOOK_FILE="file hooks.sh { image = \\"$(IMAGE_RAUC_HOOK_SCRIPT)\\" }" \
> +	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)" \
> -- 
> 2.39.2
> 
> 
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



  reply	other threads:[~2023-11-10  8:03 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-06 10:55 Roland Hieber
2023-11-10  8:03 ` Michael Olbrich [this message]
2023-11-14 22:07   ` [ptxdist] [PATCH v2] " Roland Hieber
2023-11-24  7:28     ` [ptxdist] [APPLIED] " Michael Olbrich

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=ZU3jxlTCGumwWZ0I@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