aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorLines
2018-12-04Low-level links nolonger a prerequisite of programsMohammad Akhlaghi-11/+8
Until now the low-level links that we put in our internal installation from the operating system were a prerequisite of essentially all the basic dependencies. So a change in them would mean a full re-build of all the basic dependencies. But in building the basic dependencies, we already have the operating system's PATH and other environment variables. So unlike the higher-level dependencies, they don't need these links at all! With this commit, the `low-level-links' file is placed in `installed/bin' and is a top-level target of the basic dependencies build. In this way, if it is necessary to update/change to use something from the host operating system, we can simply delete it and run `./configure' again wihout having to re-build all the basic dependencies.
2018-12-04Link to `sw_vers' for Mac OS systems also createdMohammad Akhlaghi-0/+3
On Mac OS systems, the `sw_vers' executable prints information about the operating system. It is used by TeX Live to determine the necessary builds to download and install. We are thus importing it as a low-level tool in `dependency-basics.mk'.
2018-12-04Configure script for GNU Build system now an input argumentMohammad Akhlaghi-8/+10
Until now, we were checking the existance of the `configure' file and if it wasn't present, we would check for `config' (for OpenSSL which also has a lower-level "Configure" script that is called by the `config' script). But after two tests on Mac machines by Raul Infante Sainz and Cristina Martínez Lombilla, we found out that Mac Os's file names aren't case sensitive and thus the build wouldn't use `config', but `Configure'. Now, the exact configuration script can be specified as the 7th argument to the `gbuild' script. If it isn't given, the standard `configure' name will be used, but when it is, the given name will be used.
2018-12-03Checking Mac OS host for configuring OpenSSLMohammad Akhlaghi-3/+32
OpenSSL can't automatically detect the architecture of Mac OS systems, so as it suggests on its Wiki, it needs some help for doing that. With this commit, we are checking the build on Mac OS with the presence of `otool' (Mac OS's linker). If it's there, we'll add the OpenSSL configuration options suggested by OpenSSL's Wiki.
2018-12-03Added rpath in basic dependencies, remove input if download failsMohammad Akhlaghi-4/+9
Until now, we weren't including the `rpath' linking options to the basic dependencies. They are now added. Also, when the download of an input file fails for any reason, an empty file won't be replaced there any more.
2018-12-03Gnuastro's dependencies fully sorted by build timeMohammad Akhlaghi-4/+9
In the previous commit, I forgot to actually add some changes to the staging area before committing an pushing. So some of the changes discussed in the previous commit and now commited.
2018-12-03Gnuastro's dependencies sorted by length of buildMohammad Akhlaghi-1/+1
Make builds the dependencies of each package based on the order in the prerequisites list. So when building in parallel, it can greatly help the over-all build speed if larger packages are built first. Therefore the three larger Gnuastro dependencies are now placed at earlier places of the prerequisites.
2018-12-03Minor typo correction in building CoreutilsMohammad Akhlaghi-1/+1
We were missing a `\' at the end of the `$(call' function of Coreutils to connect the two lines. It has been fixed now.
2018-12-03Trusted CA certificates also downloaded for Wget usageMohammad Akhlaghi-11/+22
To enable easy downloading of HTTPS links with Wget (this pipeline's defaut downloader), we need a set of trusted CA certificates. Until the time that we can generate one ourselves, one generic set of trusted CA certificates is now downloaded like a tarball and placed in the OpenSSL configuration directory. With these CA certificates, within the pipeline we can now safely use the pipeline's own installed Wget.
2018-12-03Preference for shared library linkingMohammad Akhlaghi-87/+132
Some high-level programs like Wget and cURL need to be built in shared mode because they also include dynamic loading of libraries. Therefore, if we only build the lower-level libraries in static mode, our own build will be ignored and they will go and find the system's shared libraries to link with. Because of this, for now, we have manually set the `static_build' variable in the configure script to `no'. Also, if the downloader fails, we'll delete the output (an empty file in the case of Wget) because it interefers with a target definition.
2018-12-02Configure building on one thread for debuggingMohammad Akhlaghi-2/+2
To help in debugging, we are only running the Makefiles within the configure script on one thread.
2018-12-02Wget and OpenSSL now installed as a basic dependencyMohammad Akhlaghi-104/+188
The TeX Live installer needs Wget to operate smoothly, especially on recent Mac OS systems that don't have Wget pre-installed. Also, it would be good for the pipeline to have its own downloader. So with this commit, the pipeline also installs Wget and OpenSSL which is a dependency. Many other small changes/fixes were done in this process.
2018-12-01Improved TeXLive installation checksMohammad Akhlaghi-33/+54
Thanks to the check by Cristina Martínez, some corrections were made when we attempt to download and install TeXLive. Further checks and corrections will be in due time.
2018-11-30Downloading TeX Live tarball in general download ruleMohammad Akhlaghi-29/+26
Until now, we were downloading TeX Live's tarball within the same rule that unpacked it. But this causes problems for situations were it cannot be downloaded within the pipeline (and manually placed in the tarball directory). So now, the TeX Live downloader is treated like all the other downloaders.
2018-11-30cURL now also available as downloader with -L flagMohammad Akhlaghi-5/+18
The main reason I wasn't using cURL as a downloading tool was that I wasn't familar with how to ask it to follow a re-direct. But I just found out that its with the `-L' configure time option. So it is now added as a downloader tool to the pipeline.
2018-11-30Setting libgit2 to build statically in any caseMohammad Akhlaghi-4/+13
On the Libgit2 webpage, it has recommended to build it statically on Mac systems. By default we are doing this on Linux systems, but the `-static' flag failed on Mac. But apparently CMake might be able to deal with the issue in a different way.
2018-11-29File is made before calling flock (file locking)Mohammad Akhlaghi-0/+1
While testing on another computer, I noticed that to operate properly, the file given to `flock' must be created before it is called. This is a low-level difference (how the system treats files), so it wasn't apparent on my system. To fix it, we have added a `touch' command before it.
2018-11-29Remove extra lockdir target in download.mkMohammad Akhlaghi-1/+1
There was an extra `$(lockdir)' target in `download.mk'. This has been corrected.
2018-11-29Optional rpath link option, CMake search path set, static WCSLIBMohammad Akhlaghi-9/+34
Thanks to a test build on Raul Infante Sainz's Mac OS computer, we were able to address some issues and will be trying them after this commit: a) The LLVM linker on that computer didn't recognize `-rpath-link'! So at configure time we now check for it and only include it when the linker recognizes it. b) CMake corrections: 1) `CMAKE_LIBRARY_PATH' is now defined so CMake can look in our custom directory to find the necessary libraries. 2) To build and install the CMake built programs, we now simply use `make' and `make install'. c) To avoid particular linking problems with WCSLIB (which has special problems compared to other libraries), we are now deleting the shared library version (both on GNU and Mac systems).
2018-11-29Ignoring building of GCC for pipelineMohammad Akhlaghi-23/+76
GNU Binutils (which provides the GNU Linker) is not ported to Mac OS systems. GCC also takes a very long time to build, and if we are to still have linking problems with LLVM's linker, it would be better to just ignore GCC also and use the system's C compiler and linker together. So for the time being, GCC isn't a main target of the basic dependencies and won't be installed. But we have kept the rules that were checked on a GNU/Linux operating system.
2018-11-29Using proper shell when building programs with GNU toolsMohammad Akhlaghi-2/+9
Previously the SHELL environment variable was only set in `./configure', `make', and `make install' after our internal Bash was installed. This caused problems with Lzip's configure script on older shells (tested on a Mac OS by Raul Infante Sainz). So now, before having our own Bash, we set it to a possibly existing Bash on the system and if that isn't present, just the standard `/bin/sh'.
2018-11-29GCC is now installed by the pipelineMohammad Akhlaghi-75/+162
The pipeline now installs GCC and all its necessary prerequisites.
2018-11-28Changed -rpath to -rpath-link for LLVMMohammad Akhlaghi-1/+7
The linker of LLVM version 10.0.0 (clang-1000.11.45.5) doesn't recognize the `-rpath' linker option! After some searching, apparently it does recognize `-rpath-link' so we are testing with that now.
2018-11-28Better control of shared library linkingMohammad Akhlaghi-47/+70
Until now we weren't explicity writing the full path of the dynamic libraries necessary for linking a program. But now with `-Wl,-rpath=$(ildir)' we ensure that the linker keeps the address of the dynamic libraries necessary for linking at linking time, not running time. Also, `pkg-config' is also built when preparing the basics. Several other minor corrections were made thanks to the great help of Raúl Infante Sainz.
2018-11-26Making lock file directoryMohammad Akhlaghi-4/+4
We had forgot to add the rule to build the lock file directory for downloading data. This has been corrected.
2018-11-26High-level dependencies build without system's PATHMohammad Akhlaghi-86/+151
The high-level dependencies are now built without having access to the system's PATH. To do this, all the necessary software that we aren't building ourselves are now brought into the installed `bin/' directory using a symbolic link to the corresponding software on the host. To do this, it was also necessary to increase the number of basic/low-level packages that we are building, and add several more (Diffutils and Findutils). With this process in place, we now have a list of the exact software packages that we are not building our selves, enabling easy building of all such dependencies in the future.
2018-11-26sh executable now available in PATHMohammad Akhlaghi-1/+16
While working on a research project using this pipeline, I noticed that we don't have any `sh' executable within our PATH. However, some programs (including Gnuastro's configure script, when it is checking for shells to use with Libtool) check and use it. So after building Bash, we also build an `sh' symbolic link to point to the built Bash executable.
2018-11-25Rule of tex/pipeline.tex now defined in paper.mk not top MakefileMohammad Akhlaghi-206/+231
To avoid redundant steps in the the top-level Makefile and make it simpler and easier to follow, we now define the base names of all the Makefiles in the `makesrc' variable of the top-level Makefile. `makesrc' is then used to define the Makefiles to include and the necessary TeX macros at the same time. This is much more clear and obvious than the previous case were we had to list the Makefiles and TeX macro files separately in the top level Makefile.
2018-11-25More generic naming conventionMohammad Akhlaghi-73/+46
Until now, we were keeping the input file within the reproduction pipeline's directories using the same name as the database/server. Now, we are using a short/summarized filename convention for the input dataset.
2018-11-25Removed mention of extra input dataset in configure scriptMohammad Akhlaghi-5/+0
While preparing the input dataset downloading scripts, we wanted to have two input datasets, but it was too much, so it was ultimately removed. But I had forgot to remove the information about this file in the `./configure' script. So it is removed now.
2018-11-25Instructions on changing input dataset in pipelineMohammad Akhlaghi-5/+11
A step has been added to the checklist to correct the template's input dataset into the custom dataset necessary for each research.
2018-11-25Pipeline now downloads and uses an input datasetMohammad Akhlaghi-100/+414
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-22Minor correction to README-pipeline.mdMohammad Akhlaghi-1/+0
There was an extra line (probably created by Emacs in a wrong command!) in the end of `README-pipeline.md' that has been removed.
2018-11-22Spell check in two READMEsMohammad Akhlaghi-7/+8
A spellcheck was run on the two README files.
2018-11-22Minor edit/correction in README.mdMohammad Akhlaghi-9/+8
The note to the pipeline designers was corrected to display properly on Gitlab.
2018-11-22Placeholder in README.md for pipeline dependenciesMohammad Akhlaghi-9/+15
A placeholder link is now used in `README.md' to encourage the pipeline designers to keep a backup of all the dependencies they use.
2018-11-22Top level READMEs renamed to be similar to actual projectMohammad Akhlaghi-1020/+1010
Until now, were were advising the users to rename the two README files after cloning the project. This was because online Git browsers usually display the `README.md' file, so we wanted the description of the pipeline to be visible in the pipeline, and later when a project adopts it, they can have their own `README.md'. But the problem is that any change in `REAME.md' will later cause conflicts with a project's `README.md'. So we are now using the same naming convention as the papers that use the pipeline.
2018-11-22Checklist defining remote moved to topMohammad Akhlaghi-20/+27
In the checklist, we are now defining the remote host of the repository at an early stage. This is because we will need it in the `README.md' file (which now has a placeholder `XXXXXXX' instead of a valid URL).
2018-11-22README editedMohammad Akhlaghi-23/+29
The README file was edited to be more clear and easy to understand. In particular, it is explained that Git is not necessary for getting the pipeline.
2018-11-22Using .local instead of ./.local in READMEsMohammad Akhlaghi-9/+9
Until now, in the instructions, we were suggesting to run `./.local/bin/make', but the `./' part is extra: this is already a directory and so the shell will be able to find it. So to make things more clear and easy to read/write, we removed the `./' part from the calls to our custom Make installation.
2018-11-22Wget not using server timestampsMohammad Akhlaghi-3/+2
By default, Wget uses the same time stamp for the downloaded file as the server. As a result, if a dependency was previously built before the tarball was uploaded to the server, the pipeline wouldn't recognize that its new and wouldn't re-build it. With this commit, we are adding the `--no-use-server-timestamps' to the call to Wget to fix this problem. I also noticed that (probably as a bug left over from the time we were testing the configure script), we were manually setting the `userread' variable to `n' independent of what the user provided. This has also been fixed.
2018-11-22Ghostscript was updated to version 9.26Mohammad Akhlaghi-2/+2
A new version of the ghostscript package is now available, so the used version in the pipeline (previously 9.25) has been incremented to 9.26.
2018-11-21Changing of README files in checklistMohammad Akhlaghi-33/+69
When you point to this project, the `README.md' file is the default file that opens on GitLab and other online git repositories. Since a reproduction pipeline project is different from the actual pipeline, its best for the default text that opens to describe the paper, not the pipeline. The old `README.md' is also kept, but its now called `REAME-pipeline.md'.
2018-11-21Pulling into pipeline branch instead of fetching in README.mdMohammad Akhlaghi-13/+15
In the previous commit, we were recommending to fetch the work from this pipeline. But since we have a separate `pipeline' branch, we can simply checkout to that branch and pull all the recent changes. So with this commit, the steps to get recent updates to the pipeline are updated.
2018-11-21Fetching pipeline updates explained in README.md checklistMohammad Akhlaghi-7/+26
Since working on the pipeline will evolve along with the projects that use it, it can be useful for projects to fetch updates in the pipeline. So the checklist in `README.md' updated to explain how to do this cleanly.
2018-11-21Updated description of Make in README.mdMohammad Akhlaghi-7/+13
Until now, because we didn't build the dependencies internally, it was important for the pipeline to be usable with any version of Make. But because of the new installation of dependencies (including GNU Make), that is no longer the case. So we can safely use GNU Make and this needs to be mentioned in `README.md'.
2018-11-21Modified reproducible paper statement in paperMohammad Akhlaghi-4/+2
Gnuastro is just one of the softwares used in the pipeline, so it is too much to include its version just under the abstract. However, the version of the pipeline is very important as well as the link to it. This change puts more emphasis on these two more important points.
2018-11-20Configure script passes if TeX Live was not finalizedMohammad Akhlaghi-103/+181
When there is a problem in creating the final TeX Live installation, the previous version of the pipeline would not understand and just finish! We would later have problems in building the paper. So the following series of steps were taken: to keep the recipes in a shorter and easier to understand way, the steps to install TeX Live are now one rule (that produce `.local/bin/texlive-ready-tlmgr' when its successful), and the steps to install the necessary packages are in another rule (that produce `.local/bin/texlive-ready' when its successful). When control comes back inside configure, if `.local/bin/texlive-ready' isn't there (something failed during the TeX Live installation, or building packages), then the whole TeX Live installation directory (`.local/texlive') will be deleted along with the two output files. This will help ensure that future steps can check the availablility of a working TeX Live in the pipeline.
2018-11-20Corrected call to nproc in configure scriptMohammad Akhlaghi-1/+1
After installing the basic dependencies, we have access to the internally built `nproc' program (by Coreutils) to find the number of threads we can use for building the high-level batch of dependencies. Unfortunately, I had added an extra `./' before `$instdir' when calling `nproc' so the script failed. This problem is fixed now.
2018-11-20Not including system's libraries in high-level dependenciesMohammad Akhlaghi-6/+10
The system's libraries are no longer used in building the higher-level dependencies. Also, thanks to Raul Infante Sainz, we found out that Bash's build script was still removing the extra directory information (not good!).