When launching a custom msys2 environment, and it does "first-run" operations, it complains that: "cannot change permissions of '/dev/shm': Permission denied". This is related to the previous work in this area that happened in #2337: Since "/" is mounted with noacl and chmod() is a no-op, this error is cosmetic and can be removed. However, in #2337, the access modifying behaviour was not removed from the "mkdir" branch, which this patch aims to address.
93 lines
2.4 KiB
Plaintext
93 lines
2.4 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 "${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 "${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
|