Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 28 additions & 9 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,19 @@
name: Build

# Builds the Space Engineers Linux binary dependencies (FFmpeg, DXVK Native,
# Steamworks.NET) and publishes them, together with the committed proprietary
# vendor blobs and the third-party licence texts, as a single tar.gz release
# asset. Pulsar for Linux and Magnetar both consume that archive.
# vkd3d-proton, OpenAL Soft, Steamworks.NET) and publishes them, together
# with the committed vendor blobs and the third-party licence texts, as
# three tar.gz release assets:
#
# * se1-dependencies.tar.gz Space Engineers 1 — consumed by Pulsar for
# Linux and Magnetar.
# * se2-dependencies.tar.gz Space Engineers 2 — the same patched DXVK
# build plus vkd3d-proton and the FMOD runtime.
# * steam-dependencies.tar.gz Steamworks.NET.dll + libsteam_api.so,
# consumed alongside either of the above.
#
# DXVK is built once with its Patches/ series applied; the identical
# binaries ship in both game archives. vkd3d-proton is SE2-only.
#
# * push to main -> build, then publish a PUBLIC release tagged
# v1.0.<run_number> and marked "latest".
Expand Down Expand Up @@ -43,7 +53,11 @@ jobs:
set -euo pipefail
sudo apt-get update
# build-essential/pkg-config/nasm -> FFmpeg
# meson/ninja-build/glslang-tools/libvulkan-dev -> DXVK Native
# meson/ninja-build/glslang-tools/libvulkan-dev -> DXVK Native and
# vkd3d-proton
# mingw-w64-tools -> widl, the IDL compiler vkd3d-proton uses to
# generate its COM headers (Scripts/build_vkd3d_proton.sh
# shims the x86_64-w64-mingw32-widl name onto PATH)
# cmake -> the pinned SDL3 that DXVK compiles against (ubuntu-24.04
# has no libsdl3-dev, so Scripts/build_sdl3.sh builds one)
# and OpenAL Soft
Expand All @@ -57,7 +71,7 @@ jobs:
sudo apt-get install -y --no-install-recommends \
build-essential pkg-config make cmake curl tar git \
nasm patchelf binutils zlib1g-dev \
meson ninja-build glslang-tools libvulkan-dev \
meson ninja-build glslang-tools libvulkan-dev mingw-w64-tools \
libpulse-dev libasound2-dev libpipewire-0.3-dev

- name: Set up .NET SDK
Expand All @@ -76,7 +90,10 @@ jobs:
uses: actions/upload-artifact@v7
with:
name: linux-dependencies
path: dist/linux-dependencies.tar.gz
path: |
dist/se1-dependencies.tar.gz
dist/se2-dependencies.tar.gz
dist/steam-dependencies.tar.gz
if-no-files-found: error

# Skipped for pull requests from forks: GITHUB_TOKEN is read-only for
Expand All @@ -89,7 +106,9 @@ jobs:
GH_TOKEN: ${{ github.token }}
run: |
set -euo pipefail
asset="dist/linux-dependencies.tar.gz"
assets=(dist/se1-dependencies.tar.gz
dist/se2-dependencies.tar.gz
dist/steam-dependencies.tar.gz)

if [ "${{ github.event_name }}" = "push" ]; then
# Push to main -> public, tagged, latest.
Expand All @@ -100,7 +119,7 @@ jobs:
--target "${{ github.sha }}" \
--title "Linux Dependencies $tag" \
--notes "Automated build of the Space Engineers Linux binary dependencies from commit ${{ github.sha }}." \
"$asset"
"${assets[@]}"
else
# Non-draft PR -> draft release: not public, not latest, and no git
# tag is created until a maintainer publishes it. One draft is kept
Expand All @@ -118,5 +137,5 @@ jobs:
--target "${{ github.event.pull_request.head.sha }}" \
--title "Linux Dependencies (PR #${{ github.event.pull_request.number }})" \
--notes "Draft build for PR #${{ github.event.pull_request.number }} (commit ${{ github.event.pull_request.head.sha }})." \
"$asset"
"${assets[@]}"
fi
7 changes: 4 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,8 @@ __marimo__/

# Project-specific
#
# The proprietary EOS and Steamworks runtimes are deliberately committed under
# Vendor/ - they have no public source and no fetchable binary. See
# Vendor/README.md. The blanket *.so rule above would otherwise exclude them.
# The proprietary EOS, Steamworks and FMOD runtimes are deliberately committed
# under Vendor/ - they have no public source and no fetchable binary. See
# Vendor/README.md. The blanket *.so rule above would otherwise exclude the
# first two (the FMOD files end in .so.14, which *.so does not match).
!Vendor/*.so
12 changes: 8 additions & 4 deletions Licenses/README.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,23 @@ Files in this directory:

FFmpeg-LGPL-2.1.txt LGPL-2.1 text covering libav*.so* / libsw*.so*
FFmpeg-README.txt Build provenance + LGPL relinking notes
DXVK-LICENSE.txt zlib licence covering libdxvk_*.so*
DXVK-LICENSE.txt zlib licence covering libdxvk_*.so* (built
with the patch series published under
Patches/dxvk/ of this repository)
OpenAL-Soft-LGPL-2.0.txt LGPL-2.0 text covering libopenal.so*
OpenAL-Soft-README.txt Build provenance + LGPL relinking notes
OpenAL-Soft-NOTICES.txt BSD-3-Clause and PFFFT notices for the
portions of OpenAL Soft under those terms
EOS-NOTICE.txt Attribution for libEOSSDK-Linux-Shipping.so
(proprietary, Epic Games)
Steam-NOTICE.txt Attribution for libsteam_api.so
(proprietary, Valve Corporation)
Steamworks.NET-LICENSE.txt MIT licence covering Steamworks.NET.dll

The native wrapper libraries (libD3DCompiler.so, libHavok.so,
libRecastDetour.so, libVRageNative.so) are MIT-licensed and are NOT part of
this archive; they are published separately by the
CometWorks/linux-native-wrappers repository, which ships its own licence
text.

The Space Engineers 2 companion archive (se2-dependencies.tar.gz) and the
Steam companion archive (steam-dependencies.tar.gz) carry their own LICENSES
directories, sourced from the se2/ and steam/ subdirectories of the
repository's Licenses/ folder; none of those notices ship here.
Loading