From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yann E. MORIN Date: Mon, 26 Dec 2016 10:17:28 +0100 Subject: [Buildroot] [PATCH v2] support/dependencies: ensure we have 'file' on the host In-Reply-To: <0e0e05a4-79b4-0049-d003-92c253ce141c@mind.be> References: <1482682456-21052-1-git-send-email-yann.morin.1998@free.fr> <0e0e05a4-79b4-0049-d003-92c253ce141c@mind.be> Message-ID: <20161226091728.GA3376@free.fr> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: buildroot@busybox.net Arnout, All, On 2016-12-26 10:06 +0100, Arnout Vandecappelle spake thusly: > On 25-12-16 17:14, Yann E. MORIN wrote: > > Recently, the libtool.m4 autoconf macros that are bundled with the > > I'm a little bit confused here... Here, you talk about the libtool.m4 autoconf > macro (which is only used when AUTORECONF = YES)... > > > libtool package started using '/usr/bin/file' to determine the type of > > library that is generated by the toolchain. Packages that use this > > macro will fail in a rather dramatic way when /usr/bin/file is not > > present on the host: the package will still build but no shared > > library is generated, which in turn may cause build failures in other > > packages that link with it. > > > > For example, libpng's configure determines that it is not possible to > > ... but here you talk about libpng, which isn't autoreconf'ed. Eh! I copy-pasted your own suggestion for a commit log! ;-) And we don't need to autoreconf a package for it to use that recent version of libtool, for example if upstream has already upgraded by themselves. > To clarify this, I think the first sentence should be > > Recently, the autoconf macros for libtool started using '/usr/bin/file' to > determine the type of library that is generated by the toolchain. Packages that > use this recent version of the libtool autoconf macros will fail in a rather > dramatic way when /usr/bin/file is not present on the host: ... > > > build a shared library on MIPS64 because the expected output from 'file' > > is not present. Therefore, only a static libpng.a is built. Later, > > bandwithd links with -lpng but it doesn't use the pkg-config's > > Private-Libs (because it's not linking statically) and it doesn't have > > access to the NEEDED reference from the shared library. Therefore, it > > doesn't link with zlib and fails with > > > > pngrutil.c:(.text+0x55c): undefined reference to `inflate' > > > > We cant use host-file because it is itself an autotools package and is > > itself using libtool, so this would be a chicken-n-egg problem. Besides, > > the libtool script really wants to call /usr/bin/file, so it would not > > even find our host-file anyway. > > > > So, just require that 'file' is present on the host. > > > > Signed-off-by: "Yann E. MORIN" > > Cc: Arnout Vandecappelle > > Cc: Baruch Siach > > > > --- > > Changs v1 -> v2; > > - use better commit log by Arnout (Arnout) > > - update manual (Baruch) > > --- > > docs/manual/prerequisite.txt | 1 + > > support/dependencies/dependencies.sh | 4 ++++ > > 2 files changed, 5 insertions(+) > > > > diff --git a/docs/manual/prerequisite.txt b/docs/manual/prerequisite.txt > > index 7edad1f..ce54c9c 100644 > > --- a/docs/manual/prerequisite.txt > > +++ b/docs/manual/prerequisite.txt > > @@ -35,6 +35,7 @@ between distributions). > > ** +python+ (version 2.6 or any later) > > ** +unzip+ > > ** +rsync+ > > +** +file+ > > > > * Source fetching tools: > > ** +wget+ > > diff --git a/support/dependencies/dependencies.sh b/support/dependencies/dependencies.sh > > index bfd6596..1ec731d 100755 > > --- a/support/dependencies/dependencies.sh > > +++ b/support/dependencies/dependencies.sh > > @@ -69,6 +69,10 @@ check_prog_host "which" > > # Verify that sed is installed > > check_prog_host "sed" > > > > +# 'file' must be present, otherwise libtool fails in incomprehensible > > +# ways. > > +check_prog_host "file" > > Maybe we should check explicitly for /usr/bin/file instead. Hmm.. Right. Regards, Yann E. MORIN. > Regards, > Arnout > > > + > > # Check make > > MAKE=$(which make 2> /dev/null) > > if [ -z "$MAKE" ] ; then > > > > -- > 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 -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'