#!/bin/sh if [ ! "@SUNSHINE_UNDEFINED_VARIABLE@" = "" ]; then echo "Please run gen-deb generated by cmake inside the build directory" exit 1 fi if [ -d package-deb ]; then echo "package-deb already exists: It will be replaced" rm -rf package-deb fi export DEBIAN=@CMAKE_CURRENT_BINARY_DIR@/package-deb/sunshine/DEBIAN export RULES=@CMAKE_CURRENT_BINARY_DIR@/package-deb/sunshine/etc/udev/rules.d export BIN=@CMAKE_CURRENT_BINARY_DIR@/package-deb/sunshine/usr/bin export SERVICE=@CMAKE_CURRENT_BINARY_DIR@/package-deb/sunshine/usr/lib/systemd/user export ASSETS=@CMAKE_CURRENT_BINARY_DIR@/package-deb/sunshine/etc/sunshine mkdir -p $DEBIAN mkdir -p $RULES mkdir -p $BIN mkdir -p $ASSETS/shaders mkdir -p $SERVICE if [ ! -f sunshine ]; then echo "Error: Can't find sunshine" exit 1 fi cat << 'EOF' > $DEBIAN/conffiles /etc/sunshine/sunshine.conf /etc/sunshine/apps_linux.json EOF cat << 'EOF' > $DEBIAN/control Package: sunshine Architecture: amd64 Maintainer: @loki Priority: optional Version: 0.11.0 Depends: libssl1.1, libavdevice58, libboost-thread1.67.0 | libboost-thread1.71.0 | libboost-thread1.74.0, libboost-filesystem1.67.0 | libboost-filesystem1.71.0 | libboost-filesystem1.74.0, libboost-log1.67.0 | libboost-log1.71.0 | libboost-log1.74.0, libpulse0, libopus0, libxcb-shm0, libxcb-xfixes0, libxtst6, libevdev2, libdrm2, libcap2 Description: Gamestream host for Moonlight EOF cat << 'EOF' > $DEBIAN/preinst #Store backup for old config files to prevent it from being overwritten if [ -f /etc/sunshine/sunshine.conf ]; then cp /etc/sunshine/sunshine.conf /etc/sunshine/sunshine.conf.old fi if [ -f /etc/sunshine/apps_linux.json ]; then cp /etc/sunshine/apps_linux.json /etc/sunshine/apps_linux.json.old fi EOF cat << 'EOF' > $DEBIAN/postinst #!/bin/sh export GROUP_INPUT=input if [ -f /etc/group ]; then if ! grep -q $GROUP_INPUT /etc/group; then echo "Creating group $GROUP_INPUT" groupadd $GROUP_INPUT fi else echo "Warning: /etc/group not found" fi if [ -f /etc/sunshine/sunshine.conf.old ]; then echo "Restoring old sunshine.conf" mv /etc/sunshine/sunshine.conf.old /etc/sunshine/sunshine.conf fi if [ -f /etc/sunshine/apps_linux.json.old ]; then echo "Restoring old apps_linux.json" mv /etc/sunshine/apps_linux.json.old /etc/sunshine/apps_linux.json fi # Update permissions on config files for Web Manager if [ -f /etc/sunshine/apps_linux.json ]; then echo "chmod 666 /etc/sunshine/apps_linux.json" chmod 666 /etc/sunshine/apps_linux.json fi if [ -f /etc/sunshine/sunshine.conf ]; then echo "chmod 666 /etc/sunshine/sunshine.conf" chmod 666 /etc/sunshine/sunshine.conf fi # Ensure Sunshine can grab images from KMS path_to_setcap=$(which setcap) if [ -x "$path_to_setcap" ] ; then echo "$path_to_setcap cap_sys_admin+p /usr/bin/sunshine" $path_to_setcap cap_sys_admin+p /usr/bin/sunshine fi EOF cat << 'EOF' > $RULES/85-sunshine-rules.rules KERNEL=="uinput", GROUP="input", MODE="0660" EOF cp sunshine $BIN/sunshine cp @CMAKE_CURRENT_SOURCE_DIR@/assets/apps_linux.json $ASSETS/apps_linux.json cp @CMAKE_CURRENT_SOURCE_DIR@/assets/sunshine.conf $ASSETS/sunshine.conf cp @CMAKE_CURRENT_BINARY_DIR@/sunshine.service $SERVICE/sunshine.service cp -r @CMAKE_CURRENT_SOURCE_DIR@/assets/web $ASSETS/web cp -r @CMAKE_CURRENT_SOURCE_DIR@/assets/shaders/opengl $ASSETS/shaders/opengl chmod 755 $DEBIAN/postinst chmod 755 $DEBIAN/preinst chmod 755 $BIN/sunshine chmod 644 $RULES/85-sunshine-rules.rules chmod 666 $ASSETS/apps_linux.json chmod 666 $ASSETS/sunshine.conf cd package-deb if fakeroot dpkg-deb --build sunshine; then echo "generated debian package: @CMAKE_CURRENT_BINARY_DIR@/package-deb/sunshine.deb" fi cd ..