Hi, for the faulty behaviour of bash "test -e" I added a workaround for udev without having to install /bin/dash.
The bug is only present when HAVE_DEV_STDIN is not defined, which is
the case when /dev/std{in,err,out} is not present at build time.
The build logs all define HAVE_DEV_STDIN - except sparc.
From the sparc build log[1]:
[..]
checking whether /dev/stdin stdout stderr are available... absent
[..]
Since there is no build log for i386 I suspect that there the /dev/std*
are also absent and HAVE_DEV_STDIN is not defined.
The result is different behaviour of "test -e" on different architectures,
which is not good.
For a fix of this bug I suggest making that all build machines have the
/dev/std{in,err,out} files.
Regards,
Bastian
[1]
http://buildd.debian.org/fetch.php?&pkg=bash&ver=3.0-16&arch=sparc&stamp=1125945502&file=log&as=raw
PS: I CC'ed the sparc build daemon to check the /dev/std{in,err,out}
existance.
--
,''`. Bastian Kleineidam
: :' : GnuPG Schlüssel
`. `' gpg --keyserver wwwkeys.pgp.net --recv-keys 32EC6F3E
`-
--- udev 2005-10-10 19:02:43.000000000 +0200
+++ udev_fixed 2005-10-09 23:49:52.185663293 +0200
@@ -38,11 +38,11 @@
[ -e /etc/udev/links.conf ] || return 0
grep '^[^#]' /etc/udev/links.conf | \
while read type name arg1; do
- [ "$type" -a "$name" -a ! -e "/dev/$name" -a ! -L "/dev/$name" ] ||continue
+ [ "$type" -a "$name" ] ||continue
case "$type" in
- L) ln -s $arg1 /dev/$name ;;
- D) mkdir -p /dev/$name ;;
- M) mknod -m 600 /dev/$name $arg1 ;;
+ L) if [ ! -L /dev/$name ]; then ln -s $arg1 /dev/$name; fi ;;
+ D) if [ ! -d /dev/$name ]; then mkdir -p /dev/$name; fi ;;
+ M) if [ ! -e /dev/$name ]; then mknod --mode=600 /dev/$name $arg1; fi ;;
*) log_warning_msg "links.conf: unparseable line ($type $name $arg1)" ;;
esac
done
signature.asc
Description: Digital signature

