Thanks again for checking all that. Assaf Gordon wrote:
On NetBSD 7.0, 6.1.4, One test fails (zgrep-f) perhaps due to filename issues?
No, NetBSD's mktemp command is incompatible with GNU's, in terms of the interpretation of -t. The simplest fix is to stop using mktemp's -t option (which has been "deprecated" in the GNU version for many years anyway).
I'm adding Alpine Linux to my test suite ( https://alpinelinux.org/ ). ... On this system, zdiff check fails because busybox's diff does not support the "-c" option
Wow, *that* is stripped down. Well, it shouldn't be that hard to port to. Does the attached patch fix the problem (as well as the NetBSD problem)?
diff --git a/Makefile.am b/Makefile.am index e892cdc..738c63c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -111,11 +111,11 @@ FILES_TO_CHECK = $(bin_SCRIPTS) \ $(top_srcdir)/ChangeLog $(top_srcdir)/configure $(top_srcdir)/gzip.c check-local: $(FILES_TO_CHECK) $(bin_PROGRAMS) gzip.doc.gz $(AM_V_GEN)$(new_path); { test '$(srcdir)' != . \ - || zdiff -c gzip.doc.gz; } - $(AM_V_at)$(new_path); zdiff -c $(srcdir)/gzip.doc $(srcdir)/gzip.doc + || zdiff gzip.doc.gz; } + $(AM_V_at)$(new_path); zdiff $(srcdir)/gzip.doc $(srcdir)/gzip.doc $(AM_V_at)$(new_path); zdiff $(srcdir)/gzip.doc gzip.doc.gz - $(AM_V_at)$(new_path); zdiff -c - $(srcdir)/gzip.doc <gzip.doc.gz - $(AM_V_at)$(new_path); zdiff -c gzip.doc.gz gzip.doc.gz + $(AM_V_at)$(new_path); zdiff - $(srcdir)/gzip.doc <gzip.doc.gz + $(AM_V_at)$(new_path); zdiff gzip.doc.gz gzip.doc.gz $(AM_V_at)$(new_path); zgrep -iV >/dev/null $(AM_V_at)$(new_path); \ for opt in --rsyncable '' -1 -9; do \ diff --git a/gzexe.in b/gzexe.in index b333993..282e385 100644 --- a/gzexe.in +++ b/gzexe.in @@ -119,7 +119,7 @@ for i do mktemp_status=$? fi if test $mktemp_status -eq 0; then - tmp=`TMPDIR=$dir mktemp -t gzexeXXXXXX` + tmp=`TMPDIR=$dir mktemp` else tmp=$dir/gzexe$$ fi && { cp -p "$file" "$tmp" 2>/dev/null || cp "$file" "$tmp"; } || { @@ -157,7 +157,7 @@ trap 'res=$? ' 0 1 2 3 5 10 13 15 if type mktemp >/dev/null 2>&1; then - gztmpdir=`mktemp -dt` + gztmpdir=`mktemp -d` else gztmpdir=/tmp/gztmp$$; mkdir $gztmpdir fi || { (exit 127); exit 127; } diff --git a/tests/init.sh b/tests/init.sh index ee08022..99d4d0b 100644 --- a/tests/init.sh +++ b/tests/init.sh @@ -308,13 +308,19 @@ if diff_out_=`exec 2>/dev/null; diff -u "$0" "$0" < /dev/null` \ fi } fi -elif diff_out_=`exec 2>/dev/null; diff -c "$0" "$0" < /dev/null`; then +elif + for diff_opt_ in -U3 -c '' no; do + test "$diff_opt_" = no && break + diff_out_=`exec 2>/dev/null; diff $diff_opt_ "$0" "$0" </dev/null` && break + done + test "$diff_opt_" != no +then if test -z "$diff_out_"; then - compare_ () { diff -c "$@"; } + compare_ () { diff $diff_opt_ "$@"; } else compare_ () { - if diff -c "$@" > diff.out; then + if diff $diff_opt_ "$@" > diff.out; then # No differences were found, but AIX and HP-UX 'diff' produce output # "No differences encountered" or "There are no differences between the # files.". Hide this output. @@ -352,9 +358,6 @@ compare () fi } -# An arbitrary prefix to help distinguish test directories. -testdir_prefix_ () { printf gt; } - # Run the user-overridable cleanup_ function, remove the temporary # directory and exit with the incoming value of $?. remove_tmp_ () @@ -468,8 +471,7 @@ setup_ () initial_cwd_=$PWD fail=0 - pfx_=`testdir_prefix_` - test_dir_=`mktempd_ "$initial_cwd_" "$pfx_-$ME_.XXXX"` \ + test_dir_=`mktempd_ "$initial_cwd_"` \ || fail_ "failed to create temporary directory in $initial_cwd_" cd "$test_dir_" || fail_ "failed to cd to temporary directory" @@ -490,7 +492,7 @@ setup_ () # Create a temporary directory, much like mktemp -d does. # Written by Jim Meyering. # -# Usage: mktempd_ /tmp phoey.XXXXXXXXXX +# Usage: mktempd_ /tmp # # First, try to use the mktemp program. # Failing that, we'll roll our own mktemp-like function: @@ -538,12 +540,16 @@ rand_bytes_ () mktempd_ () { case $# in - 2);; - *) fail_ "Usage: mktempd_ DIR TEMPLATE";; + 1);; + *) fail_ "Usage: mktempd_ DIR";; esac destdir_=$1 - template_=$2 + base_template_=tmp. + template_=$base_template_.XXXXXXXXXX + + # How many X's are at the end of the template. + nx_=10 MAX_TRIES_=4 @@ -554,14 +560,8 @@ mktempd_ () */) fail_ "invalid destination dir: remove trailing slash(es)";; esac - case $template_ in - *XXXX) ;; - *) fail_ \ - "invalid template: $template_ (must have a suffix of at least 4 X's)";; - esac - # First, try to use mktemp. - d=`unset TMPDIR; { mktemp -d -t -p "$destdir_" "$template_"; } 2>/dev/null` \ + d=`unset TMPDIR; { mktemp -d -p "$destdir_"; } 2>/dev/null` \ || fail=1 # The resulting name must be in the specified directory. @@ -581,14 +581,6 @@ mktempd_ () # If we reach this point, we'll have to create a directory manually. - # Get a copy of the template without its suffix of X's. - base_template_=`echo "$template_"|sed 's/XX*$//'` - - # Calculate how many X's we've just removed. - template_length_=`echo "$template_" | wc -c` - nx_=`echo "$base_template_" | wc -c` - nx_=`expr $template_length_ - $nx_` - err_= i_=1 while :; do @@ -602,8 +594,7 @@ mktempd_ () fail_ "$err_" } -# If you want to override the testdir_prefix_ function, -# or to add more utility functions, use this file. +# To add more utility functions, use this file. test -f "$srcdir/init.cfg" \ && . "$srcdir/init.cfg" diff --git a/zdiff.in b/zdiff.in index f2f5435..12de3a1 100644 --- a/zdiff.in +++ b/zdiff.in @@ -111,15 +111,15 @@ elif test $# -eq 2; then esac (exit $cmp_status) else - F=`expr "/$2" : '.*/\(.*\)[-.][zZtga]*$'` || F=$prog tmp= trap ' test -n "$tmp" && rm -f "$tmp" (exit 2); exit 2 ' HUP INT PIPE TERM 0 if type mktemp >/dev/null 2>&1; then - tmp=`mktemp -t -- "$F.XXXXXX"` || exit 2 + tmp=`mktemp` || exit 2 else + F=`expr "/$2" : '.*/\(.*\)[-.][zZtga]*$'` || F=$prog set -C tmp=${TMPDIR-/tmp}/$F.$$ fi diff --git a/zgrep.in b/zgrep.in index 99ace59..7ce45ae 100644 --- a/zgrep.in +++ b/zgrep.in @@ -134,7 +134,7 @@ while test $# -ne 0; do (exit 2); exit 2 ' HUP INT PIPE TERM 0 if type mktemp >/dev/null 2>&1; then - pattmp=$(mktemp -t -- "zgrep.XXXXXX") || exit 2 + pattmp=$(mktemp) || exit 2 else set -C pattmp=${TMPDIR-/tmp}/zgrep.$$