release: target GE-Proton10-34 with latest DXVK
build-elsword-ge / build (push) Has been cancelled

This commit is contained in:
magges
2026-07-19 21:34:43 +02:00
parent 43099ccbd4
commit a840db9b41
6 changed files with 63 additions and 20 deletions
+12 -12
View File
@@ -2,14 +2,14 @@
This repository builds two custom Proton-GE 11 compatibility tools for Elsword on Linux/Steam:
- `Elsword-GE-11-1`
- `Elsword-GE-11-1+dxvk-git`
- `Elsword-GE-10-34`
- `Elsword-GE-10-34+dxvk-git`
It is designed for NixOS and for hosting on a private or public Gitea server with Gitea Actions.
## What this project does
- Builds a Proton-GE 11 / Wine 11 based compatibility tool for Elsword.
- Builds a Proton-GE 10-34 / Wine 10 based compatibility tool for Elsword.
- Uses Steam Linux Runtime 4 (`soldier`, appid `4183110`).
- Builds DXVK for both x86 and x64.
- Produces release archives that other users can install into Steam.
@@ -30,11 +30,11 @@ It is designed for NixOS and for hosting on a private or public Gitea server wit
## Variant difference
- `Elsword-GE-11-1`
- `Elsword-GE-10-34`
- Proton-GE 11 base
- DXVK newest stable release at build time
- `Elsword-GE-11-1+dxvk-git`
- `Elsword-GE-10-34+dxvk-git`
- Proton-GE 11 base
- DXVK from current upstream Git
@@ -127,9 +127,9 @@ nix develop -c ./scripts/create-release-archive.sh
After packaging, the main release files are:
```text
dist/Elsword-GE-11-1.tar.zst
dist/Elsword-GE-11-1+dxvk-git.tar.zst
dist/Elsword-GE-11-1-dxvk-git.tar.zst
dist/Elsword-GE-10-34.tar.zst
dist/Elsword-GE-10-34+dxvk-git.tar.zst
dist/Elsword-GE-10-34-dxvk-git.tar.zst
dist/SHA256SUMS.txt
dist/release-notes.md
```
@@ -137,13 +137,13 @@ dist/release-notes.md
If `+` causes issues in a filesystem or upload target, the safe alias is:
```text
Elsword-GE-11-1-dxvk-git.tar.zst
Elsword-GE-10-34-dxvk-git.tar.zst
```
The Steam compatibility tool name still remains exactly:
```text
Elsword-GE-11-1+dxvk-git
Elsword-GE-10-34+dxvk-git
```
## Install into Steam
@@ -151,8 +151,8 @@ Elsword-GE-11-1+dxvk-git
Install a built archive:
```bash
./scripts/install-to-steam.sh dist/Elsword-GE-11-1.tar.zst
./scripts/install-to-steam.sh dist/Elsword-GE-11-1+dxvk-git.tar.zst
./scripts/install-to-steam.sh dist/Elsword-GE-10-34.tar.zst
./scripts/install-to-steam.sh dist/Elsword-GE-10-34+dxvk-git.tar.zst
```
Generic installer for release archives, including Flatpak Steam users:
+11
View File
@@ -7,9 +7,20 @@
let
system = "x86_64-linux";
pkgs = import nixpkgs { inherit system; };
mingwPthreadRoot = pkgs.runCommand "elsword-ge-mingw-pthread" { } ''
mkdir -p "$out/x32" "$out/x64"
ln -s ${pkgs.pkgsCross.mingw32.windows.mcfgthreads}/lib/libmcfgthread.a "$out/x32/libpthread.a"
ln -s ${pkgs.pkgsCross.mingw32.windows.mcfgthreads}/lib/libmcfgthread.a "$out/x32/libmcfgthread.a"
ln -s ${pkgs.pkgsCross.mingw32.windows.mcfgthreads}/bin/libmcfgthread-2.dll "$out/x32/libmcfgthread-2.dll"
ln -s ${pkgs.pkgsCross.mingwW64.windows.mcfgthreads}/lib/libmcfgthread.a "$out/x64/libpthread.a"
ln -s ${pkgs.pkgsCross.mingwW64.windows.mcfgthreads}/lib/libmcfgthread.a "$out/x64/libmcfgthread.a"
ln -s ${pkgs.pkgsCross.mingwW64.windows.mcfgthreads}/bin/libmcfgthread-2.dll "$out/x64/libmcfgthread-2.dll"
'';
in
{
devShells.${system}.default = pkgs.mkShell {
MINGW_PTHREAD_ROOT = mingwPthreadRoot;
packages = with pkgs; [
bash
binutils
+16 -5
View File
@@ -10,11 +10,11 @@ DXVK_CACHE_DIR="${DXVK_CACHE_DIR:-$CACHE_DIR/dxvk}"
METADATA_DIR="${METADATA_DIR:-$DIST_DIR/metadata}"
STEAM_COMPAT_DIR_DEFAULT="${STEAM_COMPAT_DIR_DEFAULT:-$HOME/.local/share/Steam/compatibilitytools.d}"
UPSTREAM_REPO="${UPSTREAM_REPO:-GloriousEggroll/proton-ge-custom}"
ELSWORD_GE_VERSION="${ELSWORD_GE_VERSION:-11-1}"
ELSWORD_GE_VERSION="${ELSWORD_GE_VERSION:-10-34}"
PROTON_TAG="${PROTON_TAG:-GE-Proton${ELSWORD_GE_VERSION}}"
PROTON_ASSET="${PROTON_ASSET:-x86_64}"
RUNTIME_APPID="${RUNTIME_APPID:-4183110}"
WINE_SERIES="${WINE_SERIES:-Wine 11}"
WINE_SERIES="${WINE_SERIES:-Wine 10}"
DXVK_STABLE_TAG_DEFAULT="${DXVK_STABLE_TAG_DEFAULT:-latest}"
DXVK_GIT_REF="${DXVK_GIT_REF:-origin/master}"
MINGW_PTHREAD_ROOT="${MINGW_PTHREAD_ROOT:-}"
@@ -259,7 +259,7 @@ PY
resolve_runtime_dll_path() {
local arch="$1"
local dll="$2"
local compiler result nix_attr store_path
local compiler result nix_attr store_path arch_dir
case "$arch" in
x86_64) compiler="x86_64-w64-mingw32-g++" ;;
@@ -275,9 +275,20 @@ resolve_runtime_dll_path() {
if [[ "$dll" == "libmcfgthread-2.dll" ]]; then
case "$arch" in
x86_64) nix_attr="pkgsCross.mingwW64.windows.mcfgthreads" ;;
x86) nix_attr="pkgsCross.mingw32.windows.mcfgthreads" ;;
x86_64)
nix_attr="pkgsCross.mingwW64.windows.mcfgthreads"
arch_dir="x64"
;;
x86)
nix_attr="pkgsCross.mingw32.windows.mcfgthreads"
arch_dir="x32"
;;
esac
result="${MINGW_PTHREAD_ROOT:-}/$arch_dir/$dll"
if [[ -f "$result" ]]; then
printf "%s\n" "$result"
return 0
fi
store_path="$(NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM=1 nix path-info --impure "nixpkgs#${nix_attr}")"
result="$(find "$store_path" -name "$dll" -type f | head -n1 || true)"
if [[ -n "$result" && -f "$result" ]]; then
+2 -2
View File
@@ -7,8 +7,8 @@ STEAM_COMPAT_DIR="${STEAM_COMPAT_DIR:-$HOME/.local/share/Steam/compatibilitytool
usage() {
cat <<'EOF'
Usage:
./scripts/install-to-steam.sh dist/Elsword-GE-11-1.tar.zst
./scripts/install-to-steam.sh dist/Elsword-GE-11-1+dxvk-git.tar.zst
./scripts/install-to-steam.sh dist/Elsword-GE-10-34.tar.zst
./scripts/install-to-steam.sh dist/Elsword-GE-10-34+dxvk-git.tar.zst
EOF
}
+1 -1
View File
@@ -8,7 +8,7 @@ source "$SCRIPT_DIR/common.sh"
usage() {
cat <<'EOF'
Usage:
./scripts/validate-build.sh dist/Elsword-GE-11-1 Elsword-GE-11-1
./scripts/validate-build.sh dist/Elsword-GE-10-34 Elsword-GE-10-34
EOF
}
+21
View File
@@ -5,6 +5,13 @@ set -euo pipefail
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
source "$REPO_ROOT/scripts/common.sh"
if [[ "$ELSWORD_GE_VERSION" != "10-34" || "$PROTON_TAG" != "GE-Proton10-34" ]]; then
printf 'expected GE-Proton10-34 default, got version=%s tag=%s\n' "$ELSWORD_GE_VERSION" "$PROTON_TAG" >&2
exit 1
fi
printf 'Proton base is pinned to %s\n' "$PROTON_TAG"
expected_tag="latest"
actual_tag="$(dxvk_tag_for_variant stable)"
@@ -14,3 +21,17 @@ if [[ "$actual_tag" != "$expected_tag" ]]; then
fi
printf 'stable DXVK tag resolves dynamically as %s\n' "$actual_tag"
flake_file="$REPO_ROOT/flake.nix"
if ! rg -Fq 'MINGW_PTHREAD_ROOT = mingwPthreadRoot;' "$flake_file"; then
printf 'Nix shell must provide the MinGW pthread compatibility directory\n' >&2
exit 1
fi
if ! rg -Fq '${MINGW_PTHREAD_ROOT:-}/$arch_dir/$dll' "$REPO_ROOT/scripts/common.sh"; then
printf 'runtime dependency lookup must use the Nix shell MinGW directory\n' >&2
exit 1
fi
printf 'Nix shell provides the MinGW pthread compatibility directory\n'