aboutsummaryrefslogtreecommitdiff
path: root/reproduce/software/config/installation
AgeCommit message (Collapse)AuthorLines
2019-07-29Checking software tarball checksums before building softwareMohammad Akhlaghi-3/+164
Until now, there was no check on the integrity of the contents of the downloaded/copied software tarballs, we only relied on the tarball name. This could be bad for reproducibility and security, for example on one server the name of a tarball may be the same but with different content. With this commit, the SHA512 checksums of all the software are stored in the newly created `checksums.mk' (similar to how the versions are stored in the `versions.mk'). The resulting variable is then defined for each software and after downloading/copying the file we check to see if the new tarball has the same checksum as the stored value. If it doesn't the script will crash with an error, informing the user of the problem. The only limitation now is a bootstrapping problem: if the host system doesn't already an `sha512sum' executable, we will not do any checksum verification until we install our `sha512sum' (as part of GNU Coreutils). All the tarballs downloaded after GNU Coreutils are built will have their checksums validated. By default almost all GNU/Linux systems will have a usable `sha512sum' (its part of GNU Coreutils after all for a long time: from the Coreutils Changelog file atleast since 2013). This completes task #15347.
2019-07-28Single wrapper instead of old ./configure, Makefile and ./for-groupMohammad Akhlaghi-2/+2
Until now, to work on a project, it was necessary to `./configure' it and build the software. Then we had to run `.local/bin/make' to run the project and do the analysis every time. If the project was a shared project between many users on a large server, it was necessary to call the `./for-group' script. This way of managing the project had a major problem: since the user directly called the lower-level `./configure' or `.local/bin/make' it was not possible to provide high-level control (for example limiting the environment variables). This was especially noticed recently with a bug that was related to environment variables (bug #56682). With this commit, this problem is solved using a single script called `project' in the top directory. To configure and build the project, users can now run these commands: $ ./project configure $ ./project make To work on the project with other users in a group these commands can be used: $ ./project configure --group=GROUPNAME $ ./project make --group=GROUPNAME The old options to both configure and make the project are still valid. Run `./project --help' to see a list. For example: $ ./project configure -e --host-cc $ ./project make -j8 The old `configure' script has been moved to `reproduce/software/bash/configure.sh' and is called by the new `./project' script. The `./project' script now just manages the options, then passes control to the `configure.sh' script. For the "make" step, it also reads the options, then calls Make. So in the lower-level nothing has changed. Only the `./project' script is now the single/direct user interface of the project. On a parallel note: as part of bug #56682, we also found out that on some macOS systems, the `DYLD_LIBRARY_PATH' environment variable has to be set to blank. This is no problem because RPATH is automatically set in macOS and the executables and libraries contain the absolute address of the libraries they should link with. But having `DYLD_LIBRARY_PATH' can conflict with some low-level system libraries and cause very hard to debug linking errors (like that reported in the bug report). This fixes bug #56682.
2019-07-26PatchELF built statically and updatedMohammad Akhlaghi-1/+1
Until now, like all other software, PatchELF would install with dynamic linking. However, PatchELF links with `libstdc++' so on one system, I noticed that PatchELF gives a segmentation fault and corrupts `libstdc++' while correcting its RPATH (after installing GCC). The solution is to build PatchELF statically. With this commit, we force PatchELF to be built statically (it only installs on GNU/Linux systems anyway, so there is no problem with static linking on macOS). This solved the problem on that system. While looking at its documentation, I also noticed that a new version of PatchELF has been released after almost three years, so it has been updated in the template also. This fixes bug #56673.
2019-07-25Updated version of WCSLIB to 6.3, previously 6.2Mohammad Akhlaghi-1/+1
Some bugs have been fixed in the new version of WCSLIB, so it has been updated in the template.
2019-07-24libgit2 updated to version 0.28.2, from 0.26.0Mohammad Akhlaghi-1/+1
More than two releases and bug fixes have been made to libgit2. So we are now using a more recent version in the template.
2019-07-07Texinfo installed as a dependency of M4Mohammad Akhlaghi-0/+1
While testing on a system with no Texinfo, we noticed that M4 depends on Texinfo. To fix this problem, with this commit, it is now included in the pipeline. While doing a clean build, a few minor issues were also found and corrected in the other rules.
2019-06-29Added citation for TIDES, sorted progs alphabeticallyMohammad Akhlaghi-2/+2
While reviewing Prasenjit's commits, I noticed that we had forgot to add the citation for TIDES, also to make things clear, the program/library build rules are now sorted alphabetically. Finally, I noticed that after building the TiKZ PDF figures, it is crashing (like on Prasenjit's computer). After looking around, I noticed its because we were setting the of the `TEXINPUTS' environment variable to be the installed TeX Live directory (which was ultimately redundant because by default TeX will look into where it was installed). The important thing is just that we remove any possible value the host system has, not to set new directories.
2019-06-28tides library addedPrasenjit Saha-1/+2
TIDES is an ODE integrator with multiple-precision arithmetic.
2019-06-28Corrections to basic buildPrasenjit Saha-2/+2
Several corrections were necessary in the basic build: 1) the version of GCC on some systems includes an `_' which would cause a crash when building the PDF. 2) libcharset had to be manually added to the Git build.
2019-06-28Libiconv built as a dependency of GitMohammad Akhlaghi-1/+2
Prasenjit Saha reported that while building on a macOS, Git complained about not finding `libiconv' functions. Therefore with this commit, `libiconv' is also built as a dependency of Git. Also, since the build of Binutils (and the subsequent GCC) doesn't depend on the exact versions of the other basic software, they are set as existance-only prerequsites (ignoring their timestamps). This is done to avoid re-building when it is not needed.
2019-06-12Imported recent work on Imfit, minor conflicts fixedMohammad Akhlaghi-1/+3
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-10TeXlive: allows for updating itself and removes old version fileMohammad Akhlaghi-1/+1
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-1/+1
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-31Fixing rpath problem in CFITSIO installationRaul Infante-Sainz-1/+1
`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-27Software: CFITSIO 3.47, implemented many common standardsMohammad Akhlaghi-1/+1
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 Imfit into the projectRaul Infante-Sainz-1/+2
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/+2
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-24Added PyYAML Python package into the projectRaul Infante-Sainz-0/+1
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/+1
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-21ImageMagick is now included into the projectRaul Infante-Sainz-0/+1
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-08TeXLive csquotes packages (needed by BibLaTeX) has been addedMohammad Akhlaghi-1/+1
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-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-1/+1
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/+6
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-04-30Imported some recent/parallel work, conflicts fixedMohammad Akhlaghi-4/+6
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-2/+2
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-29Modified copyright information of some filesRaul Infante-Sainz-0/+2
With this commit, the copyright information of some files have been modify in order to include the work of Raul Infante-Sainz.
2019-04-27Libpng updated (version 1.6.37)Raul Infante-Sainz-3/+1
Until this commit, we were using `libpng' version 1.4.22 (out dated). The reason is that with `libpng` versions > 1.5, there was some problems with `netpbm'. But we have update `netpbm' version and now there is no conflict betweem them. With this commit, we increase the version of `libpng' to have the most recent one.
2019-04-27Modified netpbm installation answers for Mac OS systemsRaul Infante-Sainz-2/+4
Until now, we installed `netpbm' by setting the default paths to libraries and headers. That worked fine for GNU/Linux systems, however, in Mac OS systems we have to explicity say to `netpbm' questions what are the paths to the libraries and headers. We found this problem because we tried to run `solve-field' to obtain the astrometry of some images, and then it goes to use `pnmfile', a program that failed because it was not properly linked with `libnetpmb'. With this commit, we fix this problem by answering properly the questions in the configure step of `netpbm' and setting explicity where we want to place the libraries and headers. With this commit, we also update `netpbm' version. To do that, we have to download the last version, for which it doesn't exist a tarball. So, we built this tarball and put it in the Mohammad's webpage.
2019-04-24Imported work on mpmath, SymPy and sip_tpv, no conflictsMohammad Akhlaghi-0/+3
There wasn't any conflict in this merge.
2019-04-24Removed sip_tpv from TARGETS, now it is an optional packageRaul Infante-Sainz-1/+1
With this commit, we let the Python package `sip_tpv' to be optional in order to not install it by default. It is a very specific package and I forgot to remove it from `TARGETS.mk' in the previous commit.
2019-04-23Python package sip_tpv added into the templateRaul Infante-Sainz-1/+2
With this commit, we add `sip_tpv' Python package into the template. This is a small package to convert SIP distorsion coefficients into PV distorsion coefficients, and the other way around. This package is useful in a astronomical context, specially when `swarp' is going to be used in order to resample images. The reason is that `swarp' only can understand PV distorsion coefficients.
2019-04-23Python package SymPy added into the templateRaul Infante-Sainz-1/+1
With this commit, we add `sympy' Python package into the template. This is a package to do symbolic mathematics. The motivation is that it is a prerequisite of `sip_tpv' Python package, which is useful to convert SIP distorsion coefficients into PV coefficients (in the context of astronomical images). However, the availability of `sympy' in the template will be useful for anyone interested in this package.
2019-04-23Python package mpmath added into the templateRaul Infante-Sainz-1/+3
With this commit, we add `mpmath' Python package into the template. This package is a prerequisite of `sympy', a package to do symbolic mathematics. The motivation of adding this package is because it is a dependency of `sympy', which is more widely used into the Python science community.
2019-04-23Bash updated with patched tarball (version 5.0.7)Mohammad Akhlaghi-2/+2
Until now we were using the official tarball of GNU Bash. However, Bash is distributed using patches, not a public version controlled history. So to implement newer features of Bash, its necessary to apply those patches and make the tarball ourselves. With this commit, we have done just that: we used the 7 patches that have been released since version 5.0.0 and made a tarball to use for this template. The instructions on how to make the patched tarball are also given above the Bash build rule.
2019-04-22High-level software now specified in TARGETS.mkMohammad Akhlaghi-41/+117
Until now, to specify which high-level software you want the project to contain, it was necessary to go into the `high-level.mk' Makefile that is complicated and can create bugs. With this commit, a new `reproduce/software/config/installation/TARGETS.mk' file has been created that is easily/cleanly in charge of documenting the final high-level software that must be built for the project. Also, until now, FFTW was set as a dependency of Numpy while we couldn't actually get Numpy to use it! It was just there for future reference and to justify its build rule. But now that many software won't be built and there is no problem with having rules even though a project might not use them, it has been removed.
2019-04-22SCAMP and cdsclient have been added into the projectRaul Infante-Sainz-0/+2
With this commit, we add SCAMP into the project. This program is part of the Astromatic software and the main purpose is to make the fine astrometry and the distorsion correction astronomical images. In principle, SCAMP needs ATLAS library to be able to work (that is what the documentation says). However, we had some problems with ATLAS libraries on Mac OS system, and due to that, we set the option `--enable-openblas' in the configure step. By doing that, we are be able to install SCAMP with no problems. One dependency of SCAMP is `cdsclient', it has been also added with this commit. The `cdsclient' package is a set of C and shell routines which can be built on Unix stations or PCs running Linux, which once compiled allow to query some databases located at CDS or on mirrors over the network.
2019-04-17SExtractor is now included into the projectRaul Infante-Sainz-0/+1
With this commit, we add SExtractor to be installed into the project. It is a widely used program to detect object and build catalogues from astronomical images. We had some problems when installing it because it could not link with some ATLAS libraries. But, since we have OpenBLAS installed, we can use it to override the problem with ATLAS.
2019-04-17SWarp is now into the pipelineRaul Infante-Sainz-1/+2
SWarp resamples and co-adds together FITS images using any arbitrary astrometric projection defined in the WCS standard. It is a very useful program for astronomy and that is why we added it to the pipeline. With this commit, we also cite the paper for Astrometry-net that until now was missing.
2019-04-16Astrometry-net and all its dependencies are now in the projectRaul Infante-Sainz-0/+2
With this commit, we include Astrometry-net software and one remaining dependency of it (Swig). In principle it should work as far as we tested all of this software in GNU/Linux, but we need to test also in Mac OS. As a result, this commit is just for setting all the rules and dependencies, but more tests are necessaries to ensure it works properly, specially in Mac OS systems.
2019-04-16Netpbm and its dependencies are now includedRaul Infante-Sainz-2/+5
With this commit, the installation of `netpbm' has been included. This software has a crazy dialogue installation that we override by giving to it the answers (they differs on GNU/Linux and Mac OS systems). `libxml2' also has been built (a remaining dependency of `netpbm'). In this commit, `libpng' version has been downgraded because it is required by `netpbm'. The motivation of installing `netpbm' is that it is a dependency of Astrometry-net software.
2019-04-16Cairo library and its dependency Pixman, are now includedRaul Infante-Sainz-0/+2
In this commit we add Cairo library. The motivation of including this library is because it is a dependency of Astrometry-net (which is a common software used in astronomy projects). In principle it will not be build by default by de pipeline, but we will keep the rule just in case it is needed. Pixman is another library which is a prerequisite of Cairo, it is also built with this commit.
2019-04-15New architecture to separate software-building and analysis stepsMohammad Akhlaghi-0/+242
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).