aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorLines
2019-04-05Software acknowledgement section is automatically generatedMohammad Akhlaghi-504/+416
Until now, management of the software names and versions in the paper was done manually (a macro had to be defined in `initialize.mk', then used in `paper.tex', so they had to be manually set in two places). Managing this was not easy. To fix this, with this commit, each software building rule's target is a text file that contains its human-readable name and its version. In the end, the configure script sorts them by their name and writes them into a LaTeX input file that we can easily import as a file into the main paper.
2019-04-04Dependency version LaTeX macros written at the end of configureMohammad Akhlaghi-150/+241
Until now, these versions were written in each run. This was mainly inherited from the old days of the pipeline, where we didn't know the software on the host. But now that we have almost everything under control, we can just write these LaTeX macros at the end of the configure script and make `initialize.mk' simpler and also (very slightly!) speed-up/simplify the processing.
2019-04-04Copyright notice on some of the new filesMohammad Akhlaghi-5/+68
The new files that were just added didn't have a copyright. One has been added for them with this commit.
2019-04-04Better option checks and values in the configure scriptMohammad Akhlaghi-27/+29
Double quotes were placed around the checked values so they can have space within them. Also, some checks were added for options that don't accept a value.
2019-04-04Corrected typo in GCC build recipeMohammad Akhlaghi-3/+2
For the tests, we had just set an absurd value for a test in the GCC build recipe to always fail, but we had forgot to fix it. It is now corrected. Also the order of making `g++' and `gfortran' was reversed for easier readablility (it doesn't matter which one is done first, it only matters that `gcc' be done last).
2019-04-04Configure script also accepts short options with no delimiterMohammad Akhlaghi-13/+28
Until now, the short options to the configure script needed a delimiter (either white-space or an `=') between the name and value. With this commit, for short options, it also accepts the value immediately touching the option name. Also, when trying to fine the absolute address of a given path, a check was added to abort if it doesn't exist.
2019-04-04--existing-conf doesn't take any values in configure scriptMohammad Akhlaghi-7/+7
Until now we were (wrongly) assuming that the configure script's `--existsing-conf' option takes a value, while this is not the case.
2019-04-04Numpy and Scipy build on Mac imported into the main branchMohammad Akhlaghi-217/+508
We were developing the build of Numpy and Scipy on Mac in a parallel thread and things seems to be working relatively nice now. There were only two problems: 1) GCC still has some random building issues on Mac. 2) ATLAS shared libraries can't be built on Mac (so we used OpenBLAS to build Numpy and Scipy on both Mac and GNU/Linux). But for now, none of these problems are critical. So, we can progress in one branch. There were only very minor conflicts in the merge.
2019-04-04Using host GCC on Mac, defining compilers in HDF5 libraryRaul Infante-Sainz-9/+12
We wer not able to build `gcc' on Mac, so we are using links to the host compilers. In this commit we also found that on Mac the HDF5 library needs an explicit definition of the compilers.
2019-04-04Better option-reading in configure, using .build to access BDIRMohammad Akhlaghi-279/+157
Until now, the steps to manage the command-line options of the configure script were limited (couldn't accept an equal sign or space between the option name and value). With this commit, it can now also accept optional equal signs between the option name and value. Thus not causing many confusions. Also, it is more logically consistent for the link to the build-directory to be placed in the top directory (as a hidden file like `.local' until now), and not as a visible directory like `reproduce/build' (which we used until now). Therefore, with this commit, the link to easily access the build-directory is `.build' in the top source directory. Finally, because `minmapsize' is too specific to Gnuastro and has now been given its default value at the start of the configure script, the description for `minmapsize' has been removed (to not confuse users who don't use Gnuastro). If anyone is familiar enough with Gnuastro to change it, they already know it from its book.
2019-04-03OpenMPI, HDF5 libraries added for h5pyMohammad Akhlaghi-3/+46
After trying the build a system with no Python library, I noticed that Python's HDF5 module (`h5py') needs the HDF5 library and OpenMPI (to work in parallel). So they were added. Finally `h5py' uses the `mpi4py' module to communicate with OpenMPI, so it was also added. However, for some reason, mpi4py doesn't work with this version of OpenMPI (as described in the comments above). So for now, h5py doesn't use it and can only work on a single thread, while the HDF5 C library links with OpenMPI with no problem.
2019-04-02Python packages are installed as high level program dependenciesRaul Infante-Sainz-87/+30
Until this commit, the installation of all Python packages were done in a separate Makefile. With this commit, the pipeline install Python packages as part of the hight level software. All Python packages rules them remain in a separate Makefile, but this Makefile is included in the high level dependency `reproduce/src/make/dependencies.mk'.
2019-04-02Numpy and Scipy using OpenBLAS instead of ATLASRaul Infante-Sainz-24/+54
We could not get ATLAS shared libraries on Mac (while the static ATLAS libraries are built and can be used successfully on Mac). So, the pipeline now builds OpenBLAS, which both Numpy and Scipy can use on Mac and GNU/Linux. We also added FFTW as a dependency of Numpy. Altough Numpy is not linking to FFTW for some reason. However, since FFTW is a low level library used by many programs, we have kept it as a dependency of Numpy anyway for now.
2019-04-02.gitignore with copyright using better search for copyright noticeMohammad Akhlaghi-0/+16
In the previous commit, a copyright notice was added after a systematic search of the version controlled files. However, we missed `.gitignore' (because we were discarding those with the `*.git*' pattern to avoid files in the `.git' directory). This has been fixed by using this command (in the top project directory) instead: for f in $(find ./ -type f); do \ if [[ $f != ./.git/* ]]; then \ n=$(grep -i copyright $f | wc -l); \ echo "$n $f"; \ fi; \ done | awk '$1==0'
2019-04-02Copyright notice added to remaining filesMohammad Akhlaghi-11/+37
After doing a systematic search for files without a copyright notice, a few more were found that didn't have a notice. So a notice was added for them. I used this Bash command to find the files: for f in $(find ./ -type f); do \ if [[ $f != *.git* ]]; then \ n=$(grep -i copyright $f | wc -l); \ echo "$n $f"; \ fi; \ done | awk '$1==0'
2019-04-01Added short copyright notice on configuration filesMohammad Akhlaghi-9/+44
A short, all-permisive copyright notice was added to the configuration files that were missing one.
2019-03-29Added copyright information in dependency-versions.mkMohammad Akhlaghi-1/+20
To help make it easier to re-use (like the rest of the "large" files).
2019-03-29Added Copyright to all TeX and README filesMohammad Akhlaghi-8/+202
In order to be more clear, a copyright statement was added to all the LaTeX and README files.
2019-03-29Disabling ATLAS shared libraries on Mac OSRaul Infante-Sainz-42/+26
The Makefile that build the shared libraries comes from Arch Linux so it does not work easily on Mac. But the full ATLAS build goes successfully for static libraries. For now we are disabling shared libraries on Mac. Python was built explicity with `clang' on Mac.
2019-03-28Configure script now has optionsMohammad Akhlaghi-40/+254
With the options, it is now possible to run the configure script more easily after the initial run. The `--help' option provides a nice and complete introduction along with a listing of the input options and the `-j' option can be use to manually set the number of threads.
2019-03-28flock is now built in configure, to allow serial downloadsMohammad Akhlaghi-42/+104
Until now, we were using `flock' (file-lock) for downloading the input datasets in series. But we couldn't do this when downloading the software tarballs because `flock' wasn't yet available. Generally, unlike processing, downloading is much better done in series than in parallel. To enable serial downloads of the software also, with this commit we are installing `flock' in the configure script (not in a Makefile). As a result, besides `flock', we can also benefit from the other good features of the `reproduce/src/bash/download-multi-try' script *(for example attempting download again after some time). Some GNU mirrors may have problems at the time of download, so with this commit, we are using the main GNU FTP server for GNU programs.
2019-03-27GCC is now built on a Mac, not yet ATLASRaul Infante-Sainz-19/+42
Until now, we were simply using the host's GCC for Mac systems. But we found that except for a single step (to fixing `rpath'), it works on Mac!!! So, GCC is now part of the Mac build as well. However, we are still having some problems in building ATLAS on Mac. It works on GNU/Linux, but not in Mac. So for the time being (just temporarily), we are avoiding ATLAS (and thus Scipy) on Mac systems. We just filed an issue on the ATLAS discussion list to hopefully fix the problem soon.
2019-03-25Corrected makelink command to avoid paste commandRaul Infante-Sainz-2/+2
We just noticed that recently the `paste' command on macOS doesn't work with a pipe. So we are now simply using the `tr' command in reverse to re-create the PATH (to find where to link to).
2019-03-22On Mac systems, using a copy of GCC, not a linkRaul Infante-Sainz-9/+5
Until now we were using a symbolic link to replace GCC, but Make doesn't treat symbolic links like files. So it would rebuild the links every time. With this commit, only for GCC on Mac systems, we are actually copying the host's GCC executable to avoid this problem. Also, a wrong comment for cURL was removed.
2019-03-22Acknowledged new software in paperRaul Infante-Sainz-12/+14
In the previous commit I already have included the latex macros. In this commit we use them in the paper source.
2019-03-22Imported recent work in the main pipeline, conflicts fixedRaul Infante-Sainz-10/+19
Conflicts in `gcc' build comments and in mentioning software used in paper fixed.
2019-03-22Modifying ATLAS scripts for building on MacRaul Infante-Sainz-9/+23
We generalized the libraries suffixes to work on Mac and GNU/Linux.
2019-03-22H5py added and setuptools as main Python module dependencyRaul Infante-Sainz-48/+71
In this commit we add `h5py' Python package. We also include `setuptools' as a main dependency of Python because with the previous commit it (as well as `pip') is no longer installed with Python. Numpy version also has been incremented.
2019-03-21ATLAS and Scipy working on GNU/LinuxRaul Infante-Sainz-50/+124
Numpy needs ATLAS as shared libraries. So we also need to build Python with shared libraries. We also need to define site.cfg for numpy and scipy so we define a master template: `reproduce/config/pipeline/dependency-numpy-scipy.cfg' Also `Openssl' did not have rpath so we added with this commit.
2019-03-20Including ATLAS in the pipeline, not yet completeRaul Infante-Sainz-24/+179
An initial installation of atlas is now included in the pipeline, but we are still trying to make it compile and build smoothly. In the process, we found that GCC also needs some modifications (for example rpath issues).
2019-03-19Minor corrections: typo and adding file to .gitignoreMohammad Akhlaghi-16/+16
The LaTeX macro for libgit2 was not properly used in `paper.tex'. On Mac systems, after browsing the directory, a `.DS_Store' file was created. So to keep things clean on those systems, it is added to the files to be ignored by Git.
2019-03-18Reseting path in script to make symbolic links to system programsMohammad Akhlaghi-8/+10
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.
2019-03-18No Bzip2 shared libraries on macOS systemsMohammad Akhlaghi-3/+9
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.
2019-03-11Not checking software versions in initialize.mkMohammad Akhlaghi-83/+84
Until now, we were actually running all the programs to check their versions during initialization. But now that the number of programs has increased, this can be slow. With this commit, we simply report the version as a constant string. Maybe later, we can follow the strategy of the TeX Live packages and write them all at configure time.
2019-03-11for-group gives write permission to all built software in the endMohammad Akhlaghi-0/+16
Since the `install' script also sets permissions manually, the permissions that we define in `for-group' don't usually affect the installed files. Therefore the installed files of one user can't be modified/deleted by another. With this commit, after for-group finishes configuration, it also adds the write flag for all group members in the whole installation directory.
2019-03-08For-group script can allow to arguments to Make callMohammad Akhlaghi-1/+1
Until now the `./for-group' script would only add one argument to the Make call, but in some situations, you need a second argument is well. With this option, any possible fourth argument to `./for-group' is passed to Make.
2019-03-08Using system's GCC on MacMohammad Akhlaghi-49/+63
We still have a few problems with building GCC on a MacOS system. To allow using the pipeline on this operating system, until we find the solution, GCC is only built on non-Mac systems. On Mac, we'll just make a symbolic link to the host's executables.
2019-03-07Several new Python packages added for full buildMohammad Akhlaghi-12/+77
To ensure that we have all the necessary Python dependencies, I done an offline build and noticed that several packages were also necessary for the `./configure' step to finish (`libffi', `asn1crypto', `cffi', `jeepney', `pycparser' and `secretstorage'). With this commit they are added.
2019-03-06Reseting Python environment variables also when building PythonMohammad Akhlaghi-5/+31
Until now, we were only resetting the Python environment variables in the actual processing Makefiles, not in the Makefile that build Python and its modules. They are now added there also.
2019-03-06Imported work on many basic Python modulesMohammad Akhlaghi-112/+542
With the help of Raul, we were able to build many higher-level Python packages to enable the installation of packages like Matplotlib and Astroquery. With this commit, that work is being merged into the master branch.
2019-03-06Astroquery, astropy, matplotlib and numpy are now in the pipelineRaul Infante-Sainz-15/+48
Until this commit, we had some of the python packages intalled but they did not work properly because of the `PYTHONPATH' variables. That is, the pipeline's `python' was the `python' of the system instead of the pipeline's `python'. With this commit this issue has been fixed by setting the correct `PYTHONPATH'. In this commit we also modify the installation of `bzip2' because `CMake' was complaining about some libraries built statically.
2019-03-01Elaboration in README-hacking.mk's future improvements sectionMohammad Akhlaghi-30/+43
This section was a little outdated and since then, a more clear/exact image of using the Nix experience for the reproducible paper template has been added.
2019-02-28Typo correction in libpng installationRaul Infante-Sainz-1/+1
In the libpng installation there was `ilibdir' instead of `ilidir'.
2019-02-28GNU GCC is now in the pipelineRaul Infante-Sainz-55/+65
Until now, the pipeline was not installing its own `gcc' but using the system one by making a symbolic link. With this commit, GNU GCC has been added into the pipeline. Right now the installation does not work on Mac OS system beause of some conflicts with `clang', but in principle it should work on GNU Linux distributions.
2019-02-28Python installation and related packages have been splitRaul Infante-Sainz-6/+42
Until now the installation of Python and its packages (numpy, astropy, astroquery, etc.) were done in the same `makefile'. With this commit the installation of Python and its packages have been split and now it is independent of the other programs. The installation of all Python packages needs to be written explicitely because pip is not used anymore.
2019-02-28Git hooks for metastore check for the existance of metastoreRaul Infante-Sainz-5/+15
Until now, once the Git hooks have been installed (after the installation of Metastore), if metastore doesn't exist (for example by manually deleting the build directory for a re-build with same configurations as before) we can't run `git commit' and `git checkout' will print an ugly warning. With this commit, the two Git hooks check for the existance of Metastore and if it doesn't exist, they won't do anything.
2019-02-23GCC build rule doesn't depend on BinutilsMohammad Akhlaghi-17/+16
In an attempt to test the GCC build rule (without Binutils, because its too architecture dependent), all the necessary dependencies were moved to GCC (from `ld'). Also `fortran' was also added to the languages supported by GCC. This rule built GCC 8.2.0 nicely on my GNU/Linux system. But `gcc' is still not a final target to built, so the rule is being ignored for now.
2019-02-21Matplotlib is now in the pipelineRaul Infante-Sainz-5/+69
As matplotlib is a general package for plotting and it is widely used in science, we have added it to the pipeline. When installing a dependency of matplotlib `python-dateutil', we found a conflict in the download of the tarball. This is because the name has a dash (-) in the middle. In addition, the name starts with 'python', so it is the same as the python itself. Now it is possible to install any package with any name, just adding an elif in before the URL direction.
2019-02-20Installed astroquery in the pipelineRaul Infante-Sainz-50/+332
All dependencies for building astroquery package have been done. Until nowthe Python dependencies were built in the same Makefile as the high level libraries and programs. But, because astroquery has many dependencies we split the Python and Python packages installation in a new Makefile. The installation of differents packages are done using Python and not pip, because we found some problems when doing it with pip. Apparently there are some interferences between the packages installed by the pip of the system and the pip installed as part of Python in the pipeline.
2019-02-20Pipeline's Bash and AWK deleted when re-building ncursesMohammad Akhlaghi-0/+7
As in all programs, the build process of ncurses depends on the running shell (Bash) and AWK. At the start of the building of ncurses, we remove its library. But Bash and AWK depend on ncurses to run (this creates a circular dependency). Therefore its necessary to remove the Bash and AWK executables when re-building ncurses. This bug was found by Raul Infante Sainz.