diff options
Diffstat (limited to 'reproduce/software')
-rw-r--r-- | reproduce/software/config/checksums.conf | 23 | ||||
-rw-r--r-- | reproduce/software/config/urls.conf | 17 | ||||
-rw-r--r-- | reproduce/software/config/versions.conf | 21 | ||||
-rw-r--r-- | reproduce/software/make/basic.mk | 3 | ||||
-rw-r--r-- | reproduce/software/make/high-level.mk | 186 | ||||
-rw-r--r-- | reproduce/software/make/xorg.mk | 180 |
6 files changed, 380 insertions, 50 deletions
diff --git a/reproduce/software/config/checksums.conf b/reproduce/software/config/checksums.conf index d108c41..62af1e1 100644 --- a/reproduce/software/config/checksums.conf +++ b/reproduce/software/config/checksums.conf @@ -92,7 +92,10 @@ flex-checksum = b4ef58d4a1d66b213e2f59df06959decf46d26b253cdc3f51cd26e2e2b505461 freetype-checksum = 02f0f4211f9cee5b5e46ebe61190482fca5b41bc26be06fcf0d2d717e9fb119229308398c420eeea476fa2511ca2d52948f1a3242efad30ca82ed0b07cd50e3a gdb-checksum = b4161df5adfce3eb51b3b3fc6072b2ef9f612f5e0f95b25bc57382812854836e9d1b24807c68cc8987e37e90112c6d75ffc1de3ea67a9f92858b4ce1af85c479 ghostscript-checksum = acee64fae78771bffa19b0b2bfaba3c345b420f93ceb4fc9df5fb705f785c8ed720fde2aef53546fac6aca2f7366c64c68a6e373a71999a42dc71aadc9aa782f +ghostscript-fonts-gnu-checksum = 222cb81e6956d9724e746f5f4d5c7b47b04bfd75b889f437f946c29a5bf16b5ed57b7584cf7fb0d8561287ef9f2e1ac53e4d231b6eaf23cba2612b47e8a5f919 +ghostscript-fonts-std-checksum = d4fe6b097a3bdd9694dc704a2d986e22d649fbb7ca8302f872dff573525596a3f38246bd6dd166a5970a4fbca8cce6ebfb9a7030806b4662630afdf243438e1f gnuastro-checksum = 718b391cc59e8f6b57afc963fb27161ecc9f32b18dcef1cf9c24c88f61d264d8d1154e59a74c36f6ac3a970e1a6f77eee288ec881899beb57e51cc55b56c089b +gperf-checksum = 855ebce5ff36753238a44f14c95be7afdc3990b085960345ca2caf1a2db884f7db74d406ce9eec2f4a52abb8a063d4ed000a36b317c9a353ef4e25e2cca9a3f4 gsl-checksum = 0be8240715f0b86aba2c63d9f12da4dba4719d4e350e9308d279e0dd3b2f0519ea26fd2e38a17f3e8cf43aacbaa2455207a7ca0d6c305f3b8725e8ece2250a74 hdf5-checksum = f828ee9d63533effe1ad358230e5ce7b64c5016e49291d9533575f713cbfba496290fc0151fd9617898bdf36785984ddb38a9207f529d7702d4e23838fe050d8 healpix-checksum = 29fe680d757bd94651bf029654257cb67286643aad510df4c2f0b06245174411376ec1beca64feebfac14a6fc0194525170635842916d79dcaddeddd9ac6f6c7 @@ -101,6 +104,7 @@ imagemagick-checksum = ad4325df57769f9c4edf8ac71370cb9bb19e090e588d47eb0311e3f48 imfit-checksum = 15edd2349232c1c8e611b31d3a46b0700112d274515f54d0a0085bb4bfa6d3d5f8a15cd926516e043a29ce841accf3534ae58dbfb952d858dc9445199c957096 lapack-checksum = 17786cb7306fccdc9b4a242de7f64fc261ebe6a10b6ec55f519deb4cb673cb137e8742aa5698fd2dc52f1cd56d3bd116af3f593a01dcf6770c4dcc86c50b2a7f libffi-checksum = 980ca30a8d76f963fca722432b1fe5af77d7a4e4d2eac5144fbc5374d4c596609a293440573f4294207e1bdd9fda80ad1e1cafb2ffb543df5a275bc3bd546483 +libidn-checksum = 782260f73b1fd8ebea8a40e2b3a6866c4f67494b2b3df03748daa9c0f842a9578932e746eb4bbf2547fccb1d65d7fc99a7977759dbe58f87f2fdd26d0fe45a09 libgit2-checksum = 0879c162e2e1dc00eadfbda22cd1f9d3a95b4ec2b653c108983f37c2f695140882de4d50d7cbc04ced247125a4e9fe6df16130e1267891aecdb2411d920db5c6 libjpeg-checksum = 74ea5af3545657d4ac03f8f7933913112cc2d982f0e379d0e5647f1acac21931468e53806297c30ebe180c7bcf84919a0ac20a4195afb03db03060d57904ef6c libnsl-checksum = a3c8f674357674b7ed4b26c05adde607f39be8d6dc9ff715448e1fcc5fc23d11fbb4ce85a6e493b79bdb0bb450dc3ffb1fb480715779f738d7bc016fae91621d @@ -125,14 +129,27 @@ sextractor-checksum = 4035710f9b8a20a0bb1a3913dab2dadd8444c179bf6dee425e0e8bb66a swarp-checksum = 80f4ade59738df3d4c9b47bda04148b53c6ba995d523fa8d1e02fb5d952b6078a53cc7d273849a033505de127a4f318b95adf2bf5a2dc38e8cc9bdaf5658487a swig-checksum = 5eaa2e06d8e4197fd02194051db1e518325dbb074a4c55a91099ad9c55193874f577764afc9029409a41bd520a95154095f26e33ef5add5c102bb2c1d98d33eb tides-checksum = c3360ff0d023b43749ba09a33302ca059f017a157b3ce7cdcf4f1a1578e90d3e7fa420077043adbee6b1ebf94bd698c8d6b279012f36d2a05b4de5351e30e108 +util-linux-checksum = c95d26b9037d6b877a247e6aeb58d17aa80f7e1bd6b523a4e0fde559fe07b3d924ece6d373300fefb65d1f206b3f990aeddb3a03605040e72ce6d6ee88591021 wcslib-checksum = fed47771defb2a93fb50aa2e701c46f8ce35773dd3de91eeaed311b5a0474c096c7f9be6996fe95f82faa30b1d5c0aba892bca5da80bc32b15919dfaf551aeb7 xlsxio-checksum = 22870fda7bd4eefd5fea2a9ad7530c9049135129d9b69805091777e6b54b2fc6c3f0e69c6954f36bce54eebbfeccaf637cce9e271a593221a4296d6632470a6c yaml-checksum = 13d2197135946204323dbfccafa0ac7b3d05437e920545a56f46811fd7319c01419a58083090ce85fccd4d6901a620ceb9f1190078cc0830bc0ce769bb024f51 zlib-checksum = 73fd3fff4adeccd4894084c15ddac89890cd10ef105dd5e1835e1e9bbb6a49ff229713bd197d203edfa17c2727700fce65a2a235f07568212d820dca88b528ae - - - +# Xorg related packages +util-macros-checksum = 3f51504b27f0478c136126f15110cf3cdbba218c4d74a8e974cca1381c6e8364609bd0c444f2fb19aa86a7f4e848dfce4f4da940463b224036f75a60b3d88619 +xorgproto-checksum = 2d10533e54987f293e1c8578aa742c38cf2fac8551db1d317cf5ee4a6a9600eced50f59c57c38b35dd210fe02d350294c967512f04cb9876d6c0c1f7e89cb199 +libxau-checksum = 3ca454ba466a807ea28b0f715066d73dc76ad312697b121d43e4d5766215052e9b7ffb8fe3ed3e496fa3f2a13f164ac692ff85cc428e26731b679f0f06a1d562 +libxdmcp-checksum = cb1d4650f97d66e73acd2465ec7d757b9b797cce2f85e301860a44997a461837eea845ec9bd5b639ec5ca34c804f8bdd870697a5ce3f4e270b687c9ef74f25ec +xcb-proto-checksum = de66d568163b6da2be9d6c59984f3afa3acd119a781378638045fd68018665ef5c9af98f024e9962ba3eb7c7a4d85c27ba70ffafceb2324ccc6940f34de16690 +libxcb-checksum = b90a23204b0d2c29d8b115577edb01df0465e02d6a8876550fecd62375d24a5d5f872ddd5946772ddba077cadce75b12c7a6d218469dc30b5b92bc82188e8bc6 +fontconfig-checksum = f97f2a9db294fd72d416a7d76dd7db5934ade2cf76903764b09e7decc33e0e2eed1a1d35c5f1c7fd9ea39e2c7653b9e65365f0c6205e047e95e38ba5000dd100 +xtrans-checksum = 4fea89a3455c0e13321cbefa43340016dbb59bdd0dbdb5b796c1a6d2a6b1fd63cf1327b769ab426286b9c54b32ec764a50cd2b46228e4e43b841bda6b94de214 +libx11-checksum = fc18f0dc17ade1fc37402179f52e1f2b9c7b7d3a1a9590fea13046eb0c5193b4796289431cd99388eac01e8e59de77db45d2c9675d4f05ef8cf3ba6382c3dd31 +libxext-checksum = 09146397d95f80c04701be1cc0a9c580ab5a085842ac31d17dfb6d4c2e42b4253b89cba695e54444e520be359883a76ffd02f42484c9e2ba2c33a5a40c29df4a +libice-checksum = 2f1ef2c32c833c71894a08fa7e7ed53f301f6c7bd22485d71c12884d8e8b36b99f362ec886349dcc84d08edc81c8b2cea035320831d64974edeba021b433c468 +libsm-checksum = 74c42e27029db78475e62025b4711dbac5e22d2f8e8a24be98a1c31b03c0fc4afe859928f851800ea0b76854f12147900dc4f27bbfd3d8ea45daaaf24b70a903 +libxt-checksum = 06248508b6fe5dfba8ceb4518475f656162351d78136eeb5d65086d680dabe9aca7bba3c94347f9c13ef03f82dab3ac19d0952ee610bc8c51c14cee7cf65f0b1 +libpthread-stubs-checksum = 5293c847f5d0c47a6956dd85b6630866f717e51e1e9c48fa10f70aa1e8268adc778eaf92504989c5df58c0dcde656f036248993b0ea5f79d4303012bfeff3c72 # Python packages # --------------- diff --git a/reproduce/software/config/urls.conf b/reproduce/software/config/urls.conf index dc5a9d8..945537d 100644 --- a/reproduce/software/config/urls.conf +++ b/reproduce/software/config/urls.conf @@ -94,6 +94,8 @@ #freetype-url = https://download.savannah.gnu.org/releases/freetype #gdb-url = http://ftp.gnu.org/gnu/gdb #ghostscript-url = $(shell v=$$(echo $(ghostscript-version) | sed -e's/\.//'); echo https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs$$v) +#gs-fonts-std-url = https://downloads.sourceforge.net/gs-fonts +#gs-fonts-gnu-url = https://downloads.sourceforge.net/gs-fonts #gnuastro-url = http://ftp.gnu.org/gnu/gnuastro #gsl-url = http://ftp.gnu.org/gnu/gsl #hdf5-url = $(shell majorver=$$(echo $(hdf5-version) | sed -e 's/\./ /g' | awk '{printf("%d.%d", $$1, $$2)}'); echo https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-$$majorver/hdf5-$(hdf5-version)/src) @@ -103,6 +105,7 @@ #imfit-url = http://www.mpe.mpg.de/~erwin/resources/imfit #lapack-url = http://www.netlib.org/lapack #libffi-url = ftp://sourceware.org/pub/libffi +#libidn-url = https://ftp.gnu.org/gnu/libidn #libgit2-url = https://github.com/libgit2/libgit2/archive #libjpeg-url = http://ijg.org/files #libnsl-url = http://akhlaghi.org/maneage-software @@ -127,11 +130,25 @@ #swarp-url = https://www.astromatic.net/download/swarp #swig-url = https://sourceforge.net/projects/swig/files/swig/swig-$(swig-version) #tides-url = http://akhlaghi.org/maneage-software +#util-linux-url = https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v2.35/ #valgrind-url = https://sourceware.org/pub/valgrind #wcslib-url = ftp://ftp.atnf.csiro.au/pub/software/wcslib #xlsxio-url = https://github.com/brechtsanders/xlsxio/archive #yaml-url = pyyaml.org/download/libyaml +# Xorg packages +# ------------- +#util-macros-url = https://www.x.org/pub/individual/util +#xorgproto-url = https://xorg.freedesktop.org/archive/individual/proto +#libxau-url = https://www.x.org/pub/individual/lib +#libxdmcp-url = https://www.x.org/pub/individual/lib +#xcb-proto-url = https://xorg.freedesktop.org/archive/individual/proto +#fontconfig-url = https://www.freedesktop.org/software/fontconfig/release +#xtrans-url = https://www.x.org/pub/individual/lib +#libx11-url = https://www.x.org/pub/individual/lib +#libxext-url = https://www.x.org/pub/individual/lib +#libpthread-stubs-url = https://xcb.freedesktop.org/dist + diff --git a/reproduce/software/config/versions.conf b/reproduce/software/config/versions.conf index 2e3406a..7998345 100644 --- a/reproduce/software/config/versions.conf +++ b/reproduce/software/config/versions.conf @@ -100,7 +100,10 @@ flex-version = 2.6.4-91-ga631f5d freetype-version = 2.9 gdb-version = 8.3 ghostscript-version = 9.50 +ghostscript-fonts-gnu-version = 6.0 +ghostscript-fonts-std-version = 8.11 gnuastro-version = 0.11 +gperf-version = 3.1 gsl-version = 2.6 hdf5-version = 1.10.5 healpix-version = 3.50 @@ -108,6 +111,7 @@ help2man-version = 1.47.11 imagemagick-version = 7.0.8-67 imfit-version = 1.6.1 libffi-version = 3.2.1 +libidn-version = 1.35 libjpeg-version = v9b libnsl-version = 1.2.0-4a062cf libpaper-version = 1.1.28 @@ -130,9 +134,26 @@ sextractor-version = 2.25.0 swarp-version = 2.38.0 swig-version = 3.0.12 tides-version = 2.0 +util-linux-version = 2.35 xlsxio-version = 0.2.21 yaml-version = 0.2.2 +# Xorg packages +util-macros-version = 1.19.2 +xorgproto-version = 2020.1 +libxau-version = 1.0.9 +libxdmcp-version = 1.1.3 +xcb-proto-version = 1.14 +libxcb-version = 1.14 +fontconfig-version = 2.13.1 +xtrans-version = 1.4.0 +libx11-version = 1.6.9 +libxext-version = 1.3.4 +libice-version = 1.0.10 +libsm-version = 1.2.3 +libxt-version = 1.2.0 +libpthread-stubs-version = 0.4 + # Version-dependent build # ----------------------- lapack-version = 3.8.0 diff --git a/reproduce/software/make/basic.mk b/reproduce/software/make/basic.mk index 94bb5d4..453eddb 100644 --- a/reproduce/software/make/basic.mk +++ b/reproduce/software/make/basic.mk @@ -191,9 +191,8 @@ $(ibidir)/low-level-links: $(ibidir)/coreutils-$(coreutils-version) \ # Libdl (for dynamic loading libraries at runtime) # POSIX Threads library for multi-threaded programs. for l in dl pthread; do - rm -f $(ildir)/lib$$l*; if [ -f /usr/lib/lib$$l.a ]; then - ln -s /usr/lib/lib$$l.* $(ildir)/ + ln -sf /usr/lib/lib$$l.* $(ildir)/ fi done diff --git a/reproduce/software/make/high-level.mk b/reproduce/software/make/high-level.mk index b756cb9..ac84c87 100644 --- a/reproduce/software/make/high-level.mk +++ b/reproduce/software/make/high-level.mk @@ -70,10 +70,10 @@ ifeq ($(strip $(all_highlevel)),1) # we'll need to filter it out, then add it in the end: minizip (has same # version as zlib) # - # Packages that are installed in the same recipe as others. These need to - # be totally removed when testing all the builds (they will be built - # anyway). lapack (installed with ATLAS) - targets-proglib := $(filter-out minizip-% lapack-%, \ + # Packages that are installed in the same recipe as others shouldn't be + # included here because there is no explicit target for them: they will + # be built as part of the other package. + targets-proglib := $(filter-out minizip-% lapack-% ghostscript-fonts-%, \ $(shell awk '/^# CLASS:PYTHON/{good=0} \ good==1 && !/^#/ && $$1 ~ /-version$$/ { \ printf("%s %s ", $$1, $$3)} \ @@ -126,14 +126,16 @@ export CCACHE_DISABLE := 1 export SHELL := $(ibdir)/bash export CPPFLAGS := -I$(idir)/include .SHELLFLAGS := --noprofile --norc -ec -export PKG_CONFIG_PATH := $(ildir)/pkgconfig export LDFLAGS := $(rpath_command) -L$(ildir) export PKG_CONFIG_LIBDIR := $(ildir)/pkgconfig +export PKG_CONFIG_PATH := $(ildir)/pkgconfig:$(idir)/share/pkgconfig # Settings specific to this Makefile. export CC := $(ibdir)/gcc export CXX := $(ibdir)/g++ export F77 := $(ibdir)/gfortran +export C_INCLUDE_PATH := $(iidir) +export CPLUS_INCLUDE_PATH := $(iidir) export LD_RUN_PATH := $(ildir):$(il64dir) export LD_LIBRARY_PATH := $(ildir):$(il64dir) @@ -156,7 +158,15 @@ export DYLD_LIBRARY_PATH := # library, it is thus necessary to include this location here. On systems # that don't need it, `sys_library_path' is just empty. This is necessary # for `ld'. -export LIBRARY_PATH := $(sys_library_path) +# +# If this variable is not defined, it will be interpretted as the current +# directory. In this case, when the program source has a 'specs' directory, +# GCC will crash because it expects it to be special file. +ifeq ($(strip $(sys_library_path)),) +export LIBRARY_PATH := $(ildir) +else +export LIBRARY_PATH := $(ildir):$(sys_library_path) +endif # Building flags: # @@ -190,7 +200,8 @@ backupservers = $(filter-out $(topbackupserver),$(backupservers_all)) -# Import rules to build Python packages, +# Import rules to build specialized software +include reproduce/software/make/xorg.mk include reproduce/software/make/python.mk @@ -466,6 +477,12 @@ $(ibidir)/freetype-$(freetype-version): $(ibidir)/libpng-$(libpng-version) $(call gbuild, freetype-$(freetype-version), static) echo "FreeType $(freetype-version)" > $@ +$(ibidir)/gperf-$(gperf-version): + tarball=gperf-$(gperf-version).tar.gz + $(call import-source, $(gperf-url), $(gperf-checksum)) + $(call gbuild, gperf-$(gperf-version), static) + echo "GNU gperf $(gperf-version)" > $@ + $(ibidir)/gsl-$(gsl-version): tarball=gsl-$(gsl-version).tar.gz $(call import-source, $(gsl-url), $(gsl-checksum)) @@ -533,6 +550,13 @@ $(ibidir)/healpix-$(healpix-version): $(healpix-python-dep) \ cp $(dtexdir)/healpix.tex $(ictdir)/ echo "HEALPix $(healpix-version) \citep{healpix}" > $@ +$(ibidir)/libidn-$(libidn-version): + tarball=libidn-$(libidn-version).tar.gz + $(call import-source, $(libidn-url), $(libidn-checksum)) + $(call gbuild, libidn-$(libidn-version), static, \ + --disable-doc, -j$(numthreads) V=1) + echo "Libjpeg $(libjpeg-version)" > $@ + $(ibidir)/libjpeg-$(libjpeg-version): tarball=jpegsrc.$(libjpeg-version).tar.gz $(call import-source, $(libjpeg-url), $(libjpeg-checksum)) @@ -893,50 +917,58 @@ $(ibidir)/gdb-$(gdb-version): $(ibidir)/python-$(python-version) echo "GNU Project Debugger (GDB) $(gdb-version)" > $@ $(ibidir)/ghostscript-$(ghostscript-version): \ + $(ibidir)/libxt-$(libxt-version) \ + $(ibidir)/expat-$(expat-version) \ + $(ibidir)/libidn-$(libidn-version) \ $(ibidir)/libpng-$(libpng-version) \ - $(ibidir)/libtiff-$(libtiff-version) + $(ibidir)/libtiff-$(libtiff-version) \ + $(ibidir)/libpaper-$(libpaper-version) - # Import the tarball. + # Download the standard collection of Ghostscript fonts. + tarball=ghostscript-fonts-std-$(ghostscript-fonts-std-version).tar.gz + $(call import-source, $(ghostscript-fonts-std-url), \ + $(ghostscript-fonts-std-checksum)) + + # Download the extra GNU fonts for Ghostscript. + tarball=ghostscript-fonts-gnu-$(ghostscript-fonts-gnu-version).tar.gz + $(call import-source, $(ghostscript-fonts-gnu-url), \ + $(ghostscript-fonts-gnu-checksum)) + + # Download the tarball tarball=ghostscript-$(ghostscript-version).tar.gz $(call import-source, $(ghostscript-url), $(ghostscript-checksum)) - # First we need to make sure some necessary X11 libraries that we - # don't yet install in this template are present on the host - # system, see https://savannah.nongnu.org/task/?15481 . - # Adding `-L/opt/X11/lib' to LDFLAGS is necessary for macOS systems - # because X11 libraries used to be installed there. - echo; - echo "Template: testing necessary X11 libraries for ghostscript" - echo "---------------------------------------------------------" - oprog=$(ddir)/libXext-test-for-ghostscript - cprog=$(ddir)/libXext-test-for-ghostscript.c - echo "#include <stdio.h>" > $$cprog - echo "int main(void) {return 0;}" >> $$cprog - export LDFLAGS="$$LDFLAGS -L/opt/X11/lib" - if $$CC $$LDFLAGS $$cprog -o$$oprog -lXt -lSM -lICE -lXext; then - echo "Necessary X11 libraries are present. Proceeding to the build." - rm $$cprog $$oprog - else - rm $$cprog - echo "" - echo "Problem in building Ghostscript" - echo "-------------------------------" - echo "Some necessary X11 libraries (that we don't yet install" - echo "within the template) couldn't be found on your system, see" - echo "the 'ld' error message above. Please install them manually" - echo "so Ghostscript can be built." - echo - echo "For example if you use Debian-based OSs, run this command:" - echo " sudo apt install libxext-dev libxt-dev libsm-dev libice-dev ghostscript" - echo "" - echo "This notice will be removed once these packages are built" - echo "within the project (Task #15481)." - echo "-------------------------------" - exit 1 - fi + # Unpack it and configure Ghostscript. + cd $(ddir) + tar xf $(tdir)/$$tarball + cd ghostscript-$(ghostscript-version) + ./configure --prefix=$(idir) \ + --disable-cups \ + --enable-dynamic \ + --with-system-libtiff \ + --disable-compile-inits + + # Build and install the program and the shared libraries. + make V=1 -j$(numthreads) + make so V=1 -j$(numthreads) + make install + make soinstall + + # Install headers and set PostScript (PS) headers to point there. + install -v -m644 base/*.h $(iidir)/ghostscript + ln -sfvn $(iidir)/ghostscript $(iidir)/ps - # If they were present, go onto building Ghostscript. - $(call gbuild, ghostscript-$(ghostscript-version),,,V=1 -j$(numthreads)) + # Install the fonts. + tar -xvf $(tdir)/ghostscript-fonts-std-$(ghostscript-fonts-std-version).tar.gz \ + -C $(idir)/share/ghostscript + tar -xvf $(tdir)/ghostscript-fonts-gnu-$(ghostscript-fonts-gnu-version).tar.gz \ + -C $(idir)/share/ghostscript + fc-cache -v $(idir)/share/ghostscript/fonts/ + echo; echo "Ghostscript fonts added to Fontconfig."; echo; + + # Clean up and write the output target. + cd .. + rm -rf ghostscript-$(ghostscript-version) echo "GPL Ghostscript $(ghostscript-version)" > $@ $(ibidir)/gnuastro-$(gnuastro-version): \ @@ -1203,6 +1235,70 @@ $(ibidir)/swig-$(swig-version): $(call gbuild, swig-$(swig-version), static, --without-pcre) echo "Swig $(swig-version)" > $@ +# The disables: +# For macOS: +# --disable-dependency-tracking +# --disable-silent-rules +# --disable-ipcrm +# --disable-ipcs +# Because they need root: +# --disable-mount +# --disable-wall +# --disable-su +# +# NOTE ON INSTALLATION DIRECTORY: Util-linux libraries are relatively +# low-level and may cause conflicts with system libraries (especilly when +# we don't build the C compiler in Maneage). The precise conflict that +# triggered this was building CMake on macOS (it was expecting the host's +# uuid library, but would crash because of conflicts with the installed +# 'uuid.h' headers of Maneage's 'util-linux'. +# +# Since many programs don't actually need 'util-linux' libraries, to avoid +# low-level conflicts, we will install util-linux in a unique top-level +# directory and put symbolic links of its binaries in the main +# '$(ibdir)'. If any program does need 'util-linux' libraries, they can +# simply add the proper directories to the environment variables, see +# 'fontconfig' for example. +$(ibidir)/util-linux-$(util-linux-version): + + # Import the source. + tarball=util-linux-$(util-linux-version).tar.xz + $(call import-source, $(util-linux-url), $(util-linux-checksum)) + + # Unpack the source and set it to install in a special directory + # (as explained above). As shown below, later, we'll put a symbolic + # link of all the necessary binaries in the main '$(idir)/bin'. + cd $(ddir) + tar xf $(tdir)/$$tarball + cd util-linux-$(util-linux-version) + ./configure --prefix=$(idir)/util-linux \ + --disable-dependency-tracking \ + --disable-silent-rules \ + --without-systemd \ + --enable-libuuid \ + --disable-mount \ + --disable-ipcrm \ + --disable-ipcs \ + --disable-wall \ + --disable-su + + # Build and install it. + make V=1 -j$(numthreads) + make install + + # Put a symbolic link to installed programs in main installation + # directory. If 'sbin' exists in the main installation directory, + # put util-linux's 'sbin/' directory there too. + ln -sf $(idir)/util-linux/bin/* $(ibdir)/ + if [ -d $(idir)/sbin ]; then + ln -sf $(idir)/util-linux/sbin/* $(idir)/sbin + else + ln -sf $(idir)/util-linux/sbin/* $(idir)/bin + fi + + # Write the main target. + echo "util-Linux $(util-linux-version)" > $@ + $(ibidir)/xlsxio-$(xlsxio-version): \ $(ibidir)/cmake-$(cmake-version) \ $(ibidir)/expat-$(expat-version) \ diff --git a/reproduce/software/make/xorg.mk b/reproduce/software/make/xorg.mk new file mode 100644 index 0000000..e3b1f71 --- /dev/null +++ b/reproduce/software/make/xorg.mk @@ -0,0 +1,180 @@ +# Build the project's Xorg dependencies. +# +# ------------------------------------------------------------------------ +# !!!!! IMPORTANT NOTES !!!!! +# +# This Makefile will be loaded into 'high-level.mk', which is called by the +# `./project configure' script. It is not included into the project +# afterwards. +# +# This Makefile contains instructions to build all the Xorg-related +# software within the project. The build instructions here are taken from +# Linux From Scratch: +# http://www.linuxfromscratch.org/blfs/view/svn/x/xorg7.html +# +# ------------------------------------------------------------------------ +# +# Copyright (C) 2020 Mohammad Akhlaghi <mohammad@akhlaghi.org> +# +# This Makefile is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This Makefile is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this Makefile. If not, see <http://www.gnu.org/licenses/>. + + + + + +# Environment variables +export XORG_PREFIX=$(idir) + +# Common configuration options for all Xorg programs +export XORG_CONFIG = --disable-static --prefix=$(XORG_PREFIX) \ + --sysconfdir=$(idir)/etc --localstatedir=$(idir)/var + + + + + +# This is the basic Xorg configuration script. Note that '$(idir)/etc' was +# built in 'basic.mk'. +$(idir)/etc/profile.d:; mkdir +$(idir)/etc/profile.d/xorg.sh: | $(idir)/etc/profile.d + echo "export XORG_PREFIX=\"$(XORG_PREFIX)\"" > $@ + echo "export XORG_CONFIG=\"$(XORG_CONFIG)\"" >> $@ + chmod 644 $@ + +# A set of m4 macros used in all Xorg packages. +$(ibidir)/util-macros-$(util-macros-version): \ + $(idir)/etc/profile.d/xorg.sh \ + $(ibidir)/automake-$(automake-version) + tarball=util-macros-$(util-macros-version).tar.bz2 + $(call import-source, $(util-macros-url), $(util-macros-checksum)) + $(call gbuild, util-macros-$(util-macros-version),,$(XORG_CONFIG),V=1) + echo "util-macros (Xorg) $(util-macros-version)" > $@ + +# Necessaary headers to define the Xorg protocols. +$(ibidir)/xorgproto-$(xorgproto-version): \ + $(ibidir)/util-macros-$(util-macros-version) + tarball=xorgproto-$(xorgproto-version).tar.bz2 + $(call import-source, $(xorg-proto-url), $(xorgproto-checksum)) + $(call gbuild, xorgproto-$(xorgproto-version),,$(XORG_CONFIG),V=1) + echo "xorgproto $(xorgproto-version)" > $@ + +# Necessaary headers to define the Xorg protocols. +$(ibidir)/libxau-$(libxau-version): $(ibidir)/xorgproto-$(xorgproto-version) + tarball=libXau-$(libxau-version).tar.bz2 + $(call import-source, $(libaxu-url), $(libxau-checksum)) + $(call gbuild, libXau-$(libxau-version),,$(XORG_CONFIG), V=1) + echo "libXau (Xorg) $(libxau-version)" > $@ + +# Library implementing the X Display Manager Control Protocol. +$(ibidir)/libxdmcp-$(libxdmcp-version): $(ibidir)/libxau-$(libxau-version) + tarball=libXdmcp-$(libxdmcp-version).tar.bz2 + $(call import-source, $(libxdmcp-url), $(libxdmcp-checksum)) + $(call gbuild, libXdmcp-$(libxdmcp-version),,$(XORG_CONFIG), V=1) + echo "libXdmcp (Xorg) $(libxdmcp-version)" > $@ + +# XML-XCB protocol descriptions +$(ibidir)/xcb-proto-$(xcb-proto-version): \ + $(ibidir)/python-$(python-version) \ + $(ibidir)/libxml2-$(libxml2-version) + tarball=xcb-proto-$(xcb-proto-version).tar.xz + $(call import-source, $(xcb-proto-url), $(xcb-proto-checksum)) + $(call gbuild, xcb-proto-$(xcb-proto-version),,$(XORG_CONFIG), V=1) + echo "XCB-proto (Xorg) $(xcb-proto-version)" > $@ + +# Interface to the X Window System protocol, replaces current Xlib interface. +$(ibidir)/libxcb-$(libxcb-version): \ + $(ibidir)/libxdmcp-$(libxdmcp-version) \ + $(ibidir)/xcb-proto-$(xcb-proto-version) \ + $(ibidir)/libpthread-stubs-$(libpthread-stubs-version) + tarball=libxcb-$(libxcb-version).tar.xz + $(call import-source, $(libxcb-url), $(libxcb-checksum)) + $(call gbuild, libxcb-$(libxcb-version),, \ + $(XORG_CONFIG) --without-doxygen, \ + V=1 -j$(numthreads)) + echo "libxcb (Xorg) $(libxcb-version)" > $@ + +$(ibidir)/libpthread-stubs-$(libpthread-stubs-version): \ + $(ibidir)/automake-$(automake-version) + tarball=libpthread-stubs-$(libpthread-stubs-version).tar.gz + $(call import-source, $(libpthread-stubs-url), $(libpthread-stubs-checksum)) + $(call gbuild, libpthread-stubs-$(libpthread-stubs-version),, V=1) + echo "libpthread-stubs (Xorg) $(libpthread-stubs-version)" > $@ + +# Library for configuring fonts, it needs util-linux for libuuid. +$(ibidir)/fontconfig-$(fontconfig-version): \ + $(ibidir)/gperf-$(gperf-version) \ + $(ibidir)/expat-$(expat-version) \ + $(ibidir)/libxml2-$(libxml2-version) \ + $(ibidir)/freetype-$(freetype-version) \ + $(ibidir)/util-linux-$(util-linux-version) + # Import the source. + tarball=fontconfig-$(fontconfig-version).tar.bz2 + $(call import-source, $(fontconfig-url), $(fontconfig-checksum)) + + # Add the extra environment variables for using 'libuuid' of + # 'util-linux'. + ulidir=$(idir)/util-linux + export LDFLAGS="-L$$ulidir/lib $(LDFLAGS)" + export CPPFLAGS="-I$$ulidir/include $(CPPFLAGS)" + export PKG_CONFIG_PATH=$(PKG_CONFIG_PATH):$$ulidir/lib/pkgconfig + + # Build it. + $(call gbuild, fontconfig-$(fontconfig-version),, \ + $(XORG_CONFIG) --sysconfdir=$(idir)/etc \ + --disable-docs, V=1 -j$(numthreads)) + echo "Fontconfig $(fontconfig-version)" > $@ + +$(ibidir)/xtrans-$(xtrans-version): \ + $(ibidir)/libxcb-$(libxcb-version) \ + $(ibidir)/fontconfig-$(fontconfig-version) + tarball=xtrans-$(xtrans-version).tar.bz2 + $(call import-source, $(xtrans-url), $(xtrans-checksum)) + $(call gbuild, xtrans-$(xtrans-version),,$(XORG_CONFIG), V=1) + echo "xtrans (Xorg) $(xtrans-version)" > $@ + +$(ibidir)/libx11-$(libx11-version): $(ibidir)/xtrans-$(xtrans-version) + tarball=libX11-$(libx11-version).tar.bz2 + $(call import-source, $(libx11-url), $(libx11-checksum)) + $(call gbuild, libX11-$(libx11-version),,$(XORG_CONFIG), \ + -j$(numthreads) V=1) + echo "X11 library $(libx11-version)" > $@ + +$(ibidir)/libxext-$(libxext-version): $(ibidir)/libx11-$(libx11-version) + tarball=libXext-$(libxext-version).tar.bz2 + $(call import-source, $(libxext-url), $(libxext-checksum)) + $(call gbuild, libXext-$(libxext-version),,$(XORG_CONFIG), \ + -j$(numthreads) V=1) + echo "libXext $(libxext-version)" > $@ + +$(ibidir)/libice-$(libice-version): $(ibidir)/libxext-$(libxext-version) + tarball=libICE-$(libice-version).tar.bz2 + $(call import-source, $(libice-url), $(libice-checksum)) + $(call gbuild, libICE-$(libice-version),, \ + $(XORG_CONFIG) ICE_LIBS=-lpthread, \ + -j$(numthreads) V=1) + echo "libICE $(libice-version)" > $@ + +$(ibidir)/libsm-$(libsm-version): $(ibidir)/libice-$(libice-version) + tarball=libSM-$(libsm-version).tar.bz2 + $(call import-source, $(libsm-url), $(libsm-checksum)) + $(call gbuild, libSM-$(libsm-version),, \ + $(XORG_CONFIG), -j$(numthreads) V=1) + echo "libSM $(libsm-version)" > $@ + +$(ibidir)/libxt-$(libxt-version): $(ibidir)/libsm-$(libsm-version) + tarball=libXt-$(libxt-version).tar.bz2 + $(call import-source, $(libxt-url), $(libxt-checksum)) + $(call gbuild, libXt-$(libxt-version),, \ + $(XORG_CONFIG), -j$(numthreads) V=1) + echo "libXt $(libxt-version)" > $@ |