From 032680ca9d667f324b02944ee015b4562197a47c Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Mon, 13 Feb 2023 15:27:51 -0500 Subject: [PATCH] aur: move docker build (#895) --- .github/workflows/CI.yml | 103 ------------ .github/workflows/ci-docker.yml | 22 ++- CHANGELOG.md | 7 + CMakeLists.txt | 2 +- DOCKER_README.md | 17 +- docker/archlinux.dockerfile | 234 ++++++++++++++++++++++++++++ docker/debian-bullseye.dockerfile | 6 + docker/fedora-36.dockerfile | 6 + docker/fedora-37.dockerfile | 6 + docker/ubuntu-18.04.dockerfile-todo | 8 + docker/ubuntu-20.04.dockerfile | 8 + docker/ubuntu-22.04.dockerfile | 6 + docs/source/about/installation.rst | 34 +++- packaging/linux/aur/PKGBUILD | 7 +- 14 files changed, 349 insertions(+), 117 deletions(-) create mode 100644 docker/archlinux.dockerfile diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 211eaed4785..c7ab32ed1b2 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -147,109 +147,6 @@ jobs: outputs: matrix: ${{ steps.flatpak_matrix.outputs.matrix }} - build_linux_aur: - name: Linux AUR - runs-on: ubuntu-latest - needs: setup_release - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Setup Dependencies Linux AUR - run: | - sudo apt-get update -y - sudo apt-get install -y \ - cmake - - - name: Configure PKGBUILD files - id: prepare - run: | - # variables for manifest - aur_publish=false - aur_pkg=sunshine-dev - sub_version="" - conflicts="'sunshine'" - provides="'sunshine'" - - branch=${GITHUB_HEAD_REF} - - # check the branch variable - if [ -z "$branch" ]; then - echo "This is a PUSH event" - commit=${{ github.sha }} - clone_url=${{ github.event.repository.clone_url }} - - if [[ ${{ github.ref == 'refs/heads/master' }} == true ]]; then - echo "This is a main release event" - aur_publish=true - aur_pkg=sunshine - conflicts="" - provides="" - elif [[ ${{ github.ref == 'refs/heads/nightly' }} == true ]]; then - echo "This is a nightly release event" - sub_version=".r${commit}" - fi - else - echo "This is a PR event" - commit=${{ github.event.pull_request.head.sha }} - clone_url=${{ github.event.pull_request.head.repo.clone_url }} - - sub_version=".r${commit}" - fi - echo "Commit: ${commit}" - echo "Clone URL: ${clone_url}" - - echo "aur_publish=${aur_publish}" >> $GITHUB_OUTPUT - echo "aur_pkg=${aur_pkg}" >> $GITHUB_OUTPUT - - mkdir -p artifacts - mkdir -p build - - cd build - cmake -DSUNSHINE_CONFIGURE_AUR=ON \ - -DSUNSHINE_AUR_PKG=${aur_pkg} \ - -DSUNSHINE_SUB_VERSION=${sub_version} \ - -DSUNSHINE_AUR_CONFLICTS=${conflicts} \ - -DSUNSHINE_AUR_PROVIDES=${provides} \ - -DGITHUB_CLONE_URL=${clone_url} \ - -DGITHUB_COMMIT=${commit} \ - -DSUNSHINE_CONFIGURE_ONLY=ON \ - .. - cd .. - - mv ./build/PKGBUILD ./artifacts/ - - - name: Validate package - uses: LizardByte/archlinux-package-action@master - with: - path: artifacts - flags: '--syncdeps --noconfirm' - namcap: true - srcinfo: true - aur: true # workaround mirror problem - - - name: Upload Artifacts - if: ${{ always() }} - uses: actions/upload-artifact@v3 - with: - name: sunshine-linux-aur - path: artifacts/ - - - name: Publish AUR package - if: ${{ steps.prepare.outputs.aur_publish == 'true' }} - uses: KSXGitHub/github-actions-deploy-aur@v2.6.0 - with: - pkgname: ${{ steps.prepare.outputs.aur_pkg }} - pkgbuild: ./artifacts/PKGBUILD - assets: | - ./artifacts/* - commit_username: ${{ secrets.AUR_USERNAME }} - commit_email: ${{ secrets.AUR_EMAIL }} - ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }} - commit_message: Automatic update from GitHub ${{ github.repository }} per ${{ github.ref }} - allow_empty_commits: false - build_linux_flatpak: name: Linux Flatpak runs-on: ubuntu-22.04 diff --git a/.github/workflows/ci-docker.yml b/.github/workflows/ci-docker.yml index 3858ae100ac..dfddca2311e 100644 --- a/.github/workflows/ci-docker.yml +++ b/.github/workflows/ci-docker.yml @@ -205,9 +205,20 @@ jobs: # get branch name BRANCH=${GITHUB_HEAD_REF} + RELEASE=false + if [ -z "$BRANCH" ]; then echo "This is a PUSH event" BRANCH=${{ github.ref_name }} + COMMIT=${{ github.sha }} + CLONE_URL=${{ github.event.repository.clone_url }} + if [[ $BRANCH == "master" ]]; then + RELEASE=true + fi + else + echo "This is a PULL REQUEST event" + COMMIT=${{ github.event.pull_request.head.sha }} + CLONE_URL=${{ github.event.pull_request.head.repo.clone_url }} fi # determine to push image to dockerhub and ghcr or not @@ -220,7 +231,6 @@ jobs: # setup the tags REPOSITORY=${{ github.repository }} BASE_TAG=$(echo $REPOSITORY | tr '[:upper:]' '[:lower:]') - COMMIT=${{ github.sha }} TAGS="${BASE_TAG}:${COMMIT:0:7}${{ matrix.tag }},ghcr.io/${BASE_TAG}:${COMMIT:0:7}${{ matrix.tag }}" @@ -277,6 +287,8 @@ jobs: echo "branch=${BRANCH}" >> $GITHUB_OUTPUT echo "build_date=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT echo "commit=${COMMIT}" >> $GITHUB_OUTPUT + echo "clone_url=${CLONE_URL}" >> $GITHUB_OUTPUT + echo "release=${RELEASE}" >> $GITHUB_OUTPUT echo "artifacts=${ARTIFACTS}" >> $GITHUB_OUTPUT echo "platforms=${PLATFORMS}" >> $GITHUB_OUTPUT echo "push=${PUSH}" >> $GITHUB_OUTPUT @@ -328,6 +340,8 @@ jobs: BUILD_DATE=${{ steps.prepare.outputs.build_date }} BUILD_VERSION=${{ needs.check_changelog.outputs.next_version }} COMMIT=${{ steps.prepare.outputs.commit }} + CLONE_URL=${{ steps.prepare.outputs.clone_url }} + RELEASE=${{ steps.prepare.outputs.release }} tags: ${{ steps.prepare.outputs.tags }} cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache @@ -345,6 +359,12 @@ jobs: BUILD_DATE=${{ steps.prepare.outputs.build_date }} BUILD_VERSION=${{ needs.check_changelog.outputs.next_version }} COMMIT=${{ steps.prepare.outputs.commit }} + CLONE_URL=${{ steps.prepare.outputs.clone_url }} + RELEASE=${{ steps.prepare.outputs.release }} + secrets: | + "AUR_EMAIL=${{ secrets.AUR_EMAIL }}" + "AUR_SSH_PRIVATE_KEY=${{ secrets.AUR_SSH_PRIVATE_KEY }}" + "AUR_USERNAME=${{ secrets.AUR_USERNAME }}" tags: ${{ steps.prepare.outputs.tags }} cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache diff --git a/CHANGELOG.md b/CHANGELOG.md index e778b7a0152..91031b26d2f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## [0.18.3] - 2023-02-13 +### Added +- (Linux) Added PKGBUILD for Archlinux based distros to releases +- (Linux) Added precompiled package for Archlinux based distros to releases +- (Docker) Added archlinux docker image (x86_64 only) + ## [0.18.2] - 2023-02-13 ### Fixed - (Video/KMV/Linux) Fixed wayland capture on Nvidia for KMS @@ -317,3 +323,4 @@ settings. In v0.17.0, games now run under your user account without elevated pri [0.18.0]: https://github.com/LizardByte/Sunshine/releases/tag/v0.18.0 [0.18.1]: https://github.com/LizardByte/Sunshine/releases/tag/v0.18.1 [0.18.2]: https://github.com/LizardByte/Sunshine/releases/tag/v0.18.2 +[0.18.3]: https://github.com/LizardByte/Sunshine/releases/tag/v0.18.3 diff --git a/CMakeLists.txt b/CMakeLists.txt index 93cccb7f9cc..bb027c6d434 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.18) # `CMAKE_CUDA_ARCHITECTURES` requires 3.18 -project(Sunshine VERSION 0.18.2 +project(Sunshine VERSION 0.18.3 DESCRIPTION "Sunshine is a self-hosted game stream host for Moonlight." HOMEPAGE_URL "https://app.lizardbyte.dev") diff --git a/DOCKER_README.md b/DOCKER_README.md index 636395277a7..7ac9f5c273b 100644 --- a/DOCKER_README.md +++ b/DOCKER_README.md @@ -23,8 +23,9 @@ ENTRYPOINT steam && sunshine - commit hash ### SUNSHINE_OS -Sunshine images are available, based on the following base images. +Sunshine images are available with the following tag suffixes, based on their respective base images. +- `archlinux` - `debian-bullseye` - `fedora-36` - `fedora-37` @@ -126,9 +127,13 @@ If you want to change the PUID or PGID after the image has been built, it will r Specifying `lizardbyte/sunshine:latest-` or `ghcr.io/lizardbyte/sunshine:latest-` should retrieve the correct image for your architecture. -The architectures supported by these images are: +The architectures supported by these images are shown in the table below. -| Architecture | Available | -|:---------------:|:---------:| -| amd64 / x86_64 | ✅ | -| arm64 / aarch64 | ✅ | +| tag suffix | amd64/x86_64 | arm64/aarch64 | +|-----------------|--------------|---------------| +| archlinux | ✅ | ❌ | +| debian-bullseye | ✅ | ✅ | +| fedora-36 | ✅ | ✅ | +| fedora-37 | ✅ | ✅ | +| ubuntu-20.04 | ✅ | ✅ | +| ubuntu-22.04 | ✅ | ✅ | diff --git a/docker/archlinux.dockerfile b/docker/archlinux.dockerfile new file mode 100644 index 00000000000..1a135d077f9 --- /dev/null +++ b/docker/archlinux.dockerfile @@ -0,0 +1,234 @@ +# syntax=docker/dockerfile:1.4 +# artifacts: true +# platforms: linux/amd64 +# archlinux does not have an arm64 base image +ARG BASE=archlinux +ARG TAG=base-devel +FROM ${BASE}:${TAG} AS sunshine-base + +# install dependencies +RUN <<_DEPS +#!/bin/bash +set -e +pacman -Syu --noconfirm \ + archlinux-keyring \ + git +_DEPS + +# Setup builder user, arch prevents running makepkg as root +RUN useradd -m builder && \ + echo 'builder ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers +WORKDIR /home/builder +USER builder + +# install paru +WORKDIR /tmp +RUN git clone https://aur.archlinux.org/paru.git +WORKDIR /tmp/paru +RUN makepkg -si --noconfirm + +# install optional dependencies +RUN paru -Syu --noconfirm \ + cuda \ + libcap \ + libdrm + +# switch back to root user, hadolint will complain if last user is root +# hadolint ignore=DL3002 +USER root + +FROM sunshine-base as sunshine-build + +ARG BUILD_VERSION +ARG COMMIT +ARG CLONE_URL +# note: BUILD_VERSION may be blank + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] +# install dependencies +RUN <<_DEPS +#!/bin/bash +set -e +pacman -Syu --noconfirm \ + base-devel \ + cmake \ + namcap +_DEPS + +# Setup builder user +USER builder + +# copy repository +WORKDIR /build/sunshine/ +COPY .. . + +# setup build directory +WORKDIR /build/sunshine/build + +# configure PKGBUILD file +RUN <<_MAKE +#!/bin/bash +set -e +if [[ "${BUILD_VERSION}" == '' ]]; then + sub_version=".r${COMMIT}" +else + sub_version="" +fi +cmake \ + -DSUNSHINE_CONFIGURE_AUR=ON \ + -DSUNSHINE_SUB_VERSION="${sub_version}" \ + -DGITHUB_CLONE_URL="${CLONE_URL}" \ + -DGITHUB_COMMIT="${COMMIT}" \ + -DSUNSHINE_CONFIGURE_ONLY=ON \ + /build/sunshine +_MAKE + +WORKDIR /build/sunshine/pkg +RUN mv /build/sunshine/build/PKGBUILD . + +# namcap and build PKGBUILD file +RUN <<_PKGBUILD +#!/bin/bash +set -e +namcap -i PKGBUILD +makepkg -si --noconfirm +ls -a +_PKGBUILD + +FROM scratch as artifacts + +COPY --from=sunshine-build /build/sunshine/pkg/PKGBUILD /PKGBUILD +COPY --from=sunshine-build /build/sunshine/pkg/sunshine*.pkg.tar.zst /sunshine.pkg.tar.zst + +FROM sunshine-base as uploader + +# most of this stage is borrowed from +# https://github.com/KSXGitHub/github-actions-deploy-aur/blob/master/build.sh + +ARG BUILD_VERSION +ARG RELEASE +ARG TARGETPLATFORM + +# Setup builder user +WORKDIR /home/builder +USER builder + +# hadolint ignore=SC3010 +RUN <<_SSH_CONFIG +#!/bin/bash +set -e +if [[ "${TARGETPLATFORM}" == 'linux/amd64' ]]; then + echo "Host aur.archlinux.org"; echo " IdentityFile ~/.ssh/aur"; echo " User aur" >>~/.ssh/config +fi +_SSH_CONFIG + +# create and apply secrets, hadolint is giving a false positive +# hadolint ignore=SC1133 +RUN --mount=type=secret,id=AUR_EMAIL,target=/secrets/AUR_EMAIL \ + --mount=type=secret,id=AUR_SSH_PRIVATE_KEY,target=/secrets/AUR_SSH_PRIVATE_KEY \ + --mount=type=secret,id=AUR_USERNAME,target=/secrets/AUR_USERNAME && \ + cat /secrets/AUR_SSH_PRIVATE_KEY >~/.ssh/aur && \ + git config --global user.name "$(cat /secrets/AUR_USERNAME)" && \ + git config --global user.email "$(cat /secrets/AUR_EMAIL)" + +WORKDIR /tmp + +# hadolint ignore=SC3010 +RUN <<_AUR_SETUP +#!/bin/bash +set -e + +if [[ "${TARGETPLATFORM}" == 'linux/amd64' ]]; then + # Adding aur.archlinux.org to known hosts + ssh_keyscan_types="rsa,dsa,ecdsa,ed25519" + ssh-keyscan -v -t "$ssh_keyscan_types" aur.archlinux.org >>~/.ssh/known_hosts + + # Importing private key + chmod -vR 600 ~/.ssh/aur* + ssh-keygen -vy -f ~/.ssh/aur >~/.ssh/aur.pub + + # Clone AUR package + mkdir -p /tmp/local-repo + git clone -v "https://aur.archlinux.org/sunshine.git" /tmp/local-repo + + # Copy built package + COPY --from=artifacts /PRKBUILD /tmp/local-repo/ +fi +_AUR_SETUP + +WORKDIR /tmp/local-repo +# aur upload if release event +# hadolint ignore=SC3010 +RUN <<_AUR_UPLOAD +#!/bin/bash +set -e +if [[ "${RELEASE}" == "true" && "${TARGETPLATFORM}" == 'linux/amd64' ]]; then + # update package checksums + updpkgsums + + # generate srcinfo + makepkg --printsrcinfo >.SRCINFO + + # commit changes + git add --all + + # check if there are any changes and commit/push + if [[ $(git diff-index --quiet HEAD) != "" ]]; then + git commit -m "${BUILD_VERSION}" + git remote add aur "https://aur.archlinux.org/sunshine.git" + git push -v aur master + fi +fi +_AUR_UPLOAD + +# remove secrets +RUN rm -rf /secrets + +FROM sunshine-base as sunshine + +COPY --from=artifacts /sunshine*.pkg.tar.zst /sunshine.pkg.tar.zst + +# install sunshine +RUN <<_INSTALL_SUNSHINE +#!/bin/bash +set -e +pacman -U --noconfirm \ + /sunshine.pkg.tar.zst +_INSTALL_SUNSHINE + +# network setup +EXPOSE 47984-47990/tcp +EXPOSE 48010 +EXPOSE 47998-48000/udp + +# setup user +ARG PGID=1000 +ENV PGID=${PGID} +ARG PUID=1000 +ENV PUID=${PUID} +ENV TZ="UTC" +ARG UNAME=lizard +ENV UNAME=${UNAME} + +ENV HOME=/home/$UNAME + +# setup user +RUN <<_SETUP_USER +#!/bin/bash +set -e +# first delete the builder +userdel -r builder + +# then create the lizard user +groupadd -f -g "${PGID}" "${UNAME}" +useradd -lm -d ${HOME} -s /bin/bash -g "${PGID}" -G input -u "${PUID}" "${UNAME}" +mkdir -p ${HOME}/.config/sunshine +ln -s ${HOME}/.config/sunshine /config +chown -R ${UNAME} ${HOME} +_SETUP_USER + +USER ${UNAME} +WORKDIR ${HOME} + +# entrypoint +ENTRYPOINT ["/usr/bin/sunshine"] diff --git a/docker/debian-bullseye.dockerfile b/docker/debian-bullseye.dockerfile index 893409f8d4f..3e7fa333c3d 100644 --- a/docker/debian-bullseye.dockerfile +++ b/docker/debian-bullseye.dockerfile @@ -17,6 +17,7 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] # install dependencies RUN <<_DEPS #!/bin/bash +set -e apt-get update -y apt-get install -y --no-install-recommends \ build-essential=12.9* \ @@ -63,6 +64,7 @@ ENV CUDA_BUILD="520.61.05" # hadolint ignore=SC3010 RUN <<_INSTALL_CUDA #!/bin/bash +set -e cuda_prefix="https://developer.download.nvidia.com/compute/cuda/" cuda_suffix="" if [[ "${TARGETPLATFORM}" == 'linux/arm64' ]]; then @@ -89,6 +91,7 @@ WORKDIR /build/sunshine/build # cmake and cpack RUN <<_MAKE #!/bin/bash +set -e cmake \ -DCMAKE_CUDA_COMPILER:PATH=/build/cuda/bin/nvcc \ -DCMAKE_BUILD_TYPE=Release \ @@ -118,6 +121,7 @@ COPY --from=artifacts /sunshine*.deb /sunshine.deb # install sunshine RUN <<_INSTALL_SUNSHINE #!/bin/bash +set -e apt-get update -y apt-get install -y --no-install-recommends /sunshine.deb apt-get clean @@ -142,6 +146,8 @@ ENV HOME=/home/$UNAME # setup user RUN <<_SETUP_USER +#!/bin/bash +set -e groupadd -f -g "${PGID}" "${UNAME}" useradd -lm -d ${HOME} -s /bin/bash -g "${PGID}" -G input -u "${PUID}" "${UNAME}" mkdir -p ${HOME}/.config/sunshine diff --git a/docker/fedora-36.dockerfile b/docker/fedora-36.dockerfile index 3c1e728c8f9..c4abd10a1db 100644 --- a/docker/fedora-36.dockerfile +++ b/docker/fedora-36.dockerfile @@ -16,6 +16,7 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] # hadolint ignore=DL3041 RUN <<_DEPS #!/bin/bash +set -e dnf -y update dnf -y group install "Development Tools" dnf -y install \ @@ -61,6 +62,7 @@ ENV CUDA_BUILD="525.60.13" # hadolint ignore=SC3010 RUN <<_INSTALL_CUDA #!/bin/bash +set -e cuda_prefix="https://developer.download.nvidia.com/compute/cuda/" cuda_suffix="" if [[ "${TARGETPLATFORM}" == 'linux/arm64' ]]; then @@ -87,6 +89,7 @@ WORKDIR /build/sunshine/build # cmake and cpack RUN <<_MAKE #!/bin/bash +set -e cmake \ -DCMAKE_CUDA_COMPILER:PATH=/build/cuda/bin/nvcc \ -DCMAKE_BUILD_TYPE=Release \ @@ -116,6 +119,7 @@ COPY --from=artifacts /sunshine*.rpm /sunshine.rpm # install sunshine RUN <<_INSTALL_SUNSHINE #!/bin/bash +set -e dnf -y update dnf -y install /sunshine.rpm dnf clean all @@ -140,6 +144,8 @@ ENV HOME=/home/$UNAME # setup user RUN <<_SETUP_USER +#!/bin/bash +set -e groupadd -f -g "${PGID}" "${UNAME}" useradd -lm -d ${HOME} -s /bin/bash -g "${PGID}" -G input -u "${PUID}" "${UNAME}" mkdir -p ${HOME}/.config/sunshine diff --git a/docker/fedora-37.dockerfile b/docker/fedora-37.dockerfile index 547282b5a9d..38d096cb098 100644 --- a/docker/fedora-37.dockerfile +++ b/docker/fedora-37.dockerfile @@ -16,6 +16,7 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] # hadolint ignore=DL3041 RUN <<_DEPS #!/bin/bash +set -e dnf -y update dnf -y group install "Development Tools" dnf -y install \ @@ -61,6 +62,7 @@ ENV CUDA_BUILD="525.60.13" # hadolint ignore=SC3010 RUN <<_INSTALL_CUDA #!/bin/bash +set -e cuda_prefix="https://developer.download.nvidia.com/compute/cuda/" cuda_suffix="" if [[ "${TARGETPLATFORM}" == 'linux/arm64' ]]; then @@ -87,6 +89,7 @@ WORKDIR /build/sunshine/build # cmake and cpack RUN <<_MAKE #!/bin/bash +set -e cmake \ -DCMAKE_CUDA_COMPILER:PATH=/build/cuda/bin/nvcc \ -DCMAKE_BUILD_TYPE=Release \ @@ -116,6 +119,7 @@ COPY --from=artifacts /sunshine*.rpm /sunshine.rpm # install sunshine RUN <<_INSTALL_SUNSHINE #!/bin/bash +set -e dnf -y update dnf -y install /sunshine.rpm dnf clean all @@ -140,6 +144,8 @@ ENV HOME=/home/$UNAME # setup user RUN <<_SETUP_USER +#!/bin/bash +set -e groupadd -f -g "${PGID}" "${UNAME}" useradd -lm -d ${HOME} -s /bin/bash -g "${PGID}" -G input -u "${PUID}" "${UNAME}" mkdir -p ${HOME}/.config/sunshine diff --git a/docker/ubuntu-18.04.dockerfile-todo b/docker/ubuntu-18.04.dockerfile-todo index 5e905fbd04b..debe3828e0f 100644 --- a/docker/ubuntu-18.04.dockerfile-todo +++ b/docker/ubuntu-18.04.dockerfile-todo @@ -17,6 +17,7 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] # install dependencies RUN <<_DEPS #!/bin/bash +set -e apt-get update -y apt-get install -y --no-install-recommends \ software-properties-common=0.96.24.32.18 @@ -57,6 +58,7 @@ _DEPS # https://stackoverflow.com/a/70653945/11214013 RUN <<_GCC_ALIAS #!/bin/bash +set -e update-alternatives --install \ /usr/bin/gcc gcc /usr/bin/gcc-10 100 \ --slave /usr/bin/g++ g++ /usr/bin/g++-10 \ @@ -93,6 +95,7 @@ ENV CMAKE_VERSION="3.25.1" # hadolint ignore=SC3010 RUN <<_INSTALL_CMAKE #!/bin/bash +set -e cmake_prefix="https://github.com/Kitware/CMake/releases/download/v" if [[ "${TARGETPLATFORM}" == 'linux/amd64' ]]; then cmake_arch="x86_64" @@ -114,6 +117,7 @@ ENV CUDA_BUILD="520.61.05" # hadolint ignore=SC3010 RUN <<_INSTALL_CUDA #!/bin/bash +set -e cuda_prefix="https://developer.download.nvidia.com/compute/cuda/" cuda_suffix="" if [[ "${TARGETPLATFORM}" == 'linux/arm64' ]]; then @@ -143,6 +147,7 @@ WORKDIR /build/sunshine/build # cmake and cpack RUN <<_MAKE #!/bin/bash +set -e cmake \ -DCMAKE_CUDA_COMPILER:PATH=/build/cuda/bin/nvcc \ -DCMAKE_BUILD_TYPE=Release \ @@ -172,6 +177,7 @@ COPY --from=artifacts /sunshine*.deb /sunshine.deb # install sunshine RUN <<_INSTALL_SUNSHINE #!/bin/bash +set -e apt-get update -y apt-get install -y --no-install-recommends /sunshine.deb apt-get clean @@ -196,6 +202,8 @@ ENV HOME=/home/$UNAME # setup user RUN <<_SETUP_USER +#!/bin/bash +set -e groupadd -f -g "${PGID}" "${UNAME}" useradd -lm -d ${HOME} -s /bin/bash -g "${PGID}" -G input -u "${PUID}" "${UNAME}" mkdir -p ${HOME}/.config/sunshine diff --git a/docker/ubuntu-20.04.dockerfile b/docker/ubuntu-20.04.dockerfile index 0a5d0907115..802b0e81444 100644 --- a/docker/ubuntu-20.04.dockerfile +++ b/docker/ubuntu-20.04.dockerfile @@ -17,6 +17,7 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] # install dependencies RUN <<_DEPS #!/bin/bash +set -e apt-get update -y apt-get install -y --no-install-recommends \ build-essential=12.8* \ @@ -60,6 +61,7 @@ _DEPS # https://stackoverflow.com/a/70653945/11214013 RUN <<_GCC_ALIAS #!/bin/bash +set -e update-alternatives --install \ /usr/bin/gcc gcc /usr/bin/gcc-10 100 \ --slave /usr/bin/g++ g++ /usr/bin/g++-10 \ @@ -76,6 +78,7 @@ ENV CMAKE_VERSION="3.25.1" # hadolint ignore=SC3010 RUN <<_INSTALL_CMAKE #!/bin/bash +set -e cmake_prefix="https://github.com/Kitware/CMake/releases/download/v" if [[ "${TARGETPLATFORM}" == 'linux/amd64' ]]; then cmake_arch="x86_64" @@ -97,6 +100,7 @@ ENV CUDA_BUILD="520.61.05" # hadolint ignore=SC3010 RUN <<_INSTALL_CUDA #!/bin/bash +set -e cuda_prefix="https://developer.download.nvidia.com/compute/cuda/" cuda_suffix="" if [[ "${TARGETPLATFORM}" == 'linux/arm64' ]]; then @@ -123,6 +127,7 @@ WORKDIR /build/sunshine/build # cmake and cpack RUN <<_MAKE #!/bin/bash +set -e cmake \ -DCMAKE_CUDA_COMPILER:PATH=/build/cuda/bin/nvcc \ -DCMAKE_BUILD_TYPE=Release \ @@ -152,6 +157,7 @@ COPY --from=artifacts /sunshine*.deb /sunshine.deb # install sunshine RUN <<_INSTALL_SUNSHINE #!/bin/bash +set -e apt-get update -y apt-get install -y --no-install-recommends /sunshine.deb apt-get clean @@ -176,6 +182,8 @@ ENV HOME=/home/$UNAME # setup user RUN <<_SETUP_USER +#!/bin/bash +set -e groupadd -f -g "${PGID}" "${UNAME}" useradd -lm -d ${HOME} -s /bin/bash -g "${PGID}" -G input -u "${PUID}" "${UNAME}" mkdir -p ${HOME}/.config/sunshine diff --git a/docker/ubuntu-22.04.dockerfile b/docker/ubuntu-22.04.dockerfile index a5ef3fd2b6b..f370f1cee28 100644 --- a/docker/ubuntu-22.04.dockerfile +++ b/docker/ubuntu-22.04.dockerfile @@ -17,6 +17,7 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"] # install dependencies RUN <<_DEPS #!/bin/bash +set -e apt-get update -y apt-get install -y --no-install-recommends \ build-essential=12.9* \ @@ -63,6 +64,7 @@ ENV CUDA_BUILD="520.61.05" # hadolint ignore=SC3010 RUN <<_INSTALL_CUDA #!/bin/bash +set -e cuda_prefix="https://developer.download.nvidia.com/compute/cuda/" cuda_suffix="" if [[ "${TARGETPLATFORM}" == 'linux/arm64' ]]; then @@ -89,6 +91,7 @@ WORKDIR /build/sunshine/build # cmake and cpack RUN <<_MAKE #!/bin/bash +set -e cmake \ -DCMAKE_CUDA_COMPILER:PATH=/build/cuda/bin/nvcc \ -DCMAKE_BUILD_TYPE=Release \ @@ -118,6 +121,7 @@ COPY --from=artifacts /sunshine*.deb /sunshine.deb # install sunshine RUN <<_INSTALL_SUNSHINE #!/bin/bash +set -e apt-get update -y apt-get install -y --no-install-recommends /sunshine.deb apt-get clean @@ -142,6 +146,8 @@ ENV HOME=/home/$UNAME # setup user RUN <<_SETUP_USER +#!/bin/bash +set -e groupadd -f -g "${PGID}" "${UNAME}" useradd -lm -d ${HOME} -s /bin/bash -g "${PGID}" -G input -u "${PUID}" "${UNAME}" mkdir -p ${HOME}/.config/sunshine diff --git a/docs/source/about/installation.rst b/docs/source/about/installation.rst index e195c490e78..aa1c03ec7c0 100644 --- a/docs/source/about/installation.rst +++ b/docs/source/about/installation.rst @@ -36,7 +36,9 @@ CUDA is used for NVFBC capture. Package CUDA Version Min Driver CUDA Compute Capabilities =========================================== ============== ============== ================================ https://aur.archlinux.org/packages/sunshine User dependent User dependent User dependent + PKGBUILD 11.8.0 450.80.02 50;52;60;61;62;70;75;80;86;90;35 sunshine.AppImage 11.8.0 450.80.02 50;52;60;61;62;70;75;80;86;90;35 + sunshine.pkg.tar.zst 11.8.0 450.80.02 50;52;60;61;62;70;75;80;86;90;35 sunshine_{arch}.flatpak 11.8.0 450.80.02 50;52;60;61;62;70;75;80;86;90;35 sunshine-debian-bullseye-{arch}.deb 11.8.0 450.80.02 50;52;60;61;62;70;75;80;86;90;35 sunshine-fedora-36-{arch}.rpm 12.0.0 525.60.13 50;52;60;61;62;70;75;80;86;90 @@ -78,8 +80,8 @@ Uninstall: ./sunshine.AppImage --remove -AUR Package -^^^^^^^^^^^ +Archlinux AUR Package +^^^^^^^^^^^^^^^^^^^^^ #. Open terminal and run the following code. .. code-block:: bash @@ -93,6 +95,34 @@ Uninstall: pacman -R sunshine +Archlinux PKGBUILD +^^^^^^^^^^^^^^^^^^ +#. Open terminal and run the following code. + + .. code-block:: bash + + wget https://github.com/LizardByte/Sunshine/releases/latest/download/PKGBUILD + makepkg -fi + +Uninstall: + .. code-block:: bash + + pacman -R sunshine + +Archlinux pkg +^^^^^^^^^^^^^ +#. Open terminal and run the following code. + + .. code-block:: bash + + wget https://github.com/LizardByte/Sunshine/releases/latest/download/sunshine.pkg.tar.zst + pacman -U --noconfirm sunshine.pkg.tar.zst + +Uninstall: + .. code-block:: bash + + pacman -R sunshine + Debian Package ^^^^^^^^^^^^^^ #. Download ``sunshine-{ubuntu-version}.deb`` and run the following code. diff --git a/packaging/linux/aur/PKGBUILD b/packaging/linux/aur/PKGBUILD index 60ac7fed0f2..cdae73f929f 100644 --- a/packaging/linux/aur/PKGBUILD +++ b/packaging/linux/aur/PKGBUILD @@ -1,11 +1,11 @@ # Edit on github: https://github.com/LizardByte/Sunshine/tree/nightly/packaging/linux/aur/PKGBUILD # Reference: https://wiki.archlinux.org/title/PKGBUILD -pkgname=@SUNSHINE_AUR_PKG@ +pkgname='sunshine' pkgver=@PROJECT_VERSION@@SUNSHINE_SUB_VERSION@ pkgrel=1 pkgdesc="@PROJECT_DESCRIPTION@" -arch=('x86_64' 'i686') +arch=('x86_64' 'aarch64') url=@PROJECT_HOMEPAGE_URL@ license=('GPL3') @@ -15,8 +15,7 @@ optdepends=('cuda: NvFBC capture support' 'libcap' 'libdrm') -provides=(@SUNSHINE_AUR_PROVIDES@) -conflicts=(@SUNSHINE_AUR_CONFLICTS@) +provides=('sunshine') source=("$pkgname::git+@GITHUB_CLONE_URL@#commit=@GITHUB_COMMIT@") sha256sums=('SKIP')