From f1b66babb1c1e2810602c6a0ee577002b3c3e382 Mon Sep 17 00:00:00 2001 From: miklo Date: Sat, 24 Jan 2026 11:36:51 +0000 Subject: [PATCH] initial version --- build-sideband-appimage.sh | 93 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 build-sideband-appimage.sh diff --git a/build-sideband-appimage.sh b/build-sideband-appimage.sh new file mode 100644 index 0000000..7d51813 --- /dev/null +++ b/build-sideband-appimage.sh @@ -0,0 +1,93 @@ +#!/bin/bash +set -euo pipefail + +# Application settings +APP_NAME="Sideband" +PKG_NAME="sbapp" +PY_VER="${PY_VER:-3.11}" +ARCH="${ARCH:-$(uname -m)}" +export ARCH + +# Directory structure +WORKDIR="${WORKDIR:-$PWD/_build_sideband_appimage}" +APPDIR="$WORKDIR/AppDir" +PY_DIR="$APPDIR/opt/python" +VENV_DIR="$APPDIR/usr/venv" + +# Tools and URLs +UV_BIN="${UV_BIN:-uv}" +APPIMAGETOOL_URL="${APPIMAGETOOL_URL:-https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-${ARCH}.AppImage}" +ICON_URL="https://raw.githubusercontent.com/markqvist/Sideband/main/sbapp/assets/icon.iconset/icon_256x256.png" + +# Cleanup and directory preparation +rm -rf "$WORKDIR" +mkdir -p "$APPDIR" +cd "$WORKDIR" + +echo "[1/7] Installing CPython ${PY_VER} into AppDir..." +"$UV_BIN" python install "$PY_VER" --install-dir "$PY_DIR" + +BASE_PYTHON_ABS="$(find "$PY_DIR" -type f -name "python${PY_VER}" | head -n1)" + +echo "[2/7] Creating venv and installing ${PKG_NAME}..." +"$UV_BIN" venv "$VENV_DIR" --python "$BASE_PYTHON_ABS" +"$UV_BIN" pip install "$PKG_NAME" --python "$VENV_DIR/bin/python" + +# Extract application version from the installed package +APP_VERSION=$("$VENV_DIR/bin/python" -c "import importlib.metadata; print(importlib.metadata.version('$PKG_NAME'))") +echo "Detected ${PKG_NAME} version: ${APP_VERSION}" + +echo "[3/7] Making venv relative for AppImage..." +pushd "$VENV_DIR/bin" > /dev/null +RELATIVE_PY_PATH=$(realpath --relative-to="." "$BASE_PYTHON_ABS") +ln -sf "$RELATIVE_PY_PATH" python +ln -sf "$RELATIVE_PY_PATH" python3 +ln -sf "$RELATIVE_PY_PATH" "python${PY_VER}" +popd > /dev/null + +# pyvenv.cfg correction for path +INTERNAL_PY_BIN_DIR="/opt/$(realpath --relative-to="$PY_DIR/.." "$(dirname "$BASE_PYTHON_ABS")")" +sed -i "s|^home = .*|home = $INTERNAL_PY_BIN_DIR|" "$VENV_DIR/pyvenv.cfg" +sed -i "s|^executable = .*|executable = /usr/venv/bin/python|" "$VENV_DIR/pyvenv.cfg" + +echo "[4/7] Creating AppRun script..." +cat > "$APPDIR/AppRun" < "$APPDIR/usr/share/applications/sideband.desktop" <