From c88950e788e17f8213330624b0d44c83344c2f1e Mon Sep 17 00:00:00 2001 From: Mohammad Akhlaghi Date: Mon, 16 Sep 2019 00:55:07 +0100 Subject: Distribution tarball now builds in arXiv `./project make dist' will package all the LaTeX-specific files (and analysis source files) into one `tar.gz' file that is ready to upload to servers like arXiv. However, it wasn't updated for some time, so running it would complain about not having a `configure' script in the top of the project. With this commit, it now works with the new file-structure of the project and also copies all the BibLaTeX source files and `paper.bbl' into the top tarball directory, which allows arXiv to build the paper as intended. The output of `./project make dist' has been uploaded and tested on arXiv and it is built by arXiv perfectly. Also, a short description of all the special `make' targets was added to the output of `./project --help'. --- .file-metadata | Bin 6250 -> 6321 bytes project | 31 ++++++++++++++++++++----------- reproduce/analysis/make/initialize.mk | 33 +++++++++++++++++++++++++-------- 3 files changed, 45 insertions(+), 19 deletions(-) diff --git a/.file-metadata b/.file-metadata index 118f363..8ef6ee5 100644 Binary files a/.file-metadata and b/.file-metadata differ diff --git a/project b/project index c60bba1..e7f44a8 100755 --- a/project +++ b/project @@ -72,23 +72,32 @@ RECOMMENDATION: If this is the first time you are configuring this template, please don't use the options and let the script explain each parameter in full detail by simply running './project configure'. -With the options below you can modify the default behavior. +Project 'make' special features. + ./project make Build the project on one thread + ./project make -jN Built the project in parallel on N threads. + ./project make clean Clean all files generated by 'make' (not software). + ./project make distclean Clean everything (including compiled software). + ./project make dist Produce a LaTeX-ready-to-build distribution tarball + ('tar.gz') of the project. This is ready to be + uploaded to servers like 'arXiv.org'. + ./project make dist-zip Similar to 'dist', but compress with '.zip'. +With the options below you can modify the default behavior. Configure options: - -b, --build-dir=STR Top directory to build the project in. - -e, --existing-conf Use (possibly existing) local configuration. - --host-cc Use host system's C compiler, don't build GCC. - -i, --input-dir=STR Directory containing input datasets (optional). - -m, --minmapsize=INT [Gnuastro] Minimum number of bytes to use RAM. - -s, --software-dir=STR Directory containing necessary software tarballs. + -b, --build-dir=STR Top directory to build the project in. + -e, --existing-conf Use (possibly existing) local configuration. + --host-cc Use host system's C compiler, don't build GCC. + -i, --input-dir=STR Directory containing input datasets (optional). + -m, --minmapsize=INT [Gnuastro] Minimum number of bytes to use RAM. + -s, --software-dir=STR Directory containing necessary software tarballs. Configure and Make options: - -g, --group=STR Build and run with write permissions for a group. - -j, --jobs=INT Number of threads to build/run the software. - -?, --help Print this help list. + -g, --group=STR Build and run with write permissions for a group. + -j, --jobs=INT Number of threads to build/run the software. + -?, --help Print this help list. Make options: - -d, --debug=FLAGS Print various types of debugging information. + -d, --debug=FLAGS Print various types of debugging information. Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options. diff --git a/reproduce/analysis/make/initialize.mk b/reproduce/analysis/make/initialize.mk index 644efe4..94008f2 100644 --- a/reproduce/analysis/make/initialize.mk +++ b/reproduce/analysis/make/initialize.mk @@ -228,7 +228,7 @@ distclean: clean # that is ready for building the final PDF with LaTeX. This is useful for # collaborators who only want to contribute to the text of your project, # without having to worry about the technicalities of the analysis. -$(packagecontents): | $(texdir) +$(packagecontents): paper.pdf | $(texdir) # Set up the output directory, delete it if it exists and remake it # to fill with new contents. @@ -250,7 +250,7 @@ $(packagecontents): | $(texdir) printf "\trm -f *.blg *.log *.out *.run.xml\n" >> $$m # Copy the top-level contents into it. - cp configure COPYING for-group README.md README-hacking.md $$dir/ + cp COPYING project README.md README-hacking.md $$dir/ # Build the top-level directories. mkdir $$dir/reproduce $$dir/tex $$dir/tex/tikz $$dir/tex/build @@ -259,7 +259,7 @@ $(packagecontents): | $(texdir) shopt -s extglob cp -r tex/src $$dir/tex/src cp tex/tikz/*.pdf $$dir/tex/tikz - cp -r reproduce/ $$dir/reproduce + cp -r reproduce/* $$dir/reproduce cp -r tex/build/!($(packagebasename)) $$dir/tex/build # Clean up un-necessary/local files: 1) the $(texdir)/build* @@ -272,18 +272,35 @@ $(packagecontents): | $(texdir) rm $$dir/reproduce/software/config/installation/LOCAL.mk rm $$dir/reproduce/software/config/gnuastro/gnuastro-local.conf - # PROJECT SPECIFIC: under this comment, copy any other file for - # packaging, or remove any of the copied files above to suite your - # project. + # When submitting to places like arXiv, they will just run LaTeX + # once and won't run `biber'. So we need to also keep the `.bbl' + # file into the distributing tarball. However, BibLaTeX is + # particularly sensitive to versioning (a `.bbl' file has to be + # read by the same BibLaTeX version that created it). This is hard + # to do with non-up-to-date places like arXiv. Therefore, we thus + # just copy the whole of BibLaTeX's source (the version we are + # using) into the top tarball directory. In this way, arXiv's LaTeX + # engine will use the same BibLaTeX version to interpret the `.bbl' + # file. TIP: you can use the same strategy for other LaTeX packages + # that may cause problems on the arXiv server. + cp tex/build/build/paper.bbl $$dir/ + tltopdir=.local/texlive/2019/texmf-dist/tex/latex + find $$tltopdir/biblatex/ -maxdepth 1 -type f -print0 \ + | xargs -0 cp -t $$dir + + # PROJECT SPECIFIC + # ---------------- + # Put any project specific distribution steps here. + # ---------------- # Since the packaging is mainly intended for high-level building of # the PDF with LaTeX, we'll comment the `makepdf' LaTeX macro in - # the paper. + # the paper. This will disable usage of TiKZ. sed -e's|\\newcommand{\\makepdf}{}|%\\newcommand{\\makepdf}{}|' \ paper.tex > $$dir/paper.tex # Just in case the package users want to rebuild some of the - # figures (manually un-comments the `makepdf' command we commented + # figures (manually un-comment the `makepdf' command we commented # above), correct the TikZ external directory, so the figures can # be rebuilt. pgfsettings="$$dir/tex/src/preamble-pgfplots.tex" -- cgit v1.2.1