aboutsummaryrefslogtreecommitdiff
path: root/reproduce/software/make/README.md
diff options
context:
space:
mode:
authorMohammad Akhlaghi <mohammad@akhlaghi.org>2019-10-30 14:18:00 +0000
committerMohammad Akhlaghi <mohammad@akhlaghi.org>2019-10-30 15:19:45 +0000
commit315172710f5be42b14ac7e1de91a4660368a3c47 (patch)
treeab4614b5e4a1d6055eb62e3a8a9672db17a60fc5 /reproduce/software/make/README.md
parent3fc44bc6c34cf436a885d0e2ab4dc591d233d573 (diff)
Tarballs set as order-only prerequisites, not needed for build calls
Until now, the tarballs were the first normal prerequisite of the software. As a result if their date changed, the whole software would be re-built. However, for tarballs specifically, we actually check their contents with a checksum, so their date is irrelevant (if its newer than the built program, but has the same checksum, there is no need to re-build the software). Also, calling the tarball name as an argument to the building process (for example `gbuild') was redundant. It is now automatically found from the list of order-only prerequisites within `gbuild' and `cbuild' (similar to how it was previously found in the `pybuild' for Python building). A `README.md' file has also been placed in `reproduce/software/make' to help describe the shared properties of the software building Makefiles. This will hopefully grow much larger in the future.
Diffstat (limited to 'reproduce/software/make/README.md')
-rw-r--r--reproduce/software/make/README.md33
1 files changed, 33 insertions, 0 deletions
diff --git a/reproduce/software/make/README.md b/reproduce/software/make/README.md
new file mode 100644
index 0000000..4eaefce
--- /dev/null
+++ b/reproduce/software/make/README.md
@@ -0,0 +1,33 @@
+Software building instructions
+==============================
+
+This directory contains Makefiles that are called by the high-level
+`reproduce/software/bash/configure.sh' script. The main target for the
+installation of each software is a simple plain text file that contains the
+name of the software and its version (which is put in the paper in the
+end). Once built, these plain-text files are all put in the proper
+sub-directory under `$(BDIR)/software/installed/version-info' (where
+`$(BDIR)' is the top-level build-directory specified by the user).
+
+Besides being directly used in the paper, these simple plain text files
+also act as prerequisites for higher-level software that depend on
+lower-level ones.
+
+Note on prerequisites
+---------------------
+
+Tarballs are order-only prerequsites (after a `|') because we already
+check their contents with the checksums, so their date is irrelevant: a
+tarball with a different content must have a new/different name, thus it
+will not exist, so it will be created, even when its order-only.q
+
+Binary programs (that don't install any libraries to be linked/used at
+compile time can also be order-only prerequisites, because usually they
+don't affect the compilation of the programs that depend on them, they
+are only used at run-time or by the low-level build instructions of the
+software. Ofcourse, if a program's version affects the build of a
+higher-level program, then it shouldn't be order-only.
+
+Libraries or Python modules that are used at compile time must be normal
+prerequisites (not order-only), because they are used during the building
+of the program. \ No newline at end of file