From 8e82dcc513b2e61e981c39987af426e700c607ad Mon Sep 17 00:00:00 2001 From: Mohammad Akhlaghi Date: Mon, 18 Mar 2019 18:50:23 +0000 Subject: No Bzip2 shared libraries on macOS systems Bzip2 has a special/separate Makefile to build shared libraries which didn't work on a macOS. So with this commit, we are allowing Bzip2 shared libraries only on macOS systems. Also, I noticed that macOS's `sed' doesn't have the `-i' option (to do the change in place within the same file). So we are using `-e' to write the changed Makefile in a temporary directory, then rename that. --- reproduce/src/make/dependencies-basic.mk | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'reproduce/src') diff --git a/reproduce/src/make/dependencies-basic.mk b/reproduce/src/make/dependencies-basic.mk index 5965f00..c08e6eb 100644 --- a/reproduce/src/make/dependencies-basic.mk +++ b/reproduce/src/make/dependencies-basic.mk @@ -293,7 +293,7 @@ $(ibdir)/bzip2: $(tdir)/bzip2-$(bzip2-version).tar.gz # function here and we need to take some extra steps (inspired # from the "Linux from Scratch" guide for Bzip2): # 1) The `sed' call is for relative installed symbolic links. - # 2) The special Makefile-libbz2_so builds the shared library. + # 2) The special Makefile-libbz2_so builds shared libraries. # # NOTE: the major version number appears in the final symbolic # link. @@ -303,10 +303,16 @@ $(ibdir)/bzip2: $(tdir)/bzip2-$(bzip2-version).tar.gz makeshared="echo no-shared"; \ else \ makecommand="make"; \ - makeshared="make -f Makefile-libbz2_so"; \ + if [ x$(on_mac_os) = xyes ]; then \ + makeshared="echo no-shared"; \ + else \ + makeshared="make -f Makefile-libbz2_so"; \ + fi; \ fi; \ cd $(ddir) && rm -rf $$tdir && tar xf $< && cd $$tdir \ - && sed -i 's@\(ln -s -f \)$$(PREFIX)/bin/@\1@' Makefile \ + && sed -e 's@\(ln -s -f \)$$(PREFIX)/bin/@\1@' Makefile \ + > Makefile.sed \ + && mv Makefile.sed Makefile \ && $$makeshared \ && cp -a libbz2* $(ildir)/ \ && make clean \ -- cgit v1.2.1 From 27e0e23ec87cdfed5a2843fa8af35b1e0ac2e615 Mon Sep 17 00:00:00 2001 From: Mohammad Akhlaghi Date: Mon, 18 Mar 2019 18:59:31 +0000 Subject: Reseting path in script to make symbolic links to system programs Until recently, there was no problem with the `makelink' script of `dependencies-basic.mk' because it was called on separate recipe lines (and thus separate shells). But recently we added a call to it within a single shell (for GCC on Mac OS systems). So a previous call to it would effect the next call. To fix this, in this commit, we are re-setting PATH to its original value after each call finishes. --- reproduce/src/make/dependencies-basic.mk | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'reproduce/src') diff --git a/reproduce/src/make/dependencies-basic.mk b/reproduce/src/make/dependencies-basic.mk index c08e6eb..2e6caf4 100644 --- a/reproduce/src/make/dependencies-basic.mk +++ b/reproduce/src/make/dependencies-basic.mk @@ -202,11 +202,13 @@ $(tarballs): $(tdir)/%: # is very annoying and can cause many complications. We thus remove any # part of PATH of that has `ccache' in it before making symbolic links to # the programs we are not building ourselves. -makelink = export PATH=$$(echo $(syspath)| tr : '\n' |grep -v ccache \ - | paste -s -d:); \ - a=$$(which $(1) 2> /dev/null); \ - if [ -f $(ibdir)/$(1) ]; then rm $(ibdir)/$(1); fi; \ - if [ x$$a != x ]; then ln -s $$a $(ibdir)/$(1); fi +makelink = origpath="$$PATH"; \ + export PATH=$$(echo $(syspath) | tr : '\n' | grep -v ccache \ + | paste -s -d:); \ + a=$$(which $(1) 2> /dev/null); \ + if [ -f $(ibdir)/$(1) ]; then rm $(ibdir)/$(1); fi; \ + if [ x$$a != x ]; then ln -s $$a $(ibdir)/$(1); fi; \ + export PATH="$$origpath" $(ibdir) $(ildir):; mkdir $@ $(ibdir)/low-level-links: | $(ibdir) $(ildir) @@ -748,12 +750,12 @@ $(ibdir)/gcc: $(gcc-prerequisites) \ $(ibdir)/which # On a macOS, we (currently!) won't build GCC because of some - # errors we are still trying to find. So, we'll just make a - # symbolic link to the host's executables. + # errors we are still trying to fix. So, we'll just make a symbolic + # link to the host's executables. if [ "x$(on_mac_os)" = xyes ]; then \ $(call makelink,gfortran); \ - $(call makelink,gcc); \ $(call makelink,g++); \ + $(call makelink,gcc); \ else \ \ rm -f $(ibdir)/gcc* $(ibdir)/g++ $(ibdir)/gfortran $(ibdir)/gcov*;\ -- cgit v1.2.1