aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Akhlaghi <mohammad@akhlaghi.org>2019-01-15 13:25:13 +0000
committerMohammad Akhlaghi <mohammad@akhlaghi.org>2019-01-15 13:25:13 +0000
commit7443b0fbeb11f59539be6d374d5a1483c2edf13c (patch)
tree1780dcacffb23d4b588043edef95ee2b6be762ba
parent4ba552ec163574ff25fef6b4134e0c77342fcc53 (diff)
Many network-related libraries ignored in Wget and cURL
Wget and cURL depend on many network related libraries by default and if they are present on the host operating system, they will be linked with. This causes problems for the pipeline when these libraries are updated on the host system. With this commit, I went through the configure time options of both Wget and cURL and removed any library that didn't seem related to merely downloading of files (possibly with SSL, because we do build OpenSSL in the pipeline). Also, I noticed a new version of cURL has come, so that is also updated.
-rw-r--r--reproduce/config/pipeline/dependency-versions.mk2
-rw-r--r--reproduce/src/make/dependencies-basic.mk24
-rw-r--r--reproduce/src/make/dependencies.mk29
3 files changed, 45 insertions, 10 deletions
diff --git a/reproduce/config/pipeline/dependency-versions.mk b/reproduce/config/pipeline/dependency-versions.mk
index 6fbdaf7..7cd6fc9 100644
--- a/reproduce/config/pipeline/dependency-versions.mk
+++ b/reproduce/config/pipeline/dependency-versions.mk
@@ -35,7 +35,7 @@ xz-version = 5.2.4
# Libraries
cfitsio-version = 3.45
-curl-version = 7.62.0
+curl-version = 7.63.0
gsl-version = 2.5
libjpeg-version = v9b
libtiff-version = 4.0.10
diff --git a/reproduce/src/make/dependencies-basic.mk b/reproduce/src/make/dependencies-basic.mk
index 0c20f15..11017d1 100644
--- a/reproduce/src/make/dependencies-basic.mk
+++ b/reproduce/src/make/dependencies-basic.mk
@@ -514,14 +514,28 @@ $(ilidir)/openssl: $(tdir)/openssl-$(openssl-version).tar.gz \
#
# Also note that since Wget needs to load outside libraries dynamically, it
# gives a segmentation fault when built statically.
+#
+# There are many network related libraries that we are currently not
+# building as part of this pipeline. So to avoid too much dependency on the
+# host system (especially a crash when these libraries are updated on the
+# host), they are disabled here.
$(ibdir)/wget: $(tdir)/wget-$(wget-version).tar.lz \
$(ibdir)/pkg-config \
$(ilidir)/openssl
- libs="-pthread"; \
- if [ x$(needs_ldl) = xyes ]; then libs="$$libs -ldl"; fi; \
- $(call gbuild, $<, wget-$(wget-version), , \
- LIBS="$$LIBS $$libs" --with-ssl=openssl \
- --with-openssl=yes --with-libssl-prefix=$(idir))
+ libs="-pthread"; \
+ if [ x$(needs_ldl) = xyes ]; then libs="$$libs -ldl"; fi; \
+ $(call gbuild, $<, wget-$(wget-version), , \
+ LIBS="$$LIBS $$libs" \
+ --with-libssl-prefix=$(idir) \
+ --with-ssl=openssl \
+ --with-openssl=yes \
+ --without-metalink \
+ --without-libuuid \
+ --without-libpsl \
+ --without-libidn \
+ --disable-pcre2 \
+ --disable-pcre \
+ --disable-iri )
diff --git a/reproduce/src/make/dependencies.mk b/reproduce/src/make/dependencies.mk
index 7cf6d42..bfe461b 100644
--- a/reproduce/src/make/dependencies.mk
+++ b/reproduce/src/make/dependencies.mk
@@ -299,12 +299,33 @@ $(ibdir)/cmake: $(tdir)/cmake-$(cmake-version).tar.gz \
# have easiy ways to explicity tell them to also link with libcurl's
# dependencies (libssl, libcrypto, and libz). So we won't force curl to
# only be static.
+#
+# cURL (and its library, which is needed by several programs here) can
+# optionally link with many different network-related libraries on the host
+# system that we are not yet building in the pipeline. Many of these are
+# not relevant to most science projects, so we are explicitly using
+# `--without-XXX' or `--disable-XXX' so cURL doesn't link with them. Note
+# that if it does link with them, the pipeline will crash when the library
+# is updated/changed by the host, and the whole purpose of this pipeline is
+# avoid dependency on the host as much as possible.
$(ibdir)/curl: $(tdir)/curl-$(curl-version).tar.gz
$(call gbuild, $<, curl-$(curl-version), , \
- --with-zlib=$(ildir) \
- --with-ssl=$(idir) \
- --without-brotli \
- LIBS="-pthread" )
+ LIBS="-pthread" \
+ --with-zlib=$(ildir) \
+ --with-ssl=$(idir) \
+ --without-mesalink \
+ --with-ca-fallback \
+ --without-librtmp \
+ --without-libidn2 \
+ --without-wolfssl \
+ --without-brotli \
+ --without-gnutls \
+ --without-cyassl \
+ --without-libpsl \
+ --without-axtls \
+ --disable-ldaps \
+ --disable-ldap \
+ --without-nss )
# On Mac OS, libtool does different things, so to avoid confusion, we'll
# prefix GNU's libtool executables with `glibtool'.