#!/bin/bash # fpm-bundle: create bundles for the app. # Add the user-level "gem install fpm" to the $PATH. # Might need fixing over time. export PATH="$PATH:$HOME/.local/share/gem/ruby/3.0.0/bin" INSTALL_ROOT="/opt/sketchy-maze" LAUNCHER_FILENAME="etc/linux/net.kirsle.ProjectDoodle.desktop" LAUNCHER_ROOT="/usr/share/applications" # Where the .desktop file goes. ICON_ROOT="/usr/share/icons/hicolor/" # Find out how many levels up we need to go, so this # script can run from either of these locations: # ./dist/sketchymaze-$version/ # ./dist/stage/$version/linux/ UPLEVELS="." if [[ -f "../../${LAUNCHER_FILENAME}" ]]; then # run from a ./dist/x folder. UPLEVELS="../.." elif [[ -f "../../../../${LAUNCHER_FILENAME}" ]]; then # run from a release stage folder UPLEVELS="../../../.." else echo Did not find ${LAUNCHER_FILENAME} relative to your working directory. echo Good places to run this script include: echo " * ./dist/sketchymaze-\$version/ (as in 'make dist')" echo " * ./dist/stage/\$version/linux/ (as in 'make release')" exit 1 fi VERSION=`egrep -e 'Version\s+=' ${UPLEVELS}/pkg/branding/branding.go | head -n 1 | cut -d '"' -f 2` LAUNCHER_FILE="${UPLEVELS}/${LAUNCHER_FILENAME}" if [[ ! -f "./sketchymaze" ]]; then echo Run this script from the directory containing the Doodle binary. echo This is usually at /dist/doodle-VERSION/ relative to the git root. exit 1 fi if [[ ! -f "$LAUNCHER_FILE" ]]; then echo "Didn't find Linux desktop launcher relative to current folder." echo "I looked at $LAUNCHER_FILE." exit 1 fi # Clean previous artifacts. rm *.rpm *.deb # Create the root structure. mkdir -p root mkdir -p root$INSTALL_ROOT root$LAUNCHER_ROOT cp * root$INSTALL_ROOT/ cp $LAUNCHER_FILE root$LAUNCHER_ROOT/ # Copy icons in. mkdir -p root$ICON_ROOT/{256x256,128x128,64x64,32x32,16x16}/apps cp ${UPLEVELS}/etc/icons/256.png "root${ICON_ROOT}256x256/apps/project-doodle.png" cp ${UPLEVELS}/etc/icons/128.png "root${ICON_ROOT}128x128/apps/project-doodle.png" cp ${UPLEVELS}/etc/icons/64.png "root$ICON_ROOT/64x64/apps/project-doodle.png" cp ${UPLEVELS}/etc/icons/32.png "root$ICON_ROOT/32x32/apps/project-doodle.png" cp ${UPLEVELS}/etc/icons/16.png "root$ICON_ROOT/16x16/apps/project-doodle.png" # Copy runtime package and guidebook cp -r guidebook rtp "root$INSTALL_ROOT/" echo ===================== echo Starting fpm package build. echo ===================== # Get the architecture we're building for, can be provided by # the user with ARCH_LABEL env variable, it'd be one of: # x86_64 # i386 # aarch64 if [[ "$ARCH_LABEL" == "" ]]; then ARCH_LABEL="64bit" case "$(uname -m)" in i?86) ARCH_LABEL="32bit" ;; aarch64) ARCH_LABEL="aarch64" ;; esac fi echo "Building packages for architecture $ARCH_LABEL" # Handle all architectures! Default x86_64 RPM_ARCH="x86_64" DEB_ARCH="x86_64" case "$ARCH_LABEL" in 64bit) RPM_ARCH="x86_64" DEB_ARCH="x86_64" ;; 32bit) RPM_ARCH="i386" DEB_ARCH="i386" ;; aarch64) RPM_ARCH="aarch64" DEB_ARCH="arm64" ;; esac # RPM Package fpm -C ./root -s dir -t rpm \ -d SDL2 -d SDL2_ttf -a $RPM_ARCH \ -n sketchy-maze -v ${VERSION} \ --license="Copyright" \ --maintainer=noah@kirsle.net \ --description="Sketchy Maze - A drawing-based maze game." \ --url="https://www.sketchymaze.com" # Debian Package # NOTE: ideally wanted to depend on libsdl2 etc. but it doesn't work # on Debian Buster to depend on either `libsdl2` or `libsdl2-2.0` nor # on either `libsdl2-ttf` or `libsdl2-ttf-2.0` so just remove deps # and let the user figure it out. fpm -C ./root -s dir -t deb \ -a $DEB_ARCH \ -n sketchy-maze -v ${VERSION} \ --license="Copyright" \ --maintainer=noah@kirsle.net \ --description="Sketchy Maze - A drawing-based maze game." \ --url="https://www.sketchymaze.com"