[Buildroot] [PATCH v3] support/dependencies: ensure we have 'file' on the host
Arnout Vandecappelle
arnout at mind.be
Tue Dec 27 09:35:16 UTC 2016
On 26-12-16 18:58, Yann E. MORIN wrote:
> 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: 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
> 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 '/usr/bin/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>
>
Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout at mind.be>
Regards,
Arnout
> ---
> Changes v2 -> v3:
> - explicitly check for /usr/bin/file (arnout)
> - reword commit log (Arnout)
>
> Changes 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..ac0ab62 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+ (must be in +/usr/bin/file+)
>
> * Source fetching tools:
> ** +wget+
> diff --git a/support/dependencies/dependencies.sh b/support/dependencies/dependencies.sh
> index bfd6596..168d196 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 and must be exactly /usr/bin/file,
> +# otherwise libtool fails in incomprehensible ways.
> +check_prog_host "/usr/bin/file"
> +
> # 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