Subject: /dev/null symlink and suse_base
To: None <tech-pkg@NetBSD.org>
From: Dan McMahill <dmcmahill@NetBSD.org>
List: tech-pkg
Date: 07/04/2005 07:19:23
I've run into a compat_linux problem which stems from ${EMULDIR}/dev/null
being a symlink to /dev/null.

In the install target in emulators/suse_base/Makefile, this is done with:

${LN} -fs /dev/null ${EMULDIR}/dev/null

I've seen some linux programs which use realpath() and readlink() on
/dev/null.  The problem is when looking for /dev/null, compat_linux
will look for ${EMULDIR}/dev/null first and the program loops a whole
bunch of times until you get an error about too many symlinks.

I'm wondering if we should instead do something like

${CP} -p /dev/MAKEDEV ${EMULDIR}/dev
cd ${EMULDIR}/dev && ${SH} ./MAKEDEV std

or some such thing.  I tried just running

cd /emul/linux/dev && mknod -m 666 -g wheel -u root null c 2 2

to create a /dev/null in the emulation root which was not a symlink.
It seemed to have gotten past the problem I'd been having.

Does anyone see a problem with changing the suse_base and suse91_base
packages to do this?  Maybe there is a better fix?  Someone had suggested

cd /emul/linux/dev && ln -s ../../../dev/null

but that also failed.

Thanks
-Dan

--