buildroot/package/xfsprogs/0004-build-add-EXTRALIBS-to-link-with.patch
Yann E. MORIN 779ec7f36d package/xfsprogs: fix static build
xfsprogs links to some libraries from util-linux. Those in turn may use
i18n functions when locales are enabled.

When doing a uClibc build, those i18n functions are provided by the
libintl library from the gettext package.

xfsprogs does not use pkgconfig to find the util-linux libraries, so it
misses the Requires.private field from libblkid, and thus misses the
Libs.private field from libuid.

And so a static link fails because of undefined references to i18n
symbols.

Furthermore, xfsprogs does not use automake; the hand-made Makefiles do
not make use of the LIBS variable set by configure.

We fix that in two ways:

  - pass LIBS=-lintl to configure, so that the configure step has a
    chance to succeed  (as suggested by Waldemar)

  - patch a Makefile to link with EXTRALIBS, and pass EXTRALIBS via
    XFSPROGS_MAKE_OPTS

Fixes:
    http://autobuild.buildroot.org/results/503/50314716a9f72e8bb238e52e9dc342c68f7e0b8b/
    http://autobuild.buildroot.org/results/253/253a024698b55dece992b2631e30edf4ff9092f7/
    http://autobuild.buildroot.org/results/3fe/3fe0d96cf13af12b0051a95f7865d4e38f4a78af/
    http://autobuild.buildroot.org/results/d48/d48e61785d25d33106b7dab1b5cb200cf27d4044/
    ...

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Waldemar Brodkorb <wbx@openadk.org>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2017-02-26 14:31:58 +01:00

54 lines
1.9 KiB
Diff

From 1e9bb2fba94bc508659f1667bf95501324849bb9 Mon Sep 17 00:00:00 2001
From: "Yann E. MORIN" <yann.morin.1998@free.fr>
Date: Sun, 26 Feb 2017 12:04:54 +0100
Subject: [PATCH] build: add EXTRALIBS to link with
When doing a uClibc static build, the build fails to link:
http://autobuild.buildroot.org/results/503/50314716a9f72e8bb238e52e9dc342c68f7e0b8b/build-end.log
The cause is due to:
- xfsprogs links dome programs with util-linux' libblkid
- util-linux' libblkid is linked to util-linux' libuuid
- util-linux' libuuid uses i18n functions when locales are enabled
- uClibc does not provide i18n functions
- i18n functions are provided by libintl from libintl from gettext
util-linux installs pkg-config files for thos two libs. However,
xfsprogs does not use pkg-config to find libblkid or libuuid, thus it
misses the Libs.private field from libuid.
In this case, it is necessary to pass LIBS=-lintl at configure time, so
that configure correctly finds libblkid.
Still, this is not enough, because the build will not use LIBS during
the link phase.
We fix that last bit by adding EXTRALIBS to the libraries to link with,
so that it is possible to pass EXTRALIBS=-lintl at build time:
$ ./configure [...] LIBS=-lintl
$ make EXTRALIBS=-lintl
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Waldemar Brodkorb <wbx@openadk.org>
---
include/buildmacros | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/buildmacros b/include/buildmacros
index a7c5d8a..dd62d80 100644
--- a/include/buildmacros
+++ b/include/buildmacros
@@ -11,7 +11,7 @@ BUILDRULES = $(TOPDIR)/include/buildrules
LDFLAGS += $(LOADERFLAGS) $(LLDFLAGS)
LTLDFLAGS += $(LOADERFLAGS)
-LDLIBS = $(LLDLIBS) $(PLDLIBS) $(MALLOCLIB)
+LDLIBS = $(LLDLIBS) $(PLDLIBS) $(MALLOCLIB) $(EXTRALIBS)
MAKEOPTS = --no-print-directory Q=$(Q)
SRCFILES = Makefile $(HFILES) $(CFILES) $(LSRCFILES) $(LFILES) $(YFILES)
--
2.7.4