diff --git a/docker/fedora-38.dockerfile b/docker/fedora-38.dockerfile new file mode 100644 index 00000000..704963d9 --- /dev/null +++ b/docker/fedora-38.dockerfile @@ -0,0 +1,174 @@ +# syntax=docker/dockerfile:1.4 +# artifacts: true +# platforms: linux/amd64,linux/arm64/v8 +# platforms_pr: linux/amd64 +# no-cache-filters: sunshine-base,artifacts,sunshine +ARG BASE=fedora +ARG TAG=38 +FROM ${BASE}:${TAG} AS sunshine-base + +FROM sunshine-base as sunshine-build + +ARG TARGETPLATFORM +RUN echo "target_platform: ${TARGETPLATFORM}" + +ARG BRANCH +ARG BUILD_VERSION +ARG COMMIT +# note: BUILD_VERSION may be blank + +ENV BRANCH=${BRANCH} +ENV BUILD_VERSION=${BUILD_VERSION} +ENV COMMIT=${COMMIT} + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] +# install dependencies +# hadolint ignore=DL3041 +RUN <<_DEPS +#!/bin/bash +set -e +dnf -y update +dnf -y group install "Development Tools" +dnf -y install \ + boost-devel-1.78.0* \ + cmake-3.26.* \ + gcc-13.0.* \ + gcc-c++-13.0.* \ + git \ + libappindicator-gtk3-devel \ + libcap-devel \ + libcurl-devel \ + libdrm-devel \ + libevdev-devel \ + libva-devel \ + libvdpau-devel \ + libX11-devel \ + libxcb-devel \ + libXcursor-devel \ + libXfixes-devel \ + libXi-devel \ + libXinerama-devel \ + libXrandr-devel \ + libXtst-devel \ + mesa-libGL-devel \ + nodejs-npm \ + numactl-devel \ + openssl-devel \ + opus-devel \ + pulseaudio-libs-devel \ + rpm-build \ + wget \ + which +if [[ "${TARGETPLATFORM}" == 'linux/amd64' ]]; then + dnf -y install intel-mediasdk-devel +fi +dnf clean all +rm -rf /var/cache/yum +_DEPS + +# todo - enable cuda once it's supported for gcc 13 and fedora 38 +## install cuda +#WORKDIR /build/cuda +## versions: https://developer.nvidia.com/cuda-toolkit-archive +#ENV CUDA_VERSION="12.0.0" +#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 +# cuda_suffix="_sbsa" +#fi +#url="${cuda_prefix}${CUDA_VERSION}/local_installers/cuda_${CUDA_VERSION}_${CUDA_BUILD}_linux${cuda_suffix}.run" +#echo "cuda url: ${url}" +#wget "$url" --progress=bar:force:noscroll -q --show-progress -O ./cuda.run +#chmod a+x ./cuda.run +#./cuda.run --silent --toolkit --toolkitpath=/build/cuda --no-opengl-libs --no-man-page --no-drm +#rm ./cuda.run +#_INSTALL_CUDA + +# copy repository +WORKDIR /build/sunshine/ +COPY --link .. . + +# setup npm dependencies +RUN npm install + +# setup build directory +WORKDIR /build/sunshine/build + +# cmake and cpack +# todo - add cmake argument back in for cuda support "-DCMAKE_CUDA_COMPILER:PATH=/build/cuda/bin/nvcc \" +# todo - re-enable "DSUNSHINE_ENABLE_CUDA" +RUN <<_MAKE +#!/bin/bash +set -e +cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DSUNSHINE_ASSETS_DIR=share/sunshine \ + -DSUNSHINE_EXECUTABLE_PATH=/usr/bin/sunshine \ + -DSUNSHINE_ENABLE_WAYLAND=ON \ + -DSUNSHINE_ENABLE_X11=ON \ + -DSUNSHINE_ENABLE_DRM=ON \ + -DSUNSHINE_ENABLE_CUDA=OFF \ + /build/sunshine +make -j "$(nproc)" +cpack -G RPM +_MAKE + +FROM scratch AS artifacts +ARG BASE +ARG TAG +ARG TARGETARCH +COPY --link --from=sunshine-build /build/sunshine/build/cpack_artifacts/Sunshine.rpm /sunshine-${BASE}-${TAG}-${TARGETARCH}.rpm + +FROM sunshine-base as sunshine + +# copy deb from builder +COPY --link --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 +rm -rf /var/cache/yum +_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 +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/docs/source/about/installation.rst b/docs/source/about/installation.rst index e143c863..c5b0622b 100644 --- a/docs/source/about/installation.rst +++ b/docs/source/about/installation.rst @@ -42,6 +42,7 @@ CUDA is used for NVFBC capture. 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 sunshine-fedora-37-{arch}.rpm 12.0.0 525.60.13 50;52;60;61;62;70;75;80;86;90 + sunshine-fedora-38-{arch}.rpm unavailable unavailable none sunshine-ubuntu-20.04-{arch}.deb 11.8.0 450.80.02 50;52;60;61;62;70;75;80;86;90;35 sunshine-ubuntu-22.04-{arch}.deb 11.8.0 450.80.02 50;52;60;61;62;70;75;80;86;90;35 =========================================== ============== ============== ================================