From b0d709745fd7228ff451a4eb8693798e12e0b1db Mon Sep 17 00:00:00 2001 From: Mohammad Akhlaghi Date: Fri, 5 Apr 2019 20:21:29 +0100 Subject: GCC not building on GNU/Linux system with incomplete complier On some GNU/Linux distros, the compiler is separated into `multilib' mode (for 32-bit and 64-bit support) and by default the extra component of the compiler is not installed! In such systems for now, we are just creating symbolic links to the host's compiler (similar to Mac). While testing, I noticed that we weren't passing a "$downloader" option to the downloading script of `dependencies.mk' and `dependencies-python.mk'. Also, I noticed that the Cython and Python-pkg-config packages didn't have setuptools as a dependency! Both have now been fixed. Also, Cython's tarball name is now all small-caps (as in all the other tarballs). --- reproduce/src/make/dependencies-basic.mk | 33 ++++++++++++++++++++++++------- reproduce/src/make/dependencies-python.mk | 16 ++++++++++----- reproduce/src/make/dependencies.mk | 1 + 3 files changed, 38 insertions(+), 12 deletions(-) (limited to 'reproduce/src/make') diff --git a/reproduce/src/make/dependencies-basic.mk b/reproduce/src/make/dependencies-basic.mk index d4830ca..f7f83ed 100644 --- a/reproduce/src/make/dependencies-basic.mk +++ b/reproduce/src/make/dependencies-basic.mk @@ -793,16 +793,35 @@ $(ibidir)/gcc: $(gcc-prerequisites) \ # single architecture, we can trick GCC into building its libraries # in '$(idir)/lib' by defining the '$(idir)/lib64' as a symbolic # link to '$(idir)/lib'. - - # SO FAR WE HAVEN'T BEEN ABLE TO GET A CONSISTENT BUILD OF GCC ON - # MAC (SOMETIMES IT CRASHES IN libiberty with g++) AND SOMETIMES IT - # FINISHES, SO, MORE TESTS ARE NEEDED ON MAC AND WE'LL USE THE - # HOST'S COMPILER UNTIL THEN. + # + # Cases were we currently don't build GCC: + # + # 1) MacOS: because it crashes sometimes while building libiberty + # with g++. + # + # 2) GNU/Linux distros that have `multilib' compilers (for 32-bit + # and 64-bit support) need to install a special package to have + # `/usr/include/sys/cdefs.h'. So we are explicitly testing a + # small C program to see if GCC can import it successfully. if [ "x$(on_mac_os)" = xyes ]; then \ + build=no; \ + else \ + tfile=$(ddir)/gcc-cdefs-test.c; \ + echo "#include " > $$tfile; \ + echo "int main(void){return 0;}" >> $$tfile; \ + if gcc $$tfile &> /dev/null; then \ + build=yes; rm a.out; \ + else build=no; \ + fi; \ + rm $$tfile; \ + fi; \ + \ + if [ $$build = no ]; then \ $(call makelink,g++); \ + $(call makelink,gcc); \ $(call makelink,gfortran); \ - $(call makelink,gcc,copy); \ - echo "" > $@; \ + ccinfo=$$(gcc --version | awk 'NR==1'); \ + echo "C compiler (""$$ccinfo"")" > $@; exit 1; \ else \ rm -f $(ibdir)/gcc* $(ibdir)/g++ $(ibdir)/gfortran $(ibdir)/gcov*;\ rm -rf $(ildir)/gcc $(ildir)/libcc* $(ildir)/libgcc*; \ diff --git a/reproduce/src/make/dependencies-python.mk b/reproduce/src/make/dependencies-python.mk index 02c6112..3a77fa9 100644 --- a/reproduce/src/make/dependencies-python.mk +++ b/reproduce/src/make/dependencies-python.mk @@ -70,7 +70,7 @@ pytarballs = $(foreach t, asn1crypto-$(asn1crypto-version).tar.gz \ chardet-$(chardet-version).tar.gz \ cryptography-$(cryptography-version).tar.gz \ cycler-$(cycler-version).tar.gz \ - Cython-$(cython-version).tar.gz \ + cython-$(cython-version).tar.gz \ entrypoints-$(entrypoints-version).tar.gz \ h5py-$(h5py-version).tar.gz \ html5lib-$(html5lib-version).tar.gz \ @@ -133,7 +133,11 @@ $(pytarballs): $(tdir)/%: # that have non-standard filenames (differing from our archived # tarball names) are treated first, then the standard ones. mergenames=1 - if [ $$n = python ]; then + if [ $$n = cython ]; then + mergenames=0 + hash=36/da/fcb979fc8cb486a67a013d6aefefbb95a3e19e67e49dff8a35e014046c5e + h=$(pytopurl)/$$hash/Cython-$(cython-version).tar.gz + elif [ $$n = python ]; then mergenames=0 h=https://www.python.org/ftp/python/$(python-version)/Python-$(python-version).tgz elif [ $$n = libffi ]; then @@ -152,7 +156,6 @@ $(pytarballs): $(tdir)/%: elif [ $$n = chardet ]; then h=fc/bb/a5768c230f9ddb03acc9ef3f0d4a3cf93462473795d18e9535498c8f929d elif [ $$n = cryptography ]; then h=07/ca/bc827c5e55918ad223d59d299fff92f3563476c3b00d0a9157d9c0217449 elif [ $$n = cycler ]; then h=c2/4b/137dea450d6e1e3d474e1d873cd1d4f7d3beed7e0dc973b06e8e10d32488 - elif [ $$n = Cython ]; then h=36/da/fcb979fc8cb486a67a013d6aefefbb95a3e19e67e49dff8a35e014046c5e elif [ $$n = entrypoints ]; then h=b4/ef/063484f1f9ba3081e920ec9972c96664e2edb9fdc3d8669b0e3b8fc0ad7c elif [ $$n = h5py ]; then h=43/27/a6e7dcb8ae20a4dbf3725321058923fec262b6f7835179d78ccc8d98deec elif [ $$n = html ]; then h=85/3e/cf449cf1b5004e87510b9368e7a5f1acd8831c2d6691edd3c62a0823f98f @@ -199,6 +202,7 @@ $(pytarballs): $(tdir)/%: # Download using the script specially defined for this job. touch $(lockdir)/download + downloader="wget --no-use-server-timestamps -O" $(downloadwrapper) "$$downloader" $(lockdir)/download \ $$tarballurl $@ fi @@ -326,7 +330,8 @@ $(ipydir)/cycler: $(tdir)/cycler-$(cycler-version).tar.gz \ $(call pybuild, tar xf, $<, cycler-$(cycler-version), ,\ Cycler $(cycler-version)) -$(ipydir)/cython: $(tdir)/Cython-$(cython-version).tar.gz +$(ipydir)/cython: $(tdir)/cython-$(cython-version).tar.gz \ + $(ipydir)/setuptools $(call pybuild, tar xf, $<, Cython-$(cython-version), ,\ Cython $(cython-version)) @@ -417,7 +422,8 @@ $(ibidir)/pip3: $(tdir)/pip-$(pip-version).tar.gz \ $(call pybuild, tar xf, $<, pip-$(pip-version), ,\ PiP $(pip-version)) -$(ipydir)/pypkgconfig: $(tdir)/pkgconfig-$(pypkgconfig-version).tar.gz +$(ipydir)/pypkgconfig: $(tdir)/pkgconfig-$(pypkgconfig-version).tar.gz \ + $(ipydir)/setuptools $(call pybuild, tar xf, $<, pkgconfig-$(pypkgconfig-version), , pkgconfig $(pypkgconfig-version)) diff --git a/reproduce/src/make/dependencies.mk b/reproduce/src/make/dependencies.mk index 780a4f0..457a8db 100644 --- a/reproduce/src/make/dependencies.mk +++ b/reproduce/src/make/dependencies.mk @@ -216,6 +216,7 @@ $(tarballs): $(tdir)/%: | $(lockdir) # Download using the script specially defined for this job. touch $(lockdir)/download + downloader="wget --no-use-server-timestamps -O" $(downloadwrapper) "$$downloader" $(lockdir)/download \ $$tarballurl $@ fi -- cgit v1.2.1