aboutsummaryrefslogtreecommitdiff
path: root/reproduce/src/make
AgeCommit message (Collapse)AuthorLines
2019-04-15New architecture to separate software-building and analysis stepsMohammad Akhlaghi-3178/+0
Until now, the software building and analysis steps of the pipeline were intertwined. However, these steps (of how to build a software, and how to use it) are logically completely independent. Therefore with this commit, the pipeline now has a new architecture (particularly in the `reproduce' directory) to emphasize this distinction: The `reproduce' directory now has the two `software' and `analysis' subdirectories and the respective parts of the previous architecture have been broken up between these two based on their function. There is also no more `src' directory. The `config' directory for software and analysis is now mixed with the language-specific directories. Also, some of the software versions were also updated after some checks with their webpages. This new architecture will allow much more focused work on each part of the pipeline (to install the software and to run them for an analysis).
2019-04-14Replaced all occurances of pipeline in textMohammad Akhlaghi-84/+73
All occurances of "pipeline" have been chanaged to "project" or "template" withint the text (comments, READMEs, and comments) of the template. The main template branch is now also named `template'. This was all because `pipeline' is too generic and couldn't be distinguished from the base, and customized project.
2019-04-14Added citation for FFTWMohammad Akhlaghi-1/+2
Until now we weren't including the citation for FFTW (one of the template's optional packages). With this commit, it is added.
2019-04-13Corrected copyright notices and info about adding copyright infoMohammad Akhlaghi-54/+12
Until now, the files where the people were meant to change didn't have a proper copyright notice (for example `Copyright (C) YOUR NAME.'). This was wrong because the license does not convey copyright ownership. So the name of the file's original author must always be included and when people modify it (and add their own copyright-able modifications). With this commit, the file's original author (and email) are added to the copyright notice and when more than one person modified a file, both names have their individual copyright notice. Based on this, the description for adding a copyright notice in `README-hacking.md' has also been modified.
2019-04-12Minor typo corrections in previous commitsMohammad Akhlaghi-3/+4
Until now, even though `file' was a dependency of `gcc', it was still listed as a `top-level-programs'. Also, we weren't including the new `tex/dependencies' in the distribution tarball (with `make dist'). With this commit, both issues are solved and also, as a cosmetic change, the GCC prerequisites of the same line-length were ordered alphabetically.
2019-04-12Dependency BibTeX entries included only when necessaryMohammad Akhlaghi-9/+15
Until now, there was a single `tex/src/references.tex' file that housed the BibTex entries for everything (software and non-software). Since we have started to include the BibTeX entry for more software, it will be hard to manage the large (sometime unused) BibTeX entries of the software in the middle of the non-software related citations in the text of the paper. Therefore, with this commit, a `tex/dependencies' directory has been made which has a separate BibTeX entry file for each software that needs one. After the software is built, this file is copied to the new `.local/version-info/cite' directory. At the end, the configure script will concatenate all the files in this directory into one file which will later be used with `tex/src/references.tex' by BibLaTeX. This greatly simplifies managing of citations. Allowing us to focus on the software-building and paper-writing citations separately/cleanly (and thus be more efficient in both).
2019-04-12Imported recent corrections, no conflictsMohammad Akhlaghi-15/+27
Some recent corrections that were done by Raul are now merged into the pipeline. There weren't any conflicts.
2019-04-12File is built as a dependency of GCCRaul Infante-Sainz-2/+11
Until now, we did not have `file'. It was in other project, where a problem with `Astrometry-net' software, ends up with the necessity of having `file' into the pipeline. With this commit, we add `file' to the project. Since it is a low level program, it is set in `dependencies-basic.mk' as a prerequisite of GCC.
2019-04-12Fixed some Scipy-related packages citationsRaul Infante-Sainz-1/+1
Until now, the Scipy citation was only one paper and not the correct one (it was the online manual). With this commit, Scipy is properly cited using the two papers. Also some modifications in the `tex/src/references.tex' have been done (remove last page number).
2019-04-12Acknowledged Scipy-related packages: Cython, Matplotlib, Numpy and ScipyRaul Infante-Sainz-11/+12
Until now, name and version of all Python packages were indicated in the final paper, but not the main paper of them (if it exists). With this commit, some Python packages (Cython, Matplotlib, Numpy and Scipy) are now properly acknoledged by citating the source paper. `mpi4py' is also cited although this package is not yet included into the pipeline.
2019-04-12Gnuastro's citation included in its build targetMohammad Akhlaghi-1/+1
With this commit, we are applying the new style of citing software within the build rule of Gnuastro.
2019-04-12Configure script dealing properly with empty software directoriesMohammad Akhlaghi-1/+1
Until now, we hadn't actually tested the case where a whole software directory (Python modules in particular) is empty. So the configure script finished with some errors in this case. With this commit, this step of the configure script was modified to deal with such cases cleanly. Also, in `initialize.mk', I added a `-f' to the symbolic link command, so it doesn't complain if the file link already exists.
2019-04-11Unzip set as prerequisite of Numpy and SetuptoolsRaul Infante-Sainz-2/+4
Since we mixed the installation of Python packages with all other software, it may occur that some Python packages start to be installed before having installed `unzip'. As a consecuence, they could not be decompressed and the installation will fail. In particular, tarballs of Numpy and Setuptools are .zip files. With this commit, we fix this issue by setting `unzip' as a prerequisit of Numpy and Setuptools.
2019-04-10Imported PatchELF correction, gmp and mpfr also dependencies of AWKMohammad Akhlaghi-63/+53
There weren't any conflicts in this merge. However, while, trying to break a long line into multiple (for better readability), I noticed that the AWK version was mistakenly written as `awk-version' in a few cases, so this was corrected to `gawk-version'. While inspecting the libraries that AWK links to, I noticed that it also links to GNU GMP and GNU MPFR. But since they are built after AWK usually, it was using my host system! So with this commit, AWK has these two libraries as prerequisites. As a result, these two libraries were brought up to the basic program section, and not just GCC prerequisites.
2019-04-10Using bin executable in patchelf for awk and bashRaul Infante-Sainz-11/+12
Until this commit, we were using the target (version number of the program) in the `patchelf' for `awk' and `bash'. This makes an incorrect linking in libraries because the target is not the bin program but just a plain text containing the version number of the program. With this commit we fix this issue by setting in the patchelf of `awk' and `bash' the bin executable, and not the target (version number).
2019-04-08Using Clang on Mac OS systems for pkg-configMohammad Akhlaghi-2/+10
Yahya Sefidbakht reported the following error when building Pkg-config on his Mac OS system (using GCC, not Clang). It is apparently because his version of GCC doesn't support some speical feature on Mac that is necessary to build Glib as part of Pkg-config. With this commit, on Mac systems, for pkg-config we are explicity asking to build with Clang (through the `CC' flag).
2019-04-07GNU M4 now built as a dependency of GNU LibtoolMohammad Akhlaghi-64/+75
On some systems, M4 isn't available, so the linking to the host system fails, as a result, we can't build GNU Libtool. The main reason we weren't building M4 was a bug with the most recent GNU C library (http://lists.gnu.org/archive/html/bug-gnulib/2019-04/msg00004.html). But I found a patch used by Arch Linux which fixes the issue and allows M4 to be built. As a result, the pipeline is now building M4 also and the patched M4 tarball is now uploaded to my own webpage as backup. While doing the steps above, I also noticed that we weren't using a tab at the start of the link definitions of `dependencies-basic.mk'. Although its not necessary, to be consistent, its good for the lines to always start with a tab.
2019-04-07Corrections in configure script and astroquery, astropy rulesMohammad Akhlaghi-6/+9
The step where we check the possibility of using `sys/cdefs.h' was still using `$$' for shell variables (in Make), not `$' (for the shell). This was corrected. Also, since Astropy needs two citations, the `,' in the citation command would conflict with Make's parsing. So we just used an `echo' command to re-write the version info. In Astroquery, the prerequisite list was just reordered by length to be more clear to the eye.
2019-04-07Using gnuastro name for Gnuastro's target, not astnoisechiselMohammad Akhlaghi-9/+9
Until recently we were using an actual installed executable file for the programs. So for Gnuastro, the target was called `astnoisechisel'. But recently, this approach was changed and the target for each software is a simple text file with the official software name and version. So with this commit, we are simply using `gnuastro' for Gnuastro, not `astnoisechisel'.
2019-04-07--host-cc configure option to avoid building GCC, M4 mandatoryMohammad Akhlaghi-36/+16
In some cases (specially when debugging the pipeline), its very time-consuming to install GCC. With this commit, a `--host-cc' option has been added to avoid building the C compiler when necessary. The test to see if `sys/cdefs.h' is available on the system (necessary to build GCC) has also been moved to the configure script to print a more visible warning and also use the new `host_cc' variable to let `dependencies-basic.mk' know that GCC shouldn't be built. Finally, we are having problems installing M4 from source, so it has been set as a mandatory dependency.
2019-04-05GCC not building on GNU/Linux system with incomplete complierMohammad Akhlaghi-12/+38
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).
2019-04-05Imported work on adding Cython and Python's pkgconfig moduleMohammad Akhlaghi-3/+17
This work is now merged, I just added the new argument to the `pybuild' function.
2019-04-05Software acknowledgement section is automatically generatedMohammad Akhlaghi-269/+346
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-05Python cython and pkgconfig packages added for h5pyRaul Infante-Sainz-3/+15
After trying to set the pipeline from scratch with no internet conection (but all tarballs already downladed), `h5py' Python package complained about not having access to download `pkgconfig'. After solving this dependency, it also complained about not having `cython'. With this commit, we add `pkgconfig' (Python) and `cython' to the pipeline in order to be able to install `h5py' properly.
2019-04-04Dependency version LaTeX macros written at the end of configureMohammad Akhlaghi-96/+4
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-0/+58
The new files that were just added didn't have a copyright. One has been added for them with this commit.
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-04Numpy and Scipy build on Mac imported into the main branchMohammad Akhlaghi-161/+409
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-03OpenMPI, HDF5 libraries added for h5pyMohammad Akhlaghi-2/+43
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-70/+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-10/+46
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-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-28flock is now built in configure, to allow serial downloadsMohammad Akhlaghi-35/+33
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-22Imported recent work in the main pipeline, conflicts fixedRaul Infante-Sainz-9/+17
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-33/+45
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-49/+76
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-15/+167
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-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-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/+70
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-100/+478
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-10/+44
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.