#!/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"