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.
93 lines
2.5 KiB
Plaintext
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
|