MSYS2-packages/filesystem/01-devices.post
David Macek f77906b4a3 filesystem: Avoid trying to chmod /dev/{shm,mqueue}
Although the default and most used way to install MSYS2 is to have it
user-writable, some users prefer to have the root writable only to
admins.  In that case, the 01-devices.post script would always print out
two failures on "login" when trying to chmod /dev/{shm,mqueue}.  Since
the only supported configuration for MSYS2 is to mount `/` with noacl
where chmod() is a no-op, the failure is purely cosmetic, as is the
chmod invocation itself.  For these reasons, let's not chmod at all.

I'm aware the non-user-writable root configuration itself is not
officially supported either, but I've been using it like that for years
now and this is the only issue I know of, so I think it's reasonable to
resolve this.
2021-02-10 13:44:44 +01:00

93 lines
2.5 KiB
Plaintext

maybe_create_devs ()
{
local DEVDIR=/dev
# Check for ${DEVDIR} directory
if [ -e "${DEVDIR}" -a ! -d "${DEVDIR}" ]
then
# No mercy. Try to remove.
rm -f "${DEVDIR}"
if [ -e "${DEVDIR}" -a ! -d "${DEVDIR}" ]
then
echo
echo "${DEVDIR} is existant but not a directory."
echo "Please fix that manually, otherwise you WILL get problems."
echo
exit 1
fi
fi
# Create it if necessary
mkdir -m 755 "${DEVDIR}" 2> /dev/null
if [ ! -e "${DEVDIR}" ]
then
echo
echo "Creating ${DEVDIR} directory failed."
echo "Please fix that manually, otherwise you WILL get problems."
echo
exit 1
fi
# Check for ${DEVDIR}/shm directory (for POSIX semaphores and POSIX shared mem)
if [ -e "${DEVDIR}/shm" -a ! -d "${DEVDIR}/shm" ]
then
# No mercy. Try to remove.
rm -f "${DEVDIR}/shm"
if [ -e "${DEVDIR}/shm" -a ! -d "${DEVDIR}/shm" ]
then
echo
echo "${DEVDIR}/shm is existant but not a directory."
echo "POSIX semaphores and POSIX shared memory will not work"
echo
fi
fi
# Create it if necessary
if [ ! -e "${DEVDIR}/shm" ]
then
mkdir -m 1777 "${DEVDIR}/shm"
if [ ! -e "${DEVDIR}/shm" ]
then
echo
echo "Creating ${DEVDIR}/shm directory failed."
echo "POSIX semaphores and POSIX shared memory will not work"
echo
fi
fi
# Check for ${DEVDIR}/mqueue directory (for POSIX message queues)
if [ -e "${DEVDIR}/mqueue" -a ! -d "${DEVDIR}/mqueue" ]
then
# No mercy. Try to remove.
rm -f "${DEVDIR}/mqueue"
if [ -e "${DEVDIR}/mqueue" -a ! -d "${DEVDIR}/mqueue" ]
then
echo
echo "${DEVDIR}/mqueue is existant but not a directory."
echo "POSIX message queues will not work"
echo
fi
fi
# Create it if necessary
if [ ! -e "${DEVDIR}/mqueue" ]
then
mkdir -m 1777 "${DEVDIR}/mqueue"
if [ ! -e "${DEVDIR}/mqueue" ]
then
echo
echo "Creating ${DEVDIR}/mqueue directory failed."
echo "POSIX message queues will not work"
echo
fi
fi
# Install /dev/fd, /dev/std{in,out,err}. The bash builtin test was compiled
# to assume these exist, so use /bin/test to really check.
/usr/bin/test -h /dev/stdin || ln -sf /proc/self/fd/0 /dev/stdin
/usr/bin/test -h /dev/stdout || ln -sf /proc/self/fd/1 /dev/stdout
/usr/bin/test -h /dev/stderr || ln -sf /proc/self/fd/2 /dev/stderr
/usr/bin/test -h /dev/fd || ln -sf /proc/self/fd /dev/fd
}
maybe_create_devs