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

Attachment: signature.asc
Description: Digital signature

Reply via email to