aboutsummaryrefslogtreecommitdiff
path: root/reproduce/config/pipeline/LOCAL.mk.in
AgeCommit message (Collapse)AuthorLines
2019-02-01Group name is now part of the local configurationMohammad Akhlaghi-24/+1
Until now, the group name to build the project actually went into the Git source of the project! This doesn't allow exact reproducibility on different machines (where the group name may be different). With this commit, the `for-group' script has been modified to accept the group name as its first argument and pass that onto `configure' and Make. This is much better now, because not only the existance of a group installation is checked, but also the name of the group. It also made things simpler (in particular in `LOCAL.mk.in').
2019-01-18Sanity check to run the Make with proper group permissionsMohammad Akhlaghi-0/+24
If the `./for-group' script is not used properly, it can lead to the whole pipeline being re-run. Therefore it is important to do a sanity check immediately at the start of Make's processing and inform the user if there is a problem. With this commit, `./for-group' exports the `reproducible_paper_for_group' variable which is used by both the initial `./configure' script, and later in each call to Make. The `./configure' script will use it to write a value in `reproduce/config/pipeline/LOCAL.mk' and Make will use it to compare with the value in `reproduce/config/pipeline/LOCAL.mk'. If there is an inconsistency, Make will not even attempt to build anything and will just print a message and abort.
2018-11-25Pipeline now downloads and uses an input datasetMohammad Akhlaghi-0/+4
In most analysis situations (except for simulations), an input dataset is necessary, but that part of the pipeline was just left out and a general `SURVEY' variable was set and never used. So with this commit, we actually use a sample FITS file from the FITS standard webpage, show it (as well as its histogram) and do some basic calculations on it. This preparation of the input datasets is done in a generic way to enable easy addition of more datasets if necessary.
2018-11-14./configure and building of Bash and Make with more basic toolsMohammad Akhlaghi-89/+4
After a test by Raúl Infante Sainz, we found out that the configure script and the Make script for Bash and Make are making too many assumptions on more recent versions of both. As a result, it couldn't be built. Therefore, the `configure' script was modified to not use more recent tools like `readlink' (to find the absolute address of a relative one). It was also re-organized to not have to read the configuration parameters from a text file. The parameters are directly read from the command-line and are written into the proper file afterwards. This removes the need to opening a text editor by the user (which also caused problems on Raúl's system). To fix the Make version issue, the building of Bash and Make are now done in a new Makefile (`reproduce/src/make/dependencies-basic.mk'). This file doesn't make many of the assumptions that were made in `dependencies.mk'. So it should hopefully work on any version of Make. To help in debugging, for now, the Makefile of configure, are asked to work on one thread (the `-j' option is commented in the `configure'). But after checks, we'll fix this.
2018-11-12Libcurl, Git, CMake, TIFF, Zlib also built at configure timeMohammad Akhlaghi-19/+20
During the configuration step several new programs that were necessary for a more complete controlled environment are now also downloaded and built statically.
2018-11-12Dependencies built at the start of the pipelineMohammad Akhlaghi-14/+18
To enable easy/proper reproduction of results, all the high-level dependencies are now built within the pipeline and installed in a fixed directory that is added to the PATH of the Makefile. This includes GNU Bash and GNU Make, which are then used to run the pipeline. The `./configure' script will first build Bash and Make within itself, then it will build All the dependencies are also built to be static. So after they are built, changing of the system's low-level libraries (like C library) won't change the tarballs. Currently the C library and C compiler aren't built within the pipeline, but we'll hopefully add them to the build process also. With this change, we now have full control of the shell and Make that will be used in the pipeline, so we can safely remove some of the generalities we had before.
2018-02-20Necessary programs checked at configure timeMohammad Akhlaghi-0/+14
The mandatory and optional (for example downloader) dependencies are now checked at configure time so users can know what they may be missing before the processing starts. Since its recommended to be run in parallel, it can be hard to find what you are missing after running the pipeline. As part of these checks, the program to use for downloading is now also set at configure time, it is only used as a pre-defined (in `LOCAL.mk') variable during Make's processing. A small title was also added to discus the pipeline architecture that will be filled in the next commit.
2018-02-15Gnuastro's memory mapping is now a local variableMohammad Akhlaghi-0/+20
As described in the commens above `MINMAPSIZE' of `LOCAL.mk.in', the amount of memory to map to HDD/SSD or keep in RAM is a local issue and not relevant to the pipeline's results. So it is now defined in a `gnuastro-local.conf' file. To keep the Makefiles clean, this file is created by the `./configure' script. To do this cleanly, the `./configure' script was also almost fully re-written with better functionality now.
2018-02-15Choice to build final PDF removed from LOCAL settingsMohammad Akhlaghi-19/+0
The previous change where we had set the building of the PDF as a local (and thus not version controlled) setting was not good, because different commits might be made without the high-level preparations for the final PDF (especially during the initial/testing phases of a research). Therefore, if the runner of the pipeline is ignorant to this, they may hit some errors in LaTeX which can be frustrating. To have a clean reproduction, it is thus necessary to have the choice of pdf-building under version control along with the rest of the pipeline.
2018-02-14Sanity checks added, local settings now in LOCAL.mk.inMohammad Akhlaghi-0/+69
The choice of whether or not to make a PDF is now also a local system issue, not a general pipeline issue. So it has been put in the new `LOCAL.mk.in' file which replaces the old `DIRECTORIES.mk.in'. All local settings (things that when changed should not be version-controlled) should be defined in this file. A sanity check was added to find if `./configure' has been run before `make' or not (using the `LOCAL.mk' file which is an output of the configuration step). If `LOCAL.mk' doesn't exist, an error will be printed informing the user that `./configure' needs to be run first. The configure script also provides more clear and hopefully better information on its purpose and what must be done. Since `make clean', it is executed even when `./configure' hasn't been run, it will only delete the build directory and its contents when local configuration has been done. A `distclean' target was also added which will first "clean" the pipeline, then delete the `LOCAL.mk.in' file. To allow rules like `make' to be run even if `BDIR' isn't defined (`./configure' hasn't been run yet), a fake `BDIR' is defined in such cases.