Skip to content

build from source fails on release tag v2026.403 #4947

@atassis

Description

@atassis

Is there an existing issue for this?

  • I have searched the existing issues

Is your issue described in the documentation?

  • I have read the documentation

Is your issue present in the latest beta/pre-release?

This issue is present in the latest pre-release

Describe the Bug

Building Sunshine from source using the release tag v2026.403.124357 fails with two compilation errors caused by dependency version drift.

Reproduction steps:

  1. git clone --depth=1 --branch v2026.403.124357 --recurse-submodules https://github.com/LizardByte/Sunshine.git
  2. cd Sunshine
  3. ./scripts/linux_build.sh --step=deps --sudo-off
  4. ./scripts/linux_build.sh --step=cmake --sudo-off
  5. ./scripts/linux_build.sh --step=build --sudo-off

Error 1 — vulkan_encode.cpp fails because FFmpeg (fetched at build time via FetchContent) deprecated AVVulkanDeviceContext::lock_queue/unlock_queue, and the build uses -DBUILD_WERROR=ON:

src/platform/linux/vulkan_encode.cpp:742:19: error: 'AVVulkanDeviceContext::lock_queue' is deprecated [-Werror=deprecated-declarations]

Error 2 — nvenc_base.cpp triggers a version guard #error and references struct members that no longer exist in the bundled nv-codec-headers:

src/nvenc/nvenc_base.cpp:24:4: error: #error Check and update NVENC code for backwards compatibility!
src/nvenc/nvenc_base.cpp:336:27: error: 'struct _NV_ENC_CONFIG_HEVC' has no member named 'pixelBitDepthMinus8'

The root cause is that linux_build.sh fetches FFmpeg at build time without pinning a version. When upstream FFmpeg updates its headers, previously released tags become unbuildable.

Expected Behavior

Release tags should build successfully at any point in time, not only immediately after release.

Additional Context

Workaround: set -DBUILD_WERROR=OFF and patch out the #error / removed struct members in nvenc_base.cpp. This is not ideal for contributors building from source.

Pinning the FFmpeg version in CMake FetchContent (or documenting the compatible version range) would prevent this.

Host Operating System

Docker

Operating System Version

Ubuntu 24.04.4 LTS (Docker image)

Architecture

amd64/x86_64

Package

other (self built)

GPU Type

NVIDIA

GPU Model

RTX 5060 Ti 16GB

GPU Driver/Mesa Version

595.58.03

Capture Method

wlroots (Linux)

Apps

Log output

src/platform/linux/vulkan_encode.cpp:742:19: error: 'AVVulkanDeviceContext::lock_queue' is deprecated [-Werror=deprecated-declarations]
src/platform/linux/vulkan_encode.cpp:748:19: error: 'AVVulkanDeviceContext::unlock_queue' is deprecated [-Werror=deprecated-declarations]
cc1plus: all warnings being treated as errors

src/nvenc/nvenc_base.cpp:24:4: error: #error Check and update NVENC code for backwards compatibility!
src/nvenc/nvenc_base.cpp:336:27: error: 'struct _NV_ENC_CONFIG_HEVC' has no member named 'pixelBitDepthMinus8'
src/nvenc/nvenc_base.cpp:369:27: error: 'struct _NV_ENC_CONFIG_AV1' has no member named 'inputPixelBitDepthMinus8'
src/nvenc/nvenc_base.cpp:370:27: error: 'struct _NV_ENC_CONFIG_AV1' has no member named 'pixelBitDepthMinus8'
ninja: build stopped: subcommand failed.

Online logs

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions