* [Buildroot] [PATCH next v4 1/1] utils/docker-run: mount and pass BR2_EXTERNAL dirs
@ 2024-08-31 19:19 Fiona Klute via buildroot
2026-04-05 15:48 ` Fiona Klute via buildroot
0 siblings, 1 reply; 4+ messages in thread
From: Fiona Klute via buildroot @ 2024-08-31 19:19 UTC (permalink / raw)
To: buildroot
Cc: Brandon Maier, Fiona Klute (WIWA), Ricardo Martincoski,
Yann E. MORIN
From: "Fiona Klute (WIWA)" <fiona.klute@gmx.de>
The BR2_EXTERNAL environment variable is passed into the container,
and each path listed in it mounted. This allows using external trees
when running a build using utils/docker-run. Testing the existence of
the variable instead of a non-empty value allows passing an empty
BR2_EXTERNAL variable to disable currently set external trees.
Signed-off-by: Fiona Klute (WIWA) <fiona.klute@gmx.de>
---
Brandon, I've dropped your reviewed-by because the changes from v3 are
significant and counter to what you suggested in previous
reviews. Feel free to re-add it (or not).
Changes v3 -> v4:
* Split BR2_EXTERNAL on spaces OR colons
* Revert changes to mountpoints processing loop
Changes v2 -> v3:
* Use read to make the loop that creates mount options more robust,
removing pre-exisiting shellcheck override. Suggested by Brandon
Maier.
Changes v1 -> v2:
* Correctly handle spaces in external tree paths
utils/docker-run | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/utils/docker-run b/utils/docker-run
index 1adb02d74e..9579f83ce2 100755
--- a/utils/docker-run
+++ b/utils/docker-run
@@ -90,6 +90,13 @@ if [ "${BR2_DL_DIR}" ]; then
docker_opts+=( --env BR2_DL_DIR )
fi
+if [ -v BR2_EXTERNAL ]; then
+ docker_opts+=( --env BR2_EXTERNAL )
+ for br2_ext in ${BR2_EXTERNAL//:/ }; do
+ mountpoints+=( "${br2_ext}" )
+ done
+fi
+
# shellcheck disable=SC2013 # can't use while-read because of the assignment
for dir in $(printf '%s\n' "${mountpoints[@]}" |LC_ALL=C sort -u); do
docker_opts+=( --mount "type=bind,src=${dir},dst=${dir}" )
--
2.45.2
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [Buildroot] [PATCH next v4 1/1] utils/docker-run: mount and pass BR2_EXTERNAL dirs
2024-08-31 19:19 [Buildroot] [PATCH next v4 1/1] utils/docker-run: mount and pass BR2_EXTERNAL dirs Fiona Klute via buildroot
@ 2026-04-05 15:48 ` Fiona Klute via buildroot
2026-04-05 16:59 ` Yann E. MORIN via buildroot
0 siblings, 1 reply; 4+ messages in thread
From: Fiona Klute via buildroot @ 2026-04-05 15:48 UTC (permalink / raw)
To: buildroot; +Cc: Brandon Maier, Ricardo Martincoski, Yann E. MORIN
Hi everyone,
with the documentation clarification in
f9cdca48a57f24f2babb8f72652e099e08a59cd5 merged (BR2_EXTERNAL is space
separated, with colons supported for backwards compatibility), can we
get this merged? As far as I remember proper handling of spaces was the
main point of contention in review, and with the decision for space
separated list the patch should be fine as-is.
Best regards,
Fiona
Am 31.08.24 um 21:19 schrieb Fiona Klute via buildroot:
> From: "Fiona Klute (WIWA)" <fiona.klute@gmx.de>
>
> The BR2_EXTERNAL environment variable is passed into the container,
> and each path listed in it mounted. This allows using external trees
> when running a build using utils/docker-run. Testing the existence of
> the variable instead of a non-empty value allows passing an empty
> BR2_EXTERNAL variable to disable currently set external trees.
>
> Signed-off-by: Fiona Klute (WIWA) <fiona.klute@gmx.de>
> ---
> Brandon, I've dropped your reviewed-by because the changes from v3 are
> significant and counter to what you suggested in previous
> reviews. Feel free to re-add it (or not).
>
> Changes v3 -> v4:
> * Split BR2_EXTERNAL on spaces OR colons
> * Revert changes to mountpoints processing loop
>
> Changes v2 -> v3:
> * Use read to make the loop that creates mount options more robust,
> removing pre-exisiting shellcheck override. Suggested by Brandon
> Maier.
>
> Changes v1 -> v2:
> * Correctly handle spaces in external tree paths
>
> utils/docker-run | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/utils/docker-run b/utils/docker-run
> index 1adb02d74e..9579f83ce2 100755
> --- a/utils/docker-run
> +++ b/utils/docker-run
> @@ -90,6 +90,13 @@ if [ "${BR2_DL_DIR}" ]; then
> docker_opts+=( --env BR2_DL_DIR )
> fi
>
> +if [ -v BR2_EXTERNAL ]; then
> + docker_opts+=( --env BR2_EXTERNAL )
> + for br2_ext in ${BR2_EXTERNAL//:/ }; do
> + mountpoints+=( "${br2_ext}" )
> + done
> +fi
> +
> # shellcheck disable=SC2013 # can't use while-read because of the assignment
> for dir in $(printf '%s\n' "${mountpoints[@]}" |LC_ALL=C sort -u); do
> docker_opts+=( --mount "type=bind,src=${dir},dst=${dir}" )
> --
> 2.45.2
>
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Buildroot] [PATCH next v4 1/1] utils/docker-run: mount and pass BR2_EXTERNAL dirs
2026-04-05 15:48 ` Fiona Klute via buildroot
@ 2026-04-05 16:59 ` Yann E. MORIN via buildroot
2026-04-05 18:59 ` Fiona Klute via buildroot
0 siblings, 1 reply; 4+ messages in thread
From: Yann E. MORIN via buildroot @ 2026-04-05 16:59 UTC (permalink / raw)
To: Fiona Klute; +Cc: buildroot, Brandon Maier, Ricardo Martincoski
Fiona, All,
On 2026-04-05 17:48 +0200, Fiona Klute spake thusly:
> Am 31.08.24 um 21:19 schrieb Fiona Klute via buildroot:
> > From: "Fiona Klute (WIWA)" <fiona.klute@gmx.de>
> > The BR2_EXTERNAL environment variable is passed into the container,
> > and each path listed in it mounted. This allows using external trees
> > when running a build using utils/docker-run. Testing the existence of
> > the variable instead of a non-empty value allows passing an empty
> > BR2_EXTERNAL variable to disable currently set external trees.
[--SNIP--]
> > diff --git a/utils/docker-run b/utils/docker-run
> > index 1adb02d74e..9579f83ce2 100755
> > --- a/utils/docker-run
> > +++ b/utils/docker-run
> > @@ -90,6 +90,13 @@ if [ "${BR2_DL_DIR}" ]; then
> > docker_opts+=( --env BR2_DL_DIR )
> > fi
> >
> > +if [ -v BR2_EXTERNAL ]; then
As this is a bit unusual (but perfectly legit!), maybe a little comment
above the code to explain the intent:
# Test the variable exists, not just that it is non-empty,
# to be able to propagate an empty BR2_EXTERNAL.
But -v is a bashism (that's OK, we're using bash in the shabang), but
the more usual (and POSIXly correct [0]) way is to use something like:
if [ "${BR2_EXTERNAL+set}" ]; then
(an empty string evaluates to false).
I prefer we use standard constructs when they exist, and are not too
cumbersome to use, rather than bashisms that do not provie that much of
an improvement.
> > + docker_opts+=( --env BR2_EXTERNAL )
> > + for br2_ext in ${BR2_EXTERNAL//:/ }; do
> > + mountpoints+=( "${br2_ext}" )
> > + done
Why the loop? You can just append-assign the expansion:
mountpoints+=( ${BR2_EXTERNAL//:/ } )
[0] https://pubs.opengroup.org/onlinepubs/9799919799/utilities/V3_chap02.html#tag_19_06_02
Regards,
Yann E. MORIN.
> > +fi
> > +
> > # shellcheck disable=SC2013 # can't use while-read because of the assignment
> > for dir in $(printf '%s\n' "${mountpoints[@]}" |LC_ALL=C sort -u); do
> > docker_opts+=( --mount "type=bind,src=${dir},dst=${dir}" )
> > --
> > 2.45.2
> >
> > _______________________________________________
> > buildroot mailing list
> > buildroot@buildroot.org
> > https://lists.buildroot.org/mailman/listinfo/buildroot
>
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Buildroot] [PATCH next v4 1/1] utils/docker-run: mount and pass BR2_EXTERNAL dirs
2026-04-05 16:59 ` Yann E. MORIN via buildroot
@ 2026-04-05 18:59 ` Fiona Klute via buildroot
0 siblings, 0 replies; 4+ messages in thread
From: Fiona Klute via buildroot @ 2026-04-05 18:59 UTC (permalink / raw)
To: Yann E. MORIN; +Cc: buildroot, Brandon Maier, Ricardo Martincoski
Hi Yann,
thanks for your review!
Am 05.04.26 um 18:59 schrieb Yann E. MORIN:
> Fiona, All,
>
> On 2026-04-05 17:48 +0200, Fiona Klute spake thusly:
>> Am 31.08.24 um 21:19 schrieb Fiona Klute via buildroot:
>>> From: "Fiona Klute (WIWA)" <fiona.klute@gmx.de>
>>> The BR2_EXTERNAL environment variable is passed into the container,
>>> and each path listed in it mounted. This allows using external trees
>>> when running a build using utils/docker-run. Testing the existence of
>>> the variable instead of a non-empty value allows passing an empty
>>> BR2_EXTERNAL variable to disable currently set external trees.
> [--SNIP--]
>>> diff --git a/utils/docker-run b/utils/docker-run
>>> index 1adb02d74e..9579f83ce2 100755
>>> --- a/utils/docker-run
>>> +++ b/utils/docker-run
>>> @@ -90,6 +90,13 @@ if [ "${BR2_DL_DIR}" ]; then
>>> docker_opts+=( --env BR2_DL_DIR )
>>> fi
>>>
>>> +if [ -v BR2_EXTERNAL ]; then
>
> As this is a bit unusual (but perfectly legit!), maybe a little comment
> above the code to explain the intent:
>
> # Test the variable exists, not just that it is non-empty,
> # to be able to propagate an empty BR2_EXTERNAL.
>
> But -v is a bashism (that's OK, we're using bash in the shabang), but
> the more usual (and POSIXly correct [0]) way is to use something like:
>
> if [ "${BR2_EXTERNAL+set}" ]; then
>
> (an empty string evaluates to false).
>
> I prefer we use standard constructs when they exist, and are not too
> cumbersome to use, rather than bashisms that do not provie that much of
> an improvement.
Reasonable point, I've changed that in v5.
>>> + docker_opts+=( --env BR2_EXTERNAL )
>>> + for br2_ext in ${BR2_EXTERNAL//:/ }; do
>>> + mountpoints+=( "${br2_ext}" )
>>> + done
>
> Why the loop? You can just append-assign the expansion:
>
> mountpoints+=( ${BR2_EXTERNAL//:/ } )
I discovered a reason while testing your suggestion: We need to call
"realpath" on each element (which my previous version didn't do either).
BR2_EXTERNAL may contain relative paths, but neither Podman nor Docker
allow those for bind mount source paths. So that's fixed in v5, too.
Best regards,
Fiona
> [0] https://pubs.opengroup.org/onlinepubs/9799919799/utilities/V3_chap02.html#tag_19_06_02
>
> Regards,
> Yann E. MORIN.
>
>>> +fi
>>> +
>>> # shellcheck disable=SC2013 # can't use while-read because of the assignment
>>> for dir in $(printf '%s\n' "${mountpoints[@]}" |LC_ALL=C sort -u); do
>>> docker_opts+=( --mount "type=bind,src=${dir},dst=${dir}" )
>>> --
>>> 2.45.2
>>>
>>> _______________________________________________
>>> buildroot mailing list
>>> buildroot@buildroot.org
>>> https://lists.buildroot.org/mailman/listinfo/buildroot
>>
>
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-04-05 18:59 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-31 19:19 [Buildroot] [PATCH next v4 1/1] utils/docker-run: mount and pass BR2_EXTERNAL dirs Fiona Klute via buildroot
2026-04-05 15:48 ` Fiona Klute via buildroot
2026-04-05 16:59 ` Yann E. MORIN via buildroot
2026-04-05 18:59 ` Fiona Klute via buildroot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox