Installation permission bugs fixed.
git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@842 8092fc87-c524-0410-9efc-e669fe64eaf9
This commit is contained in:
@@ -186,38 +186,107 @@ build_check_compile() {
|
|||||||
local NAME
|
local NAME
|
||||||
eval NAME="\${${BUILD_PROJECT}_NAME}"
|
eval NAME="\${${BUILD_PROJECT}_NAME}"
|
||||||
[ ! -e "$NAME" ] || return
|
[ ! -e "$NAME" ] || return
|
||||||
|
~
|
||||||
build_compile || exit $?
|
build_compile || exit $?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Make a directory path, with mode and owner specified.
|
||||||
|
# $1 - name of directory path
|
||||||
|
# $2 - mode of the directories (may be empty)
|
||||||
|
# $3 - owner of the directories (may be empty)
|
||||||
|
mkdirhier() {
|
||||||
|
local REST DIR MODE OWNER
|
||||||
|
REST="$1"
|
||||||
|
MODE="$2"
|
||||||
|
OWNER="$3"
|
||||||
|
case "$REST" in
|
||||||
|
/*)
|
||||||
|
REST="${REST%/}"
|
||||||
|
DIR="/"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
DIR=""
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
case "$REST" in
|
||||||
|
*/)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
REST="${REST}/"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
while [ -n "$REST" ]; do
|
||||||
|
DIR="$DIR${REST%%/*}"
|
||||||
|
REST="${REST#*/}"
|
||||||
|
if [ ! -d "$DIR" ]; then
|
||||||
|
mkdir "$DIR"
|
||||||
|
[ -n "$MODE" ] && chmod "$MODE" -- "$DIR"
|
||||||
|
[ -n "$OWNER" ] && chown "$OWNER" -- "$DIR"
|
||||||
|
fi
|
||||||
|
DIR="${DIR}/"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Install a file or directory
|
||||||
|
# $1 - Source file/directory
|
||||||
|
# $2 - Destination directory/file
|
||||||
|
# $3 - Mode of destination file/directory
|
||||||
|
# $4 - Owner of destination file/directory
|
||||||
|
installsome() {
|
||||||
|
local SRC DEST MODE OWNDER DESTDIR SRCNAME
|
||||||
|
SRC="$1"
|
||||||
|
DEST="$2"
|
||||||
|
MODE="$3"
|
||||||
|
OWNDER="$4"
|
||||||
|
|
||||||
|
DESTDIR="${DEST%/*}"
|
||||||
|
if [ ! -d "$DESTDIR" ]; then
|
||||||
|
mkdirhier "$DESTDIR" 0755
|
||||||
|
fi
|
||||||
|
SRCNAME="${SRC##*/}"
|
||||||
|
cp -pr -- "$SRC" "$DEST"
|
||||||
|
if [ -n "$MODE" ]; then
|
||||||
|
if [ -d "$DEST" ]; then
|
||||||
|
chmod -R "$MODE" "${DEST}${SRCNAME}"
|
||||||
|
else
|
||||||
|
chmod "$MODE" "$DEST"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ -n "$OWNER" ]; then
|
||||||
|
if [ -d "$DEST" ]; then
|
||||||
|
chown -R "$OWNER" "${DEST}${SRCNAME}"
|
||||||
|
else
|
||||||
|
chown "$OWNER" "$DEST"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# Install the program
|
# Install the program
|
||||||
build_install() {
|
build_install() {
|
||||||
local BINS LIBS SRC DEST DESTDIR BINDIR LIBDIR
|
local BINS LIBS SRC SRCNAME DEST MODE OWNER BINDIR LIBDIR
|
||||||
|
|
||||||
echo "Installing libraries..." 2>&1
|
echo "Installing libraries..." 2>&1
|
||||||
eval LIBS="\${${BUILD_PROJECT}_INSTALL_LIBS}"
|
eval LIBS="\${${BUILD_PROJECT}_INSTALL_LIBS}"
|
||||||
eval LIBDIR="\${${BUILD_PROJECT}_INSTALL_LIBDIR%/}/"
|
eval LIBDIR="\${${BUILD_PROJECT}_INSTALL_LIBDIR%/}/"
|
||||||
|
mkdirhier "$LIBDIR" 0755
|
||||||
for LIB in $LIBS; do
|
for LIB in $LIBS; do
|
||||||
eval SRC="\${${BUILD_PROJECT}_INSTALL_LIB_${LIB}_SRC%/}"
|
eval SRC="\${${BUILD_PROJECT}_INSTALL_LIB_${LIB}_SRC%/}"
|
||||||
eval DEST="\$LIBDIR\${${BUILD_PROJECT}_INSTALL_LIB_${LIB}_DEST}"
|
eval DEST="\$LIBDIR\${${BUILD_PROJECT}_INSTALL_LIB_${LIB}_DEST}"
|
||||||
DESTDIR="${DEST%/*}"
|
eval MODE="\${${BUILD_PROJECT}_INSTALL_LIB_${LIB}_MODE}"
|
||||||
if [ ! -d "$DESTDIR" ]; then
|
eval OWNER="\${${BUILD_PROJECT}_INSTALL_LIB_${LIB}_OWNER}"
|
||||||
mkdir -p -- "$DESTDIR"
|
installsome "$SRC" "$DEST" "$MODE" "$OWNER"
|
||||||
fi
|
|
||||||
cp -pr -- "$SRC" "$DEST"
|
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "Installing binaries..." 2>&1
|
echo "Installing binaries..." 2>&1
|
||||||
eval BINS="\${${BUILD_PROJECT}_INSTALL_BINS}"
|
eval BINS="\${${BUILD_PROJECT}_INSTALL_BINS}"
|
||||||
eval BINDIR="\${${BUILD_PROJECT}_INSTALL_BINDIR%/}/"
|
eval BINDIR="\${${BUILD_PROJECT}_INSTALL_BINDIR%/}/"
|
||||||
|
mkdirhier "$BINDIR" 0755
|
||||||
for BIN in $BINS; do
|
for BIN in $BINS; do
|
||||||
eval SRC="\${${BUILD_PROJECT}_INSTALL_BIN_${BIN}_SRC%/}"
|
eval SRC="\${${BUILD_PROJECT}_INSTALL_BIN_${BIN}_SRC%/}"
|
||||||
eval DEST="\$BINDIR\${${BUILD_PROJECT}_INSTALL_BIN_${BIN}_DEST}"
|
eval DEST="\$BINDIR\${${BUILD_PROJECT}_INSTALL_BIN_${BIN}_DEST}"
|
||||||
DESTDIR="${DEST%/*}"
|
eval MODE="\${${BUILD_PROJECT}_INSTALL_BIN_${BIN}_MODE}"
|
||||||
if [ ! -d "$DESTDIR" ]; then
|
eval OWNER="\${${BUILD_PROJECT}_INSTALL_BIN_${BIN}_OWNER}"
|
||||||
mkdir -p -- "$DESTDIR"
|
installsome "$SRC" "$DEST" "$MODE" "$OWNER"
|
||||||
fi
|
|
||||||
cp -pr -- "$SRC" "$DEST"
|
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -242,8 +242,14 @@ for PACKAGE in `selected_packages`; do
|
|||||||
COMPFILE="$(package_filename $PACKAGE)"
|
COMPFILE="$(package_filename $PACKAGE)"
|
||||||
eval LOCATION="\$UQM_PACKAGE_${PACKAGE}_LOCATION"
|
eval LOCATION="\$UQM_PACKAGE_${PACKAGE}_LOCATION"
|
||||||
unzip -od "${PREFIX}${LOCATION}" "$COMPFILE"
|
unzip -od "${PREFIX}${LOCATION}" "$COMPFILE"
|
||||||
|
|
||||||
|
# Next line is a workaround, as the content zips have files
|
||||||
|
# with the wrong permissions in them. Should be fixed for the
|
||||||
|
# next release.
|
||||||
|
chmod go+rX "${PREFIX}${LOCATION}"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
echo "Unpacking other stuff..."
|
echo "Unpacking other stuff..."
|
||||||
tail -c @ATTACHLEN@ < "$0" | gzip -dc | tar -xf - -C "$PREFIX"
|
tail -c @ATTACHLEN@ < "$0" | gzip -dc | tar -xf - -C "$PREFIX"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user