79 lines
2.3 KiB
Bash
Executable File
79 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
APP_DIR="${APP_DIR:-$ROOT_DIR/dist/EGEditor}"
|
|
PACKAGE_NAME="${PACKAGE_NAME:-eg-editor}"
|
|
DISPLAY_NAME="${DISPLAY_NAME:-EG Editor}"
|
|
VERSION="${1:-${VERSION:-0.1.0}}"
|
|
ARCH="${ARCH:-$(dpkg-architecture -qDEB_HOST_ARCH 2>/dev/null || echo amd64)}"
|
|
MAINTAINER="${MAINTAINER:-EG Team <noreply@example.com>}"
|
|
DESCRIPTION="${DESCRIPTION:-EG 3D editor and engine packaged from the PyInstaller distribution directory.}"
|
|
|
|
INSTALL_DIR="/opt/${PACKAGE_NAME}"
|
|
STAGE_BASE="$ROOT_DIR/build/deb/${PACKAGE_NAME}_${VERSION}_${ARCH}"
|
|
PKG_ROOT="$STAGE_BASE/${PACKAGE_NAME}"
|
|
OUTPUT_DIR="${OUTPUT_DIR:-$ROOT_DIR/dist-deb}"
|
|
OUTPUT_FILE="$OUTPUT_DIR/${PACKAGE_NAME}_${VERSION}_${ARCH}.deb"
|
|
ICON_SOURCE="${ICON_SOURCE:-$ROOT_DIR/icons/logo.png}"
|
|
|
|
if [[ ! -x "$APP_DIR/EGEditor" ]]; then
|
|
echo "error: executable not found: $APP_DIR/EGEditor" >&2
|
|
echo "hint: build the PyInstaller bundle first, or set APP_DIR=/path/to/EGEditor" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [[ ! -f "$ICON_SOURCE" ]]; then
|
|
echo "error: icon not found: $ICON_SOURCE" >&2
|
|
exit 1
|
|
fi
|
|
|
|
rm -rf "$STAGE_BASE"
|
|
mkdir -p \
|
|
"$PKG_ROOT/DEBIAN" \
|
|
"$PKG_ROOT$INSTALL_DIR" \
|
|
"$PKG_ROOT/usr/bin" \
|
|
"$PKG_ROOT/usr/share/applications" \
|
|
"$PKG_ROOT/usr/share/pixmaps" \
|
|
"$OUTPUT_DIR"
|
|
|
|
cp -a "$APP_DIR/." "$PKG_ROOT$INSTALL_DIR/"
|
|
cp "$ICON_SOURCE" "$PKG_ROOT/usr/share/pixmaps/${PACKAGE_NAME}.png"
|
|
|
|
cat > "$PKG_ROOT/usr/bin/${PACKAGE_NAME}" <<EOF
|
|
#!/usr/bin/env bash
|
|
exec "${INSTALL_DIR}/EGEditor" "\$@"
|
|
EOF
|
|
chmod 0755 "$PKG_ROOT/usr/bin/${PACKAGE_NAME}"
|
|
|
|
cat > "$PKG_ROOT/usr/share/applications/${PACKAGE_NAME}.desktop" <<EOF
|
|
[Desktop Entry]
|
|
Version=1.0
|
|
Type=Application
|
|
Name=${DISPLAY_NAME}
|
|
Comment=Launch ${DISPLAY_NAME}
|
|
Exec=${PACKAGE_NAME}
|
|
Icon=${PACKAGE_NAME}
|
|
Terminal=false
|
|
Categories=Graphics;Development;
|
|
StartupNotify=true
|
|
EOF
|
|
chmod 0644 "$PKG_ROOT/usr/share/applications/${PACKAGE_NAME}.desktop"
|
|
|
|
cat > "$PKG_ROOT/DEBIAN/control" <<EOF
|
|
Package: ${PACKAGE_NAME}
|
|
Version: ${VERSION}
|
|
Section: graphics
|
|
Priority: optional
|
|
Architecture: ${ARCH}
|
|
Maintainer: ${MAINTAINER}
|
|
Depends: libc6 (>= 2.35), libgl1
|
|
Description: ${DISPLAY_NAME}
|
|
${DESCRIPTION}
|
|
EOF
|
|
chmod 0644 "$PKG_ROOT/DEBIAN/control"
|
|
|
|
dpkg-deb --build --root-owner-group "$PKG_ROOT" "$OUTPUT_FILE"
|
|
|
|
echo "built: $OUTPUT_FILE"
|