[Buildroot] [PATCH v2] support/dependencies: ensure we have 'file' on the host

Arnout Vandecappelle arnout at mind.be
Mon Dec 26 09:06:08 UTC 2016



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.

 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" <yann.morin.1998 at free.fr>
> Cc: Arnout Vandecappelle <arnout at mind.be>
> Cc: Baruch Siach <baruch at tkos.co.il>
> 
> ---
> 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.

 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



More information about the buildroot mailing list