mailarchive of the ptxdist mailing list
 help / color / mirror / Atom feed
From: Michael Riesch <michael.riesch@wolfvision.net>
To: ptxdist@pengutronix.de, m.olbrich@pengutronix.de
Cc: m.tretter@pengutronix.de
Subject: Re: [ptxdist] [PATCH v2 3/3] barebox: add integration of firmware blobs
Date: Thu, 9 Dec 2021 06:22:20 +0100	[thread overview]
Message-ID: <c35870e3-64f6-ba05-9a47-133f5dfa2cac@wolfvision.net> (raw)
In-Reply-To: <20211208075950.GE15196@pengutronix.de>

Hello Michael,

On 12/8/21 8:59 AM, Michael Olbrich wrote:
> On Mon, Dec 06, 2021 at 08:54:31AM +0100, Michael Riesch wrote:
>> In some cases barebox requires firmware blobs, which may be
>> provided in binary form by the vendor or compiled in a
>> preceding step. Add the possibility to specify files which
>> are injected in the barebox source directory during
>> preparation.
>>
>> Signed-off-by: Michael Riesch <michael.riesch@wolfvision.net>
>> ---
>>  platforms/barebox.in                   | 31 +++++++++++++++++++
>>  rules/barebox.make                     |  6 ++++
>>  rules/post/ptxd_make_world_inject.make | 19 ++++++++++++
>>  scripts/lib/ptxd_make_world_inject.sh  | 43 ++++++++++++++++++++++++++
>>  4 files changed, 99 insertions(+)
>>  create mode 100644 rules/post/ptxd_make_world_inject.make
>>  create mode 100644 scripts/lib/ptxd_make_world_inject.sh
>>
>> diff --git a/platforms/barebox.in b/platforms/barebox.in
>> index d35d16501..150fcc77b 100644
>> --- a/platforms/barebox.in
>> +++ b/platforms/barebox.in
>> @@ -15,6 +15,7 @@ menuconfig BAREBOX
>>  	select HOST_IMX_CST if BAREBOX_NEEDS_HOST_IMX_CST
>>  	select HOST_LZOP if BAREBOX_NEEDS_HOST_LZOP
>>  	select CODE_SIGNING if BAREBOX_NEEDS_KEYS
>> +	select FIRMWARE_ROCKCHIP if BAREBOX_NEEDS_FIRMWARE_ROCKCHIP
>>  	prompt "barebox                       "
>>  	bool
>>  	help
>> @@ -55,6 +56,29 @@ config BAREBOX_CONFIG
>>  	  This entry specifies the .config file used to compile
>>  	  barebox.
>>  
>> +menuconfig BAREBOX_FIRMWARE
>> +	bool
>> +	prompt "integrate firmware blobs      "
>> +
>> +if BAREBOX_FIRMWARE
>> +
>> +config BAREBOX_FIRMWARE_PATH
>> +	string "path(s) to firmware blobs"
>> +	default "${PTXDIST_SYSROOT_TARGET}/usr/lib/firmware"
>> +	help
>> +	  Define path to the firmware blob(s). Multiple directories can
>> +	  be specified separated by ':'.
> 
> It works the same way as KERNEL_DTS_PATH, so just copy the rest of the
> description.
> 
>> +
>> +config BAREBOX_FIRMWARE_FILES
>> +	string "firmware blob file(s)"
>> +	default "<vendorblob>.bin"
>> +	help
>> +	  Select the firmware blob to be integrated into the barebox
>> +	  source before compilation. Multiple dts files can be
>> +	  specified, separated by spaces.
> 
> 'dts'? Copy paste error?
> 
> From what I read below, each file can be <source>:<target> so that should
> be documented here.
> 
>> +
>> +endif
>> +
>>  config BAREBOX_EXTRA_ENV
>>  	prompt "extend the builtin barebox environment"
>>  	bool
>> @@ -146,4 +170,11 @@ config BAREBOX_NEEDS_HOST_LZOP
>>  	  lzop is used in order to compile lzop for your development
>>  	  host.
>>  
>> +config BAREBOX_NEEDS_FIRMWARE_ROCKCHIP
>> +	prompt "barebox needs firmware-rockchip"
>> +	bool
>> +	help
>> +	  Select this if barebox needs the non-free Rockchip firmware
>> +	  blobs.
> 
> This should depend on ARCH_ARM64, or something like that.
> 
>> +
>>  endif
>> diff --git a/rules/barebox.make b/rules/barebox.make
>> index bea9f3adc..a81fc86b3 100644
>> --- a/rules/barebox.make
>> +++ b/rules/barebox.make
>> @@ -26,6 +26,8 @@ BAREBOX_BUILD_DIR	:= $(BAREBOX_DIR)-build
>>  BAREBOX_LICENSE		:= GPL-2.0-only
>>  BAREBOX_DEVPKG		:= NO
>>  BAREBOX_BUILD_OOT	:= KEEP
>> +BAREBOX_INJECT_PATH	:=$(call remove_quotes,$(PTXCONF_BAREBOX_FIRMWARE_PATH))
>> +BAREBOX_INJECT_FILES	:=$(call remove_quotes,$(PTXCONF_BAREBOX_FIRMWARE_FILES))
>>  
>>  BAREBOX_CONFIG		:= $(call ptx/in-platformconfigdir, \
>>  		$(call remove_quotes, $(PTXCONF_BAREBOX_CONFIG)))
>> @@ -94,6 +96,10 @@ ifdef PTXCONF_BAREBOX_EXTRA_ENV
>>  	@rm -rf $(BAREBOX_BUILD_DIR)/defaultenv/barebox_default_env
>>  endif
>>  
>> +ifdef PTXCONF_BAREBOX_FIRMWARE
>> +	@$(call world/inject, BAREBOX)
>> +endif
>> +
>>  	@$(call touch)
>>  
>>  # ----------------------------------------------------------------------------
>> diff --git a/rules/post/ptxd_make_world_inject.make b/rules/post/ptxd_make_world_inject.make
>> new file mode 100644
>> index 000000000..b7d28e92f
>> --- /dev/null
>> +++ b/rules/post/ptxd_make_world_inject.make
>> @@ -0,0 +1,19 @@
>> +# -*-makefile-*-
>> +#
>> +# Copyright (C) 2021 by Michael Riesch <michael.riesch@wolfvision.net>
>> +#
>> +# For further information about the PTXdist project and license conditions
>> +# see the README file.
>> +#
>> +
>> +world/inject/env = \
>> +	$(call world/env, $(1)) \
>> +	pkg_inject_path="$($(1)_INJECT_PATH)" \
>> +	pkg_inject_files="$($(1)_INJECT_FILES)" \
>> +	pkg_source="$($(1)_DIR)"
>> +
>> +world/inject = \
>> +	$(call world/inject/env,$(strip $(1))) \
>> +	ptxd_make_world_inject
>> +
>> +# vim: syntax=make
>> diff --git a/scripts/lib/ptxd_make_world_inject.sh b/scripts/lib/ptxd_make_world_inject.sh
>> new file mode 100644
>> index 000000000..bc06b9503
>> --- /dev/null
>> +++ b/scripts/lib/ptxd_make_world_inject.sh
>> @@ -0,0 +1,43 @@
>> +#!/bin/bash
>> +#
>> +# Copyright (C) 2021 by Michael Riesch <michael.riesch@wolfvision.net>
>> +#
>> +# For further information about the PTXdist project and license conditions
>> +# see the README file.
>> +#
>> +
>> +ptxd_make_inject() {
>> +    local source target
>> +
>> +    source=$(echo $inject_file | cut -d ":" -f 1)
>> +    target=$pkg_source/$(echo $inject_file | cut -d ":" -f 2)
>> +    if [ -z $target ]; then
>> +	target=$source
>> +    fi
> 
> Use ${} for all variables and don't forget the quotes.
> 
>> +
>> +    if [[ "${source}" =~ ^/.* ]]; then
>> +	ptxd_bailout "'${source}' must not be an absolute path!" \
>> +	    "Use <PKG>_INJECT_PATH to specify the search path."
>> +    fi
>> +
>> +    if ! ptxd_in_path pkg_inject_path "${source}"; then
>> +	ptxd_bailout "Blob '${source}' not found in '${pkg_inject_path}'."
>> +    fi
>> +    source="${ptxd_reply}"
>> +
>> +    echo -e "\nInject file $source into $target..."
> 
> same here.
> 
> Use ptxd_print_path to shorten the output.
> 
>> +    cp $source $target
> 
> Michael

Thanks for your review. v3 coming up!

Best regards,
Michael

> 
>> +}
>> +export -f ptxd_make_inject
>> +
>> +
>> +ptxd_make_world_inject() {
>> +    ptxd_make_world_init || break
>> +
>> +    for inject_file in ${pkg_inject_files}; do
>> +	ptxd_make_inject || break
>> +    done
>> +}
>> +export -f ptxd_make_world_inject
>> -- 
>> 2.30.2
>>
>>
>> _______________________________________________
>> ptxdist mailing list
>> ptxdist@pengutronix.de
>> To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de
>>
> 

_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de


      reply	other threads:[~2021-12-09  5:23 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-06  7:54 [ptxdist] [PATCH v2 0/3] Add support for Rockchip " Michael Riesch
2021-12-06  7:54 ` [ptxdist] [PATCH v2 1/3] platforms: add section for non-free " Michael Riesch
2021-12-06  7:54 ` [ptxdist] [PATCH v2 2/3] add package for rockchip firmware binaries Michael Riesch
2021-12-06  7:54 ` [ptxdist] [PATCH v2 3/3] barebox: add integration of firmware blobs Michael Riesch
2021-12-08  7:59   ` Michael Olbrich
2021-12-09  5:22     ` Michael Riesch [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=c35870e3-64f6-ba05-9a47-133f5dfa2cac@wolfvision.net \
    --to=michael.riesch@wolfvision.net \
    --cc=m.olbrich@pengutronix.de \
    --cc=m.tretter@pengutronix.de \
    --cc=ptxdist@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