godot: avoid builtin libraries where possible (#444063)

This commit is contained in:
David McFarland
2025-09-30 16:20:05 +00:00
committed by GitHub
2 changed files with 130 additions and 42 deletions
@@ -0,0 +1,25 @@
From 6d43e80c0a455fea5dcb656967e73f755ecdd645 Mon Sep 17 00:00:00 2001
From: David McFarland <corngood@gmail.com>
Date: Sun, 9 Mar 2025 19:42:33 -0300
Subject: [PATCH] Linux: fix missing library with builtin_glslang=false
---
platform/linuxbsd/detect.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/platform/linuxbsd/detect.py b/platform/linuxbsd/detect.py
index b5e80f4a4d..8389096e26 100644
--- a/platform/linuxbsd/detect.py
+++ b/platform/linuxbsd/detect.py
@@ -472,7 +472,7 @@ def configure(env: "SConsEnvironment"):
env.ParseConfig("pkg-config vulkan --cflags --libs")
if not env["builtin_glslang"]:
# No pkgconfig file so far, hardcode expected lib name.
- env.Append(LIBS=["glslang", "SPIRV"])
+ env.Append(LIBS=["glslang", "glslang-default-resource-limits", "SPIRV"])
if env["opengl3"]:
env.Append(CPPDEFINES=["GLES3_ENABLED"])
--
2.47.1
+105 -42
View File
@@ -5,17 +5,27 @@
callPackage,
dbus,
dotnetCorePackages,
embree,
enet,
exportTemplatesHash,
fetchFromGitHub,
fetchpatch,
fontconfig,
freetype,
glib,
glslang,
graphite2,
harfbuzz,
hash,
icu,
installShellFiles,
lib,
libdecor,
libGL,
libjpeg_turbo,
libpulseaudio,
libtheora,
libwebp,
libX11,
libXcursor,
libXext,
@@ -26,10 +36,16 @@
libXrandr,
libXrender,
makeWrapper,
mbedtls,
miniupnpc,
openxr-loader,
pcre2,
perl,
pkg-config,
recastnavigation,
runCommand,
scons,
sdl3,
speechd-minimal,
stdenv,
stdenvNoCC,
@@ -55,6 +71,8 @@
# https://github.com/godotengine/godot/pull/73504
withWayland ? true,
withX11 ? true,
wslay,
zstd,
}:
assert lib.asserts.assertOneOf "withPrecision" withPrecision [
"single"
@@ -369,8 +387,24 @@ let
ccflags = "-fno-strict-aliasing";
linkflags = "-Wl,--build-id";
# libraries that aren't available in nixpkgs
builtin_msdfgen = true;
builtin_rvo2_2d = true;
builtin_rvo2_3d = true;
builtin_xatlas = true;
# using system clipper2 is currently not implemented
builtin_clipper2 = true;
use_sowrap = false;
}
// lib.optionalAttrs (lib.versionOlder version "4.4") {
# libraries that aren't available in nixpkgs
builtin_squish = true;
# broken with system packages
builtin_miniupnpc = true;
}
// lib.optionalAttrs (lib.versionAtLeast version "4.5") {
redirect_build_objects = false; # Avoid copying build objects to output
}
@@ -380,23 +414,31 @@ let
strictDeps = true;
patches =
lib.optionals (lib.versionOlder version "4.4") [
(fetchpatch {
name = "wayland-header-fix.patch";
url = "https://github.com/godotengine/godot/commit/6ce71f0fb0a091cffb6adb4af8ab3f716ad8930b.patch";
hash = "sha256-hgAtAtCghF5InyGLdE9M+9PjPS1BWXWGKgIAyeuqkoU=";
})
# Fix a crash in the mono test project build. It no longer seems to
# happen in 4.4, but an existing fix couldn't be identified.
./CSharpLanguage-fix-crash-in-reload_assemblies-after-.patch
]
++ lib.optional (lib.versionAtLeast version "4.5") ./fix-freetype-link-error.patch;
patches = [
./Linux-fix-missing-library-with-builtin_glslang-false.patch
]
++ lib.optionals (lib.versionOlder version "4.4") [
(fetchpatch {
name = "wayland-header-fix.patch";
url = "https://github.com/godotengine/godot/commit/6ce71f0fb0a091cffb6adb4af8ab3f716ad8930b.patch";
hash = "sha256-hgAtAtCghF5InyGLdE9M+9PjPS1BWXWGKgIAyeuqkoU=";
})
# Fix a crash in the mono test project build. It no longer seems to
# happen in 4.4, but an existing fix couldn't be identified.
./CSharpLanguage-fix-crash-in-reload_assemblies-after-.patch
]
++ lib.optional (lib.versionAtLeast version "4.5") ./fix-freetype-link-error.patch;
postPatch = ''
# this stops scons from hiding e.g. NIX_CFLAGS_COMPILE
perl -pi -e '{ $r += s:(env = Environment\(.*):\1\nenv["ENV"] = os.environ: } END { exit ($r != 1) }' SConstruct
# disable all builtin libraries by default
perl -pi -e '{ $r |= s:(opts.Add\(BoolVariable\("builtin_.*, )True(\)\)):\1False\2: } END { exit ($r != 1) }' SConstruct
substituteInPlace platform/linuxbsd/detect.py \
--replace-fail /usr/include/recastnavigation ${lib.escapeShellArg (lib.getDev recastnavigation)}/include/recastnavigation
substituteInPlace thirdparty/glad/egl.c \
--replace-fail \
'static const char *NAMES[] = {"libEGL.so.1", "libEGL.so"}' \
@@ -423,36 +465,57 @@ let
pkg-config
];
buildInputs =
lib.optionals (editor && withMono) dotnet-sdk.packages
++ lib.optional withAlsa alsa-lib
++ lib.optional (withX11 || withWayland) libxkbcommon
++ lib.optionals withX11 [
libX11
libXcursor
libXext
libXfixes
libXi
libXinerama
libXrandr
libXrender
]
++ lib.optionals withWayland [
# libdecor
wayland
]
++ lib.optionals withDbus [
dbus
]
++ lib.optionals withFontconfig [
fontconfig
]
++ lib.optional withPulseaudio libpulseaudio
++ lib.optionals withSpeechd [
speechd-minimal
glib
]
++ lib.optional withUdev udev;
buildInputs = [
embree
enet
freetype
glslang
graphite2
(harfbuzz.override { withIcu = true; })
icu
libtheora
libwebp
mbedtls
miniupnpc
openxr-loader
pcre2
recastnavigation
wslay
zstd
]
++ lib.optionals (lib.versionAtLeast version "4.5") [
libjpeg_turbo
sdl3
]
++ lib.optionals (editor && withMono) dotnet-sdk.packages
++ lib.optional withAlsa alsa-lib
++ lib.optional (withX11 || withWayland) libxkbcommon
++ lib.optionals withX11 [
libX11
libXcursor
libXext
libXfixes
libXi
libXinerama
libXrandr
libXrender
]
++ lib.optionals withWayland [
libdecor
wayland
]
++ lib.optionals withDbus [
dbus
]
++ lib.optionals withFontconfig [
fontconfig
]
++ lib.optional withPulseaudio libpulseaudio
++ lib.optionals withSpeechd [
speechd-minimal
glib
]
++ lib.optional withUdev udev;
nativeBuildInputs = [
installShellFiles