mirror of
https://gitlab.gnome.org/GNOME/gimp.git
synced 2025-07-03 17:33:25 +00:00

Apparently mktemp with busybox (and no GNU coreutils) requires mktemp template to be XXXXXX. Thanks to pippin for raising this issue.
77 lines
3.5 KiB
Bash
Executable file
77 lines
3.5 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
set -e
|
|
|
|
export GIMP3_DIRECTORY=$(mktemp -d ${GIMP_GLOBAL_BUILD_ROOT}/.GIMP3-build-config-XXXXXX)
|
|
echo INFO: temporary GIMP configuration directory: $GIMP3_DIRECTORY
|
|
|
|
if [ -n "$GIMP_TEMP_UPDATE_RPATH" ]; then
|
|
# Earlier code used to set DYLD_LIBRARY_PATH environment variable instead, but
|
|
# it didn't work on contributor's builds because of System Integrity
|
|
# Protection (SIP), though it did work in the CI.
|
|
export IFS=":"
|
|
for bin in $GIMP_TEMP_UPDATE_RPATH;
|
|
do
|
|
install_name_tool -add_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimp $bin
|
|
install_name_tool -add_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimpbase $bin
|
|
install_name_tool -add_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimpcolor $bin
|
|
install_name_tool -add_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimpconfig $bin
|
|
install_name_tool -add_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimpmath $bin
|
|
install_name_tool -add_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimpmodule $bin
|
|
install_name_tool -add_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimpthumb $bin
|
|
install_name_tool -add_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimpwidgets $bin
|
|
done;
|
|
unset IFS
|
|
fi
|
|
|
|
cat /dev/stdin | $GIMP_SELF_IN_BUILD "$@"
|
|
|
|
if [ -n "$GIMP_TEMP_UPDATE_RPATH" ]; then
|
|
export IFS=":"
|
|
for bin in $GIMP_TEMP_UPDATE_RPATH;
|
|
do
|
|
install_name_tool -delete_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimp $bin
|
|
install_name_tool -delete_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimpbase $bin
|
|
install_name_tool -delete_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimpcolor $bin
|
|
install_name_tool -delete_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimpconfig $bin
|
|
install_name_tool -delete_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimpmath $bin
|
|
install_name_tool -delete_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimpmodule $bin
|
|
install_name_tool -delete_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimpthumb $bin
|
|
install_name_tool -delete_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimpwidgets $bin
|
|
done;
|
|
unset IFS
|
|
fi
|
|
|
|
# Clean-up the temporary config directory after each usage, yet making sure we
|
|
# don't get tricked by weird redirections or anything of the sort. In particular
|
|
# we check that this is a directory with user permission, not a symlink, and
|
|
# that it's inside inside the project build's root.
|
|
if [ -n "$GIMP3_DIRECTORY" ] && [ -d "$GIMP3_DIRECTORY" ] && [ -O "$GIMP3_DIRECTORY" ]; then
|
|
if [ -L "$GIMP3_DIRECTORY" ]; then
|
|
echo "ERROR: \$GIMP3_DIRECTORY ($GIMP3_DIRECTORY) should not be a symlink."
|
|
exit 1
|
|
fi
|
|
used_dir_prefix=$(realpath "$GIMP3_DIRECTORY")
|
|
used_dir_prefix=${used_dir_prefix%??????}
|
|
tmpl_dir_prefix=$(realpath "$GIMP_GLOBAL_BUILD_ROOT")/.GIMP3-build-config-
|
|
if [ "$used_dir_prefix" != "$tmpl_dir_prefix" ]; then
|
|
echo "ERROR: \$GIMP3_DIRECTORY ($GIMP3_DIRECTORY) should be under the build directory with a specific prefix."
|
|
echo " \"$used_dir_prefix\" != \"$tmpl_dir_prefix\""
|
|
exit 1
|
|
fi
|
|
RM_OPTIONS=""
|
|
if [ -z "$GIMP_TEMP_UPDATE_RPATH" ]; then
|
|
# macOS doesn't have the additional security options.
|
|
# Testing for other OS or environments (apparently these options are
|
|
# not on busybox for instance).
|
|
echo "INFO: Testing if rm supports --preserve-root"
|
|
rm --help | grep no-preserve-root && RM_OPTIONS="--no-preserve-root"
|
|
echo "INFO: Testing if rm supports --one-file-system"
|
|
rm --help | grep one-file-system && RM_OPTIONS="$RM_OPTIONS --one-file-system"
|
|
fi
|
|
echo INFO: Running: rm -fr $RM_OPTIONS \"$GIMP3_DIRECTORY\"
|
|
rm -fr $RM_OPTIONS "$GIMP3_DIRECTORY"
|
|
else
|
|
echo "ERROR: \$GIMP3_DIRECTORY ($GIMP3_DIRECTORY) is not a directory or does not belong to the user"
|
|
exit 1
|
|
fi
|