aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Akhlaghi <mohammad@akhlaghi.org>2022-05-10 01:46:37 +0200
committerMohammad Akhlaghi <mohammad@akhlaghi.org>2022-05-10 01:46:37 +0200
commit4f376e9f27209fb5a69addcc56a37abe8fb8ef01 (patch)
treecf1a9e7a70d4d0c2bfede0ac02e27533e82855cc
parentf51b5e2e500dd6450a5a3425e85df78245fc5c5c (diff)
initialize.mk: Git call in variable works with LD_LIBRARY_PATH
Until now, the '$(project-commit-hash)' Make variable of 'initialize.mk' simply called 'git' to find the commit hash. However, due to one of the recent software updates, we noticed that this command is no longer working (and the project commit hash wasn't getting printed in the PDF)! The problem was that Maneage's Git, couldn't find the 'libiconv' library that it was built with. With this commit, the '$(shell' command that calls Git, first exports 'LD_LIBRARY_PATH' to Maneage's software build directory. As a result, the Git command can work and will report the commit as a LaTeX macro to be used in the paper. To avoid relying on PATH outside of Make recipes, we now also directly call the Git executable with Maneage. Some other minor issues have been found and fixed in this commit: - README-hacking.md: some minor edits and typo corrections. - initialize.mk: the '$(curdir)' variable is now used in several places that we were calling 'pwd'. - versions.conf: 'xlsxio-version' now included with other programs. Until now it was commented because GCC 11.1.0 had issues with it. However, GCC 11.2.0 doesn't have a problem any more, so it has been returned to the list of all high-level programs. - xorg.mk: used same format to comment recipe lines as the other Makefiles (a '#' followed by a TAB). - preamble-pgfplots.tex: lines to comment for building an EPS figure with PGFPlots have been re-formatted to be more human-readable.
-rw-r--r--README-hacking.md21
-rw-r--r--reproduce/analysis/make/initialize.mk28
-rw-r--r--reproduce/software/config/versions.conf5
-rw-r--r--reproduce/software/make/basic.mk2
-rw-r--r--reproduce/software/make/xorg.mk8
-rw-r--r--tex/src/preamble-pgfplots.tex16
6 files changed, 43 insertions, 37 deletions
diff --git a/README-hacking.md b/README-hacking.md
index b721d6d..030082b 100644
--- a/README-hacking.md
+++ b/README-hacking.md
@@ -1066,14 +1066,13 @@ future.
the plots should be uploaded directly to Zenodo so they can be
viewed/downloaded with a simple link in the caption. For example see the
last sentence of the caption of Figure 1 in
- [arXiv:2006.03018v1](https://arxiv.org/pdf/2006.03018v1.pdf), it points
- to [the
- data](https://zenodo.org/record/3872248/files/tools-per-year.txt) that
- was used to create that figure's top plot. As you see, this will allow
- your paper's readers (again, most probably your future-self!) to
- directly access the numbers of each visualization (plot/figure) with a
- simple click in a trusted server. This also shows the major advantage of
- having your data as simple plain-text where possible, as described
+ [arXiv:2006.03018](https://arxiv.org/pdf/2006.03018.pdf), it points to
+ [the data](https://zenodo.org/record/3872248/files/tools-per-year.txt)
+ that was used to create that figure's left-side plot. As you see, this
+ will allow your paper's readers (again, most probably your future-self!)
+ to directly access the numbers of each visualization (plot/figure) with
+ a simple click in a trusted server. This also shows the major advantage
+ of having your data as simple plain-text where possible, as described
above. To help you keep all your to-be-visualized datasets in a single
place, Maneage has the two `tex-publish-dir` and `data-publish-dir`
directories that are defined in `reproduce/analysis/make/initialize.mk`,
@@ -1116,7 +1115,7 @@ future.
- **Confirm if your project builds from scratch**: Before publishing
anything, you should see if your project can indeed reproduce itself!
You may be mistakenly using temporarily created files that aren't built
- when teh project is built from scratch (this happens a lot and is very
+ when the project is built from scratch (this happens a lot and is very
dangerous for the integrity of your project!). So, go to a temporary
directory, clone your project from its repository and try configuring
and building it from scratch in a new-temporary build-directory. It is
@@ -1177,8 +1176,8 @@ future.
`.build/software/tarballs`. It is necessary to upload these with
your project to avoid relying on third party servers. In the future
any one of those servers may go down and if so, your project won't
- be buildable. You can generate this tarball easily with `make
- dist-software`.
+ be buildable. You can generate this tarball easily with `./project
+ make dist-software`.
* All the figure (and other) output datasets of the project. Don't
rename these files, let them have the same descriptive name
diff --git a/reproduce/analysis/make/initialize.mk b/reproduce/analysis/make/initialize.mk
index 7e9e938..4e8ee68 100644
--- a/reproduce/analysis/make/initialize.mk
+++ b/reproduce/analysis/make/initialize.mk
@@ -165,7 +165,9 @@ export OMPI_MCA_plm_rsh_agent=/bin/false
# Recipe startup script.
export PROJECT_STATUS := make
-export BASH_ENV := $(shell pwd)/reproduce/software/shell/bashrc.sh
+export BASH_ENV := $(curdir)/reproduce/software/shell/bashrc.sh
+
+
@@ -209,9 +211,18 @@ $(lockdir): | $(bsdir); mkdir $@
-# Version and distribution tarball definitions
-project-commit-hash := $(shell if [ -d .git ]; then \
- echo $$(git describe --dirty --always --long); else echo NOGIT; fi)
+# Version and distribution tarball definitions.
+#
+# We need to export 'LD_LIBRARY_PATH' before calling 'git' because we the
+# default export of 'LD_LIBRARY_PATH' doesn't take effect at this point
+# (only within the recipes). Its also safe to directly use the 'git'
+# executable using its absolute location (and not rely on 'PATH' at this
+# stage).
+project-commit-hash := $(shell \
+ if [ -d .git ]; then \
+ export LD_LIBRARY_PATH="$(installdir)/lib"; \
+ echo $$($(installdir)/bin/git describe --dirty --always --long); \
+ else echo NOGIT; fi)
project-package-name := maneaged-$(project-commit-hash)
project-package-contents = $(texdir)/$(project-package-name)
@@ -385,7 +396,6 @@ $(project-package-contents): paper.pdf | $(texdir)
# Package into '.tar.gz' or '.tar.lz'.
dist dist-lzip: $(project-package-contents)
- curdir=$$(pwd)
cd $(texdir)
tar -cf $(project-package-name).tar $(project-package-name)
if [ $@ = dist ]; then
@@ -396,21 +406,19 @@ dist dist-lzip: $(project-package-contents)
lzip -f --best $(project-package-name).tar
fi
rm -rf $(project-package-name)
- cd $$curdir
+ cd $(curdir)
mv $(texdir)/$(project-package-name).tar.$$suffix ./
# Package into '.zip'.
dist-zip: $(project-package-contents)
- curdir=$$(pwd)
cd $(texdir)
zip -q -r $(project-package-name).zip $(project-package-name)
rm -rf $(project-package-name)
- cd $$curdir
+ cd $(curdir)
mv $(texdir)/$(project-package-name).zip ./
# Package the software tarballs.
dist-software:
- curdir=$$(pwd)
dirname=software-$(project-commit-hash)
cd $(bsdir)
if [ -d $$dirname ]; then rm -rf $$dirname; fi
@@ -419,7 +427,7 @@ dist-software:
tar -cf $$dirname.tar $$dirname
gzip -f --best $$dirname.tar
rm -rf $$dirname
- cd $$curdir
+ cd $(curdir)
mv $(bsdir)/$$dirname.tar.gz ./
diff --git a/reproduce/software/config/versions.conf b/reproduce/software/config/versions.conf
index 2a27ddd..34d074c 100644
--- a/reproduce/software/config/versions.conf
+++ b/reproduce/software/config/versions.conf
@@ -152,6 +152,7 @@ tides-version = 2.0
util-linux-version = 2.37.2
valgrind-version = 3.18.1
vim-version = 8.2
+xlsxio-version = 0.2.21
yaml-version = 0.2.5
# Xorg packages
@@ -286,10 +287,6 @@ wheel-version = 0.37.0
# it.
#healpix-version = 3.50
-# XLSX I/O (until version 0.2.29) crashes during compilation with GCC
-# 11.1.0, so we are temporarily commenting it.
-#xlsxio-version = 0.2.21
-
# Setuptools-rust crash (https://savannah.nongnu.org/bugs/index.php?61731),
# so it and its dependencies are being ignored: 'cryptography', and thus
# 'secretstorage' and thus 'keyring' and thus 'astroquery'.
diff --git a/reproduce/software/make/basic.mk b/reproduce/software/make/basic.mk
index 5967a1d..adb157b 100644
--- a/reproduce/software/make/basic.mk
+++ b/reproduce/software/make/basic.mk
@@ -1200,7 +1200,7 @@ $(ibidir)/binutils-$(binutils-version): \
# being, if the project is being run on a macOS, we'll just set a link.
$(ibidir)/gcc-$(gcc-version): $(ibidir)/binutils-$(binutils-version)
- # Function to let the users know what to do if build fails.
+# Function to let the users know what to do if build fails.
error_message() {
echo; echo
echo "_________________________________________________"
diff --git a/reproduce/software/make/xorg.mk b/reproduce/software/make/xorg.mk
index 6e62595..dd707e5 100644
--- a/reproduce/software/make/xorg.mk
+++ b/reproduce/software/make/xorg.mk
@@ -120,18 +120,18 @@ $(ibidir)/fontconfig-$(fontconfig-version): \
$(ibidir)/libxml2-$(libxml2-version) \
$(ibidir)/freetype-$(freetype-version) \
$(ibidir)/util-linux-$(util-linux-version)
- # Import the source.
+# Import the source.
tarball=fontconfig-$(fontconfig-version).tar.lz
$(call import-source, $(fontconfig-url), $(fontconfig-checksum))
- # Add the extra environment variables for using 'libuuid' of
- # 'util-linux'.
+# Add the extra environment variables for using 'libuuid' of
+# 'util-linux'.
ulidir=$(idir)/util-linux
export LDFLAGS="-L$$ulidir/lib $(LDFLAGS)"
export CPPFLAGS="-I$$ulidir/include $(CPPFLAGS)"
export PKG_CONFIG_PATH=$(PKG_CONFIG_PATH):$$ulidir/lib/pkgconfig
- # Build it.
+# Build it.
$(call gbuild, fontconfig-$(fontconfig-version),, \
$(XORG_CONFIG) --sysconfdir=$(idir)/etc \
--disable-docs, V=1 -j$(numthreads))
diff --git a/tex/src/preamble-pgfplots.tex b/tex/src/preamble-pgfplots.tex
index 75119d6..c200845 100644
--- a/tex/src/preamble-pgfplots.tex
+++ b/tex/src/preamble-pgfplots.tex
@@ -109,13 +109,15 @@
%% Uncomment the following lines for EPS and PS images. Note that you still
%% have to use the 'pdflatex' executable and also add a '[dvips]' option to
%% graphicx.
-
-%% \tikzset{external/system call={rm -f "\image".eps "\image".ps
-%% "\image".dvi; latex \tikzexternalcheckshellescape -halt-on-error
-%% -interaction=batchmode -jobname "\image" "\texsource";
-%% dvips -o "\image".ps "\image".dvi;
-%% ps2eps "\image.ps"}}
-
+%%\tikzset{
+%% external/system call={
+%% rm -f "\image".eps "\image".ps "\image".dvi;
+%% latex \tikzexternalcheckshellescape -halt-on-error
+%% -interaction=batchmode -jobname "\image" "\texsource";
+%% dvips -o "\image".ps "\image".dvi;
+%% ps2eps "\image.ps"
+%% }
+%%}