There are a number of non-portable idioms in the test scripts:
- "tar -z" is only supported by GNU tar, whose name we cannot depend on
(when it is available, it is usually called gtar everywhere but on
GNU-based platforms)
- I know $(...) is POSIX, and I do find this syntax invaluable compared to
the traditional backquote one, but if we do not want to play substitution
games more than really needed, we'd better not use it, especially since
there is no need for nested constructs in these scripts
- the shells on Solaris have a strange way of quoting things, so every
instance of "sh -c" needs an extra level of quotes. That was part of the
remarks I had years ago when I ported fakeroot, but this time I have a
hack that works on both platforms. I do agree it is not a very clean
solution, though. Strangely, this behaviour is consistent between
/bin/sh, /usr/xpg4/bin/sh, and bash.
The only remaining issues are:
- echoarg failure is not caught on Solaris, as withough the $Q hack we see:
make check-TESTS
RET=
PASS: t.echoarg
- probably not with the tests themselves, I'll look at it later:
ld.so.1: sort: fatal: .../fakeroot-1.3/.libs/libfakeroot.so.0: wrong ELF
class: ELFCLASS32
FAIL: t.tar
diff -ruN fakeroot-1.3.orig/scripts/fakeroot.in fakeroot-1.3/scripts/fakeroot.in
--- fakeroot-1.3.orig/scripts/fakeroot.in 2005-05-09 17:53:43.000000000
+0200
+++ fakeroot-1.3/scripts/fakeroot.in 2005-06-28 10:39:27.594507000 +0200
@@ -6,7 +6,7 @@
usage () {
cat - >&2 <<EOF
fakeroot, create a fake root environment.
- usage: fakeroot [-l|--lib fakerootlib] [-r|--faked fakedbin]
+ usage: fakeroot [-l|--lib fakerootlib] [-f|--faked fakedbin]
[-i file] [-s file] [-u|--unknown-is-real]
[-b|--fd-base fd] [-h|--help] [-v|--version]
[--] [command]
@@ -122,9 +122,9 @@
PID=`echo $KEY_PID|cut -d: -f2`
if [ "$WAITINTRAP" -eq 0 ]; then
- trap "kill -s TERM $PID" EXIT INT
+ trap "kill -TERM $PID" EXIT INT
else
- trap "kill -s TERM $PID ; wait $PID >/dev/null 2>&1" EXIT INT
+ trap "kill -TERM $PID ; wait $PID >/dev/null 2>&1" EXIT INT
fi
if test -z "$FAKEROOTKEY" || test -z "$PID"; then
diff -ruN fakeroot-1.3.orig/test/compare-tar fakeroot-1.3/test/compare-tar
--- fakeroot-1.3.orig/test/compare-tar 2004-06-18 21:42:10.000000000 +0200
+++ fakeroot-1.3/test/compare-tar 2005-06-28 15:11:17.378475000 +0200
@@ -2,8 +2,8 @@
set -e
echo compare-tar:
-tar -tvzf $1 |perl -p -e 's/^((.*?)(\t+|\s\s+)\d+).*\s(\S+)$/$1 $4/' |sort >
tmp-1
-tar -tvzf $2 |perl -p -e 's/^((.*?)(\t+|\s\s+)\d+).*\s(\S+)$/$1 $4/' |sort >
tmp-2
+gzip -dc $1 | tar -tvf - |perl -p -e 's/^((.*?)(\t+|\s\s+)\d+).*\s(\S+)$/$1
$4/' |sort > tmp-1
+gzip -dc $2 | tar -tvf - |perl -p -e 's/^((.*?)(\t+|\s\s+)\d+).*\s(\S+)$/$1
$4/' |sort > tmp-2
diff -u tmp-1 tmp-2 > tmp-diff
diff -ruN fakeroot-1.3.orig/test/t.echoarg fakeroot-1.3/test/t.echoarg
--- fakeroot-1.3.orig/test/t.echoarg 2004-06-18 21:42:10.000000000 +0200
+++ fakeroot-1.3/test/t.echoarg 2005-06-28 16:03:39.390848000 +0200
@@ -1,4 +1,7 @@
#!/bin/sh
+Q=
+[ `uname -s` != SunOS ] || Q="'"
+
../scripts/fakeroot${tcp} -f ../faked${tcp} -l ../.libs/${libfakeroot} -- \
- sh -c 'RET="$('"${srcdir}"'/echo_arg 3 a b c d e)"; echo RET=$RET; test
"$RET" = "b"'
+ /usr/xpg4/bin/sh -c "$Q"'RET="`'"${srcdir}"'/echo_arg 3 a b c d e`"; echo
RET=$RET; test "$RET" = "b"'"$Q"
diff -ruN fakeroot-1.3.orig/test/t.mknod fakeroot-1.3/test/t.mknod
--- fakeroot-1.3.orig/test/t.mknod 2004-06-18 21:42:10.000000000 +0200
+++ fakeroot-1.3/test/t.mknod 2005-06-28 15:37:04.016414000 +0200
@@ -1,4 +1,7 @@
#!/bin/sh
+Q=
+[ `uname -s` != SunOS ] || Q="'"
+
../scripts/fakeroot${tcp} -f ../faked${tcp} -l ../.libs/${libfakeroot} -- \
- sh -c 'mknod hda3 b 3 1; ls -l hda3' | grep "^b"
+ bash -c "${Q}mknod hda3 b 3 1; ls -l hda3${Q}" | grep "^b"
diff -ruN fakeroot-1.3.orig/test/t.tar fakeroot-1.3/test/t.tar
--- fakeroot-1.3.orig/test/t.tar 2004-06-18 21:42:10.000000000 +0200
+++ fakeroot-1.3/test/t.tar 2005-06-28 15:04:31.633346000 +0200
@@ -1,6 +1,6 @@
#!/bin/sh
-tdir=$(cd ..; pwd -P)
+tdir=`cd ..; pwd -P`
../scripts/fakeroot${tcp} -f ${tdir}/faked${tcp} -l
${tdir}/.libs/${libfakeroot} -- \
${srcdir}/tartest
diff -ruN fakeroot-1.3.orig/test/t.touchinstall fakeroot-1.3/test/t.touchinstall
--- fakeroot-1.3.orig/test/t.touchinstall 2004-06-18 21:42:10.000000000
+0200
+++ fakeroot-1.3/test/t.touchinstall 2005-06-28 15:36:19.595301000 +0200
@@ -1,8 +1,12 @@
#!/bin/sh
+Q=
+[ `uname -s` != SunOS ] || Q="'"
+
+rm -rf tmp
mkdir tmp
../scripts/fakeroot${tcp} -f ../faked${tcp} -l ../.libs/${libfakeroot} -- \
- sh -c "touch tmp/iamnotuser; ls -al tmp/iamnotuser" | grep root
+ sh -c "${Q}touch tmp/iamnotuser; ls -al tmp/iamnotuser${Q}" | grep root
TEMP=$?
rm -r tmp
exit $TEMP
diff -ruN fakeroot-1.3.orig/test/tartest fakeroot-1.3/test/tartest
--- fakeroot-1.3.orig/test/tartest 2004-06-22 19:15:56.000000000 +0200
+++ fakeroot-1.3/test/tartest 2005-06-28 16:00:20.183647000 +0200
@@ -1,8 +1,8 @@
-#!/bin/sh -x
+#!/bin/sh
set -e
echo tartest:
TMP=./tmp
-SRCDIR=$(cd ${srcdir}; pwd -P)
+SRCDIR=`cd ${srcdir}; pwd -P`
PATH=$PATH:/usr/bin/X11
export PATH
umask 022
@@ -31,7 +31,7 @@
#do some mv/rm stuff.
#The "mv" part used to confuse fakeroot_0.0-6
# (inodes weren't removed from cache)
-FILES=$(for f in $LIST; do for c in mv rm ; do echo $c.$f ; done ; done)
+FILES=`for f in $LIST; do for c in mv rm ; do echo $c.$f ; done ; done`
touch $FILES
chown daemon:sys $FILES
for f in $LIST; do
@@ -63,7 +63,7 @@
rm -f tartest.tar.gz
uudecode ${SRCDIR}/tartest.tar.gz.uue
-tar -czf faketar.tar.gz tar
+tar -cf - tar | gzip -9 > faketar.tar.gz
${SRCDIR}/compare-tar tartest.tar.gz faketar.tar.gz
@@ -74,8 +74,8 @@
rm -rf tar
-tar -xzf tartest.tar.gz
-tar -czf tartest.test.tar.gz tar
+gzip -dc tartest.tar.gz | tar xf -
+tar cf - tar | gzip -9 >tartest.test.tar.gz
${SRCDIR}/compare-tar tartest.tar.gz tartest.test.tar.gz