aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorLines
2019-06-14Minor correction is code demonstration in previous commitMohammad Akhlaghi-1/+2
After checking the previous commit on Gitlab (to see how it is rendered), I noticed that the code has come in the same line, not as a sperate box. Hopefully this commit will fix it.
2019-06-14Software building status check tip added to README-hacking.mdMohammad Akhlaghi-0/+18
It is useful to visually see how the building of software is progressing when running configure. I have been using a simple Bash `while' loop for this, so I added it in the `README-hacking.md' to be useful for others too.
2019-06-14Binutils is built alone, before GCCMohammad Akhlaghi-40/+55
Until now, on GNU/Linux systems, GNU Binutils was built in parallel with other programs. As a result, the moment that the Binutils executables (most importantly `ld') are being installed, if another program is using them, we can have a crash. For some reason, this crash doesn't happen on Fedora or Arch Linux, but on some Debian-based distors, it causes the following crash when we are building Git (which happened to be built while Binuntils is being installed): credential-cache--daemon.o: file not recognized: File format not recognized In a following run of `./configure' (when Binutils has been installed), Git will build and install successfully. To fix this problem, with this commit, all basic programs are now a prerequisite of Binutils and Binutils is the sole prerequisite of GCC (which is the final target of `basic.mk'). Also, the GCC configure options were re-ordered to be easier to read (the `--with-*' options under each other, the `--enable-*' options under each other and so on).
2019-06-13Metastore now has rpathMohammad Akhlaghi-10/+16
Until now we hadn't noticed that Metastore's build doesn't include an `rpath'. As a result I got a crash during a Git commit. With this commit, on GNU/Linux systems, we now add rpath to the installed Metastore executable. During the build, I also cleaned up the Metastore build recipe to be more clear and readable (in particular we only check the user name and group name when metastore is actually built).
2019-06-13Permission flags of top.mk set to 644 like others, not 755Mohammad Akhlaghi-0/+0
Until now, for some reason, the permission flags of `top.mk' were 755 (good for an executable), not 644 (which is what they should be for a plain text file that is run by another program). This is corrected with this commit.
2019-06-12Imported recent work on Imfit, minor conflicts fixedMohammad Akhlaghi-11/+124
The recent work by Raul to import Imfit is now merged into the master branch. Only a few minor conflicts came up due to the update with CFITSIO (that Raul also done in parallel on this branch).
2019-06-12Imfit and libcurl: manually adding rpath on GNU/Linux systemsRaul Infante-Sainz-5/+18
While trying to debug the installation of Imfit, we found out that libcurl doesn't have rpath and is thus linking with the host system's libraries. So rpath is now manually added to the build of libcurl. We also found out that Imfit executables don't have rpath, so it was added to them too.
2019-06-10TeXlive: allows for updating itself and removes old version fileMohammad Akhlaghi-1/+10
Until now, TeXlive would only attempt to download/update LaTeX packages, but after some time, it will be necessary for it to update itself. When this happens, it complains about running it with `update --self'. To fix this problem, before installing/updating the LaTeX packages, we will first update tlmgr in any case. Also, we weren't removing the TeXlive package version file before appending the values to it. So it was just repeating the packages every time it was updated. With this commit, it is being removed on every new build. Finally, the version of Git was updated to its most recent version.
2019-05-31Modified Imfit installation to not consider default and host pathsRaul Infante-Sainz-8/+15
Until this commit, 'imfit' was installed using proper flags in order to use our own libraries. However, it looks first of all to the default system. As a consecuence, `imfit' program was linked to the host system libraries, even when we told to use our own libraries!! With this commit, the installation of `imfit' has been modified in order to remove the default paths already set in the `SConstruct' script. By doing this, only our paths are take into account for compiling the program. It has been tested on Mac OS laptop and it works fine. Test on GNU/Linux systems remain before merge into the main project branch.
2019-05-31Building single and double precission float libraries of FFTWRaul Infante-Sainz-1/+9
Until this commit, `fftw' was building single precission float library because `scamp' had problem on using the default double precission library. However,`imfit' and maybe other programs will use double precission float libraries. With this commit, `fftw' installation is done twice in order to build single and double precission float libraries. It does not complain and goes up to the end without crashing. However, more tests are needed in order to ensure that there is not problem on having both libraries because in principle, they share the same header file and that could cause problems.
2019-05-31Fixing rpath problem in CFITSIO installationRaul Infante-Sainz-13/+13
`cfitsio' was recently updated and it cames up with a problem when trying to build shared libraries (on Mac OS system laptop). This is because the `configure' script for building `cfitsio' include by default `rpath'. With this commit, this issue is fixed by modifying the installation of `cfitsio'. Using `sed', each ocurrence of `@rpath' in `configure' is replaced by `$(ildir)'. Once it has been done, the installation of `cfitsio' goes as normal. In this commit, the version of the `cfitsio' has been also updated to the most recent one.
2019-05-28Corrected typo in Imfit installation, but not working yetRaul Infante-Sainz-1/+1
With this commit, I have corrected a typo in the installation of `imfit'. In principle it is working on Mac OS system but when I tried to install it in GNU/Linux system it crashed. It complains about a problem with the `cfitsio' library: /pathto/libcfitsio.a: error adding symbols: File format not recognized As in the last commits done by Mohammad in the project, `cfitsio' installation has been upgraded and also the installation has been modified, I am going to try this new version. I will also check if it is a problem about dynamic/static library. It also seems that the installation is taking libraries and variables from the host system, so I will check that everything used is from our own programs/libraries.
2019-05-27Software: CFITSIO 3.47, implemented many common standardsMohammad Akhlaghi-31/+6
Until now, CFITSIO had several peculiar features which needed special attention: 1) Its tarball didn't have a `.' in the version name and would sometimes have extra `0's. 2) When unpacked it was just `cfitsio'. 3) It hard coded the directory to search for cURL library. All of these forced us to do a lot of extra steps for CFITSIO. So I got in touch with them and fortunately they were very open to correcting these issues and with version 3.47 all such issues have been addressed in the tarball. Thanks to these changes, with this commit, CFITSIO's build rule is now very similar to many other programs. I also noticed that it has an optional `--with-bz2' feature to enable unpacking `.fits.bz2' files. So this feature is also added.
2019-05-27Added paper citation of ImfitRaul Infante-Sainz-1/+26
Until this commit, `imfit' paper was not included into the acknowledgements. With this commit, a bib tex file for `imfit' has been added. So, now it is properly cited into the final paper.
2019-05-27Added Imfit into the projectRaul Infante-Sainz-1/+32
With this commit, `imfit' has been included into the project. As described in the official webpage (http://www.mpe.mpg.de/~erwin/code/imfit/): Imfit is a program for fitting astronomical images -- especially images of galaxies, though it can in principle be used for fitting other sources. This program uses the `scons' program to build itself (not the traditional GNU `configure' and `make' system). I have tested it by using an example that can be found in the `examples' directory of the decompressed tarball. It works fine without any error on my Mac OS system.
2019-05-27Adding SCons into the projectRaul Infante-Sainz-1/+18
With this commit, SCons has been included into the project. As in the official webpage of this program says: SCons is an Open Source software construction tool—that is, a next-generation build tool. Think of SCons as an improved, cross-platform substitute for the classic Make utility with integrated functionality similar to autoconf/automake and compiler caches such as ccache. In short, SCons is an easier, more reliable and faster way to build software. The motivation for including this software into the project is because there are some software that use this system for the installation. In particular, the necessity of installing it comes from Imfit. This is an astronomical software that uses this system so that is why it has been included into the project. In principle it is simple, and I have tested it on Mac OS sytem without any problem.
2019-05-24PyYAML decompressed tarball directory name fixedRaul Infante-Sainz-1/+1
Until this commit, the name of the decompressed tarball directory of PyYAML Python package was wrong. It has to be `PyYAML-version' instead of `pyyaml-version'. When I run the installation on Mac OS system it went up to the end of the installation with no error. However, when I tried to install it on a GNU/Linux system, it complained about no finding the `pyyaml-version' directory, which is the expected because the name was wrong! With this commit, I have fixed this issue by writting correctly the name of the decompressed tarball directory.
2019-05-24Added PyYAML Python package into the projectRaul Infante-Sainz-0/+13
With this commit, PyYAML Python package has been added into the project. It is widely used in the Python community and the goal is to have human readable configuration files. As in the web page (https://pypi.org/project/PyYAML/) says: YAML is a data serialization format designed for human readability and interaction with scripting languages. PyYAML is a YAML parser and emitter for Python.
2019-05-24Added LibYAML library into the projectRaul Infante-Sainz-0/+6
With this commit, LibYAML library has been added. This library is a prerequisite of the Python package PyYAML, which is widely used in the Python community when configuration scripts are needed.
2019-05-24Shared CFITSIO installation includedMohammad Akhlaghi-2/+3
By default (when you run `make' within CFITSIO), it only builds a static library. So until now, the template would only install a static version of this library. To be more clear about which libraries are used during the linking of programs that use CFITSIO, it would be helpful to have shared library versions also. Also, if the system has problems with static libraries (like macOS systems), then it won't go looking outside the template to link with them (these paths are hardcoded in the linker, which we don't build on macOS and just use the system's tools). With this commit, we are explicity running `make shared' in the CFITSIO installation to have shared CFITSIO also. I also removed the old `static' element (which we don't use anymore in any of the programs and have to remove some time later!).
2019-05-22Removing extra spaces in variable definition in configure scriptRaul Infante-Sainz-2/+2
With this commit, extra spaces in the definition of two variables in the `configure' script have been removed. Since they are defined in a `shell' context (not in `make'), variable assignation is not allow to have any space at both sides of the `=' character. I detected these typos when trying to run `./configure' in a particular project.
2019-05-22TeXLive and Ghostscript also added as dependencies of MatplotlibMohammad Akhlaghi-0/+2
Matplotlib can optionally use LaTeX and Ghostscript as dependencies to render text with LaTeX. Since we already have their build rules, with this commit, they have been added as its prerequisites.
2019-05-21Imported Matplotlib installation, no conflictsMohammad Akhlaghi-0/+14
There weren't any conflicts in this merge.
2019-05-21README-hacking.md: corrected typoMohammad Akhlaghi-1/+1
A title in the checklist was mistakenly using "project" (customized template) instead of "template".
2019-05-21ImageMagick put as prerequisite of MatplotlibRaul Infante-Sainz-0/+1
With this commit, ImageMagick program has been set as prerequisite of Matplotlib Python package. Since some submodules of Matplotlib rely on ImageMagick programs (for example, those to make image animations), and now we have ImageMagick into the project, it is good to install ImageMagick when Matplotlib is requested to be installed.
2019-05-21ImageMagick is now included into the projectRaul Infante-Sainz-0/+13
With this commit, ImageMagick software has been added into the project. This software is useful to deal and treat images from the command line. Since it is widely used and a lot of other programs rely on it, it is worth to have it into the project.
2019-05-21Source directory links to build directory all managed in configureMohammad Akhlaghi-18/+53
Until now, the `tex/build' symbolic link was put in the clone/source tree when the build-directory's `tex' directory was being built. Thanks to Roberto Baena, we just found a bug because of this behavior: when a second group member is trying to build the pipeline, since the build directory's `tex' directory already exists, no `tex/build' will be put in their clone/source directory. As a result, the PDF building will crash. To fix this (and keep things organized), the two `tex/build' and `tex/tikz' links (to the build directory) are now built in the configure step while it is building all the top-level directories. They are no longer built within the Makefiles. Also, a comment was added on top of every directory built during the configuration phase to be clear. This fixes bug #56362.
2019-05-15for-group script using internal chmodMohammad Akhlaghi-1/+1
Until now, the `for-group' script was using the system's `chmod' at the end of its operation. But when `for-group' reaches this level, we already have our own custom `chmod'. With this commit, for a consistent operation, we are now using our custom `chmod' program for this final step.
2019-05-09Typo, space instead of TAB, corrected in recipe of MetastoreMohammad Akhlaghi-27/+27
In the previous commits where Metastore's recipe was updated, all the `TAB's in the recipe were saved as spaces just before the commit (due to a copying and pasting from the terminal, not the text editor). With this commit, I am correcting this.
2019-05-09download-multi-try now starts with a /bin/bash shebangMohammad Akhlaghi-0/+2
Until now, the `download-multi-try' script assumed GNU Bash features (when comparing the number of attempts at downloading), but it didn't explicitly ask the operating system to be run with Bash. As a result, when weaker shells were used (like the default Debian minimalist `dash' shell), the `>' ("larger than" operator in a math context) is interpreted a redirection and two extra files are created: `1' and `maxcount'! With this commit, we now start this script with `/bin/bash'. Ofcourse, this will assume that the host has GNU Bash installed, but we are also making this assumption in the configure script. So atleast for now, Bash (any version) is a critical dependency of this template anyway.
2019-05-09Metastore Git hooks properly written after its installationMohammad Akhlaghi-35/+34
Until now, in the recipe to build Metastore, we would store the current directory in a `current_dir' Bash variable before running `gbuild' to build Metastore. However, in this Makefile, we aren't using `.ONESHELL'. As a result, each un-quoted new-line character creates a new shell and the `current_dir' variable that we used afterwards was empty! This happened because until recently, Metastore was being built in `high-level.mk' (where `.ONESHELL' is activated, because we are using GNU Make to call that Makefile). But in `basic.mk', we are using the host's Make, which may not be GNU Make, so we can't use any GNU-only features. Also, this error was hard to notice, because we weren't using `&&' before writing the final target of Metastore! With this commit, both this issues are addressed: all the lines in the recipe are now quoted in the end with a backslash, and the steps before making the target are separated by `&&', not `;' (which doesn't cause a crash if the command fails). This fixes bug #56295.
2019-05-09Removed extra Binutils from GCC's prerequisitesMohammad Akhlaghi-1/+0
Until this commit, Binutils was brough up as a GCC prerequisite two times: Once as a special (`host_cc') dependency (for when we want to build GCC), another time as a dependency in every build. The first one is now obsolete: on MacOS systems where we don't build Binutils, we define its symbolic links in the same recipe. With this commit, we remove the first one, so Binutils is always a dependency of GCC.
2019-05-08TeXLive csquotes packages (needed by BibLaTeX) has been addedMohammad Akhlaghi-1/+8
In the warnings output by LaTeX during the building of a project, I noticed that `csquotes' is recommended for some features of BibLaTeX (a warning was printed) so it is added with this commit.
2019-05-06Imported work on X window system for netpbm, no conflictsMohammad Akhlaghi-1/+1
There weren't any conflicts in this merge.
2019-05-06Disabled X Window System in netpbm installation for GNU/Linux systemsRaul Infante-Sainz-1/+1
Until this commit, we were installing `netpbm' without disabling the X Windows System in GNU/Linux. That is the default option in the configure step of `netpbm'. However, we are not installing the necessary libraries (X11) and headers for that. As a consecuence, when testing in a system where we don't have these libraries/headers (Ubuntu 14.04), it crashes. With this commit, we disable the X Windows System option in `netpbm' by giving the answer `none' to one of the last answers to that question in the configure step.
2019-05-05Visual alignment of software version numbers under eachother removedMohammad Akhlaghi-104/+104
Until now the software names and versions in `reproduce/software/config/installation/versions.mk' were placed such that all the versions were placed under each other. This had a visual effect, but since many of the software have shorter names, it could sometimes cause visual confusion on which number belongs to which software. Since we recently removed a similar situation with the backslashes, with this commit, there is only a single space between the variable name, `=' and the version number.
2019-05-05Upgraded to GCC 9.1Mohammad Akhlaghi-27/+28
GCC 9.1 was just released and includes many new optimization features that can benefit projects in this template also. Also, the build directory of GCC has been moved inside the unpacked directory (similar to all the other programs). As a result, while GCC is being built, the `.build/software/build-tmp' directory will only have one directory for GCC. Until now, there was one `gcc-build' directory and one unpacked tarball.
2019-05-02Updated to TeXLive 2019Mohammad Akhlaghi-6/+16
Since we just download the binary source of TeXLive, we need to keep it up to date with the server. So it has been incremented to 2019 (TeXLive 2019 was released April 29th). A note was also added in the Checklist to keep the users informed on how to update TeXLive if necessary.
2019-05-01Disabled X Window System in Cairo installationRaul Infante-Sainz-1/+2
Until this commit, we were installing `cairo' without disabling the X Windows System. That is the default option in the configure step of `cairo'. However, we are not installing the necessaries libraries (X11) and headers for that. As a consecuence, when testing in a system where we don't have these libraries/headers (Ubuntu 14.04), it crashes. With this commit, we disable the X Windows System option in `cairo' configure step by setting the option `--with-x=no'.
2019-05-01Corrected typo in netpbm tarball extensionRaul Infante-Sainz-1/+1
In the last imported work about fixing all backslashes, the extension of `netpbm' tarball was not the correct one. Now we are using `.tar.gz' instead of `.tgz'. With this commit, we fix this typo by replacing the `.tgz' by `.tar.gz' in the rule of `netpbm'.
2019-05-01Problem in generic CMake rule correctedMohammad Akhlaghi-5/+9
In the recent correction of backslashes, I had missed adding an `&&' before the `rm' command of the generic CMake building rule (`cbuild' of `build-rules.mk'). With this commit, this has been corrected. A multi-threaded Make was also added to build OpenMPI (which takes long and is often built alone because it takes so long and other things depend on it) and the HDF5 library.
2019-04-30TAB-typo corrected in rule to build SCAMPMohammad Akhlaghi-1/+1
The TAB character wasn't used in the second line of the recipe to build SCAMP. This has been corrected with this commit.
2019-04-30New rule to build Coreutils, it is now built alongMohammad Akhlaghi-85/+108
Recently, after the installation of Coreutils, we added a step to manually run PatchELF over all the contents of the `$(ibdir)'. However, after a fresh test, this method failed: because while PatchELF was updating `mv', another program that was using `mv' couldn't do so and crashed. To fix this problem, Coreutils is now installed in a dummy directory also and the exact files that need `rpath' are identified and PatchELF is run on them (to be clean). Also, higher-level `basic.mk' software (higher-level than Bash), were re-organized so they depend on Coreutils. With this, we are no sure that when Coreutils is being built, it is the only program that is being built and PatchELF won't interfere with any other program. Also, OpenSSL and CMake were set to be bulit in parallel to speed up their build.
2019-04-30Imported some recent/parallel work, conflicts fixedMohammad Akhlaghi-62/+114
Especially because of the new convention regarding backslashes, there were many conflicts that are now fixed. But none were substantial.
2019-04-30End-of-line Backslashs no longer right under each otherMohammad Akhlaghi-792/+795
When we need to quote the new-line character we end the line with a backslash (`\'). Until now, our convention has been to put all such backslashes under each other to help in visual inspection. But this causes a lot of confusion in version control: if only one line's length is larger, the whole block will be marked as changed and thus makes it hard to visually see the actual change. It also makes debuging the code (adding some temporary lines) hard. With this commit, I went through all the files and tried to fix all such cases so only a single white space character is between the last command character and the backslash. Where there was an empty line (ending with a backslash, to help in visually separating the code into blocks), I put the backslash right under the previous line's. This completes task #15259.
2019-04-30Better configure checks to see if GCC can be builtRaul Infante-Sainz-26/+64
Until now, to test if GCC can use `sys/cdefs.h', we were building a small test program using it. But after testing on an Ubuntu 14.04, we noticed that the GCC test during the configure script passes, but GCC still can't be built. After some investigation we noticed its available in other directories, but during the build of GCC, those directories aren't used, and it only assumes it to be under `/usr/include'. So with this commit, we are only checking this particular location for this header, not a test run of GCC. After fixing this, we noticed that GCC's build crashed again because it couldn't link with `libc.a' (or `libc.so'). So we also added a for this library and added a new warning to inform the user what they might be able to do. Finally, we noticed that in one of the last steps of building GCC, we weren't using `&&', but `;', so the GCC name file would be built, even when the GCC build failed.
2019-04-30Running PatchELF on all programs after CoreutilsMohammad Akhlaghi-13/+33
Even though the Coreutils configure script says that it adds `rpath' to its executables, its executables don't have it. As a result, it goes to use the host operating system libraries, causing failures when they don't match with the template. Unfortunately after some tests with the configure script, I couldn't find any way to include `rpath'! Even though `-rpath-link' is present in all linking commands during Coreutils' build, the installed files still don't have it! So I was forced to use PatchELF. However, one problem is that Coreutils installs many programs, not just one like Bash or AWK. As a brute-force solution, with this commit, we are running PatchELF on all the installed programs. It won't hurt those that already have it, but it will fix all those that don't. With this commit, I am also making the following non-related small changes: - In `build-rules.mk', the `&&' characters were placed at the start of the line for better readability. - Bash, Readline and NCURSES are now built in parallel on systems that support it (during `basic.mk').
2019-04-29Added M4 as prerequisite of GMPRaul Infante-Sainz-1/+2
Until this commit, `m4' was not a prerequisite of `gmp'. However, during a test in Ubuntu 14.04 using one single core in the configure step, it crashed complaining about not having `m4' installed. With this commit, we set `m4' as a prerequisite of `gmp'.
2019-04-29Corrected spaces/TAB in some rulesRaul Infante-Sainz-61/+61
In some rules there were some spaces when we should use TAB, and also the other way around. We were using TAB instead using spaces. With this commit, we fix that spaces/TAB in the necessary rules.
2019-04-29Added numpy and six as prerequisites of h5pyRaul Infante-Sainz-2/+4
Until now, we were missing `numpy' and `six' as prerequisites of `h5py'. Because we did the configure step with all cores, `numpy' and `six' allways were built before `h5py' with any crash. However, in a single thread configure run we noticed that we were missing these two dependencies. With this commit, we fix this issue by setting `numpy' and `six' as prerequisites of `h5py'.