aboutsummaryrefslogtreecommitdiff
path: root/reproduce/src/bash
AgeCommit message (Collapse)AuthorLines
2019-04-15New architecture to separate software-building and analysis stepsMohammad Akhlaghi-261/+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-6/+6
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-13Corrected copyright notices and info about adding copyright infoMohammad Akhlaghi-12/+50
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-07Copyright notice added to all files missing oneMohammad Akhlaghi-0/+4
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'.
2019-04-02Copyright notice added to remaining filesMohammad Akhlaghi-8/+8
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'
2019-03-28flock is now built in configure, to allow serial downloadsMohammad Akhlaghi-5/+10
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-02-28Git hooks for metastore check for the existance of metastoreRaul Infante-Sainz-5/+15
Until now, once the Git hooks have been installed (after the installation of Metastore), if metastore doesn't exist (for example by manually deleting the build directory for a re-build with same configurations as before) we can't run `git commit' and `git checkout' will print an ugly warning. With this commit, the two Git hooks check for the existance of Metastore and if it doesn't exist, they won't do anything.
2019-02-06Minor correction in description of downloading wrapperMohammad Akhlaghi-3/+3
In the example running code of the wrapper script, I had just written `./download-multi-try', but this script is meant to be run from the top of the project directory. This could cause confusion. So the example script now starts with `/path/to/download-multi-try'.
2019-02-06Removed .sh suffix in download wrapper scriptMohammad Akhlaghi-1/+3
We don't have a `.sh' suffix in the other scripts of `reproduce/src/bash', so it was also removed from this script.
2019-02-06Wrapper script for multiple attempts at downloading inputsMohammad Akhlaghi-0/+108
Until now, downloading was treated similar to any other operation in the Makefile: if it crashes, the pipeline would crash. But network errors aren't like processing errors: attempting to download a second time will probably not crash (network relays are very complex and not reproducible and packages get lost all the time)! This is usually not felt in downloading one or two files, but when downloading many thousands of files, it will happen every once and a while and its a real waste of time until you check to just press enter again! With this commit we have the `reproduce/src/bash/download-multi-try.sh' script in the pipeline which will repeat the downoad several times (with incrasing time intervals) before crashing and thus fix the problem.
2019-01-23Removing files ending with a ~ in the git checkout hookMohammad Akhlaghi-0/+14
While editing files, some editors create temporary `~' files that can cause problems in metastore's ability to delete their host directory if its not on the other branch. With this commit, a `find' call was added to the post checkout Git hook to remove such temporary files before metastore is called. Also, some comments were added to both git hooks to make them easier to understand for a beginner.
2019-01-23Corrections in metastore's git hooksMohammad Akhlaghi-2/+2
Two corrections were made in the Git hooks of Metastore. 1) The shebang at the start of the scripts now uses the absolute adress of our installed bash, not the relative `.local/bin/bash'. Note that it is possible to use Git within subdirectories and in that scenario, the `.local' will fail. 2) The `$$user' section was removed from the command to find the user's group. With the user as an argument, `groups' may print the user's name first, then their list of groups. When this happens, the script would be just repeating the user's name. But the raw `groups' command will list the groups of the running user.
2019-01-22Using fork of metastore to work when getpwuid isn't usableMohammad Akhlaghi-3/+3
After testing the built of Metastore on a server, I noticed that because its `/etc/passwd' doesn't have the list of users, the `getpwuid' call within metastore failed and wouldn't let it finish. So I looked into the code and was able to implement a solution to this problem by adding two options to it for default values for the user and group. Also, file attributes are not necessary in our (current) use case of metastore and caused crashes on our server, so they are also disabled.
2019-01-21Metastore package now installed to allow keeping file meta-dataMohammad Akhlaghi-0/+80
The pipeline heavily depends on file meta data (and in particular the modification dates), for example the configuration-Makefiles within the pipeline are set as prerequisites to the rules of the pipeline. However, when Git checks out a branch, it doesn't preserve the meta-data of the files unique to that branch (for example program source files or configuration-Makefiles). As a result, the rules that depend on them will be re-done. This is especially troublesome in the scenario of this reproducible paper project because we commonly need to switch between branches (for example to import recent work in the pipeline into the projects). After some searching, I think the Metastore program is the best solution. Metastore is now built as part of the pipeline and through two Git hooks, it is called by Git to store the original meta-data of files into a binary file that is version controlled (and managed by Metastore).