mirror of
https://github.com/LizardByte/Sunshine.git
synced 2025-03-25 13:43:33 +00:00
single AppImage file
- simplify cmake install prefix and assets directory
This commit is contained in:
parent
9a95ce5132
commit
8b0e6a28c2
30
.github/workflows/CI.yml
vendored
30
.github/workflows/CI.yml
vendored
@ -253,12 +253,8 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
include: # package these differently
|
include: # package these differently
|
||||||
- type: cpack
|
- type: cpack
|
||||||
CMAKE_INSTALL_PREFIX: '/usr'
|
|
||||||
SUNSHINE_ASSETS_DIR: 'local/sunshine/assets'
|
|
||||||
EXTRA_ARGS: ''
|
EXTRA_ARGS: ''
|
||||||
- type: appimage
|
- type: appimage
|
||||||
CMAKE_INSTALL_PREFIX: '/usr'
|
|
||||||
SUNSHINE_ASSETS_DIR: 'sunshine.AppImage.config'
|
|
||||||
EXTRA_ARGS: '-DSUNSHINE_CONFIGURE_APPIMAGE=ON'
|
EXTRA_ARGS: '-DSUNSHINE_CONFIGURE_APPIMAGE=ON'
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
@ -278,7 +274,6 @@ jobs:
|
|||||||
build-essential \
|
build-essential \
|
||||||
cmake \
|
cmake \
|
||||||
gcc-10 \
|
gcc-10 \
|
||||||
git \
|
|
||||||
g++-10 \
|
g++-10 \
|
||||||
libavdevice-dev \
|
libavdevice-dev \
|
||||||
libboost-filesystem-dev \
|
libboost-filesystem-dev \
|
||||||
@ -341,8 +336,8 @@ jobs:
|
|||||||
|
|
||||||
cd build
|
cd build
|
||||||
cmake -DCMAKE_BUILD_TYPE=Release \
|
cmake -DCMAKE_BUILD_TYPE=Release \
|
||||||
-DCMAKE_INSTALL_PREFIX=${{ matrix.CMAKE_INSTALL_PREFIX }} \
|
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||||
-DSUNSHINE_ASSETS_DIR=${{ matrix.SUNSHINE_ASSETS_DIR }} \
|
-DSUNSHINE_ASSETS_DIR=share/sunshine \
|
||||||
-DSUNSHINE_EXECUTABLE_PATH=/usr/bin/sunshine \
|
-DSUNSHINE_EXECUTABLE_PATH=/usr/bin/sunshine \
|
||||||
-DSUNSHINE_ENABLE_WAYLAND=ON \
|
-DSUNSHINE_ENABLE_WAYLAND=ON \
|
||||||
-DSUNSHINE_ENABLE_X11=ON \
|
-DSUNSHINE_ENABLE_X11=ON \
|
||||||
@ -377,9 +372,9 @@ jobs:
|
|||||||
# install sunshine to the DESTDIR
|
# install sunshine to the DESTDIR
|
||||||
make install DESTDIR=AppDir
|
make install DESTDIR=AppDir
|
||||||
|
|
||||||
# portable config (assets directory)
|
# custom AppRun file
|
||||||
# todo - this is ugly... we should use a custom AppRun script to take care of this
|
cp -f ../packaging/linux/AppImage/AppRun ./AppDir/
|
||||||
mv ./AppDir${{ matrix.CMAKE_INSTALL_PREFIX }}/sunshine.AppImage.* ../artifacts/
|
chmod +x ./AppDir/AppRun
|
||||||
|
|
||||||
# variables
|
# variables
|
||||||
DESKTOP_FILE="${DESKTOP_FILE:-sunshine.desktop}"
|
DESKTOP_FILE="${DESKTOP_FILE:-sunshine.desktop}"
|
||||||
@ -424,13 +419,13 @@ jobs:
|
|||||||
|
|
||||||
./appimagelint-x86_64.AppImage ./artifacts/sunshine.AppImage
|
./appimagelint-x86_64.AppImage ./artifacts/sunshine.AppImage
|
||||||
|
|
||||||
- name: Archive AppImage
|
# - name: Archive AppImage
|
||||||
if: ${{ matrix.type == 'appimage' }}
|
# if: ${{ matrix.type == 'appimage' }}
|
||||||
working-directory: artifacts
|
# working-directory: artifacts
|
||||||
run: |
|
# run: |
|
||||||
chmod +x ./sunshine.AppImage
|
# chmod +x ./sunshine.AppImage
|
||||||
|
#
|
||||||
zip --recurse-paths --move --test ./sunshine-appimage.zip ./*
|
# zip --recurse-paths --move --test ./sunshine-appimage.zip ./*
|
||||||
|
|
||||||
- name: Upload Artifacts
|
- name: Upload Artifacts
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v3
|
||||||
@ -473,6 +468,7 @@ jobs:
|
|||||||
cmake -DCMAKE_BUILD_TYPE=Release \
|
cmake -DCMAKE_BUILD_TYPE=Release \
|
||||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||||
-DSUNSHINE_ASSETS_DIR=local/sunshine/assets \
|
-DSUNSHINE_ASSETS_DIR=local/sunshine/assets \
|
||||||
|
-DSUNSHINE_EXECUTABLE_PATH=/usr/bin/sunshine \
|
||||||
..
|
..
|
||||||
make -j ${nproc}
|
make -j ${nproc}
|
||||||
|
|
||||||
|
@ -93,7 +93,7 @@ if(WIN32)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_compile_definitions(SUNSHINE_PLATFORM="windows")
|
add_compile_definitions(SUNSHINE_PLATFORM="windows")
|
||||||
add_subdirectory(tools) #This is temporary, only tools for Windows are needed, for now
|
add_subdirectory(tools) # This is temporary, only tools for Windows are needed, for now
|
||||||
|
|
||||||
include_directories(third-party/ViGEmClient/include)
|
include_directories(third-party/ViGEmClient/include)
|
||||||
|
|
||||||
@ -421,14 +421,23 @@ else()
|
|||||||
list(APPEND SUNSHINE_COMPILE_OPTIONS -O3)
|
list(APPEND SUNSHINE_COMPILE_OPTIONS -O3)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# setup assets directory
|
||||||
if(NOT SUNSHINE_ASSETS_DIR)
|
if(NOT SUNSHINE_ASSETS_DIR)
|
||||||
set(SUNSHINE_ASSETS_DIR "${CMAKE_CURRENT_BINARY_DIR}/assets")
|
set(SUNSHINE_ASSETS_DIR "assets")
|
||||||
endif()
|
endif()
|
||||||
|
if(UNIX)
|
||||||
if(UNIX AND CMAKE_INSTALL_PREFIX AND NOT ${SUNSHINE_CONFIGURE_APPIMAGE})
|
|
||||||
set(SUNSHINE_ASSETS_DIR "${CMAKE_INSTALL_PREFIX}/${SUNSHINE_ASSETS_DIR}")
|
set(SUNSHINE_ASSETS_DIR "${CMAKE_INSTALL_PREFIX}/${SUNSHINE_ASSETS_DIR}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# use relative assets path for AppImage... maybe for all unix
|
||||||
|
if(${SUNSHINE_CONFIGURE_APPIMAGE})
|
||||||
|
string(REPLACE "${CMAKE_INSTALL_PREFIX}" ".${CMAKE_INSTALL_PREFIX}" SUNSHINE_ASSETS_DIR_DEF ${SUNSHINE_ASSETS_DIR})
|
||||||
|
else()
|
||||||
|
set(SUNSHINE_ASSETS_DIR_DEF "${SUNSHINE_ASSETS_DIR}")
|
||||||
|
endif()
|
||||||
|
list(APPEND SUNSHINE_DEFINITIONS SUNSHINE_ASSETS_DIR="${SUNSHINE_ASSETS_DIR_DEF}")
|
||||||
|
|
||||||
|
|
||||||
list(APPEND CBS_EXTERNAL_LIBRARIES
|
list(APPEND CBS_EXTERNAL_LIBRARIES
|
||||||
cbs)
|
cbs)
|
||||||
|
|
||||||
@ -447,7 +456,6 @@ if(NOT WIN32)
|
|||||||
list(APPEND SUNSHINE_EXTERNAL_LIBRARIES Boost::log)
|
list(APPEND SUNSHINE_EXTERNAL_LIBRARIES Boost::log)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
list(APPEND SUNSHINE_DEFINITIONS SUNSHINE_ASSETS_DIR="${SUNSHINE_ASSETS_DIR}")
|
|
||||||
add_executable(sunshine ${SUNSHINE_TARGET_FILES})
|
add_executable(sunshine ${SUNSHINE_TARGET_FILES})
|
||||||
target_link_libraries(sunshine ${SUNSHINE_EXTERNAL_LIBRARIES} ${EXTRA_LIBS})
|
target_link_libraries(sunshine ${SUNSHINE_EXTERNAL_LIBRARIES} ${EXTRA_LIBS})
|
||||||
target_compile_definitions(sunshine PUBLIC ${SUNSHINE_DEFINITIONS})
|
target_compile_definitions(sunshine PUBLIC ${SUNSHINE_DEFINITIONS})
|
||||||
@ -501,8 +509,8 @@ if(WIN32) # see options at: https://cmake.org/cmake/help/latest/cpack_gen/nsis.h
|
|||||||
# set(CPACK_NSIS_MUI_HEADERIMAGE "") # TODO: image should be 150x57 bmp
|
# set(CPACK_NSIS_MUI_HEADERIMAGE "") # TODO: image should be 150x57 bmp
|
||||||
set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\sunshine.ico")
|
set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\sunshine.ico")
|
||||||
set(CPACK_NSIS_INSTALLED_ICON_NAME "${PROJECT__DIR}\\\\${PROJECT_EXE}")
|
set(CPACK_NSIS_INSTALLED_ICON_NAME "${PROJECT__DIR}\\\\${PROJECT_EXE}")
|
||||||
set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_NAME}") # The name of the directory that will be created in C:/Program files/
|
set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_NAME}") # The name of the directory that will be created in C:/Program files/
|
||||||
string(APPEND CPACK_NSIS_DEFINES "\n RequestExecutionLevel admin") # TODO: Not sure if this is needed but it took me a while to figure out where to put this option so I'm leaving it here
|
string(APPEND CPACK_NSIS_DEFINES "\n RequestExecutionLevel admin") # TODO: Not sure if this is needed but it took me a while to figure out where to put this option so I'm leaving it here
|
||||||
|
|
||||||
# Sets permissions on the installed folder so that we can write in it
|
# Sets permissions on the installed folder so that we can write in it
|
||||||
SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS
|
SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS
|
||||||
@ -514,11 +522,11 @@ if(WIN32) # see options at: https://cmake.org/cmake/help/latest/cpack_gen/nsis.h
|
|||||||
set(CPACK_NSIS_MODIFY_PATH "OFF") # TODO: it asks to add it to the PATH but is not working https://gitlab.kitware.com/cmake/cmake/-/issues/15635
|
set(CPACK_NSIS_MODIFY_PATH "OFF") # TODO: it asks to add it to the PATH but is not working https://gitlab.kitware.com/cmake/cmake/-/issues/15635
|
||||||
set(CPACK_NSIS_EXECUTABLES_DIRECTORY ".")
|
set(CPACK_NSIS_EXECUTABLES_DIRECTORY ".")
|
||||||
set(CPACK_NSIS_MUI_FINISHPAGE_RUN "${CMAKE_PROJECT_NAME}.exe")
|
set(CPACK_NSIS_MUI_FINISHPAGE_RUN "${CMAKE_PROJECT_NAME}.exe")
|
||||||
set(CPACK_NSIS_INSTALLED_ICON_NAME "${CMAKE_PROJECT_NAME}.exe") # This will be shown on the installed apps Windows settings
|
set(CPACK_NSIS_INSTALLED_ICON_NAME "${CMAKE_PROJECT_NAME}.exe") # This will be shown on the installed apps Windows settings
|
||||||
set(CPACK_NSIS_CREATE_ICONS "CreateShortCut '\$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\${CMAKE_PROJECT_NAME}.lnk' '\$INSTDIR\\\\${CMAKE_PROJECT_NAME}.exe'")
|
set(CPACK_NSIS_CREATE_ICONS "CreateShortCut '\$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\${CMAKE_PROJECT_NAME}.lnk' '\$INSTDIR\\\\${CMAKE_PROJECT_NAME}.exe'")
|
||||||
|
|
||||||
# Checking for previous installed versions
|
# Checking for previous installed versions
|
||||||
# set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL "ON") # TODO: doesn't work on my machine when Sunshine is already installed
|
# set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL "ON") # TODO: doesn't work on my machine when Sunshine is already installed
|
||||||
|
|
||||||
# Setting components groups and dependencies
|
# Setting components groups and dependencies
|
||||||
# sunshine binary
|
# sunshine binary
|
||||||
@ -556,7 +564,7 @@ if(APPLE)
|
|||||||
set(CPACK_BUNDLE_ICON "${PROJECT_SOURCE_DIR}/sunshine.icns")
|
set(CPACK_BUNDLE_ICON "${PROJECT_SOURCE_DIR}/sunshine.icns")
|
||||||
# set(CPACK_BUNDLE_STARTUP_COMMAND "${INSTALL_RUNTIME_DIR}/sunshine")
|
# set(CPACK_BUNDLE_STARTUP_COMMAND "${INSTALL_RUNTIME_DIR}/sunshine")
|
||||||
endif()
|
endif()
|
||||||
if(APPLE AND SUNSHINE_MACOS_PACKAGE) # TODO
|
if(APPLE AND SUNSHINE_MACOS_PACKAGE) # TODO
|
||||||
set(prefix "${CMAKE_PROJECT_NAME}.app/Contents")
|
set(prefix "${CMAKE_PROJECT_NAME}.app/Contents")
|
||||||
set(INSTALL_RUNTIME_DIR "${prefix}/MacOS")
|
set(INSTALL_RUNTIME_DIR "${prefix}/MacOS")
|
||||||
|
|
||||||
@ -570,7 +578,7 @@ elseif(UNIX)
|
|||||||
# Installation destination dir
|
# Installation destination dir
|
||||||
set(CPACK_SET_DESTDIR true)
|
set(CPACK_SET_DESTDIR true)
|
||||||
if(NOT CMAKE_INSTALL_PREFIX)
|
if(NOT CMAKE_INSTALL_PREFIX)
|
||||||
set(CMAKE_INSTALL_PREFIX "/usr/local/sunshine")
|
set(CMAKE_INSTALL_PREFIX "/usr/share/sunshine")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
install(TARGETS sunshine RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
install(TARGETS sunshine RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
||||||
@ -582,8 +590,13 @@ elseif(UNIX)
|
|||||||
install(FILES "${SUNSHINE_SOURCE_ASSETS_DIR}/macos/misc/uninstall_pkg.sh" DESTINATION "${SUNSHINE_ASSETS_DIR}")
|
install(FILES "${SUNSHINE_SOURCE_ASSETS_DIR}/macos/misc/uninstall_pkg.sh" DESTINATION "${SUNSHINE_ASSETS_DIR}")
|
||||||
else()
|
else()
|
||||||
install(DIRECTORY "${SUNSHINE_SOURCE_ASSETS_DIR}/linux/assets/" DESTINATION "${SUNSHINE_ASSETS_DIR}")
|
install(DIRECTORY "${SUNSHINE_SOURCE_ASSETS_DIR}/linux/assets/" DESTINATION "${SUNSHINE_ASSETS_DIR}")
|
||||||
install(FILES "${SUNSHINE_SOURCE_ASSETS_DIR}/linux/misc/85-sunshine.rules" DESTINATION "${CMAKE_INSTALL_LIBDIR}/udev/rules.d")
|
if(${SUNSHINE_CONFIGURE_APPIMAGE})
|
||||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/sunshine.service" DESTINATION "${CMAKE_INSTALL_LIBDIR}/systemd/user")
|
install(FILES "${SUNSHINE_SOURCE_ASSETS_DIR}/linux/misc/85-sunshine.rules" DESTINATION "${SUNSHINE_ASSETS_DIR}/udev/rules.d")
|
||||||
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/sunshine.service" DESTINATION "${SUNSHINE_ASSETS_DIR}/systemd/user")
|
||||||
|
else()
|
||||||
|
install(FILES "${SUNSHINE_SOURCE_ASSETS_DIR}/linux/misc/85-sunshine.rules" DESTINATION "${CMAKE_INSTALL_LIBDIR}/udev/rules.d")
|
||||||
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/sunshine.service" DESTINATION "${CMAKE_INSTALL_LIBDIR}/systemd/user")
|
||||||
|
endif()
|
||||||
|
|
||||||
# Post install
|
# Post install
|
||||||
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${SUNSHINE_SOURCE_ASSETS_DIR}/linux/misc/postinst")
|
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${SUNSHINE_SOURCE_ASSETS_DIR}/linux/misc/postinst")
|
||||||
@ -593,7 +606,7 @@ elseif(UNIX)
|
|||||||
set(CPACK_DEB_COMPONENT_INSTALL ON)
|
set(CPACK_DEB_COMPONENT_INSTALL ON)
|
||||||
set(CPACK_DEBIAN_PACKAGE_DEPENDS "openssl, 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")
|
set(CPACK_DEBIAN_PACKAGE_DEPENDS "openssl, 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")
|
||||||
set(CPACK_RPM_PACKAGE_REQUIRES "openssl >= 1.1, libavdevice >= 4.3, boost-thread >= 1.67.0, boost-filesystem >= 1.67.0, boost-log >= 1.67.0, pulseaudio-libs >= 10.0, libopusenc >= 0.2.1, libxcb >= 1.13, libXtst >= 1.2.3, libevdev >= 1.5.6, libdrm >= 2.4.97, libcap >= 2.22")
|
set(CPACK_RPM_PACKAGE_REQUIRES "openssl >= 1.1, libavdevice >= 4.3, boost-thread >= 1.67.0, boost-filesystem >= 1.67.0, boost-log >= 1.67.0, pulseaudio-libs >= 10.0, libopusenc >= 0.2.1, libxcb >= 1.13, libXtst >= 1.2.3, libevdev >= 1.5.6, libdrm >= 2.4.97, libcap >= 2.22")
|
||||||
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS OFF) # This should automatically figure out dependencies, doesn't work with the current config
|
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS OFF) # This should automatically figure out dependencies, doesn't work with the current config
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
110
packaging/linux/AppImage/AppRun
Normal file
110
packaging/linux/AppImage/AppRun
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# custom AppRun for Sunshine AppImage
|
||||||
|
|
||||||
|
# path of the extracted AppRun
|
||||||
|
HERE="$(dirname "$(readlink -f "${0}")")"
|
||||||
|
SUNSHINE_PATH=/usr/bin/sunshine
|
||||||
|
SUNSHINE_BIN_HERE=$HERE/usr/bin/sunshine
|
||||||
|
SUNSHINE_SHARE_HERE=$HERE/usr/share/sunshine
|
||||||
|
|
||||||
|
# Set APPDIR when running directly from the AppDir:
|
||||||
|
if [ -z "$APPDIR" ]; then
|
||||||
|
ARGV0="AppRun"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd "$HERE" || exit 1
|
||||||
|
|
||||||
|
function help() {
|
||||||
|
echo "
|
||||||
|
------------------------------
|
||||||
|
Sunshine AppImage package.
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
sunshine.AppImage options
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
Usage: $ARGV0 --help, -h
|
||||||
|
------ # This message
|
||||||
|
|
||||||
|
$ARGV0 --install, -i
|
||||||
|
# Install input rules sunshine.service files. Restart required.
|
||||||
|
|
||||||
|
$ARGV0 --remove, -r
|
||||||
|
# Remove input rules sunshine.service files.
|
||||||
|
|
||||||
|
$ARGV0 --appimage-help
|
||||||
|
# Show available AppImage options
|
||||||
|
|
||||||
|
sunshine options
|
||||||
|
----------------
|
||||||
|
"
|
||||||
|
# print sunshine binary help, replacing the sunshine command in usage statement
|
||||||
|
"$SUNSHINE_BIN_HERE" --help | sed -e "s#$SUNSHINE_BIN_HERE#$ARGV0#g"
|
||||||
|
}
|
||||||
|
|
||||||
|
function install() {
|
||||||
|
# user input rules
|
||||||
|
sudo usermod -a -G input $USER
|
||||||
|
# shellcheck disable=SC2002
|
||||||
|
cat "$SUNSHINE_SHARE_HERE/udev/rules.d/85-sunshine.rules" | sudo tee /etc/udev/85-sunshine.rules
|
||||||
|
|
||||||
|
# sunshine service
|
||||||
|
mkdir -p ~/.config/systemd/user
|
||||||
|
cp -r "$SUNSHINE_SHARE_HERE/systemd/user/" ~/.config/systemd/
|
||||||
|
# patch service executable path
|
||||||
|
sed -i -e "s#$SUNSHINE_PATH#$(readlink -f $ARGV0)#g" ~/.config/systemd/user/sunshine.service
|
||||||
|
|
||||||
|
# setcap
|
||||||
|
sudo setcap cap_sys_admin+p "$(readlink -f "$SUNSHINE_BIN_HERE")"
|
||||||
|
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
read -r -p "This installation requires a reboot. Do you want to reboot NOW? [y/n] " input
|
||||||
|
|
||||||
|
case $input in
|
||||||
|
[yY][eE][sS]|[yY])
|
||||||
|
echo "Yes"
|
||||||
|
sudo reboot now
|
||||||
|
;;
|
||||||
|
[nN][oO]|[nN])
|
||||||
|
echo "No"
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Invalid input..."
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function remove() {
|
||||||
|
# remove input rules
|
||||||
|
sudo rm -f /etc/udev/rules.d/85-sunshine.rules
|
||||||
|
|
||||||
|
# remove service
|
||||||
|
sudo rm -f ~/.config/systemd/user/sunshine.service
|
||||||
|
}
|
||||||
|
|
||||||
|
# process arguments
|
||||||
|
if [ "x$1" == "xhelp" ] || [ "x$1" == "x--help" ] || [ "x$1" == "x-h" ] ; then
|
||||||
|
help
|
||||||
|
exit $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "x$1" == "xinstall" ] || [ "x$1" == "x--install" ] || [ "x$1" == "x-i" ] ; then
|
||||||
|
install
|
||||||
|
exit $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "x$1" == "xremove" ] || [ "x$1" == "x--remove" ] || [ "x$1" == "x-r" ] ; then
|
||||||
|
remove
|
||||||
|
exit $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
# create config directory if it doesn't exist
|
||||||
|
# https://github.com/LizardByte/Sunshine/issues/324
|
||||||
|
mkdir -p ~/.config/sunshine
|
||||||
|
|
||||||
|
# run sunshine
|
||||||
|
"$SUNSHINE_BIN_HERE" $@
|
@ -33,8 +33,7 @@ build() {
|
|||||||
-B build \
|
-B build \
|
||||||
-Wno-dev \
|
-Wno-dev \
|
||||||
-D SUNSHINE_EXECUTABLE_PATH=/usr/bin/sunshine \
|
-D SUNSHINE_EXECUTABLE_PATH=/usr/bin/sunshine \
|
||||||
-D CMAKE_INSTALL_PREFIX="/usr" \
|
-D SUNSHINE_ASSETS_DIR="assets" \
|
||||||
-D SUNSHINE_ASSETS_DIR="share/sunshine/assets" \
|
|
||||||
-D LIBAVCODEC_INCLUDE_DIR=/usr/include/ffmpeg4.4 \
|
-D LIBAVCODEC_INCLUDE_DIR=/usr/include/ffmpeg4.4 \
|
||||||
-D LIBAVCODEC_LIBRARIES=/usr/lib/ffmpeg4.4/libavcodec.so \
|
-D LIBAVCODEC_LIBRARIES=/usr/lib/ffmpeg4.4/libavcodec.so \
|
||||||
-D LIBAVDEVICE_INCLUDE_DIR=/usr/include/ffmpeg4.4 \
|
-D LIBAVDEVICE_INCLUDE_DIR=/usr/include/ffmpeg4.4 \
|
||||||
|
@ -202,7 +202,7 @@ modules:
|
|||||||
- -DCMAKE_BUILD_TYPE=Release
|
- -DCMAKE_BUILD_TYPE=Release
|
||||||
- -DCMAKE_INSTALL_PREFIX=/app
|
- -DCMAKE_INSTALL_PREFIX=/app
|
||||||
- -DCMAKE_CUDA_COMPILER=/app/cuda/bin/nvcc
|
- -DCMAKE_CUDA_COMPILER=/app/cuda/bin/nvcc
|
||||||
- -DSUNSHINE_ASSETS_DIR=assets
|
- -DSUNSHINE_ASSETS_DIR=share/sunshine
|
||||||
- -DSUNSHINE_EXECUTABLE_PATH=/app/bin/sunshine
|
- -DSUNSHINE_EXECUTABLE_PATH=/app/bin/sunshine
|
||||||
- -DSUNSHINE_ENABLE_WAYLAND=ON
|
- -DSUNSHINE_ENABLE_WAYLAND=ON
|
||||||
- -DSUNSHINE_ENABLE_X11=ON
|
- -DSUNSHINE_ENABLE_X11=ON
|
||||||
|
@ -911,7 +911,7 @@ int parse(int argc, char *argv[]) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(!fs::exists(sunshine.config_file)) {
|
if(!fs::exists(sunshine.config_file)) {
|
||||||
fs::copy_file(SUNSHINE_ASSETS_DIR "/sunshine.conf", sunshine.config_file);
|
std::ofstream { sunshine.config_file }; // create empty config file
|
||||||
}
|
}
|
||||||
|
|
||||||
auto vars = parse_config(read_file(sunshine.config_file.c_str()));
|
auto vars = parse_config(read_file(sunshine.config_file.c_str()));
|
||||||
|
@ -1 +0,0 @@
|
|||||||
# See our documentation at https://docs.lizardbyte.dev/projects/sunshine
|
|
@ -6,41 +6,10 @@ package_name=org.macports.Sunshine
|
|||||||
echo "Removing files now..."
|
echo "Removing files now..."
|
||||||
FILES=$(pkgutil --files $package_name --only-files)
|
FILES=$(pkgutil --files $package_name --only-files)
|
||||||
|
|
||||||
remove_config=True
|
|
||||||
remove_apps=True
|
|
||||||
|
|
||||||
for file in ${FILES}; do
|
for file in ${FILES}; do
|
||||||
file="/$file"
|
file="/$file"
|
||||||
remove_current=True
|
echo "removing: $file"
|
||||||
if [[ $file == *sunshine.conf ]]; then
|
rm -f "$file"
|
||||||
if [[ $remove_config == True ]]; then
|
|
||||||
while true; do
|
|
||||||
read -p -r "Do you wish to remove 'sunshine.conf'?" yn
|
|
||||||
case $yn in
|
|
||||||
[Yy]* ) echo "removing: $file"; rm -f "$file"; break;;
|
|
||||||
[Nn]* ) remove_config=False; remove_current=False; break;;
|
|
||||||
* ) echo "Please answer yes or no.";;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [[ $file == *apps.json ]]; then
|
|
||||||
if [[ $remove_apps == True ]]; then
|
|
||||||
while true; do
|
|
||||||
read -p -r "Do you wish to remove 'apps.conf'?" yn
|
|
||||||
case $yn in
|
|
||||||
[Yy]* ) echo "removing: $file"; rm -f "$file"; break;;
|
|
||||||
[Nn]* ) remove_apps=False; remove_current=False; break;;
|
|
||||||
* ) echo "Please answer yes or no.";;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $remove_current == True ]]; then
|
|
||||||
echo "removing: $file"
|
|
||||||
rm -f "$file"
|
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "Removing directories now..."
|
echo "Removing directories now..."
|
||||||
|
Loading…
x
Reference in New Issue
Block a user