Clean /usr/bin install: contents dir 'lib' + install.sh
This commit is contained in:
Executable
+81
@@ -0,0 +1,81 @@
|
||||
#!/bin/sh
|
||||
# Install the PSP Preservation Tool to a system prefix.
|
||||
#
|
||||
# FHS-friendly layout:
|
||||
# $PREFIX/bin/psp-preserve symlink -> payload binary
|
||||
# $PREFIX/lib/psp-preserve/ app payload (binary + lib/)
|
||||
# $PREFIX/share/applications/ desktop entry
|
||||
# $PREFIX/share/icons/hicolor/256x256/apps/ app icon
|
||||
#
|
||||
# The PyInstaller onedir build keeps the executable and its `lib/` contents
|
||||
# directory side by side, so both live under $PREFIX/lib/psp-preserve/ and a
|
||||
# symlink exposes the binary at $PREFIX/bin/psp-preserve.
|
||||
#
|
||||
# Usage (run from inside the extracted tarball):
|
||||
# sudo ./install.sh # install to /usr/local (default)
|
||||
# sudo ./install.sh --prefix=/usr # install to /usr
|
||||
# sudo ./install.sh --uninstall # remove from the default prefix
|
||||
set -eu
|
||||
|
||||
PREFIX=/usr/local
|
||||
MODE=install
|
||||
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
--prefix=*) PREFIX=${arg#--prefix=} ;;
|
||||
--uninstall) MODE=uninstall ;;
|
||||
*) echo "unknown argument: $arg" >&2; exit 2 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
SRC_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
|
||||
LIBDIR="$PREFIX/lib/psp-preserve"
|
||||
BINDIR="$PREFIX/bin"
|
||||
APPDIR="$PREFIX/share/applications"
|
||||
ICONDIR="$PREFIX/share/icons/hicolor/256x256/apps"
|
||||
APP_BIN="$LIBDIR/psp-preserve"
|
||||
|
||||
require_root() {
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
echo "run as root (e.g. sudo)" >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
uninstall() {
|
||||
rm -f "$BINDIR/psp-preserve"
|
||||
rm -f "$APPDIR/psp-preserve.desktop"
|
||||
rm -f "$ICONDIR/psp-preserve.png"
|
||||
rm -rf "$LIBDIR"
|
||||
echo "Uninstalled from $PREFIX"
|
||||
}
|
||||
|
||||
if [ "$MODE" = uninstall ]; then
|
||||
require_root
|
||||
uninstall
|
||||
exit 0
|
||||
fi
|
||||
|
||||
require_root
|
||||
|
||||
# The tarball ships these next to this script.
|
||||
for f in psp-preserve lib psp-preserve.desktop app-icon.png; do
|
||||
if [ ! -e "$SRC_DIR/$f" ]; then
|
||||
echo "missing $f (run install.sh from inside the extracted tarball)" >&2
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
mkdir -p "$LIBDIR" "$BINDIR" "$APPDIR" "$ICONDIR"
|
||||
rm -rf "$LIBDIR"
|
||||
mkdir -p "$LIBDIR"
|
||||
cp -a "$SRC_DIR/psp-preserve" "$LIBDIR/psp-preserve"
|
||||
cp -a "$SRC_DIR/lib" "$LIBDIR/lib"
|
||||
install -m 0644 "$SRC_DIR/psp-preserve.desktop" "$APPDIR/psp-preserve.desktop"
|
||||
install -m 0644 "$SRC_DIR/app-icon.png" "$ICONDIR/psp-preserve.png"
|
||||
ln -sfn "$APP_BIN" "$BINDIR/psp-preserve"
|
||||
|
||||
echo "Installed to $PREFIX"
|
||||
echo " binary: $BINDIR/psp-preserve -> $APP_BIN"
|
||||
echo " payload: $LIBDIR"
|
||||
echo " desktop: $APPDIR/psp-preserve.desktop"
|
||||
Reference in New Issue
Block a user