82 lines
2.2 KiB
Bash
Executable File
82 lines
2.2 KiB
Bash
Executable File
#!/bin/sh
|
|
# Install psppt to a system prefix.
|
|
#
|
|
# FHS-friendly layout:
|
|
# $PREFIX/bin/psppt symlink -> payload binary
|
|
# $PREFIX/lib/psppt/ 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/psppt/ and a
|
|
# symlink exposes the binary at $PREFIX/bin/psppt.
|
|
#
|
|
# 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/psppt"
|
|
BINDIR="$PREFIX/bin"
|
|
APPDIR="$PREFIX/share/applications"
|
|
ICONDIR="$PREFIX/share/icons/hicolor/256x256/apps"
|
|
APP_BIN="$LIBDIR/psppt"
|
|
|
|
require_root() {
|
|
if [ "$(id -u)" -ne 0 ]; then
|
|
echo "run as root (e.g. sudo)" >&2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
uninstall() {
|
|
rm -f "$BINDIR/psppt"
|
|
rm -f "$APPDIR/psppt.desktop"
|
|
rm -f "$ICONDIR/psppt.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 psppt lib psppt.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/psppt" "$LIBDIR/psppt"
|
|
cp -a "$SRC_DIR/lib" "$LIBDIR/lib"
|
|
install -m 0644 "$SRC_DIR/psppt.desktop" "$APPDIR/psppt.desktop"
|
|
install -m 0644 "$SRC_DIR/app-icon.png" "$ICONDIR/psppt.png"
|
|
ln -sfn "$APP_BIN" "$BINDIR/psppt"
|
|
|
|
echo "Installed to $PREFIX"
|
|
echo " binary: $BINDIR/psppt -> $APP_BIN"
|
|
echo " payload: $LIBDIR"
|
|
echo " desktop: $APPDIR/psppt.desktop"
|