diff options
Diffstat (limited to 'reproduce/src/make')
-rw-r--r-- | reproduce/src/make/dependencies-basic.mk | 30 | ||||
-rw-r--r-- | reproduce/src/make/dependencies-build-rules.mk | 4 | ||||
-rw-r--r-- | reproduce/src/make/dependencies-python.mk | 2 | ||||
-rw-r--r-- | reproduce/src/make/dependencies.mk | 27 | ||||
-rw-r--r-- | reproduce/src/make/download.mk | 6 | ||||
-rw-r--r-- | reproduce/src/make/initialize.mk | 40 | ||||
-rw-r--r-- | reproduce/src/make/paper.mk | 17 | ||||
-rw-r--r-- | reproduce/src/make/top.mk | 31 |
8 files changed, 73 insertions, 84 deletions
diff --git a/reproduce/src/make/dependencies-basic.mk b/reproduce/src/make/dependencies-basic.mk index e3a5ab3..b56d01d 100644 --- a/reproduce/src/make/dependencies-basic.mk +++ b/reproduce/src/make/dependencies-basic.mk @@ -1,5 +1,5 @@ -# Build the VERY BASIC reproduction pipeline dependencies before everything -# else using minimum Make and Shell. +# Build the VERY BASIC project dependencies before everything else assuming +# minimal/generic Make and Shell. # # ------------------------------------------------------------------------ # !!!!! IMPORTANT NOTES !!!!! @@ -52,8 +52,8 @@ ilidir = $(BDIR)/dependencies/installed/version-info/lib # won't be building ourselves. syspath := $(PATH) -# As we build more programs, we want to use our own pipeline's built -# programs and libraries, not the host's. +# As we build more programs, we want to use this project's built programs +# and libraries, not the host's. export CCACHE_DISABLE := 1 export PATH := $(ibdir):$(PATH) export PKG_CONFIG_PATH := $(ildir)/pkgconfig @@ -217,7 +217,7 @@ makelink = origpath="$$PATH"; \ if [ x$$a = x ]; then \ if [ "x$(strip $(2))" = xmandatory ]; then \ echo "'$(1)' is necessary for higher-level tools."; \ - echo "Please install it for the pipeline to continue."; \ + echo "Please install it for the configuration to continue."; \ exit 1; \ fi; \ else \ @@ -231,7 +231,7 @@ $(ibidir)/low-level-links: | $(ibdir) $(ildir) $(call makelink,as) # Compiler (Cmake needs the clang compiler which we aren't building - # yet in the pipeline). + # yet in the project). $(call makelink,clang) $(call makelink,clang++) @@ -351,7 +351,7 @@ $(ibidir)/tar: $(tdir)/tar-$(tar-version).tar.gz \ $(ibidir)/lzip \ $(ibidir)/gzip \ $(ibidir)/xz - # Since all later programs depend on Tar, the pipeline will be + # Since all later programs depend on Tar, the configuration will be # stuck here, only making Tar. So its more efficient to built it on # multiple threads (when the user's Make doesn't pass down the # number of threads). @@ -394,8 +394,8 @@ $(ilidir)/ncurses: $(tdir)/ncurses-$(ncurses-version).tar.gz \ # Delete the (possibly existing) low-level programs that depend on # `readline', and thus `ncurses'. Since these programs are actually # used during the building of `ncurses', we need to delete them so - # the build process doesn't use the pipeline's Bash and AWK, but - # the host systems. + # the build process doesn't use the project's Bash and AWK, but the + # host's. rm -f $(ibdir)/bash* $(ibdir)/awk* $(ibdir)/gawk* # Standard build process. @@ -489,8 +489,8 @@ $(ibidir)/patchelf: $(tdir)/patchelf-$(patchelf-version).tar.gz \ # of Readline, that we build below as a prerequisite or AWK, is used) and # you run `ldd $(ibdir)/bash' on the resulting binary, it will say that it # is linking with the system's `readline'. But if you run that same command -# within a rule in this reproduction pipeline, you'll see that it is indeed -# linking with our own built readline. +# within a rule in this project, you'll see that it is indeed linking with +# our own built readline. ifeq ($(on_mac_os),yes) needpatchelf = else @@ -570,7 +570,7 @@ $(ilidir)/zlib: $(tdir)/zlib-$(zlib-version).tar.gz \ # build libssl (and libcrypto) dynamically also. # # Until we find a nice and generic way to create an updated CA file in the -# pipeline, the certificates will be available in a file for this pipeline +# project, the certificates will be available in a file for this pipeline # along with the other tarballs. # # In case you do want a static OpenSSL and libcrypto, then uncomment the @@ -621,7 +621,7 @@ $(ilidir)/openssl: $(tdir)/openssl-$(openssl-version).tar.gz \ # gives a segmentation fault when built statically. # # There are many network related libraries that we are currently not -# building as part of this pipeline. So to avoid too much dependency on the +# building as part of this project. So to avoid too much dependency on the # host system (especially a crash when these libraries are updated on the # host), they are disabled here. $(ibidir)/wget: $(tdir)/wget-$(wget-version).tar.lz \ @@ -795,7 +795,7 @@ $(ilidir)/mpc: $(tdir)/mpc-$(mpc-version).tar.gz \ # Objective C and Objective C++ is necessary for installing `matplotlib'. # # We are currently having problems installing GCC on macOS, so for the time -# being, if the pipeline is being run on a macOS, we'll just set a link. +# being, if the project is being run on a macOS, we'll just set a link. ifeq ($(host_cc),1) gcc-prerequisites = else @@ -816,7 +816,7 @@ $(ibidir)/gcc: $(gcc-prerequisites) \ $(ibidir)/findutils # GCC builds is own libraries in '$(idir)/lib64'. But all other - # libraries are in '$(idir)/lib'. Since this pipeline is only for a + # libraries are in '$(idir)/lib'. Since this project is only for a # single architecture, we can trick GCC into building its libraries # in '$(idir)/lib' by defining the '$(idir)/lib64' as a symbolic # link to '$(idir)/lib'. diff --git a/reproduce/src/make/dependencies-build-rules.mk b/reproduce/src/make/dependencies-build-rules.mk index 2523f6a..a8c8731 100644 --- a/reproduce/src/make/dependencies-build-rules.mk +++ b/reproduce/src/make/dependencies-build-rules.mk @@ -110,8 +110,8 @@ cbuild = if [ x$(static_build) = xyes ] && [ $(3)x = staticx ]; then \ opts="-DBUILD_SHARED_LIBS=OFF"; \ fi; \ cd $(ddir) && rm -rf $(2) && tar xf $(1) && cd $(2) && \ - rm -rf pipeline-build && mkdir pipeline-build && \ - cd pipeline-build && \ + rm -rf project-build && mkdir project-build && \ + cd project-build && \ cmake .. -DCMAKE_LIBRARY_PATH=$(ildir) \ -DCMAKE_INSTALL_PREFIX=$(idir) \ -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON $$opts $(4) && \ diff --git a/reproduce/src/make/dependencies-python.mk b/reproduce/src/make/dependencies-python.mk index ce1cd38..837b0ad 100644 --- a/reproduce/src/make/dependencies-python.mk +++ b/reproduce/src/make/dependencies-python.mk @@ -1,4 +1,4 @@ -# Build the reproduction pipeline Python dependencies. +# Build the project's Python dependencies. # # ------------------------------------------------------------------------ # !!!!! IMPORTANT NOTES !!!!! diff --git a/reproduce/src/make/dependencies.mk b/reproduce/src/make/dependencies.mk index 72cb7c4..fd9bffa 100644 --- a/reproduce/src/make/dependencies.mk +++ b/reproduce/src/make/dependencies.mk @@ -1,4 +1,4 @@ -# Build the reproduction pipeline dependencies (programs and libraries). +# Build the project's dependencies (programs and libraries). # # ------------------------------------------------------------------------ # !!!!! IMPORTANT NOTES !!!!! @@ -46,7 +46,7 @@ ipydir = $(BDIR)/dependencies/installed/version-info/python # Define the top-level programs to build (installed in `.local/bin'). # -# About ATLAS: currently the core pipeline does not depend on ATLAS but many +# About ATLAS: currently the template does not depend on ATLAS but many # high level software depend on it. The current rule for ATLAS is tested # successfully on Mac (only static) and GNU/Linux (shared and static). But, # since it takes a few hours to build, it is not currently a target. @@ -486,12 +486,12 @@ $(ibidir)/cmake: $(tdir)/cmake-$(cmake-version).tar.gz \ # cURL (and its library, which is needed by several programs here) can # optionally link with many different network-related libraries on the host -# system that we are not yet building in the pipeline. Many of these are +# system that we are not yet building in the template. Many of these are # not relevant to most science projects, so we are explicitly using # `--without-XXX' or `--disable-XXX' so cURL doesn't link with them. Note -# that if it does link with them, the pipeline will crash when the library -# is updated/changed by the host, and the whole purpose of this pipeline is -# avoid dependency on the host as much as possible. +# that if it does link with them, the configuration will crash when the +# library is updated/changed by the host, and the whole purpose of this +# project is avoid dependency on the host as much as possible. $(ibidir)/curl: $(tdir)/curl-$(curl-version).tar.gz $(call gbuild, $<, curl-$(curl-version), , \ LIBS="-pthread" \ @@ -526,7 +526,7 @@ $(ibidir)/git: $(tdir)/git-$(git-version).tar.xz \ # Metastore is used (through a Git hook) to restore the source modification # dates of files after a Git checkout. Another Git hook saves all file # metadata just before a commit (to allow restoration after a -# checkout). Since this pipeline is managed in Makefiles, file modification +# checkout). Since this project is managed in Makefiles, file modification # dates are critical to not having to redo the whole analysis after # checking out between branches. # @@ -583,8 +583,8 @@ $(ibidir)/metastore: $(tdir)/metastore-$(metastore-version).tar.gz \ echo "metastore couldn't be installed!" echo echo "Its used for preserving timestamps on Git commits." - echo "Its useful for development, not simple running of the pipeline." - echo "So we won't stop the pipeline because it wasn't built." + echo "Its useful for development, not simple running of the project." + echo "So we won't stop the configuration because it wasn't built." echo "*****************" fi @@ -634,8 +634,8 @@ $(ibidir)/zip: $(tdir)/zip-$(zip-version).tar.gz # Since we want to avoid complicating the PATH, we are putting a symbolic # link of all the TeX Live executables in $(ibdir). But symbolic links are # hard to track for Make (as a target). Also, TeX in general is optional -# for the pipeline (the processing is the main target, not the generation -# of the final PDF). So we'll make a simple ASCII file called +# for the project (the processing is the main target, not the generation of +# the final PDF). So we'll make a simple ASCII file called # `texlive-ready-tlmgr' and use its contents to mark if we can use it or # not. $(itidir)/texlive-ready-tlmgr: $(tdir)/install-tl-unx.tar.gz \ @@ -648,7 +648,7 @@ $(itidir)/texlive-ready-tlmgr: $(tdir)/install-tl-unx.tar.gz \ rm -rf install-tl-* tar xf $(tdir)/install-tl-unx.tar.gz cd install-tl-* - sed -e's|@installdir[@]|$(idir)|g' -e's|@topdir[@]|'"$$topdir"'|g' \ + sed -e's|@installdir[@]|$(idir)|g' \ $$topdir/reproduce/config/pipeline/texlive.conf > texlive.conf # TeX Live's installation may fail due to any reason. But TeX Live @@ -688,9 +688,6 @@ $(itidir)/texlive: reproduce/config/pipeline/dependency-texlive.mk \ if [ x"$$res" = x"NOT!" ]; then echo "" > $@ else - # The current directory is necessary later. - topdir=$$(pwd) - # Install all the extra necessary packages. If LaTeX complains # about not finding a command/file/what-ever/XXXXXX, simply run # the following command to find which package its in, then add it diff --git a/reproduce/src/make/download.mk b/reproduce/src/make/download.mk index 28ee5ff..dfc49da 100644 --- a/reproduce/src/make/download.mk +++ b/reproduce/src/make/download.mk @@ -25,8 +25,8 @@ # -------------------- # # The input dataset properties are defined in `$(pconfdir)/INPUTS.mk'. For -# this template pipeline we only have one dataset to enable easy -# processing, so all the extra checks in this rule may seem redundant. +# this template we only have one dataset to enable easy processing, so all +# the extra checks in this rule may seem redundant. # # In a real project, you will need more than one dataset. In that case, # just add them to the target list and add an `elif' statement to define it @@ -35,7 +35,7 @@ # Files in a server usually have very long names, which are mainly designed # for helping in data-base management and being generic. Since Make uses # file names to identify which rule to execute, and the scope of this -# research pipeline is much less than the generic survey/dataset, it is +# research project is much less than the generic survey/dataset, it is # easier to have a simple/short name for the input dataset and work with # that. In the first condition of the recipe below, we connect the short # name with the raw database name of the dataset. diff --git a/reproduce/src/make/initialize.mk b/reproduce/src/make/initialize.mk index f9e054f..cd533f2 100644 --- a/reproduce/src/make/initialize.mk +++ b/reproduce/src/make/initialize.mk @@ -1,4 +1,4 @@ -# Initialize the reproduction pipeline. +# Project initialization. # # Copyright (C) 2018-2019 Mohammad Akhlaghi <mohammad@akhlaghi.org> # @@ -22,14 +22,14 @@ # High-level directory definitions # -------------------------------- # -# Basic directories that are used throughout the whole pipeline. +# Basic directories that are used throughout the project. # # Locks are used to make sure that an operation is done in series not in # parallel (even if Make is run in parallel with the `-j' option). The most # common case is downloads which are better done in series and not in # parallel. Also, some programs may not be thread-safe, therefore it will -# be necessary to put a lock on them. This pipeline uses the `flock' -# program to achieve this. +# be necessary to put a lock on them. This project uses the `flock' program +# to achieve this. texdir = $(BDIR)/tex srcdir = reproduce/src lockdir = $(BDIR)/locks @@ -48,7 +48,7 @@ gconfdir = reproduce/config/gnuastro # TeX build directory # ------------------ # -# In scenarios where multiple users are working on the pipeline +# In scenarios where multiple users are working on the project # simultaneously, they can't all build the final paper together, there will # be conflicts! It is possible to manage the working on the analysis, so no # conflict is caused in that phase, but it would be very slow to only let @@ -99,7 +99,7 @@ curdir := $(shell echo $$(pwd)) # want Make to run the specific version of Bash that we have installed # during `./configure' time. # -# Regarding the directories, this pipeline builds its major dependencies +# Regarding the directories, this project builds its major dependencies # itself and doesn't use the local system's default tools. With these # environment variables, we are setting it to prefer the software we have # build here. @@ -143,18 +143,12 @@ export MPI_PYTHON3_SITEARCH := # directories (or possible sub-directories) for individual steps will be # defined and added within their own Makefiles. # -# IMPORTANT NOTE for $(BDIR)'s dependency: it only depends on the existance -# (not the time-stamp) of `$(pconfdir)/LOCAL.mk'. So the user can make any -# changes within that file and if they don't affect the pipeline. For -# example a change of the top $(BDIR) name, while the contents are the same -# as before. -# # The `.SUFFIXES' rule with no prerequisite is defined to eliminate all the # default implicit rules. The default implicit rules are to do with # programming (for example converting `.c' files to `.o' files). The # problem they cause is when you want to debug the make command with `-d' # option: they add too many extra checks that make it hard to find what you -# are looking for in this pipeline. +# are looking for in the outputs. .SUFFIXES: $(lockdir): | $(BDIR); mkdir $@ $(texbdir): | $(texdir); mkdir $@ @@ -172,8 +166,8 @@ $(tikzdir): | $(texbdir); mkdir $@ && ln -fs $@ tex/tikz # # Only `$(mtexdir)/initialize.tex' corresponds to a file. This is because # we want to ensure that the file is always built in every run: it contains -# the pipeline version which may change between two separate runs, even -# when no file actually differs. +# the project version which may change between two separate runs, even when +# no file actually differs. packagebasename := $(shell echo paper-$$(git describe --dirty --always)) packagecontents = $(texdir)/$(packagebasename) .PHONY: all clean dist dist-zip distclean clean-mmap $(packagecontents) \ @@ -260,7 +254,7 @@ $(packagecontents): | $(texdir) rm $$dir/reproduce/config/pipeline/LOCAL.mk rm $$dir/reproduce/config/gnuastro/gnuastro-local.conf - # PIPELINE SPECIFIC: under this comment, copy any other file for + # PROJECT SPECIFIC: under this comment, copy any other file for # packaging, or remove any of the copied files above to suite your # project. @@ -313,7 +307,7 @@ pvcheck = prog="$(strip $(1))"; \ if [ "x$$verop" = x ]; then V="--version"; else V=$$verop; fi; \ v=$$($$prog $$V | awk '/'$$ver'/{print "y"; exit 0}'); \ if [ x$$v != xy ]; then \ - echo; echo "PIPELINE ERROR: Not running $$name $$ver"; echo; \ + echo; echo "PROJECT ERROR: Not running $$name $$ver"; echo; \ exit 1; \ fi; \ echo "\newcommand{\\$$macro}{$$ver}" >> $@ @@ -325,7 +319,7 @@ lvcheck = idir=$(BDIR)/dependencies/installed/include; \ macro="$(strip $(4))"; \ v=$$(awk '/^\#/&&/define/&&/'$$ver'/{print "y";exit 0}' $$f); \ if [ x$$v != xy ]; then \ - echo; echo "PIPELINE ERROR: Not linking with $$name $$ver"; \ + echo; echo "PROJECT ERROR: Not linking with $$name $$ver"; \ echo; exit 1; \ fi; \ echo "\newcommand{\\$$macro}{$$ver}" >> $@ @@ -333,15 +327,15 @@ lvcheck = idir=$(BDIR)/dependencies/installed/include; \ -# Pipeline initialization results -# ------------------------------- +# Project initialization results +# ------------------------------ # -# This file will store some basic info about the pipeline that is necessary +# This file will store some basic info about the project that is necessary # for the final PDF. Since these are not version controlled, it must be -# calculated everytime the pipeline is run. So even though this file +# calculated everytime the project is run. So even though this file # actually exists, it is also aded as a `.PHONY' target above. $(mtexdir)/initialize.tex: | $(mtexdir) - # Version of the pipeline and build directory (for LaTeX inputs). + # Version of the project. @v=$$(git describe --dirty --always); echo "\newcommand{\pipelineversion}{$$v}" > $@ diff --git a/reproduce/src/make/paper.mk b/reproduce/src/make/paper.mk index 86cf114..0c42bee 100644 --- a/reproduce/src/make/paper.mk +++ b/reproduce/src/make/paper.mk @@ -22,9 +22,8 @@ # ---------------------- # # To report the input settings and results, the final report's PDF (final -# target of this reproduction pipeline) uses macros generated from various -# steps of the pipeline. All these macros are defined in -# `$(mtexdir)/pipeline.tex'. +# target of this project) uses macros generated from various steps of the +# project. All these macros are defined in `$(mtexdir)/pipeline.tex'. # # `$(mtexdir)/pipeline.tex' is actually just a combination of separate # files that keep the LaTeX macros related to each workhorse Makefile (in @@ -32,7 +31,7 @@ # `$(mtexdir)/pipeline.tex'. The only workhorse Makefile that doesn't need # to produce LaTeX macros is this Makefile (`reproduce/src/make/paper.mk'). # -# This file is thus the interface between the pipeline scripts and the +# This file is thus the interface between the processing scripts and the # final PDF: when we get to this point, all the processing has been # completed. # @@ -61,13 +60,13 @@ $(mtexdir)/pipeline.tex: $(foreach s, $(subst paper,,$(makesrc)), $(mtexdir)/$(s echo "LaTeX-built PDF paper will not be built." echo if [ x$(more-on-building-pdf) = x1 ]; then - echo "To do so, make sure you have LaTeX within the pipeline (you" + echo "To do so, make sure you have LaTeX within the project (you" echo "can check by running './.local/bin/latex --version'), _AND_" echo "make sure that the 'pdf-build-final' variable has a value." echo "'pdf-build-final' is defined in: " echo "'reproduce/config/pipeline/pdf-build.mk'." echo - echo "If you don't have LaTeX within the pipeline, please re-run" + echo "If you don't have LaTeX within the project, please re-run" echo "'./configure' when you have internet access. To speed it up," echo "you can keep the previous configuration files (answer 'n'" echo "when it asks about re-writing previous configuration files)." @@ -120,8 +119,8 @@ $(texbdir)/paper.bbl: tex/src/references.tex \ # Run LaTeX in the `$(texbdir)' directory so all the intermediate and # auxiliary files stay there and keep the top directory clean. To be able # to run everything cleanly from there, it is necessary to add the current -# directory (top reproduction pipeline directory) to the `TEXINPUTS' -# environment variable. +# directory (top project directory) to the `TEXINPUTS' environment +# variable. paper.pdf: $(mtexdir)/pipeline.tex paper.tex $(texbdir)/paper.bbl \ | $(tikzdir) $(texbdir) @@ -135,7 +134,7 @@ paper.pdf: $(mtexdir)/pipeline.tex paper.tex $(texbdir)/paper.bbl \ cd $(texbdir) pdflatex -shell-escape -halt-on-error $$p/paper.tex - # Come back to the top pipeline directory and copy the built PDF + # Come back to the top project directory and copy the built PDF # file here. cd $$p cp $(texbdir)/$@ $(final-paper) diff --git a/reproduce/src/make/top.mk b/reproduce/src/make/top.mk index 14bdbf3..763dbd7 100644 --- a/reproduce/src/make/top.mk +++ b/reproduce/src/make/top.mk @@ -1,4 +1,4 @@ -# A ONE-LINE DESCRIPTION OF THE WHOLE PIPELINE +# Top-level Makefile (first to be loaded). # # Copyright (C) 2018-2019 Mohammad Akhlaghi <mohammad@akhlaghi.org> # @@ -26,22 +26,21 @@ include reproduce/config/pipeline/LOCAL.mk -# Ultimate target of this pipeline -# -------------------------------- +# Ultimate target of this project +# ------------------------------- # -# The final paper/report (`paper.pdf') is the main target of this whole -# reproduction pipeline. So as defined in the Make paradigm, it is the -# first target that we define (immediately after loading the local -# configuration settings, necessary for a group building scenario mentioned -# next). +# The final paper/report (`paper.pdf') is the main target of this +# project. As defined in the Make paradigm, it must be the first target +# that Make encounters (immediately after loading the local configuration +# settings, necessary for a group building scenario mentioned next). # # # Group build # ----------- # -# This pipeline can also be configured to have a shared build directory +# This project can also be configured to have a shared build directory # between multiple users. In this scenario, many users (on a server) can -# have their own/separate version controlled pipeline source, but share the +# have their own/separate version controlled project source, but share the # same build outputs (in a common directory). This will allow a group to # work separately, on parallel parts of the analysis that don't # interfere. It is thus very useful in cases were special storage @@ -55,8 +54,8 @@ include reproduce/config/pipeline/LOCAL.mk # was used to call Make). # # The analysis is only done when both have the same group name. Note that -# when the pipeline isn't being built for a group, both variables will be -# an empty string. +# when the project isn't being built for a group, both variables will be an +# empty string. # # # Only processing, no LaTeX PDF @@ -70,10 +69,10 @@ all: paper.pdf else all: @if [ "x$(GROUP-NAME)" = x ]; then \ - echo "Pipeline is NOT configured for groups, please run"; \ + echo "Project is NOT configured for groups, please run"; \ echo " $$ .local/bin/make"; \ else \ - echo "Pipeline is configured for groups, please run"; \ + echo "Project is configured for groups, please run"; \ echo " $$ ./for-group $(GROUP-NAME) make -j8"; \ fi endif @@ -106,7 +105,7 @@ endif # include Makefiles from any other Makefile. # # IMPORTANT NOTE: order matters in the inclusion of the processing -# Makefiles. As the pipeline grows, some Makefiles will define +# Makefiles. As the project grows, some Makefiles will define # variables/dependencies that later Makefiles need. Therefore we are using # a `foreach' loop in the next step to explicitly request loading them in # the same order that they are defined here (we aren't just using a @@ -131,6 +130,6 @@ makesrc = initialize \ # above. # # 2) Then, we'll import the workhorse-Makefiles which contain rules to -# actually do the processing of this pipeline. +# actually do this project's processing. include $(filter-out %LOCAL.mk, reproduce/config/pipeline/*.mk) include $(foreach s,$(makesrc), reproduce/src/make/$(s).mk) |