Merge pull request #195 from SunshineStream/add-flatpak

Initial flatpak packaging
This commit is contained in:
ReenigneArcher 2022-06-18 11:59:00 -04:00 committed by GitHub
commit 12a361a3d9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 428 additions and 83 deletions

View File

@ -52,6 +52,94 @@ jobs:
echo Within 'CMakeLists.txt' change "project(Sunshine [VERSION $cmakelists_version]" to "project(Sunshine [VERSION ${{ needs.check_changelog.outputs.next_version_bare }}]" echo Within 'CMakeLists.txt' change "project(Sunshine [VERSION $cmakelists_version]" to "project(Sunshine [VERSION ${{ needs.check_changelog.outputs.next_version_bare }}]"
exit 1 exit 1
build_linux_flatpak:
name: Linux Flatpak
runs-on: ubuntu-18.04
needs: check_changelog
steps:
- name: Maximize build space
uses: easimon/maximize-build-space@master
with:
root-reserve-mb: 2048
swap-size-mb: 8192
remove-dotnet: 'true'
remove-android: 'true'
remove-haskell: 'true'
- name: Cache flatpak-builder
uses: actions/cache@v3
with:
path: ./build/.flatpak-builder/build
key: ${{ runner.os }}-flatpak-builder
- name: Checkout
uses: actions/checkout@v3
- name: Setup Dependencies Linux Flatpak
run: |
sudo add-apt-repository ppa:flatpak/stable -y
sudo apt-get update -y
sudo apt-get install -y \
cmake \
flatpak \
flatpak-builder
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
sudo flatpak install flathub org.freedesktop.Platform//21.08 org.freedesktop.Sdk//21.08 -y
- name: Configure Flatpak Manifest
run: |
# variables for manifest
owner=$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]' )
repo=$(echo ${GITHUB_REPOSITORY#*/} | tr '[:upper:]' '[:lower:]' )
branch=${GITHUB_HEAD_REF}
commit=${{ github.event.pull_request.head.sha }}
# check the branch variable
if [ -z "$branch" ]
then
echo "This is a PUSH event"
branch=branch=${{ github.ref_name }}
commit=${{ github.sha }}
else
echo "This is a PR event"
fi
echo "Owner: ${owner}"
echo "Repo: ${repo}"
echo "Branch: ${branch}"
echo "Commit: ${commit}"
mkdir -p build
mkdir -p artifacts
cd build
cmake -DGITHUB_OWNER=${owner} -DGITHUB_REPO=${repo} -DGITHUB_BRANCH=${branch} -DSUNSHINE_CONFIGURE_FLATPAK=ON -DSUNSHINE_CONFIGURE_ONLY=ON ..
# add the commit
echo " commit: ${commit}" >> ./com.github.sunshinestream.sunshine.yml
- name: Build Linux Flatpak
working-directory: build
run: |
sudo flatpak-builder build-dir com.github.sunshinestream.sunshine.yml
sudo flatpak-builder --repo=repo --force-clean build-dir com.github.sunshinestream.sunshine.yml
sudo flatpak build-bundle ./repo ../artifacts/sunshine.flatpak com.github.sunshinestream.sunshine
- name: Upload Artifacts
uses: actions/upload-artifact@v3
with:
name: sunshine-linux-flatpak
path: artifacts/
- name: Create Release
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
uses: SunshineStream/actions/create_release@master
with:
token: ${{ secrets.GITHUB_TOKEN }}
next_version: ${{ needs.check_changelog.outputs.next_version }}
last_version: ${{ needs.check_changelog.outputs.last_version }}
release_body: ${{ needs.check_changelog.outputs.release_body }}
build_linux: build_linux:
name: Linux name: Linux
runs-on: ubuntu-20.04 runs-on: ubuntu-20.04
@ -61,19 +149,22 @@ jobs:
matrix: matrix:
include: # package these differently include: # package these differently
- type: cpack - type: cpack
CMAKE_INSTALL_PREFIX: '' CMAKE_INSTALL_PREFIX: '/usr'
SUNSHINE_ASSETS_DIR: '/usr/local/sunshine/assets' SUNSHINE_ASSETS_DIR: 'local/sunshine/assets'
SUNSHINE_CONFIG_DIR: '/usr/local/sunshine/config' SUNSHINE_CONFIG_DIR: 'local/sunshine/config'
EXTRA_ARGS: ''
- type: appimage - type: appimage
CMAKE_INSTALL_PREFIX: '/usr' CMAKE_INSTALL_PREFIX: '/usr'
SUNSHINE_ASSETS_DIR: 'sunshine.AppImage.config' SUNSHINE_ASSETS_DIR: 'sunshine.AppImage.config'
SUNSHINE_CONFIG_DIR: 'sunshine.AppImage.home' SUNSHINE_CONFIG_DIR: 'sunshine.AppImage.home'
EXTRA_ARGS: '-DSUNSHINE_CONFIGURE_APPIMAGE=ON'
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v3 uses: actions/checkout@v3
with: with:
submodules: recursive submodules: recursive
- name: Setup Dependencies Linux - name: Setup Dependencies Linux
run: | run: |
sudo add-apt-repository ppa:savoury1/ffmpeg4 -y sudo add-apt-repository ppa:savoury1/ffmpeg4 -y
@ -144,7 +235,7 @@ jobs:
mkdir -p artifacts mkdir -p artifacts
cd build cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${{ matrix.CMAKE_INSTALL_PREFIX }} -DSUNSHINE_ASSETS_DIR=${{ matrix.SUNSHINE_ASSETS_DIR }} -DSUNSHINE_CONFIG_DIR=${{ matrix.SUNSHINE_CONFIG_DIR }} -DSUNSHINE_EXECUTABLE_PATH=/usr/bin/sunshine -DSUNSHINE_ENABLE_WAYLAND=ON -DSUNSHINE_ENABLE_X11=ON -DSUNSHINE_ENABLE_DRM=ON -DSUNSHINE_ENABLE_CUDA=ON .. cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${{ matrix.CMAKE_INSTALL_PREFIX }} -DSUNSHINE_ASSETS_DIR=${{ matrix.SUNSHINE_ASSETS_DIR }} -DSUNSHINE_CONFIG_DIR=${{ matrix.SUNSHINE_CONFIG_DIR }} -DSUNSHINE_EXECUTABLE_PATH=/usr/bin/sunshine -DSUNSHINE_ENABLE_WAYLAND=ON -DSUNSHINE_ENABLE_X11=ON -DSUNSHINE_ENABLE_DRM=ON -DSUNSHINE_ENABLE_CUDA=ON ${{ matrix.EXTRA_ARGS }} ..
make -j ${nproc} make -j ${nproc}
- name: Package Linux - CPACK - name: Package Linux - CPACK
@ -276,22 +367,25 @@ jobs:
owner=$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]' ) owner=$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]' )
repo=$(echo ${GITHUB_REPOSITORY#*/} | tr '[:upper:]' '[:lower:]' ) repo=$(echo ${GITHUB_REPOSITORY#*/} | tr '[:upper:]' '[:lower:]' )
branch=${GITHUB_HEAD_REF} branch=${GITHUB_HEAD_REF}
commit=${{ github.event.pull_request.head.sha }}
# check the branch variable # check the branch variable
if [ -z "$branch" ] if [ -z "$branch" ]
then then
echo "This is a PUSH event" echo "This is a PUSH event"
branch=${GITHUB_BASE_REF} branch=branch=${{ github.ref_name }}
commit=${{ github.sha }}
else else
echo "This is a PR event" echo "This is a PR event"
fi fi
echo "Owner: ${owner}" echo "Owner: ${owner}"
echo "Repo: ${repo}" echo "Repo: ${repo}"
echo "Branch: ${branch}" echo "Branch: ${branch}"
echo "Commit: ${commit}"
mkdir build mkdir build
cd build cd build
cmake -DCMAKE_BUILD_TYPE=Release -DSUNSHINE_ASSETS_DIR=/usr/local/sunshine/assets -DSUNSHINE_CONFIG_DIR=/usr/local/sunshine/config -DGITHUB_OWNER=${owner} -DGITHUB_REPO=${repo} -DGITHUB_BRANCH=${branch} .. cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DSUNSHINE_ASSETS_DIR=local/sunshine/assets -DSUNSHINE_CONFIG_DIR=local/sunshine/config -DGITHUB_OWNER=${owner} -DGITHUB_REPO=${repo} -DGITHUB_BRANCH=${branch} -DSUNSHINE_CONFIGURE_PORTFILE=ON ..
make -j ${nproc} make -j ${nproc}
- name: Package MacOS - name: Package MacOS

View File

@ -5,6 +5,24 @@ project(Sunshine VERSION 0.14.0
HOMEPAGE_URL "https://sunshinestream.github.io" HOMEPAGE_URL "https://sunshinestream.github.io"
) )
option(SUNSHINE_CONFIGURE_APPIMAGE "Configure files required for AppImage." OFF)
option(SUNSHINE_CONFIGURE_FLATPAK "Configure files required for Flatpak." OFF)
option(SUNSHINE_CONFIGURE_PORTFILE "Configure MacOS Portfile." OFF)
option(SUNSHINE_CONFIGURE_ONLY "Configure special files only, then exit." OFF)
if(${SUNSHINE_CONFIGURE_APPIMAGE})
configure_file(packaging/linux/sunshine.desktop sunshine.desktop @ONLY)
elseif(${SUNSHINE_CONFIGURE_FLATPAK})
configure_file(packaging/linux/flatpak/com.github.sunshinestream.sunshine.yml com.github.sunshinestream.sunshine.yml @ONLY)
elseif(${SUNSHINE_CONFIGURE_PORTFILE})
configure_file(packaging/macos/Portfile Portfile @ONLY)
endif()
# return if configure only is set
if(${SUNSHINE_CONFIGURE_ONLY})
return()
endif()
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
set(SUNSHINE_SOURCE_ASSETS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src_assets") set(SUNSHINE_SOURCE_ASSETS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src_assets")
@ -401,6 +419,11 @@ if(NOT SUNSHINE_CONFIG_DIR)
set(SUNSHINE_CONFIG_DIR "${CMAKE_CURRENT_BINARY_DIR}/config") set(SUNSHINE_CONFIG_DIR "${CMAKE_CURRENT_BINARY_DIR}/config")
endif() endif()
if(UNIX AND CMAKE_INSTALL_PREFIX AND NOT ${SUNSHINE_CONFIGURE_APPIMAGE})
set(SUNSHINE_ASSETS_DIR "${CMAKE_INSTALL_PREFIX}/${SUNSHINE_ASSETS_DIR}")
set(SUNSHINE_CONFIG_DIR "${CMAKE_INSTALL_PREFIX}/${SUNSHINE_CONFIG_DIR}")
endif()
list(APPEND CBS_EXTERNAL_LIBRARIES list(APPEND CBS_EXTERNAL_LIBRARIES
cbs) cbs)
@ -562,9 +585,6 @@ if(APPLE) # TODO: test
set(CPACK_BUNDLE_PLIST "${APPLE_PLIST_FILE}") set(CPACK_BUNDLE_PLIST "${APPLE_PLIST_FILE}")
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")
# Portfile
configure_file(Portfile.in Portfile @ONLY)
endif() endif()
if(UNIX AND NOT APPLE) if(UNIX AND NOT APPLE)
install(DIRECTORY "${SUNSHINE_SOURCE_ASSETS_DIR}/linux/assets/" DESTINATION "${SUNSHINE_ASSETS_DIR}") install(DIRECTORY "${SUNSHINE_SOURCE_ASSETS_DIR}/linux/assets/" DESTINATION "${SUNSHINE_ASSETS_DIR}")
@ -573,8 +593,8 @@ if(UNIX AND NOT APPLE)
install(FILES "${SUNSHINE_SOURCE_ASSETS_DIR}/linux/misc/85-sunshine-rules.rules" DESTINATION "/etc/udev/rules.d") install(FILES "${SUNSHINE_SOURCE_ASSETS_DIR}/linux/misc/85-sunshine-rules.rules" DESTINATION "/etc/udev/rules.d")
install(TARGETS sunshine RUNTIME DESTINATION "/usr/bin") install(TARGETS sunshine RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/sunshine.service" DESTINATION "/usr/lib/systemd/user") install(FILES "${CMAKE_CURRENT_BINARY_DIR}/sunshine.service" DESTINATION "${CMAKE_INSTALL_LIBDIR}/systemd/user")
# Pre and post install # Pre and post install
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
@ -587,9 +607,6 @@ if(UNIX AND NOT APPLE)
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
# AppImage desktop file
configure_file(sunshine.desktop.in sunshine.desktop @ONLY)
endif() endif()
include(CPack) include(CPack)

View File

@ -2,6 +2,7 @@
Overview Overview
======== ========
SunshineStream has the full documentation hosted on `Read the Docs <http://sunshinestream.readthedocs.io/>`_.
About About
----- -----

View File

@ -28,7 +28,7 @@ AppImage
.. image:: https://img.shields.io/github/issues/sunshinestream/sunshine/pkg:appimage?logo=github&style=for-the-badge .. image:: https://img.shields.io/github/issues/sunshinestream/sunshine/pkg:appimage?logo=github&style=for-the-badge
:alt: GitHub issues by-label :alt: GitHub issues by-label
The current known compatibility of the AppImage is shown below. According to AppImageLint the AppImage can run on the following distros.
- [✖] Debian oldstable (buster) - [✖] Debian oldstable (buster)
- [✔] Debian stable (bullseye) - [✔] Debian stable (bullseye)
@ -42,11 +42,11 @@ The current known compatibility of the AppImage is shown below.
- [✖] Ubuntu trusty - [✖] Ubuntu trusty
- [✖] CentOS 7 - [✖] CentOS 7
#. Download and extract ``sunshine-appimage.zip`` to your home directory. #. Download ``sunshine-appimage.zip`` and extract the contents to your home directory.
Debian Packages Debian Package
^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^
.. image:: https://img.shields.io/github/issues/sunshinestream/sunshine/os:linux:debian?logo=github&style=for-the-badge .. image:: https://img.shields.io/github/issues/sunshinestream/sunshine/pkg:deb?logo=github&style=for-the-badge
:alt: GitHub issues by-label :alt: GitHub issues by-label
#. Download ``sunshine.deb`` and run the following code. #. Download ``sunshine.deb`` and run the following code.
@ -57,9 +57,29 @@ Debian Packages
.. Tip:: You can double click the deb file to see details about the package and begin installation. .. Tip:: You can double click the deb file to see details about the package and begin installation.
Red Hat Packages Flatpak Package
^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^
.. image:: https://img.shields.io/github/issues/sunshinestream/sunshine/os:linux:fedora?logo=github&style=for-the-badge .. image:: https://img.shields.io/github/issues/sunshinestream/sunshine/pkg:flatpak?logo=github&style=for-the-badge
:alt: GitHub issues by-label
.. Todo:: This package needs to have CUDA added.
#. Install `Flatpak <https://flatpak.org/setup/>`_ as required.
#. Download ``sunshine.flatpak`` and run the following code.
System level (recommended)
.. code-block:: bash
flatpak install --system sunshine.flatpak
User level
.. code-block:: bash
flatpak install --user sunshine.flatpak
RPM Package
^^^^^^^^^^^
.. image:: https://img.shields.io/github/issues/sunshinestream/sunshine/pkg:rpm?logo=github&style=for-the-badge
:alt: GitHub issues by-label :alt: GitHub issues by-label
#. Add `rpmfusion` repositories by running the following code. #. Add `rpmfusion` repositories by running the following code.

View File

@ -33,7 +33,7 @@ Usage
#. When Moonlight request you insert the correct pin on sunshine: #. When Moonlight request you insert the correct pin on sunshine:
- Login to the web ui - Login to the web ui
- Go to "PIN" in the Header - Go to "PIN" in the Navbar
- Type in your PIN and press Enter, you should get a Success Message - Type in your PIN and press Enter, you should get a Success Message
- In Moonlight, select one of the Applications listed - In Moonlight, select one of the Applications listed
@ -60,13 +60,12 @@ The deb and rpm packages handle these steps automatically. The AppImage does not
Sunshine needs access to `uinput` to create mouse and gamepad events. Sunshine needs access to `uinput` to create mouse and gamepad events.
Add user to group `input`, if this is the first time installing. #. Add user to group `input`, if this is the first time installing.
.. code-block:: bash .. code-block:: bash
sudo usermod -a -G input $USER sudo usermod -a -G input $USER
sudo reboot now
Create `udev` rules. #. Create `udev` rules.
.. code-block:: bash .. code-block:: bash
sudo nano /etc/udev/rules.d/85-sunshine-input.rules sudo nano /etc/udev/rules.d/85-sunshine-input.rules
@ -82,7 +81,7 @@ Create `udev` rules.
#. ``CTRL+X`` to start exit. #. ``CTRL+X`` to start exit.
#. ``Y`` to save modifications. #. ``Y`` to save modifications.
Configure autostart service #. Optionally, configure autostart service
- filename: ``~/.config/systemd/user/sunshine.service`` - filename: ``~/.config/systemd/user/sunshine.service``
- contents: - contents:
@ -100,13 +99,14 @@ Configure autostart service
.. table:: .. table::
:widths: auto :widths: auto
======== =================== =============== ======== ============================================== ===============
package ExecStart Auto Configured package ExecStart Auto Configured
======== =================== =============== ======== ============================================== ===============
deb /usr/bin/sunshine ✔ deb /usr/bin/sunshine ✔
rpm /usr/bin/sunshine ✔ rpm /usr/bin/sunshine ✔
AppImage ~/sunshine.AppImage ✖ AppImage ~/sunshine.AppImage ✖
======== =================== =============== Flatpak flatpak run com.github.sunshinestream.sunshine ✖
======== ============================================== ===============
Start once Start once
.. code-block:: bash .. code-block:: bash
@ -118,7 +118,7 @@ Configure autostart service
systemctl --user enable sunshine systemctl --user enable sunshine
Additional Setup for KMS #. Additional Setup for KMS
.. Note:: ``cap_sys_admin`` may as well be root, except you don't need to be root to run it. It is necessary to .. Note:: ``cap_sys_admin`` may as well be root, except you don't need to be root to run it. It is necessary to
allow Sunshine to use KMS. allow Sunshine to use KMS.
@ -132,6 +132,11 @@ Additional Setup for KMS
sudo setcap -r $(readlink -f $(which sunshine)) sudo setcap -r $(readlink -f $(which sunshine))
#. Reboot
.. code-block:: bash
sudo reboot now
MacOS MacOS
^^^^^ ^^^^^
Sunshine can only access microphones on macOS due to system limitations. To stream system audio use Sunshine can only access microphones on macOS due to system limitations. To stream system audio use

View File

@ -1,7 +1,5 @@
:github_url: https://github.com/SunshineStream/Sunshine/tree/nightly/docs/source/index.rst :github_url: https://github.com/SunshineStream/Sunshine/tree/nightly/docs/source/index.rst
SunshineStream has this documentation hosted on `Read the Docs <http://sunshinestream.readthedocs.io/>`_.
Table of Contents Table of Contents
================= =================
.. include:: toc.rst .. include:: toc.rst

View File

@ -0,0 +1,210 @@
app-id: com.github.sunshinestream.sunshine
runtime: org.freedesktop.Platform
runtime-version: "21.08"
sdk: org.freedesktop.Sdk
command: sunshine
separate-locales: false
finish-args:
- --share=ipc
- --socket=x11
- --socket=wayland
- --socket=pulseaudio
- --share=network
- --device=all
- --persist=.
- --system-talk-name=org.freedesktop.Avahi
- --env=PULSE_PROP_media.category=Manager
cleanup:
- /include
- /lib/cmake
- /lib/pkgconfig
- /lib/*.la
- /lib/*.a
- /share
modules:
# - name: cuda
# buildsystem: simple
# only-arches:
# - x86_64
# - aarch64
# cleanup:
# - '*'
# build-commands:
# - chmod u+x ./cuda.run
# - ./cuda.run --silent --toolkit --toolkitpath=/app --no-opengl-libs --no-man-page --no-drm
# - rm ./cuda.run
# - rm -r /app/nsight-systems-2021.3.2
# sources:
# - type: file
# only-arches:
# - x86_64
# url: https://developer.download.nvidia.com/compute/cuda/11.4.2/local_installers/cuda_11.4.2_470.57.02_linux.run
# sha256: bbd87ca0e913f837454a796367473513cddef555082e4d86ed9a38659cc81f0a
# dest-filename: cuda.run
# - type: file
# only-arches:
# - aarch64
# url: https://developer.download.nvidia.com/compute/cuda/11.4.2/local_installers/cuda_11.4.2_470.57.02_linux_sbsa.run
# sha256: f2c4a52e06329606c8dfb7c5ea3f4cb4c0b28f9d3fdffeeb734fcc98daf580d8
# dest-filename: cuda.run
- name: boost
buildsystem: simple
build-commands:
- ./bootstrap.sh --prefix=/app --with-libraries=system,thread,log
- ./b2 install variant=release link=static,shared runtime-link=shared cxxflags="$CXXFLAGS" linkflags="$LDFLAGS" -j $FLATPAK_BUILDER_N_JOBS
sources:
- type: archive
url: https://boostorg.jfrog.io/artifactory/main/release/1.79.0/source/boost_1_79_0.tar.bz2
sha256: 475d589d51a7f8b3ba2ba4eda022b170e562ca3b760ee922c146b6c65856ef39
- name: ffmpeg
config-opts:
- --enable-gpl
- --disable-static
- --enable-shared
- --disable-doc
- --disable-programs
- --disable-decoders
- --enable-libfontconfig
- --enable-libfreetype
- --enable-libopus
- --enable-libvorbis
- --enable-libvpx
- --enable-libx264
- --enable-libx265
- --enable-nvenc
- --enable-encoder=h264_v4l2m2m
- --enable-encoder=hevc_v4l2m2m
# - --enable-nonfree
# - --enable-cuda-nvcc
# - --enable-libnpp
# - --extra-cflags=-I/app/include
# - --extra-ldflags=-L/app/lib64
cleanup:
- /share/ffmpeg/examples
sources:
- type: archive
url: https://ffmpeg.org/releases/ffmpeg-4.4.2.tar.xz
sha256: af419a7f88adbc56c758ab19b4c708afbcae15ef09606b82b855291f6a6faa93
modules:
- name: vmaf
buildsystem: meson
subdir: libvmaf
cleanup:
- /bin
sources:
- type: archive
url: https://github.com/Netflix/vmaf/archive/refs/tags/v2.3.1.tar.gz
sha256: 8d60b1ddab043ada25ff11ced821da6e0c37fd7730dd81c24f1fc12be7293ef2
- name: x264
config-opts:
- --disable-cli
- --enable-shared
sources:
- type: archive
url: https://code.videolan.org/videolan/x264/-/archive/stable/x264-stable.tar.bz2
sha256: 8fedb184045722d8cc39353099373a5b7350171d0964d01fff8eced21b959b29
- name: x265
buildsystem: cmake-ninja
builddir: true
subdir: source
config-opts:
- -DCMAKE_BUILD_TYPE=RelWithDebInfo
- -DENABLE_CLI=OFF
sources:
- type: archive
url: https://bitbucket.org/multicoreware/x265_git/downloads/x265_3.5.tar.gz
sha256: e70a3335cacacbba0b3a20ec6fecd6783932288ebc8163ad74bcc9606477cae8
- name: nv-codec-headers
no-autogen: true
make-install-args:
- PREFIX=/app
cleanup:
- '*'
sources:
- type: archive
url: https://github.com/FFmpeg/nv-codec-headers/archive/refs/tags/n11.1.5.1.tar.gz
sha256: d095fbd56aa93772471a323be0ebe65504a0f43f06c76a30b6d25da77b06ae9c
- name: avahi
cleanup:
- /bin
- /lib/avahi
- /share/applications/*.desktop
- /share/avahi
config-opts:
- --with-distro=none
- --disable-gobject
- --disable-introspection
- --disable-qt3
- --disable-qt4
- --disable-qt5
- --disable-gtk
- --disable-core-docs
- --disable-manpages
- --disable-libdaemon
- --disable-python
- --disable-pygobject
- --disable-mono
- --disable-monodoc
- --disable-autoipd
- --disable-doxygen-doc
- --disable-doxygen-dot
- --disable-doxygen-xml
- --disable-doxygen-html
- --disable-manpages
- --disable-xmltoman
sources:
- type: archive
url: https://avahi.org/download/avahi-0.8.tar.gz
sha256: 060309d7a333d38d951bc27598c677af1796934dbd98e1024e7ad8de798fedda
modules:
- name: libevent
cleanup:
- /bin
sources:
- type: archive
url: https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz
sha256: 92e6de1be9ec176428fd2367677e61ceffc2ee1cb119035037a27d346b0403bb
- name: libevdev
buildsystem: meson
cleanup:
- /bin
sources:
- type: archive
url: https://www.freedesktop.org/software/libevdev/libevdev-1.12.1.tar.xz
sha256: 1dbba41bc516d3ca7abc0da5b862efe3ea8a7018fa6e9b97ce9d39401b22426c
modules:
- name: libcheck
buildsystem: cmake
cleanup:
- /bin
sources:
- type: archive
url: https://github.com/libcheck/check/archive/refs/tags/0.15.2.tar.gz
sha256: 998d355294bb94072f40584272cf4424571c396c631620ce463f6ea97aa67d2e
- name: sunshine
buildsystem: cmake
no-make-install: false
builddir: true
build-options:
cxxflags: -I${C_INCLUDE_PATH}/libevdev-1.0
config-opts:
- -DCMAKE_BUILD_TYPE=Release
- -DCMAKE_INSTALL_PREFIX='/app'
- -DSUNSHINE_ASSETS_DIR=assets
- -DSUNSHINE_CONFIG_DIR=config
- -DSUNSHINE_EXECUTABLE_PATH=/app/bin/sunshine
- -DSUNSHINE_ENABLE_WAYLAND=ON
- -DSUNSHINE_ENABLE_X11=ON
- -DSUNSHINE_ENABLE_DRM=ON
- -DSUNSHINE_ENABLE_CUDA=ON
sources:
- type: git
url: https://github.com/@GITHUB_OWNER@/@GITHUB_REPO@.git
branch: @GITHUB_BRANCH@