Skip to content

Conversation

dongcarl
Copy link
Contributor

@dongcarl dongcarl commented Apr 18, 2019

We use pkg-config where we can, which generally replaces libtool at a
higher level and does not have the same downsides as libtool. These
archives sit in our depends tree with no purpose and pollute the final
bitcoin build with massive overlinking.

See here for an explanation of the various problems libtool archives can cause.

Unrelated in every way except in spirit: -D__LIBTOOL_IS_A_FOOL__!!


This PR is based on #16041, and therefore should be merged after #16041.

@laanwj laanwj requested a review from theuni April 18, 2019 18:03
@dongcarl dongcarl force-pushed the 2019-04-depends-purge-libtool-archives branch from a2d7d19 to f05fbd4 Compare April 18, 2019 18:05
@laanwj
Copy link
Member

laanwj commented Apr 18, 2019

I had to do this once for an embedded project, because the la files were confusing things (as they were generated in a different environment). But I'm not sure here, do you have evidence of "massive overlinking", what is the result of that? Does the build become slower, does the executable become larger? If so, can you show results please?

@dongcarl
Copy link
Contributor Author

@laanwj

The result is usually -lstdc++ and various dynamic linking flags we don't want ending up in the .la files, and so when we do the final bitcoin build, we're getting extra symbols that aren't necessary in our ELF table. This makes make -C src check-symbols fail.

You can expand "Old content no. 1" here for an example.

@theuni
Copy link
Member

theuni commented Apr 18, 2019

This comes at my request, so concept ACK :)

I suspect it may flesh out a few actual bugs, where we had assumed pkg-config was doing its job.

@DrahtBot
Copy link
Contributor

DrahtBot commented Apr 18, 2019

The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

Conflicts

Reviewers, this pull request conflicts with the following ones:

  • #16041 (depends: Build secondary deps statically. by dongcarl)

If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.

@theuni
Copy link
Member

theuni commented Apr 18, 2019

@dongcarl Could you try this theuni@f643224 as a test fix for the new failure?

@dongcarl
Copy link
Contributor Author

dongcarl commented Apr 19, 2019

@theuni Looking at the travis failures it's similar to something I've encountered before related to _XEatDataWords which is fixed by https://github.com/freedesktop/libXext/commit/bb24f2970f2e425f4df90c9b73d078ad15a73fbb. On my local builds I've just upgraded the package to the earliest version that contained that fix: https://github.com/freedesktop/libXext/releases/tag/libXext-1.3.3

I can just push another commit that bumps libXext up one minor version if that's okay with people?

@theuni
Copy link
Member

theuni commented Apr 19, 2019

@dongcarl Hah, yes, thanks for noticing. I just assumed ours wasn't ancient. Please include the bump with this PR, since it breaks the build without it.

@dongcarl
Copy link
Contributor Author

Looking at the Travis build logs for 27ce43d, it would seem that cross builds are running into another problem that I assumed to be specific to my particular configuration. Namely, that we need to give the config flag --enable-malloc0returnsnull.

I've included that config flag in e5444bb, this seems to be a common problem for cross builds of X things: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=861073

@fanquake
Copy link
Member

fanquake commented Apr 29, 2019

Concept ACK

Looks like there is still at least one issue with the 32-bit + dash [GOAL: install] [GUI: no BIP70] build here:

checking for QTACCESSIBILITY... yes
checking for QTFB... yes
checking for X11XCB... yes
checking for QTXCBQPA... yes
checking for static Qt plugins: -lqminimal... no
configure: error: Could not resolve: -lqminimal

This is the diff of /lib for a master depends build, vs this PR on macOS, will test on others:

diffoscope x86_64-apple-darwin18.5.0-master/lib x86_64-apple-darwin18.5.0/lib:
@@ -28,37 +28,28 @@
libboost_unit_test_framework-mt.a
libcrypto.a
libdb-4.8.a
libdb.a
libdb_cxx-4.8.a
libdb_cxx.a
libevent.a
-libevent.la
libevent_core.a
-libevent_core.la
libevent_extra.a
-libevent_extra.la
libevent_pthreads.a
-libevent_pthreads.la
libminiupnpc.a
libprotobuf-lite.a
-libprotobuf-lite.la
libprotobuf.a
-libprotobuf.la
-libprotoc.la
libqrencode.a
-libqrencode.la
libqtharfbuzz.a
libqtlibpng.a
libqtpcre2.a
librapidcheck.a
libssl.a
libz.a
libzmq.a
-libzmq.la
pkgconfig
pkgconfig/Qt5AccessibilitySupport.pc
pkgconfig/Qt5CglSupport.pc
pkgconfig/Qt5ClipboardSupport.pc
pkgconfig/Qt5Core.pc
pkgconfig/Qt5DBus.pc
pkgconfig/Qt5DeviceDiscoverySupport.pc

@fanquake
Copy link
Member

fanquake commented Apr 30, 2019

After depends building inside a ubuntu:1804 Docker container.

diffoscope x86_64-pc-linux-gnu-master/lib x86_64-pc-linux-gnu/lib
@@ -15,25 +15,21 @@
libQt5Network.a
libQt5PrintSupport.a
libQt5ServiceSupport.a
libQt5Test.a
libQt5ThemeSupport.a
libQt5Widgets.a
libQt5XcbQpa.a
-libX11-xcb.la
libX11-xcb.so
libX11-xcb.so.1
libX11-xcb.so.1.0.0
-libX11.la
libX11.so
libX11.so.6
libX11.so.6.3.0
libXau.a
-libXau.la
-libXext.la
libXext.so
libXext.so.6
libXext.so.6.4.0
libboost_chrono-mt.a
libboost_filesystem-mt.a
libboost_prg_exec_monitor-mt.a
libboost_system-mt.a
@@ -42,154 +38,117 @@
libboost_timer-mt.a
libboost_unit_test_framework-mt.a
libcrypto.a
libdb-4.8.a
libdb.a
libdb_cxx-4.8.a
libdb_cxx.a
-libdbus-1.la
libdbus-1.so
libdbus-1.so.3
libdbus-1.so.3.14.11
libevent.a
-libevent.la
libevent_core.a
-libevent_core.la
libevent_extra.a
-libevent_extra.la
libevent_pthreads.a
-libevent_pthreads.la
-libexpat.la
libexpat.so
libexpat.so.1
libexpat.so.1.6.8
-libfontconfig.la
libfontconfig.so
libfontconfig.so.1
libfontconfig.so.1.9.2
-libfreetype.la
libfreetype.so
libfreetype.so.6
libfreetype.so.6.13.0
libminiupnpc.a
libprotobuf-lite.a
-libprotobuf-lite.la
libprotobuf.a
-libprotobuf.la
-libprotoc.la
libqrencode.a
-libqrencode.la
libqtharfbuzz.a
libqtlibpng.a
libqtpcre2.a
librapidcheck.a
libssl.a
-libxcb-composite.la
libxcb-composite.so
libxcb-composite.so.0
libxcb-composite.so.0.0.0
-libxcb-damage.la
libxcb-damage.so
libxcb-damage.so.0
libxcb-damage.so.0.0.0
-libxcb-dpms.la
libxcb-dpms.so
libxcb-dpms.so.0
libxcb-dpms.so.0.0.0
-libxcb-dri2.la
libxcb-dri2.so
libxcb-dri2.so.0
libxcb-dri2.so.0.0.0
-libxcb-dri3.la
libxcb-dri3.so
libxcb-dri3.so.0
libxcb-dri3.so.0.0.0
-libxcb-glx.la
libxcb-glx.so
libxcb-glx.so.0
libxcb-glx.so.0.0.0
-libxcb-present.la
libxcb-present.so
libxcb-present.so.0
libxcb-present.so.0.0.0
-libxcb-randr.la
libxcb-randr.so
libxcb-randr.so.0
libxcb-randr.so.0.1.0
-libxcb-record.la
libxcb-record.so
libxcb-record.so.0
libxcb-record.so.0.0.0
-libxcb-render.la
libxcb-render.so
libxcb-render.so.0
libxcb-render.so.0.0.0
-libxcb-res.la
libxcb-res.so
libxcb-res.so.0
libxcb-res.so.0.0.0
-libxcb-screensaver.la
libxcb-screensaver.so
libxcb-screensaver.so.0
libxcb-screensaver.so.0.0.0
-libxcb-shape.la
libxcb-shape.so
libxcb-shape.so.0
libxcb-shape.so.0.0.0
-libxcb-shm.la
libxcb-shm.so
libxcb-shm.so.0
libxcb-shm.so.0.0.0
libxcb-static.a
-libxcb-sync.la
libxcb-sync.so
libxcb-sync.so.1
libxcb-sync.so.1.0.0
-libxcb-xevie.la
libxcb-xevie.so
libxcb-xevie.so.0
libxcb-xevie.so.0.0.0
-libxcb-xf86dri.la
libxcb-xf86dri.so
libxcb-xf86dri.so.0
libxcb-xf86dri.so.0.0.0
-libxcb-xfixes.la
libxcb-xfixes.so
libxcb-xfixes.so.0
libxcb-xfixes.so.0.0.0
-libxcb-xinerama.la
libxcb-xinerama.so
libxcb-xinerama.so.0
libxcb-xinerama.so.0.0.0
-libxcb-xkb.la
libxcb-xkb.so
libxcb-xkb.so.1
libxcb-xkb.so.1.0.0
-libxcb-xprint.la
libxcb-xprint.so
libxcb-xprint.so.0
libxcb-xprint.so.0.0.0
-libxcb-xtest.la
libxcb-xtest.so
libxcb-xtest.so.0
libxcb-xtest.so.0.0.0
-libxcb-xv.la
libxcb-xv.so
libxcb-xv.so.0
libxcb-xv.so.0.0.0
-libxcb-xvmc.la
libxcb-xvmc.so
libxcb-xvmc.so.0
libxcb-xvmc.so.0.0.0
-libxcb.la
libxcb.so
libxcb.so.1
libxcb.so.1.1.0
libz.a
libzmq.a
-libzmq.la
pkgconfig
pkgconfig/Qt5AccessibilitySupport.pc
pkgconfig/Qt5Core.pc
pkgconfig/Qt5DBus.pc
pkgconfig/Qt5DeviceDiscoverySupport.pc
pkgconfig/Qt5EventDispatcherSupport.pc
pkgconfig/Qt5FbSupport.pc

@dongcarl
Copy link
Contributor Author

Ready for re-review. Checks are passing.

@theuni
Copy link
Member

theuni commented May 16, 2019

Thanks, having a look at this.

@dongcarl dongcarl force-pushed the 2019-04-depends-purge-libtool-archives branch from 9f0bfd6 to 61e64c2 Compare May 17, 2019 19:18
$(package)_dependencies=xproto xextproto libX11 libXau

define $(package)_set_vars
$(package)_config_opts=--disable-static
$(package)_config_opts=--disable-static --enable-malloc0returnsnull
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I looked into this a few weeks back, and I believe this is auto-detected, but we manage to get it wrong.

Could you please explain exactly why this is necessary? I'm afraid we're accidentally building against system files.

Copy link
Contributor Author

@dongcarl dongcarl May 20, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I mentioned this a little here: #15844 (comment)

Also, it's recommended when cross-compiling here: https://www.x.org/wiki/CrossCompilingXorg/

Not 100% sure what you mean by "accidentally building against system files"?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're completely right, thank you.

Could you add that link (or c/p the quote) as a comment? It's very helpful to know that it's for bypassing an AC_RUN_IFELSE.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, after looking at libXext's source I believe the stricter --disable-malloc0returnsnull works as well (I also confirmed thru a gitian build). I'll update this.

@dongcarl dongcarl force-pushed the 2019-04-depends-purge-libtool-archives branch 2 times, most recently from 8837d20 to 4d68df7 Compare May 22, 2019 01:27
@dongcarl
Copy link
Contributor Author

Updated with some commentary to help future cross-compilation target architectures/libcs.

@bitcoin bitcoin deleted a comment from DrahtBot May 22, 2019
@bitcoin bitcoin deleted a comment from DrahtBot May 22, 2019
@dongcarl dongcarl force-pushed the 2019-04-depends-purge-libtool-archives branch from 4d68df7 to 716afd6 Compare May 22, 2019 19:42
@dongcarl
Copy link
Contributor Author

Rebased.

@DrahtBot
Copy link
Contributor

Gitian builds for commit 3001cc6 (master):

Gitian builds for commit fbf6a3e (master and this pull):

# commit, the AC_RUN_IFELSE block had an action-if-cross-compiling argument
# which set the more pessimistic default value MALLOC_ZERO_RETURNS_NULL=yes.
# This is why the flag was not required prior to libXext 1.3.3.
$(package)_config_opts=--disable-static --disable-malloc0returnsnull
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've only looked into this briefly, but why does --disable-malloc0returnsnull only get passed to libXext?

With this change, building depends on Debian I'm seeing:

Configuring libX11...
checking whether malloc(0) returns NULL... yes

Configuring libXext...
checking whether malloc(0) returns NULL... no

Does this matter?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@fanquake Ah, that's the only place where I found problems. Looking at the libX11 aclocal.m4, they haven't updated their xorg-macros yet so no problems yet. We should add --disable-malloc0returnsnull there as well just to future-proof. You didn't see any other malloc(0) checks other than these two?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I haven't seen any other malloc(0) checks 👍.

@fanquake
Copy link
Member

tACK 716afd6

.las all seem to be removed, and we pick up a libexpat.a because of 716afd6.

Building on macOS 10.14.x:

diffoscope x86_64-apple-darwin18.6.0/lib x86_64-apple-darwin18.6.0-716afd6a3/lib
libboost_unit_test_framework-mt.a
libcrypto.a
libdb-4.8.a
libdb.a
libdb_cxx-4.8.a
libdb_cxx.a
libevent.a
-libevent.la
libevent_core.a
-libevent_core.la
libevent_extra.a
-libevent_extra.la
libevent_pthreads.a
-libevent_pthreads.la
libminiupnpc.a
libprotobuf-lite.a
-libprotobuf-lite.la
libprotobuf.a
-libprotobuf.la
-libprotoc.la
libqrencode.a
-libqrencode.la
libqtharfbuzz.a
libqtlibpng.a
libqtpcre2.a
librapidcheck.a
libssl.a
libz.a
libzmq.a
-libzmq.la
pkgconfig
pkgconfig/Qt5AccessibilitySupport.pc
pkgconfig/Qt5CglSupport.pc
pkgconfig/Qt5ClipboardSupport.pc
pkgconfig/Qt5Core.pc
pkgconfig/Qt5DBus.pc
pkgconfig/Qt5DeviceDiscoverySupport.pc

Building on Debian 9.9:

diffscope x86_64-pc-linux-gnu/lib x86_64-pc-linux-gnu-716afd6a3/lib
libQt5Network.a
libQt5PrintSupport.a
libQt5ServiceSupport.a
libQt5Test.a
libQt5ThemeSupport.a
libQt5Widgets.a
libQt5XcbQpa.a
-libX11-xcb.la
libX11-xcb.so
libX11-xcb.so.1
libX11-xcb.so.1.0.0
-libX11.la
libX11.so
libX11.so.6
libX11.so.6.3.0
libXau.a
-libXau.la
-libXext.la
libXext.so
libXext.so.6
libXext.so.6.4.0
libboost_chrono-mt.a
libboost_filesystem-mt.a
libboost_prg_exec_monitor-mt.a
libboost_system-mt.a
@@ -42,155 +38,115 @@
libboost_timer-mt.a
libboost_unit_test_framework-mt.a
libcrypto.a
libdb-4.8.a
libdb.a
libdb_cxx-4.8.a
libdb_cxx.a
-libdbus-1.la
libdbus-1.so
libdbus-1.so.3
libdbus-1.so.3.14.11
libevent.a
-libevent.la
libevent_core.a
-libevent_core.la
libevent_extra.a
-libevent_extra.la
libevent_pthreads.a
-libevent_pthreads.la
-libexpat.la
-libexpat.so
-libexpat.so.1
-libexpat.so.1.6.8
-libfontconfig.la
+libexpat.a
libfontconfig.so
libfontconfig.so.1
libfontconfig.so.1.9.2
-libfreetype.la
libfreetype.so
libfreetype.so.6
libfreetype.so.6.13.0
libminiupnpc.a
libprotobuf-lite.a
-libprotobuf-lite.la
libprotobuf.a
-libprotobuf.la
-libprotoc.la
libqrencode.a
-libqrencode.la
libqtharfbuzz.a
libqtlibpng.a
libqtpcre2.a
librapidcheck.a
libssl.a
-libxcb-composite.la
libxcb-composite.so
libxcb-composite.so.0
libxcb-composite.so.0.0.0
-libxcb-damage.la
libxcb-damage.so
libxcb-damage.so.0
libxcb-damage.so.0.0.0
-libxcb-dpms.la
libxcb-dpms.so
libxcb-dpms.so.0
libxcb-dpms.so.0.0.0
-libxcb-dri2.la
libxcb-dri2.so
libxcb-dri2.so.0
libxcb-dri2.so.0.0.0
-libxcb-dri3.la
libxcb-dri3.so
libxcb-dri3.so.0
libxcb-dri3.so.0.0.0
-libxcb-glx.la
libxcb-glx.so
libxcb-glx.so.0
libxcb-glx.so.0.0.0
-libxcb-present.la
libxcb-present.so
libxcb-present.so.0
libxcb-present.so.0.0.0
-libxcb-randr.la
libxcb-randr.so
libxcb-randr.so.0
libxcb-randr.so.0.1.0
-libxcb-record.la
libxcb-record.so
libxcb-record.so.0
libxcb-record.so.0.0.0
-libxcb-render.la
libxcb-render.so
libxcb-render.so.0
libxcb-render.so.0.0.0
-libxcb-res.la
libxcb-res.so
libxcb-res.so.0
libxcb-res.so.0.0.0
-libxcb-screensaver.la
libxcb-screensaver.so
libxcb-screensaver.so.0
libxcb-screensaver.so.0.0.0
-libxcb-shape.la
libxcb-shape.so
libxcb-shape.so.0
libxcb-shape.so.0.0.0
-libxcb-shm.la
libxcb-shm.so
libxcb-shm.so.0
libxcb-shm.so.0.0.0
libxcb-static.a
-libxcb-sync.la
libxcb-sync.so
libxcb-sync.so.1
libxcb-sync.so.1.0.0
-libxcb-xevie.la
libxcb-xevie.so
libxcb-xevie.so.0
libxcb-xevie.so.0.0.0
-libxcb-xf86dri.la
libxcb-xf86dri.so
libxcb-xf86dri.so.0
libxcb-xf86dri.so.0.0.0
-libxcb-xfixes.la
libxcb-xfixes.so
libxcb-xfixes.so.0
libxcb-xfixes.so.0.0.0
-libxcb-xinerama.la
libxcb-xinerama.so
libxcb-xinerama.so.0
libxcb-xinerama.so.0.0.0
-libxcb-xkb.la
libxcb-xkb.so
libxcb-xkb.so.1
libxcb-xkb.so.1.0.0
-libxcb-xprint.la
libxcb-xprint.so
libxcb-xprint.so.0
libxcb-xprint.so.0.0.0
-libxcb-xtest.la
libxcb-xtest.so
libxcb-xtest.so.0
libxcb-xtest.so.0.0.0
-libxcb-xv.la
libxcb-xv.so
libxcb-xv.so.0
libxcb-xv.so.0.0.0
-libxcb-xvmc.la
libxcb-xvmc.so
libxcb-xvmc.so.0
libxcb-xvmc.so.0.0.0
-libxcb.la
libxcb.so
libxcb.so.1
libxcb.so.1.1.0
libz.a
libzmq.a
-libzmq.la
pkgconfig
pkgconfig/Qt5AccessibilitySupport.pc
pkgconfig/Qt5Core.pc
pkgconfig/Qt5DBus.pc
pkgconfig/Qt5DeviceDiscoverySupport.pc
pkgconfig/Qt5EventDispatcherSupport.pc
pkgconfig/Qt5FbSupport.pc

@dongcarl dongcarl force-pushed the 2019-04-depends-purge-libtool-archives branch from 716afd6 to 6ef57ad Compare May 24, 2019 18:23
@dongcarl
Copy link
Contributor Author

Updated to also enforce the stricter --disable-malloc0returnsnull on libX11. Many thanks to @fanquake for his diligent review!

Copy link
Member

@fanquake fanquake left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

re-tACK 6ef57ad

dongcarl added 4 commits May 28, 2019 10:51
Secondary dependencies don't need to be shared.
We use pkg-config where we can, which generally replaces libtool at a
higher level and does not have the same downsides as libtool. These
archives sit in our depends tree with no purpose and pollute the final
bitcoin build with massive overlinking.
Compilation error for _XEatDataWords fixed in bb24f29, first included in
libXext 1.3.3.
@dongcarl dongcarl force-pushed the 2019-04-depends-purge-libtool-archives branch from 6ef57ad to 8541cbe Compare May 28, 2019 15:04
@dongcarl
Copy link
Contributor Author

Update: Rebase on #16041.

Sorry for updating this so often, want to make sure that once people with merge access approve, the whole process is smooth.

@laanwj
Copy link
Member

laanwj commented Jun 5, 2019

ACK 8541cbe, code changes look good to me

@laanwj laanwj merged commit 8541cbe into bitcoin:master Jun 5, 2019
laanwj added a commit that referenced this pull request Jun 5, 2019
8541cbe depends: libX*: --disable-malloc0returnsnull in conf (Carl Dong)
0e75263 depends: libXext: Bump to 1.3.3 to fix _XEatDataWords (Carl Dong)
683b7d7 depends: Purge libtool archives (Carl Dong)
1420928 depends: Build secondary deps statically. (Carl Dong)

Pull request description:

  ```
  We use pkg-config where we can, which generally replaces libtool at a
  higher level and does not have the same downsides as libtool. These
  archives sit in our depends tree with no purpose and pollute the final
  bitcoin build with massive overlinking.
  ```

  See [here](https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Handling_Libtool_Archives) for an explanation of the various problems libtool archives can cause.

  Unrelated in every way except in spirit: `-D__LIBTOOL_IS_A_FOOL__`!!

  -----

  This PR is based on #16041, and therefore should be merged after #16041.

ACKs for commit 8541cb:

Tree-SHA512: 76030cf32361f0b1cfe14e3827a0cbec99994e7da00a56194ca40cf6cf7d87f78552f49d03d41ce9cf9b642992b90d993578ed1f0ad6bae15cd3f1c88dfaa4b0
sidhujag pushed a commit to syscoin/syscoin that referenced this pull request Jun 6, 2019
8541cbe depends: libX*: --disable-malloc0returnsnull in conf (Carl Dong)
0e75263 depends: libXext: Bump to 1.3.3 to fix _XEatDataWords (Carl Dong)
683b7d7 depends: Purge libtool archives (Carl Dong)
1420928 depends: Build secondary deps statically. (Carl Dong)

Pull request description:

  ```
  We use pkg-config where we can, which generally replaces libtool at a
  higher level and does not have the same downsides as libtool. These
  archives sit in our depends tree with no purpose and pollute the final
  bitcoin build with massive overlinking.
  ```

  See [here](https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Handling_Libtool_Archives) for an explanation of the various problems libtool archives can cause.

  Unrelated in every way except in spirit: `-D__LIBTOOL_IS_A_FOOL__`!!

  -----

  This PR is based on bitcoin#16041, and therefore should be merged after bitcoin#16041.

ACKs for commit 8541cb:

Tree-SHA512: 76030cf32361f0b1cfe14e3827a0cbec99994e7da00a56194ca40cf6cf7d87f78552f49d03d41ce9cf9b642992b90d993578ed1f0ad6bae15cd3f1c88dfaa4b0
deadalnix pushed a commit to Bitcoin-ABC/bitcoin-abc that referenced this pull request Apr 1, 2020
Summary:
```
  We use pkg-config where we can, which generally replaces libtool at a
  higher level and does not have the same downsides as libtool. These
  archives sit in our depends tree with no purpose and pollute the final
  bitcoin build with massive overlinking.

See here for an explanation of the various problems libtool archives can
cause:
https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Handling_Libtool_Archives
```

Backport of core [[bitcoin/bitcoin#15844 | PR15844]].

This does actually more that described, as it includes [[bitcoin/bitcoin#16041 | PR16041]] (it was
merged as 1 PR instead of 2).

Test Plan: Run the Gitian builds.

Reviewers: #bitcoin_abc, deadalnix

Reviewed By: #bitcoin_abc, deadalnix

Differential Revision: https://reviews.bitcoinabc.org/D5621
@str4d str4d mentioned this pull request Oct 5, 2020
zkbot added a commit to zcash/zcash that referenced this pull request Oct 8, 2020
Update ZeroMQ

Includes changes cherry-picked from the following upstream PRs:

- bitcoin/bitcoin#9254
- bitcoin/bitcoin#13578
- bitcoin/bitcoin#15844
- bitcoin/bitcoin#16370
  - Only the ZeroMQ changes.
- bitcoin/bitcoin#16949
ftrader pushed a commit to bitcoin-cash-node/bitcoin-cash-node that referenced this pull request Aug 13, 2021
Summary:
```
  We use pkg-config where we can, which generally replaces libtool at a
  higher level and does not have the same downsides as libtool. These
  archives sit in our depends tree with no purpose and pollute the final
  bitcoin build with massive overlinking.

See here for an explanation of the various problems libtool archives can
cause:
https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Handling_Libtool_Archives
```

Backport of core [[bitcoin/bitcoin#15844 | PR15844]].

This does actually more that described, as it includes [[bitcoin/bitcoin#16041 | PR16041]] (it was
merged as 1 PR instead of 2).

Test Plan: Run the Gitian builds.

Reviewers: #bitcoin_abc, deadalnix

Reviewed By: #bitcoin_abc, deadalnix

Differential Revision: https://reviews.bitcoinabc.org/D5621
@bitcoin bitcoin locked as resolved and limited conversation to collaborators Dec 16, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants