From 6727f84b6d10fe77981b3e8117f436ec1039f643 Mon Sep 17 00:00:00 2001 From: Mohammad Akhlaghi Date: Mon, 7 Sep 2020 19:42:03 +0100 Subject: Software installation: removed IFS statements in pre-make-build.sh Until a recent commit, the IFS='"' was added at the start of the variables in this shell script and as a result, the SPACE character wasn't being used as a delimiter. This caused a major problem when downloading the tarballs (all the backup servers were considered as the top link). With this commit we removed these 'IFS' statements). Because we now check for the existance of meta-characters in the build directory name, there is no more problem, and also generally both the calling command and internally, we have double-qutations around the variable names. So removal of IFS will not affect the result in this scenario. This bug was found by Mohammadreza Khellat. --- reproduce/software/shell/pre-make-build.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'reproduce') diff --git a/reproduce/software/shell/pre-make-build.sh b/reproduce/software/shell/pre-make-build.sh index a18966f..f11e6e6 100755 --- a/reproduce/software/shell/pre-make-build.sh +++ b/reproduce/software/shell/pre-make-build.sh @@ -31,10 +31,10 @@ set -e # Input arguments (the 'IFS's are to allow space in the name). -IFS='"' bdir="$1" -IFS='"' ddir="$2" -IFS='"' downloader="$3" -IFS='"' user_backup_urls="$4" +bdir="$1" +ddir="$2" +downloader="$3" +user_backup_urls="$4" -- cgit v1.2.1 From 24d01f55d675348b1b4e9c022aab80af66100e9e Mon Sep 17 00:00:00 2001 From: Mohammad Akhlaghi Date: Tue, 8 Sep 2020 01:25:29 +0100 Subject: Removed all occurances of IFS in low-level scripts Following the previous commit, we recognized that the 'IFS' terms are not necessary and can be even cause problems. So all their occurances in the scripts of Maneage have been removed with this commit. --- reproduce/software/shell/configure.sh | 4 ++-- reproduce/software/shell/pre-make-build.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'reproduce') diff --git a/reproduce/software/shell/configure.sh b/reproduce/software/shell/configure.sh index 21fe1d6..bc43540 100755 --- a/reproduce/software/shell/configure.sh +++ b/reproduce/software/shell/configure.sh @@ -188,7 +188,7 @@ check_permission () free_space_warning() { fs_threshold=$1 - IFS='"' fs_destpath="$2" + fs_destpath="$2" return $(df "$fs_destpath" \ | awk 'FNR==2 {if($4>'$fs_threshold') print 1; \ else print 0; }') @@ -873,7 +873,7 @@ EOF # manipulate file permissions in the directory's filesystem and if # so, see if there is atleast 5GB free space. if ! [ x"$bdir" = x ]; then - if ! $(IFS='"' check_permission "$bdir"); then + if ! $(check_permission "$bdir"); then # Unable to handle permissions well bdir= echo " ** File permissions can't be modified in this directory" diff --git a/reproduce/software/shell/pre-make-build.sh b/reproduce/software/shell/pre-make-build.sh index f11e6e6..4e7d6ad 100755 --- a/reproduce/software/shell/pre-make-build.sh +++ b/reproduce/software/shell/pre-make-build.sh @@ -30,7 +30,7 @@ set -e -# Input arguments (the 'IFS's are to allow space in the name). +# Input arguments. bdir="$1" ddir="$2" downloader="$3" -- cgit v1.2.1 From 11b11e93fbdb29be69a936950438ed1cbea34a11 Mon Sep 17 00:00:00 2001 From: Boud Roukema Date: Wed, 9 Sep 2020 10:08:20 +0200 Subject: R is built without tcl/tk (for GUI) dependence Tcl/Tk are a set of tools to provide Graphic User Interface (GUI) support in some software. But they are not yet natively built within Maneage, primarily because we have higher-priority work right now. GUI tools in general aren't high on our priority list right now because GUI tools are generally good for human interaction (which is contrary to the reproducible philosophy), not automatic analysis (a core concept in reproducibility). So even later, when we do include Tcl/Tk in Maneage, their direct usage will be discouraged. Until this commit, because we don't yet build Tcl/Tk, the default maneage install of the statistical package R failed on a Debian Stretch, with 6227 repeats of the line: '/usr/lib//tcl8.5/tclConfig.sh: line 2: dpkg-architecture: command not found' To fix this problem (atleast until Tcl/Tk is installed within Maneage), R is now configured with the '--without-tcltk' option which fixed the problem. Please see the description above the R installation instructions in 'reproduce/software/make/high-level.mk' for more. --- reproduce/software/make/high-level.mk | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'reproduce') diff --git a/reproduce/software/make/high-level.mk b/reproduce/software/make/high-level.mk index 3c5e518..c3bda3e 100644 --- a/reproduce/software/make/high-level.mk +++ b/reproduce/software/make/high-level.mk @@ -1181,6 +1181,24 @@ $(ibidir)/pcre-$(pcre-version): , V=1 -j$(numthreads)) echo "Perl Compatible Regular Expressions $(pcre-version)" > $@ +# Comment on building R without GUI support ('--without-tcltlk') +# +# Tcl/Tk are a set of tools to provide Graphic User Interface (GUI) support +# in some software. But they are not yet natively built within Maneage, +# primarily because we have higher-priority work right now (if anyone is +# interested, they can ofcourse contribute!). GUI tools in general aren't +# high on our priority list right now because they are generally good for +# human interaction (which is contrary to the reproducible philosophy: +# there will always be human-error and frustration, for example in GUI +# tools the best level of reproducibility is statements like this: "move +# your mouse to button XXX, then click on menu YYY and etc"). A robust +# reproducible solution must be done automatically. +# +# If someone wants to use R's GUI functionalities while investigating for +# their analysis, they can do the GUI part on their host OS +# implementation. Later, they can bring the finalized source into Maneage +# to be automatically run in Maneage. This will also be the recommended way +# to deal with GUI tools later when we do install them within Maneage. $(ibidir)/R-$(R-version): \ $(ibidir)/pcre-$(pcre-version) \ $(ibidir)/cairo-$(cairo-version) \ @@ -1204,6 +1222,7 @@ $(ibidir)/R-$(R-version): \ --with-pcre1 \ --disable-java \ --with-readline \ + --without-tcltk \ --disable-openmp make -j$(numthreads) make install -- cgit v1.2.1