Age | Commit message (Collapse) | Author | Lines |
|
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.
|
|
Until now, `metastore' did not depend on the necessaries programs that
we use to install it (`awk', `coreutils' and `sed'). They are not
official dependencies of `metastore', but we need them to install it.
With this commit, we put these programs as prerequisites of `metastore'
in order to be able to install it without any problem.
|
|
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.
|
|
Git and Metastore are very basic and fundamental tools for the template, so
to keep things clean (let the `high-level.mk' software only represent
optional software in the template), these two software (and their
dependencies: `cURL' and `Libbsd') will now be built in `basic.mk'.
|
|
Until this commit, ATLAS was a prerequisite of Scamp. The documentation
says that. However, we have been able to install Scamp without having
ATLAS installed. As a consecuence, ATLAS does not have to be a
prerequisite of Scamp anymore.
With this commit, we remove ATLAS as prerequisite of Scamp. We also put
available software in the template as optional because not all people
are going to use these software.
|
|
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.
|
|
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.
|
|
Until now, there were erros in the citation of Astrometry-net and Scamp
papers.
With this commit, we fix these problems. The Swarp bibtex has also been
modify to follow the stetic of the citation style we have right now in
the project.
We also added the `dependency-bib.tex' as a prerequisite of `paper.bbl'.
|
|
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.
|
|
Until this commit, we didn't install Binutils. However, we need `strip'
for installing Netpbm, and `strip' is part of the Binutil software.
With this commit, we include Binutils as a dependency of GCC for
GNU/Linux systems. For Mac OS systems we create a symbolic link to
`strip' just after the generation of the symbolic link to `gcc'.
|
|
Due to the copy/paste of rules from other files, in some rules there
were some spaces insteand of tab. There were also a lack of semicolon in
the building of CC, and bad extensions in various tarballs.
With this commit, all of these typos have been fixed.
|
|
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.
|
|
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.
|
|
Until now, we did not have CC. This is an obsolete way of calling C
Compiler, nowadays it is GCC. However, there could be some software
that is still using this convention (for example, `netpbm').
With this commit, we make the symbolic link `cc' pointing to the
installed `gcc'.
|
|
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.
|
|
Until this commit, we were using `python3' when calling Python (because
we were using Python version 3.6.8). This will force us to change the
name in the future. For example, when `python4' were available and into
the pipeline.
With this commit, at the end of the Python installation it creates a
symbolic link to the Python bin executable with the new name `python'.
As a consecuence, whatever version of Python was installed, into the
project we will use allways `python' to invoke it.
|
|
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).
|
|
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.
|
|
Until now we weren't including the citation for FFTW (one of the template's
optional packages). With this commit, it is added.
|
|
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.
|
|
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.
|
|
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).
|
|
Some recent corrections that were done by Raul are now merged into the
pipeline. There weren't any conflicts.
|
|
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.
|
|
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).
|
|
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.
|
|
With this commit, we are applying the new style of citing software within
the build rule of Gnuastro.
|
|
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.
|
|
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.
|
|
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.
|
|
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).
|
|
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).
|
|
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.
|
|
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.
|
|
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'.
|
|
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.
|
|
Until now, for short files, we only had a license notice, not an actual
copyright notice. With this commit, a copyright notice has also been
added. We use this new command to find these files, suggested by
`ineiev@gnu.org'.
|
|
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).
|
|
This work is now merged, I just added the new argument to the `pybuild'
function.
|
|
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.
|
|
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.
|
|
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.
|
|
The new files that were just added didn't have a copyright. One has been
added for them with this commit.
|
|
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).
|
|
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.
|
|
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.
|
|
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.
|
|
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'.
|
|
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.
|
|
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'
|