* [Buildroot] [PATCH] package/android-tools: fix static build failure due to missing -latomic @ 2019-04-04 15:39 Giulio Benetti 2019-04-04 20:45 ` Thomas Petazzoni 0 siblings, 1 reply; 9+ messages in thread From: Giulio Benetti @ 2019-04-04 15:39 UTC (permalink / raw) To: buildroot During static linking build fails because -lcrypto doesn't inherit its dependency like -latomic. So need to fix Makefile before building. Add check in package recipe for TOOLCHAIN_HAS_LIBATOMIC. If toolchain has libatomic use sed to append -latomic at the end of libs list in adbd.mk makefile. Fixes: http://autobuild.buildroot.net/results/d75/d75a6cf99f58fb5f42abaf9d54cde28224bc44fb/ Signed-off-by: Giulio Benetti <giulio.benetti@micronovasrl.com> --- package/android-tools/android-tools.mk | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/package/android-tools/android-tools.mk b/package/android-tools/android-tools.mk index 6f6ca7729b..cd06afa2c2 100644 --- a/package/android-tools/android-tools.mk +++ b/package/android-tools/android-tools.mk @@ -12,6 +12,16 @@ HOST_ANDROID_TOOLS_EXTRA_DOWNLOADS = $(ANDROID_TOOLS_EXTRA_DOWNLOADS) ANDROID_TOOLS_LICENSE = Apache-2.0 ANDROID_TOOLS_LICENSE_FILES = debian/copyright +# Uses __atomic_fetch_add_4. In adbd.mk Makefile there is no hunk to the end of +# linking command. So need to add -latomic to LIBS using sed to provide +# -latomic at the correct place in the linking command. +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +define ANDROID_TOOLS_FIX_MAKEFILE + $(SED) 's/-lz -lcrypt/-lz -lcrypt -latomic/' $(@D)/debian/makefiles/adbd.mk +endef +ANDROID_TOOLS_POST_PATCH_HOOKS = ANDROID_TOOLS_FIX_MAKEFILE +endif + # Extract the Debian tarball inside the sources define ANDROID_TOOLS_DEBIAN_EXTRACT $(call suitable-extractor,$(notdir $(ANDROID_TOOLS_EXTRA_DOWNLOADS))) \ -- 2.17.1 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Buildroot] [PATCH] package/android-tools: fix static build failure due to missing -latomic 2019-04-04 15:39 [Buildroot] [PATCH] package/android-tools: fix static build failure due to missing -latomic Giulio Benetti @ 2019-04-04 20:45 ` Thomas Petazzoni [not found] ` <699842f1-d9e3-dd02-4770-e8a10499194b@micronovasrl.com> 0 siblings, 1 reply; 9+ messages in thread From: Thomas Petazzoni @ 2019-04-04 20:45 UTC (permalink / raw) To: buildroot Hello Giulio, On Thu, 4 Apr 2019 17:39:04 +0200 Giulio Benetti <giulio.benetti@micronovasrl.com> wrote: > +# Uses __atomic_fetch_add_4. In adbd.mk Makefile there is no hunk to the end of > +# linking command. So need to add -latomic to LIBS using sed to provide > +# -latomic at the correct place in the linking command. > +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) > +define ANDROID_TOOLS_FIX_MAKEFILE > + $(SED) 's/-lz -lcrypt/-lz -lcrypt -latomic/' $(@D)/debian/makefiles/adbd.mk > +endef > +ANDROID_TOOLS_POST_PATCH_HOOKS = ANDROID_TOOLS_FIX_MAKEFILE > +endif Instead of this, please do regular patch on adbd.mk that does this: -LIBS+= -lc -lpthread -lz -lcrypto -lcrypt `pkg-config --libs glib-2.0 gio-2.0` +LIBS+= -lc -lpthread -lz `pkg-config --libs libcrypto` -lcrypt `pkg-config --libs glib-2.0 gio-2.0` and that's it. Also, adding host-pkgconf to ANDROID_TOOLS_DEPENDENCIES when adbd is selected would be necessary (but it should already be needed anyway, as pkg-config is already used to detect glib). Thanks! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com ^ permalink raw reply [flat|nested] 9+ messages in thread
[parent not found: <699842f1-d9e3-dd02-4770-e8a10499194b@micronovasrl.com>]
* [Buildroot] [PATCH] package/android-tools: fix static build failure due to missing -latomic [not found] ` <699842f1-d9e3-dd02-4770-e8a10499194b@micronovasrl.com> @ 2019-04-07 21:55 ` Giulio Benetti 2019-04-08 7:18 ` Thomas Petazzoni 0 siblings, 1 reply; 9+ messages in thread From: Giulio Benetti @ 2019-04-07 21:55 UTC (permalink / raw) To: buildroot Hello Thomas, Il 05/04/2019 00:32, Giulio Benetti ha scritto: > Hello > > Il 04/04/2019 22:45, Thomas Petazzoni ha scritto: >> Hello Giulio, >> >> On Thu, 4 Apr 2019 17:39:04 +0200 >> Giulio Benetti <giulio.benetti@micronovasrl.com> wrote: >> >>> +# Uses __atomic_fetch_add_4. In adbd.mk Makefile there is no hunk to the end of >>> +# linking command. So need to add -latomic to LIBS using sed to provide >>> +# -latomic at the correct place in the linking command. >>> +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) >>> +define ANDROID_TOOLS_FIX_MAKEFILE >>> + $(SED) 's/-lz -lcrypt/-lz -lcrypt -latomic/' $(@D)/debian/makefiles/adbd.mk >>> +endef >>> +ANDROID_TOOLS_POST_PATCH_HOOKS = ANDROID_TOOLS_FIX_MAKEFILE >>> +endif >> >> Instead of this, please do regular patch on adbd.mk that does this: >> >> -LIBS+= -lc -lpthread -lz -lcrypto -lcrypt `pkg-config --libs glib-2.0 gio-2.0` In current version there is not glib-2.0 or gio-2.0, do I add them anyway as follows? >> +LIBS+= -lc -lpthread -lz `pkg-config --libs libcrypto` -lcrypt `pkg-config --libs glib-2.0 gio-2.0` >> >> and that's it. >> >> Also, adding host-pkgconf to ANDROID_TOOLS_DEPENDENCIES when adbd is >> selected would be necessary (but it should already be needed anyway, as >> pkg-config is already used to detect glib). Sure, I've checked it's needed otherwise my distro's pkgconfig will be used(checked it to understand how it works). Thanks -- Giulio Benetti CTO MICRONOVA SRL Sede: Via A. Niedda 3 - 35010 Vigonza (PD) Tel. 049/8931563 - Fax 049/8931346 Cod.Fiscale - P.IVA 02663420285 Capitale Sociale ? 26.000 i.v. Iscritta al Reg. Imprese di Padova N. 02663420285 Numero R.E.A. 258642 ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Buildroot] [PATCH] package/android-tools: fix static build failure due to missing -latomic 2019-04-07 21:55 ` Giulio Benetti @ 2019-04-08 7:18 ` Thomas Petazzoni 2019-04-08 7:43 ` Giulio Benetti 0 siblings, 1 reply; 9+ messages in thread From: Thomas Petazzoni @ 2019-04-08 7:18 UTC (permalink / raw) To: buildroot Hello Giulio, On Sun, 7 Apr 2019 23:55:38 +0200 Giulio Benetti <giulio.benetti@micronovasrl.com> wrote: > >> -LIBS+= -lc -lpthread -lz -lcrypto -lcrypt `pkg-config --libs glib-2.0 gio-2.0` > > In current version there is not glib-2.0 or gio-2.0, do I add them > anyway as follows? Wow, I got confused about this. pkg-config is used for glib-2.0 and gio-2.0 in the upstream android-tools code, but we remove that in our 0002-Fix-adbd-for-non-Ubuntu-systems.patch patch. So of course, don't re-add those pkg-config calls for glib-2.0 and gio-2.0. However, use pkg-config for OpenSSL. This will also allow you to drop patch 0005-fix-static-link-zlib.patch, which was needed for the same reason: pkg-config is not used to find OpenSSL. Thanks! Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Buildroot] [PATCH] package/android-tools: fix static build failure due to missing -latomic 2019-04-08 7:18 ` Thomas Petazzoni @ 2019-04-08 7:43 ` Giulio Benetti 2019-04-08 9:04 ` Thomas Petazzoni 0 siblings, 1 reply; 9+ messages in thread From: Giulio Benetti @ 2019-04-08 7:43 UTC (permalink / raw) To: buildroot Il 08/04/2019 09:18, Thomas Petazzoni ha scritto: > Hello Giulio, > > On Sun, 7 Apr 2019 23:55:38 +0200 > Giulio Benetti <giulio.benetti@micronovasrl.com> wrote: > >>>> -LIBS+= -lc -lpthread -lz -lcrypto -lcrypt `pkg-config --libs glib-2.0 gio-2.0` >> >> In current version there is not glib-2.0 or gio-2.0, do I add them >> anyway as follows? > > Wow, I got confused about this. pkg-config is used for glib-2.0 and > gio-2.0 in the upstream android-tools code, but we remove that in our > 0002-Fix-adbd-for-non-Ubuntu-systems.patch patch. > > So of course, don't re-add those pkg-config calls for glib-2.0 and gio-2.0. Ok > However, use pkg-config for OpenSSL. This will also allow you to drop > patch 0005-fix-static-link-zlib.patch, which was needed for the same > reason: pkg-config is not used to find OpenSSL. Oh yes. In this case, can I substitute "0005-fix-static-link-zlib.patch" with the new one I'm going to create? I mean "0005-...patch" ? Thanks -- Giulio Benetti CTO MICRONOVA SRL Sede: Via A. Niedda 3 - 35010 Vigonza (PD) Tel. 049/8931563 - Fax 049/8931346 Cod.Fiscale - P.IVA 02663420285 Capitale Sociale ? 26.000 i.v. Iscritta al Reg. Imprese di Padova N. 02663420285 Numero R.E.A. 258642 ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Buildroot] [PATCH] package/android-tools: fix static build failure due to missing -latomic 2019-04-08 7:43 ` Giulio Benetti @ 2019-04-08 9:04 ` Thomas Petazzoni 2019-04-08 15:43 ` [Buildroot] [PATCH] package/android-tools: fix static linking failure due to lack of deps Giulio Benetti 0 siblings, 1 reply; 9+ messages in thread From: Thomas Petazzoni @ 2019-04-08 9:04 UTC (permalink / raw) To: buildroot On Mon, 8 Apr 2019 09:43:53 +0200 Giulio Benetti <giulio.benetti@micronovasrl.com> wrote: > In this case, can I substitute "0005-fix-static-link-zlib.patch" with > the new one I'm going to create? I mean "0005-...patch" ? Yes, sure. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Buildroot] [PATCH] package/android-tools: fix static linking failure due to lack of deps 2019-04-08 9:04 ` Thomas Petazzoni @ 2019-04-08 15:43 ` Giulio Benetti 2019-04-08 20:34 ` Thomas Petazzoni 2019-04-14 21:19 ` Peter Korsgaard 0 siblings, 2 replies; 9+ messages in thread From: Giulio Benetti @ 2019-04-08 15:43 UTC (permalink / raw) To: buildroot When static linking some dependency library can be missing(i.e. -latomic for -lcrypto) on linking libraries list. This is because when static linking libraries dependencies are not transparently linked into binary. To avoid moving libraries before/after one another or add new ones that are not needed at all in some linking case use `pkg-config --libs LIBRARY` where LIBRARY is the library we "probe" for its existence and dependency. So: - Remove 0005-fix-static-link-zlib.patch where -lcrypto and -lz were swapped - Replace it with 0005-Use-pkgconf-to-get-libs-deps.patch where -lcrypto has been substituted with `pkg-config --libs libcrypto` - Add host-pkgconf to ANDROID_TOOLS_DEPENDENCIES Fixes: http://autobuild.buildroot.net/results/d3d/d3d6679cfc8afe4467368bd3d31483172c1032de/ Signed-off-by: Giulio Benetti <giulio.benetti@micronovasrl.com> --- .../0005-Use-pkgconf-to-get-libs-deps.patch | 35 ++++++++++++++++++ .../0005-fix-static-link-zlib.patch | 36 ------------------- package/android-tools/android-tools.mk | 1 + 3 files changed, 36 insertions(+), 36 deletions(-) create mode 100644 package/android-tools/0005-Use-pkgconf-to-get-libs-deps.patch delete mode 100644 package/android-tools/0005-fix-static-link-zlib.patch diff --git a/package/android-tools/0005-Use-pkgconf-to-get-libs-deps.patch b/package/android-tools/0005-Use-pkgconf-to-get-libs-deps.patch new file mode 100644 index 0000000000..63ea1fb6a4 --- /dev/null +++ b/package/android-tools/0005-Use-pkgconf-to-get-libs-deps.patch @@ -0,0 +1,35 @@ +makefiles: use pkgconf to get libs deps + +LIBS lists library dependencies without taking into account static linking +that need ordered listing and more libraries listed since differently from +shared linking dependency is not transparent(i.e. -lcrypto could need +-latomic etc.). + +Replace -lcrypto with `pkg-config --libs libcrypto` command to be sure all +needed libraries are listed during linking. + +Signed-off-by: Giulio Benetti <giulio.benetti@micronovasrl.com> +--- +diff -urpN android-tools-4.2.2+git20130218.orig/debian/makefiles/adbd.mk android-tools-4.2.2+git20130218/debian/makefiles/adbd.mk +--- android-tools-4.2.2+git20130218.orig/debian/makefiles/adbd.mk 2019-04-08 16:05:02.967710428 +0200 ++++ android-tools-4.2.2+git20130218/debian/makefiles/adbd.mk 2019-04-08 16:30:42.463084426 +0200 +@@ -44,7 +44,7 @@ CPPFLAGS+= -DADBD_NON_ANDROID + CPPFLAGS+= -I$(SRCDIR)/core/adbd + CPPFLAGS+= -I$(SRCDIR)/core/include + +-LIBS+= -lc -lpthread -lz -lcrypto -lcrypt ++LIBS+= -lc -lpthread -lz `pkg-config --libs libcrypto` -lcrypt + + OBJS= $(patsubst %, %.o, $(basename $(SRCS))) + +diff -urpN android-tools-4.2.2+git20130218.orig/debian/makefiles/adb.mk android-tools-4.2.2+git20130218/debian/makefiles/adb.mk +--- android-tools-4.2.2+git20130218.orig/debian/makefiles/adb.mk 2019-04-08 16:05:02.959701400 +0200 ++++ android-tools-4.2.2+git20130218/debian/makefiles/adb.mk 2019-04-08 16:31:06.529426250 +0200 +@@ -41,7 +41,7 @@ CPPFLAGS+= -DHAVE_TERMIO_H + CPPFLAGS+= -I$(SRCDIR)/core/adb + CPPFLAGS+= -I$(SRCDIR)/core/include + +-LIBS+= -lc -lpthread -lz -lcrypto ++LIBS+= -lc -lpthread -lz `pkg-config --libs libcrypto` + + OBJS= $(SRCS:.c=.o) diff --git a/package/android-tools/0005-fix-static-link-zlib.patch b/package/android-tools/0005-fix-static-link-zlib.patch deleted file mode 100644 index dff4df6e79..0000000000 --- a/package/android-tools/0005-fix-static-link-zlib.patch +++ /dev/null @@ -1,36 +0,0 @@ -Fix static linking of adb/adbd - -Both adb and adbd use OpenSSL, which indirectly uses zlib. Since -adb/adbd also use zlib directly -lz is included in the linker flags, -but not at the right position to ensure that static linking works: to -make it possible for OpenSSL symbols to see zlib symbols, -lz must -appear after -lcrypto. - -Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> - -Index: b/debian/makefiles/adb.mk -=================================================================== ---- a/debian/makefiles/adb.mk -+++ b/debian/makefiles/adb.mk -@@ -41,7 +41,7 @@ - CPPFLAGS+= -I$(SRCDIR)/core/adb - CPPFLAGS+= -I$(SRCDIR)/core/include - --LIBS+= -lc -lpthread -lz -lcrypto -+LIBS+= -lc -lpthread -lcrypto -lz - - OBJS= $(SRCS:.c=.o) - -Index: b/debian/makefiles/adbd.mk -=================================================================== ---- a/debian/makefiles/adbd.mk -+++ b/debian/makefiles/adbd.mk -@@ -44,7 +44,7 @@ - CPPFLAGS+= -I$(SRCDIR)/core/adbd - CPPFLAGS+= -I$(SRCDIR)/core/include - --LIBS+= -lc -lpthread -lz -lcrypto -lcrypt -+LIBS+= -lc -lpthread -lcrypto -lz -lcrypt - - OBJS= $(patsubst %, %.o, $(basename $(SRCS))) - diff --git a/package/android-tools/android-tools.mk b/package/android-tools/android-tools.mk index 6f6ca7729b..3a63139014 100644 --- a/package/android-tools/android-tools.mk +++ b/package/android-tools/android-tools.mk @@ -11,6 +11,7 @@ ANDROID_TOOLS_EXTRA_DOWNLOADS = android-tools_$(ANDROID_TOOLS_VERSION)-3ubuntu41 HOST_ANDROID_TOOLS_EXTRA_DOWNLOADS = $(ANDROID_TOOLS_EXTRA_DOWNLOADS) ANDROID_TOOLS_LICENSE = Apache-2.0 ANDROID_TOOLS_LICENSE_FILES = debian/copyright +ANDROID_TOOLS_DEPENDENCIES = host-pkgconf # Extract the Debian tarball inside the sources define ANDROID_TOOLS_DEBIAN_EXTRACT -- 2.17.1 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Buildroot] [PATCH] package/android-tools: fix static linking failure due to lack of deps 2019-04-08 15:43 ` [Buildroot] [PATCH] package/android-tools: fix static linking failure due to lack of deps Giulio Benetti @ 2019-04-08 20:34 ` Thomas Petazzoni 2019-04-14 21:19 ` Peter Korsgaard 1 sibling, 0 replies; 9+ messages in thread From: Thomas Petazzoni @ 2019-04-08 20:34 UTC (permalink / raw) To: buildroot On Mon, 8 Apr 2019 17:43:11 +0200 Giulio Benetti <giulio.benetti@micronovasrl.com> wrote: > When static linking some dependency library can be missing(i.e. -latomic > for -lcrypto) on linking libraries list. This is because when static > linking libraries dependencies are not transparently linked into binary. > > To avoid moving libraries before/after one another or add new ones > that are not needed at all in some linking case use `pkg-config --libs > LIBRARY` where LIBRARY is the library we "probe" for its existence and > dependency. > So: > - Remove 0005-fix-static-link-zlib.patch where -lcrypto and -lz were > swapped > - Replace it with 0005-Use-pkgconf-to-get-libs-deps.patch where -lcrypto > has been substituted with `pkg-config --libs libcrypto` > - Add host-pkgconf to ANDROID_TOOLS_DEPENDENCIES > > Fixes: > http://autobuild.buildroot.net/results/d3d/d3d6679cfc8afe4467368bd3d31483172c1032de/ > > Signed-off-by: Giulio Benetti <giulio.benetti@micronovasrl.com> > --- > .../0005-Use-pkgconf-to-get-libs-deps.patch | 35 ++++++++++++++++++ > .../0005-fix-static-link-zlib.patch | 36 ------------------- > package/android-tools/android-tools.mk | 1 + > 3 files changed, 36 insertions(+), 36 deletions(-) > create mode 100644 package/android-tools/0005-Use-pkgconf-to-get-libs-deps.patch > delete mode 100644 package/android-tools/0005-fix-static-link-zlib.patch Applied to master, thanks. Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Buildroot] [PATCH] package/android-tools: fix static linking failure due to lack of deps 2019-04-08 15:43 ` [Buildroot] [PATCH] package/android-tools: fix static linking failure due to lack of deps Giulio Benetti 2019-04-08 20:34 ` Thomas Petazzoni @ 2019-04-14 21:19 ` Peter Korsgaard 1 sibling, 0 replies; 9+ messages in thread From: Peter Korsgaard @ 2019-04-14 21:19 UTC (permalink / raw) To: buildroot >>>>> "Giulio" == Giulio Benetti <giulio.benetti@micronovasrl.com> writes: > When static linking some dependency library can be missing(i.e. -latomic > for -lcrypto) on linking libraries list. This is because when static > linking libraries dependencies are not transparently linked into binary. > To avoid moving libraries before/after one another or add new ones > that are not needed at all in some linking case use `pkg-config --libs > LIBRARY` where LIBRARY is the library we "probe" for its existence and > dependency. > So: > - Remove 0005-fix-static-link-zlib.patch where -lcrypto and -lz were > swapped > - Replace it with 0005-Use-pkgconf-to-get-libs-deps.patch where -lcrypto > has been substituted with `pkg-config --libs libcrypto` > - Add host-pkgconf to ANDROID_TOOLS_DEPENDENCIES > Fixes: > http://autobuild.buildroot.net/results/d3d/d3d6679cfc8afe4467368bd3d31483172c1032de/ > Signed-off-by: Giulio Benetti <giulio.benetti@micronovasrl.com> Committed to 2019.02.x, thanks. -- Bye, Peter Korsgaard ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2019-04-14 21:19 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-04-04 15:39 [Buildroot] [PATCH] package/android-tools: fix static build failure due to missing -latomic Giulio Benetti 2019-04-04 20:45 ` Thomas Petazzoni [not found] ` <699842f1-d9e3-dd02-4770-e8a10499194b@micronovasrl.com> 2019-04-07 21:55 ` Giulio Benetti 2019-04-08 7:18 ` Thomas Petazzoni 2019-04-08 7:43 ` Giulio Benetti 2019-04-08 9:04 ` Thomas Petazzoni 2019-04-08 15:43 ` [Buildroot] [PATCH] package/android-tools: fix static linking failure due to lack of deps Giulio Benetti 2019-04-08 20:34 ` Thomas Petazzoni 2019-04-14 21:19 ` Peter Korsgaard
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.