diff mbox series

package/pkg-meson.mk: fix multiple _MESON_EXTRA_BINARIES

Message ID 20200310121510.905791-1-john@metanate.com
State Accepted
Headers show
Series package/pkg-meson.mk: fix multiple _MESON_EXTRA_BINARIES | expand

Commit Message

John Keeping March 10, 2020, 12:15 p.m. UTC
If multiple entries are specified for _MESON_EXTRA_BINARIES, the current
sed expression will only replace the first one.

Specifically, from GNU sed 4.8 the manual says:

    /regexp/
        Match  lines matching the regular expression regexp.  Matching
        is performed on the current pattern space, which can be modified
        with commands such as ``s///''.

so after the first binary has been added, the next entry no longer
matches since the pattern space has been modifed.

Instead of adding a script for each value, apply the match once and add
a subsitution for each entry.

Signed-off-by: John Keeping <john@metanate.com>
---
 package/pkg-meson.mk | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

Comments

Peter Seiderer March 10, 2020, 2:01 p.m. UTC | #1
Hello John,

On Tue, 10 Mar 2020 12:15:10 +0000, John Keeping <john@metanate.com> wrote:

> If multiple entries are specified for _MESON_EXTRA_BINARIES, the current
> sed expression will only replace the first one.
>
> Specifically, from GNU sed 4.8 the manual says:
>
>     /regexp/
>         Match  lines matching the regular expression regexp.  Matching
>         is performed on the current pattern space, which can be modified
>         with commands such as ``s///''.
>
> so after the first binary has been added, the next entry no longer
> matches since the pattern space has been modifed.
>
> Instead of adding a script for each value, apply the match once and add
> a subsitution for each entry.
>
> Signed-off-by: John Keeping <john@metanate.com>
> ---
>  package/pkg-meson.mk | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/package/pkg-meson.mk b/package/pkg-meson.mk
> index 642b715938..6ac3f79fe9 100644
> --- a/package/pkg-meson.mk
> +++ b/package/pkg-meson.mk
> @@ -76,9 +76,10 @@ define $(2)_CONFIGURE_CMDS
>  	    -e 's%@TARGET_CXXFLAGS@%$$(call make-comma-list,$$($(2)_CXXFLAGS))%g' \
>  	    -e 's%@HOST_DIR@%$$(HOST_DIR)%g' \
>  	    -e 's%@STAGING_DIR@%$$(STAGING_DIR)%g' \
> -	    $$(foreach x,$$($(2)_MESON_EXTRA_BINARIES), \
> -	        -e "/^\[binaries\]$$$$/s:$$$$:\n$$(x):" \
> -	    ) \
> +	    -e "/^\[binaries\]$$$$/ { \
> +		$$(foreach x,$$($(2)_MESON_EXTRA_BINARIES), \
> +	            s:$$$$:\n$$(x): ; \
> +		) }" \
>  	    package/meson/cross-compilation.conf.in \
>  	    > $$($$(PKG)_SRCDIR)/build/cross-compilation.conf
>  	PATH=$$(BR_PATH) $$($$(PKG)_CONF_ENV) $$(MESON) \

Tested with:

--- a/package/libglib2/libglib2.mk
+++ b/package/libglib2/libglib2.mk
@@ -20,6 +20,10 @@ ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y)
 LIBGLIB2_CFLAGS += -marm
 endif

+LIBGLIB2_MESON_EXTRA_BINARIES = aaa='/usr/bin/aaaaaaaaaaa' \
+       bbb='/usr/bin/bbbbbbbbbbbbbbb' \
+       ccc='/usr/bin/ccccccccccccccc'
+
 HOST_LIBGLIB2_CONF_OPTS = \
        -Ddtrace=false \
        -Dfam=false \


And checking build/libglib2-2.62.4/build/cross-compilation.conf
before and after patching, only with your patch all three binaries
entries are added...

Tested-by: Peter Seiderer <ps.report@gmx.net>

Regards,
Peter
Yann E. MORIN March 11, 2020, 10:31 p.m. UTC | #2
John, All,

On 2020-03-10 12:15 +0000, John Keeping spake thusly:
> If multiple entries are specified for _MESON_EXTRA_BINARIES, the current
> sed expression will only replace the first one.
> 
> Specifically, from GNU sed 4.8 the manual says:
> 
>     /regexp/
>         Match  lines matching the regular expression regexp.  Matching
>         is performed on the current pattern space, which can be modified
>         with commands such as ``s///''.
> 
> so after the first binary has been added, the next entry no longer
> matches since the pattern space has been modifed.
> 
> Instead of adding a script for each value, apply the match once and add
> a subsitution for each entry.
> 
> Signed-off-by: John Keeping <john@metanate.com>

Applied to master, but I've made that a single substituion instead.
Thanks!

Regards,
Yann E. MORIN.

> ---
>  package/pkg-meson.mk | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/package/pkg-meson.mk b/package/pkg-meson.mk
> index 642b715938..6ac3f79fe9 100644
> --- a/package/pkg-meson.mk
> +++ b/package/pkg-meson.mk
> @@ -76,9 +76,10 @@ define $(2)_CONFIGURE_CMDS
>  	    -e 's%@TARGET_CXXFLAGS@%$$(call make-comma-list,$$($(2)_CXXFLAGS))%g' \
>  	    -e 's%@HOST_DIR@%$$(HOST_DIR)%g' \
>  	    -e 's%@STAGING_DIR@%$$(STAGING_DIR)%g' \
> -	    $$(foreach x,$$($(2)_MESON_EXTRA_BINARIES), \
> -	        -e "/^\[binaries\]$$$$/s:$$$$:\n$$(x):" \
> -	    ) \
> +	    -e "/^\[binaries\]$$$$/ { \
> +		$$(foreach x,$$($(2)_MESON_EXTRA_BINARIES), \
> +	            s:$$$$:\n$$(x): ; \
> +		) }" \
>  	    package/meson/cross-compilation.conf.in \
>  	    > $$($$(PKG)_SRCDIR)/build/cross-compilation.conf
>  	PATH=$$(BR_PATH) $$($$(PKG)_CONF_ENV) $$(MESON) \
> -- 
> 2.25.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Peter Korsgaard March 21, 2020, 7:45 p.m. UTC | #3
>>>>> "John" == John Keeping <john@metanate.com> writes:

 > If multiple entries are specified for _MESON_EXTRA_BINARIES, the current
 > sed expression will only replace the first one.

 > Specifically, from GNU sed 4.8 the manual says:

 >     /regexp/
 >         Match  lines matching the regular expression regexp.  Matching
 >         is performed on the current pattern space, which can be modified
 >         with commands such as ``s///''.

 > so after the first binary has been added, the next entry no longer
 > matches since the pattern space has been modifed.

 > Instead of adding a script for each value, apply the match once and add
 > a subsitution for each entry.

 > Signed-off-by: John Keeping <john@metanate.com>

Committed to 2020.02.x, thanks.
diff mbox series

Patch

diff --git a/package/pkg-meson.mk b/package/pkg-meson.mk
index 642b715938..6ac3f79fe9 100644
--- a/package/pkg-meson.mk
+++ b/package/pkg-meson.mk
@@ -76,9 +76,10 @@  define $(2)_CONFIGURE_CMDS
 	    -e 's%@TARGET_CXXFLAGS@%$$(call make-comma-list,$$($(2)_CXXFLAGS))%g' \
 	    -e 's%@HOST_DIR@%$$(HOST_DIR)%g' \
 	    -e 's%@STAGING_DIR@%$$(STAGING_DIR)%g' \
-	    $$(foreach x,$$($(2)_MESON_EXTRA_BINARIES), \
-	        -e "/^\[binaries\]$$$$/s:$$$$:\n$$(x):" \
-	    ) \
+	    -e "/^\[binaries\]$$$$/ { \
+		$$(foreach x,$$($(2)_MESON_EXTRA_BINARIES), \
+	            s:$$$$:\n$$(x): ; \
+		) }" \
 	    package/meson/cross-compilation.conf.in \
 	    > $$($$(PKG)_SRCDIR)/build/cross-compilation.conf
 	PATH=$$(BR_PATH) $$($$(PKG)_CONF_ENV) $$(MESON) \