Bug#772410: [PATCH] Fix bashisms in scripts

Boris Egorov egorov at linux.com
Wed Dec 10 07:54:45 UTC 2014


Do not use bash-specific features in scripts with '#!/bin/sh'
interpreter; it can be some other shell instead of bash.

Exit codes converted to non-negative values identical to those before
(to not break some scripts relying on old behavior).

Implementation of $RANDOM taken from Debian package apt script
(apt.cron.daily).

Fixes: https://bugs.debian.org/772410
Signed-off-by: Boris Egorov <egorov at linux.com>
---
 scilab/bin/scilab                                     | 4 ++--
 scilab/config/install-sh                              | 4 ++++
 scilab/modules/dynamic_link/src/scripts/install-sh    | 4 ++++
 scilab/modules/dynamic_link/src/scripts/scicompile.sh | 6 +++---
 scilab/modules/helptools/src/script/dispatchHelp.sh   | 2 +-
 5 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/scilab/bin/scilab b/scilab/bin/scilab
index 0b77b6c..cbfe5a8 100755
--- a/scilab/bin/scilab
+++ b/scilab/bin/scilab
@@ -50,7 +50,7 @@ if test -n "$SCI"; then
     if test ! -d "$SCI/modules"; then
         echo "Cannot find directory $SCI/modules/ !"
         echo "SCI should point to the root data directory of Scilab"
-        exit -1
+        exit 255
     fi
 fi
 
@@ -814,7 +814,7 @@ case $OS in
         # When started as an Application, the default path was "/"
         # It is not really useful. Changing to HOME.
         # See bugs 8339 and 10575 for rational
-        if test "$(pwd)" == "/"; then
+        if test "$(pwd)" = "/"; then
             cd $HOME
         fi
 
diff --git a/scilab/config/install-sh b/scilab/config/install-sh
index 377bb86..ba479c1 100755
--- a/scilab/config/install-sh
+++ b/scilab/config/install-sh
@@ -345,6 +345,10 @@ do
 	    # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
 	    ;;
 	  *)
+	    if [ -z "$RANDOM" ] ; then
+	      # A fix for shells that do not have this bash feature
+	      RANDOM=$(( $(dd if=/dev/urandom bs=2 count=1 2> /dev/null | cksum | cut -d' ' -f1) % 32767 ))
+	    fi
 	    tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
 	    trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
 
diff --git a/scilab/modules/dynamic_link/src/scripts/install-sh b/scilab/modules/dynamic_link/src/scripts/install-sh
index 377bb86..ba479c1 100755
--- a/scilab/modules/dynamic_link/src/scripts/install-sh
+++ b/scilab/modules/dynamic_link/src/scripts/install-sh
@@ -345,6 +345,10 @@ do
 	    # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
 	    ;;
 	  *)
+	    if [ -z "$RANDOM" ] ; then
+	      # A fix for shells that do not have this bash feature
+	      RANDOM=$(( $(dd if=/dev/urandom bs=2 count=1 2> /dev/null | cksum | cut -d' ' -f1) % 32767 ))
+	    fi
 	    tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
 	    trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
 
diff --git a/scilab/modules/dynamic_link/src/scripts/scicompile.sh b/scilab/modules/dynamic_link/src/scripts/scicompile.sh
index 9426218..694761f 100755
--- a/scilab/modules/dynamic_link/src/scripts/scicompile.sh
+++ b/scilab/modules/dynamic_link/src/scripts/scicompile.sh
@@ -18,13 +18,13 @@ ORIGINALLIBNAME=libsciexternal
 
 if test ! -s Makefile.orig; then 
 	echo "The compiler detection has been performed. Please launch compilerDetection.sh before."
-	exit -1
+	exit 255
 fi
 
 # Check number of parameters
 if test $# -lt 2; then
 	echo "Syntax : $0 libname sources"
-	exit -2
+	exit 254
 fi
 
 # retrieve parameters
@@ -38,7 +38,7 @@ for file in $SOURCES_TEMP; do
 	FFILE=`echo $file|sed -e 's|\.o$|\.f|g'`
 	if [ ! -s $file -a -s $CFILE -a -s $FFILE ]; then 
 		echo "Error: Cannot find $file"
-		exit -3
+		exit 253
 	fi
 	# It is an include file, do not build it!
 	if [ ! `echo $file|grep -i -E "(\.h$|\.hh$|\.hxx$|\.H$)"` ]; then
diff --git a/scilab/modules/helptools/src/script/dispatchHelp.sh b/scilab/modules/helptools/src/script/dispatchHelp.sh
index 987eb45..e8ee6e8 100644
--- a/scilab/modules/helptools/src/script/dispatchHelp.sh
+++ b/scilab/modules/helptools/src/script/dispatchHelp.sh
@@ -5,7 +5,7 @@
 
 if test -z "$SCI"; then
         echo "Please define the variable SCI"
-        exit -2
+        exit 254
 fi
 
 REFERENCE_LANG=en_US
-- 
2.1.3



More information about the debian-science-maintainers mailing list