* [Buildroot] [PATCH] bash: fix static build
@ 2017-09-18 18:30 Baruch Siach
2017-09-19 12:37 ` Peter Korsgaard
2017-09-24 13:34 ` Arnout Vandecappelle
0 siblings, 2 replies; 7+ messages in thread
From: Baruch Siach @ 2017-09-18 18:30 UTC (permalink / raw)
To: buildroot
When building bash statically, configure does not initialize the
SHOBJ_STATUS variable. The SHOBJ_STATUS make variable in
examples/loadables/Makefile.in must resolve to either 'supported' or
'unsupported'. Otherwise, the install-$(SHOBJ_STATUS) target does not
exist.
This leads to the following build failure:
make[2]: Entering directory '.../output/build/bash-4.4/examples/loadables'
make[2]: *** No rule to make target 'install-', needed by 'install'. Stop.
make[2]: Leaving directory '.../output/build/bash-4.4/examples/loadables'
Makefile:793: recipe for target 'install' failed
with the following defconfig:
BR2_arm=y
BR2_STATIC_LIBS=y
BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
BR2_PACKAGE_BASH=y
Set SHOBJ_STATUS in the configure environment as a workaround.
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
---
For some reason the autobuilders never caught this issue since the 4.4
version bump last November (commit cde22e1fd340).
---
package/bash/bash.mk | 1 +
1 file changed, 1 insertion(+)
diff --git a/package/bash/bash.mk b/package/bash/bash.mk
index 32c87a659e16..dd7c26fc1258 100644
--- a/package/bash/bash.mk
+++ b/package/bash/bash.mk
@@ -25,6 +25,7 @@ BASH_CONF_ENV += \
# The static build needs some trickery
ifeq ($(BR2_STATIC_LIBS),y)
BASH_CONF_OPTS += --enable-static-link
+BASH_CONF_ENV += SHOBJ_STATUS=unsupported
# bash wants to redefine the getenv() function. To check whether this is
# possible, AC_TRY_RUN is used which is not possible in
# cross-compilation.
--
2.14.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [Buildroot] [PATCH] bash: fix static build
2017-09-18 18:30 [Buildroot] [PATCH] bash: fix static build Baruch Siach
@ 2017-09-19 12:37 ` Peter Korsgaard
2017-09-19 18:19 ` Baruch Siach
2017-09-24 13:34 ` Arnout Vandecappelle
1 sibling, 1 reply; 7+ messages in thread
From: Peter Korsgaard @ 2017-09-19 12:37 UTC (permalink / raw)
To: buildroot
>>>>> "Baruch" == Baruch Siach <baruch@tkos.co.il> writes:
> When building bash statically, configure does not initialize the
> SHOBJ_STATUS variable. The SHOBJ_STATUS make variable in
> examples/loadables/Makefile.in must resolve to either 'supported' or
> 'unsupported'. Otherwise, the install-$(SHOBJ_STATUS) target does not
> exist.
> This leads to the following build failure:
> make[2]: Entering directory '.../output/build/bash-4.4/examples/loadables'
> make[2]: *** No rule to make target 'install-', needed by 'install'. Stop.
> make[2]: Leaving directory '.../output/build/bash-4.4/examples/loadables'
> Makefile:793: recipe for target 'install' failed
Hmm, while this is correct it doesn't really error out here:
( cd /home/peko/source/buildroot/output-bash/build/bash-4.4/examples/loadables && /usr/bin/make -j --jobserver-fds=3,4 --no-print-directory DESTDIR=/home/peko/source/buildroot/output-bash/target install )
make[3]: *** No rule to make target 'install-', needed by 'install'. Stop.
Makefile:793: recipe for target 'install' failed
make[2]: [install] Error 2 (ignored)
rm -f /home/peko/source/buildroot/output-bash/target/bin/bashbug
So that probably explains why it doesn't fail in the autobuilders.
Does it really fail the build for you?
Have you looked into why SHOBJ_STATUS doesn't get expanded correctly,
and if this can fixed more nicely upstream / is already fixed?
--
Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Buildroot] [PATCH] bash: fix static build
2017-09-19 12:37 ` Peter Korsgaard
@ 2017-09-19 18:19 ` Baruch Siach
2017-09-19 19:45 ` Peter Korsgaard
0 siblings, 1 reply; 7+ messages in thread
From: Baruch Siach @ 2017-09-19 18:19 UTC (permalink / raw)
To: buildroot
Hi Peter,
On Tue, Sep 19, 2017 at 02:37:30PM +0200, Peter Korsgaard wrote:
> >>>>> "Baruch" == Baruch Siach <baruch@tkos.co.il> writes:
>
> > When building bash statically, configure does not initialize the
> > SHOBJ_STATUS variable. The SHOBJ_STATUS make variable in
> > examples/loadables/Makefile.in must resolve to either 'supported' or
> > 'unsupported'. Otherwise, the install-$(SHOBJ_STATUS) target does not
> > exist.
>
> > This leads to the following build failure:
>
> > make[2]: Entering directory '.../output/build/bash-4.4/examples/loadables'
> > make[2]: *** No rule to make target 'install-', needed by 'install'. Stop.
> > make[2]: Leaving directory '.../output/build/bash-4.4/examples/loadables'
> > Makefile:793: recipe for target 'install' failed
>
> Hmm, while this is correct it doesn't really error out here:
>
> ( cd /home/peko/source/buildroot/output-bash/build/bash-4.4/examples/loadables && /usr/bin/make -j --jobserver-fds=3,4 --no-print-directory DESTDIR=/home/peko/source/buildroot/output-bash/target install )
> make[3]: *** No rule to make target 'install-', needed by 'install'. Stop.
> Makefile:793: recipe for target 'install' failed
> make[2]: [install] Error 2 (ignored)
> rm -f /home/peko/source/buildroot/output-bash/target/bin/bashbug
>
> So that probably explains why it doesn't fail in the autobuilders.
>
> Does it really fail the build for you?
It doesn't. I should have checked that. This patch is not really needed then.
> Have you looked into why SHOBJ_STATUS doesn't get expanded correctly,
> and if this can fixed more nicely upstream / is already fixed?
SHOBJ_STATUS is not set when the "$ac_cv_func_dlopen" = "yes" condition
evaluates to false. This is the case when building statically. Current bash
code is not fixes, as far as I can see.
Something like this should fix the issue:
diff -Nuar bash-4.4-orig/configure.ac bash-4.4/configure.ac
--- bash-4.4-orig/configure.ac 2016-09-07 23:56:28.000000000 +0300
+++ bash-4.4/configure.ac 2017-09-19 21:15:00.376316006 +0300
@@ -1151,6 +1151,9 @@
AC_SUBST(SHOBJ_LIBS)
AC_SUBST(SHOBJ_STATUS)
AC_MSG_RESULT($SHOBJ_STATUS)
+else
+ SHOBJ_STATUS=unsupported
+ AC_SUBST(SHOBJ_STATUS)
fi
# try to create a directory tree if the source is elsewhere
But bash does not autoreconf nicely, so I didn't test that approach.
baruch
--
http://baruch.siach.name/blog/ ~. .~ Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
- baruch at tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Buildroot] [PATCH] bash: fix static build
2017-09-19 18:19 ` Baruch Siach
@ 2017-09-19 19:45 ` Peter Korsgaard
0 siblings, 0 replies; 7+ messages in thread
From: Peter Korsgaard @ 2017-09-19 19:45 UTC (permalink / raw)
To: buildroot
>>>>> "Baruch" == Baruch Siach <baruch@tkos.co.il> writes:
Hi,
>> So that probably explains why it doesn't fail in the autobuilders.
>>
>> Does it really fail the build for you?
> It doesn't. I should have checked that. This patch is not really needed then.
Ok, good.
>> Have you looked into why SHOBJ_STATUS doesn't get expanded correctly,
>> and if this can fixed more nicely upstream / is already fixed?
> SHOBJ_STATUS is not set when the "$ac_cv_func_dlopen" = "yes" condition
> evaluates to false. This is the case when building statically. Current bash
> code is not fixes, as far as I can see.
> Something like this should fix the issue:
> diff -Nuar bash-4.4-orig/configure.ac bash-4.4/configure.ac
> --- bash-4.4-orig/configure.ac 2016-09-07 23:56:28.000000000 +0300
> +++ bash-4.4/configure.ac 2017-09-19 21:15:00.376316006 +0300
> @@ -1151,6 +1151,9 @@
> AC_SUBST(SHOBJ_LIBS)
> AC_SUBST(SHOBJ_STATUS)
> AC_MSG_RESULT($SHOBJ_STATUS)
> +else
> + SHOBJ_STATUS=unsupported
> + AC_SUBST(SHOBJ_STATUS)
> fi
> # try to create a directory tree if the source is elsewhere
> But bash does not autoreconf nicely, so I didn't test that approach.
Ok, thanks.
--
Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Buildroot] [PATCH] bash: fix static build
2017-09-18 18:30 [Buildroot] [PATCH] bash: fix static build Baruch Siach
2017-09-19 12:37 ` Peter Korsgaard
@ 2017-09-24 13:34 ` Arnout Vandecappelle
1 sibling, 0 replies; 7+ messages in thread
From: Arnout Vandecappelle @ 2017-09-24 13:34 UTC (permalink / raw)
To: buildroot
On 18-09-17 20:30, Baruch Siach wrote:
> When building bash statically, configure does not initialize the
> SHOBJ_STATUS variable. The SHOBJ_STATUS make variable in
> examples/loadables/Makefile.in must resolve to either 'supported' or
> 'unsupported'. Otherwise, the install-$(SHOBJ_STATUS) target does not
> exist.
>
> This leads to the following build failure:
>
> make[2]: Entering directory '.../output/build/bash-4.4/examples/loadables'
> make[2]: *** No rule to make target 'install-', needed by 'install'. Stop.
> make[2]: Leaving directory '.../output/build/bash-4.4/examples/loadables'
> Makefile:793: recipe for target 'install' failed
>
> with the following defconfig:
>
> BR2_arm=y
> BR2_STATIC_LIBS=y
> BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
> BR2_PACKAGE_BASH=y
>
> Set SHOBJ_STATUS in the configure environment as a workaround.
>
> Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Even though this doesn't fail the build (because the error is ignored), it's
pretty fragile. And SHOBJ_STATUS=unsupported is certainly correct for static
builds. So I applied after all.
Regards,
Arnout
--
Arnout Vandecappelle arnout at mind be
Senior Embedded Software Architect +32-16-286500
Essensium/Mind http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Buildroot] [PATCH] bash: fix static build
@ 2013-08-12 13:15 Gustavo Zacarias
2013-08-13 9:50 ` Thomas Petazzoni
0 siblings, 1 reply; 7+ messages in thread
From: Gustavo Zacarias @ 2013-08-12 13:15 UTC (permalink / raw)
To: buildroot
The static build needs some trickery, so make it happen. Fixes:
http://autobuild.buildroot.net/results/2b12868f8297a96d7abf7fcf526ca5eace73d66d/
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
---
package/bash/bash.mk | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/package/bash/bash.mk b/package/bash/bash.mk
index d51e203..efd2334 100644
--- a/package/bash/bash.mk
+++ b/package/bash/bash.mk
@@ -16,6 +16,11 @@ BASH_CONF_ENV += \
bash_cv_func_sigsetjmp=present \
bash_cv_printf_a_format=yes
+# The static build needs some trickery
+ifeq ($(BR2_PREFER_STATIC_LIB),y)
+BASH_CONF_OPT += --enable-static-link --without-bash-malloc
+endif
+
# Make sure we build after busybox so that /bin/sh links to bash
ifeq ($(BR2_PACKAGE_BUSYBOX),y)
BASH_DEPENDENCIES += busybox
--
1.8.1.5
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [Buildroot] [PATCH] bash: fix static build
2013-08-12 13:15 Gustavo Zacarias
@ 2013-08-13 9:50 ` Thomas Petazzoni
0 siblings, 0 replies; 7+ messages in thread
From: Thomas Petazzoni @ 2013-08-13 9:50 UTC (permalink / raw)
To: buildroot
Dear Gustavo Zacarias,
On Mon, 12 Aug 2013 10:15:45 -0300, Gustavo Zacarias wrote:
> The static build needs some trickery, so make it happen. Fixes:
> http://autobuild.buildroot.net/results/2b12868f8297a96d7abf7fcf526ca5eace73d66d/
>
> Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
> ---
> package/bash/bash.mk | 5 +++++
> 1 file changed, 5 insertions(+)
Applied, thanks.
Thomas
--
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2017-09-24 13:34 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-09-18 18:30 [Buildroot] [PATCH] bash: fix static build Baruch Siach
2017-09-19 12:37 ` Peter Korsgaard
2017-09-19 18:19 ` Baruch Siach
2017-09-19 19:45 ` Peter Korsgaard
2017-09-24 13:34 ` Arnout Vandecappelle
-- strict thread matches above, loose matches on Subject: below --
2013-08-12 13:15 Gustavo Zacarias
2013-08-13 9:50 ` Thomas Petazzoni
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.