static-haskell-nix
static-haskell-nix copied to clipboard
Enable SDL
The PR mentioned in https://github.com/nh2/static-haskell-nix/pull/107#issuecomment-883323568 seems to have landed in nixpkgs-unstable
.
... No CI? Okay, trying this locally with the patch:
NIX_PATH=nixpkgs=nixpkgs nix-build --no-link survey/default.nix -A haskellPackages.sdl2
Build failed with:
running tests
patching script interpreter paths in ../programs/zstdgrep
../programs/zstdgrep: interpreter directive changed from "#!/bin/sh" to "/nix/store/5pp3zddx9n8i3gbjsai1kyjfss9dc43w-bash-4.4-p23/bin/sh"
Test project /build/source/build_
Start 4: playTests
/nix/store/vf20zcyqr3qzcjhdidzk377qankcqsqa-binutils-2.35.1/bin/ld: libpython3.9.so.1.0.lto.o: warning: relocation against `PyDictValues_Type' in read-only section `.text'
/nix/store/vf20zcyqr3qzcjhdidzk377qankcqsqa-binutils-2.35.1/bin/ld: libpython3.9.so.1.0.lto.o: relocation R_X86_64_PC32 against symbol `PyBool_Type' can not be used when making a shared object; recompile with -fPIC
/nix/store/vf20zcyqr3qzcjhdidzk377qankcqsqa-binutils-2.35.1/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
ln: failed to access 'libpython3.9.so.1.0': No such file or directory
make: *** [Makefile:659: libpython3.9.so] Error 1
builder for '/nix/store/dj1py0bcxmqa7x35nvg4nxwy3g5b3b5z-python3-3.9.5.drv' failed with exit code 2
cannot build derivation '/nix/store/0i4q97h1c0hgj5cz0zkhpz2h788bnp77-dconf-0.40.0.drv': 1 dependencies couldn't be built
cannot build derivation '/nix/store/a48dwz3c9bk99rjxf94y9l8vwxkp8nxd-ghc-8.10.4.drv': 1 dependencies couldn't be built
cannot build derivation '/nix/store/nr52a34i3yxkf7kjq6hv7dllljp9kjd1-glib-2.68.3.drv': 1 dependencies couldn't be built
cannot build derivation '/nix/store/qvfqq2apjygyrsrhhifqz2wjdxp32gqb-itstool-2.0.6.drv': 1 dependencies couldn't be built
cannot build derivation '/nix/store/rsf3br8xzrrgg5zz3na1258bcc60k6nc-libapparmor-3.0.1.drv': 1 dependencies couldn't be built
cannot build derivation '/nix/store/f31281gx4zhhqhbyk4ix1h30mpddr240-libglvnd-1.3.3.drv': 1 dependencies couldn't be built
cannot build derivation '/nix/store/hfy4ixqmvs7xkk62r4q5hyh7zm7dpl08-libsndfile-1.0.30.drv': 1 dependencies couldn't be built
cannot build derivation '/nix/store/3idly82hkw79d208nxfgdps7zfailrrf-libxcb-1.14.drv': 1 dependencies couldn't be built
cannot build derivation '/nix/store/zah05iilfmdnkipqlnfxgsf9xfmhxwhk-libxkbcommon-1.3.0.drv': 1 dependencies couldn't be built
cannot build derivation '/nix/store/bdrf0wgmfyi7mfhvj1c5h4shjkw6yknq-libxml2-2.9.12.drv': 1 dependencies couldn't be built
cannot build derivation '/nix/store/3jh0lsb339f3fjqjg84ixlxk2mffjy4g-libxslt-1.1.34.drv': 1 dependencies couldn't be built
cannot build derivation '/nix/store/la00dm46q7nf901h89hm978ylan5vg36-wayland-1.19.0.drv': 1 dependencies couldn't be built
cannot build derivation '/nix/store/ixmghclkjy63hx2g1acgn8k94gh4xbw6-wayland-protocols-1.21.drv': 1 dependencies couldn't be built
cannot build derivation '/nix/store/ql7mrix3vj0v9wmdigla2msak6ianfnd-xorgproto-2021.4.drv': 1 dependencies couldn't be built
cannot build derivation '/nix/store/wskink3cvb71790dvdb988rg8dr0nrqj-sdl2-2.5.3.0.drv': 1 dependencies couldn't be built
error: build of '/nix/store/wskink3cvb71790dvdb988rg8dr0nrqj-sdl2-2.5.3.0.drv' failed
Not sure what to do next.
The problem seems to be the new enableLTO
option in python/cython/default.nix
. Setting it to false
allowed me to make progress.
Now I'm getting this error building GHC:
"cp" libraries/base/./GHC/Stack/CCS.hs-boot libraries/base/dist-install/build/GHC/Stack/CCS.hs-boot
cp: cannot create regular file 'libraries/base/dist-install/build/GHC/Stack/CCS.hs-boot': No such file or directory
libraries/integer-gmp/ghc.mk:4: libraries/integer-gmp/dist-install/build/.depend-v-p-dyn.haskell: No such file or directory
make[1]: *** [libraries/base/ghc.mk:4: libraries/base/dist-install/build/GHC/Stack/CCS.hs-boot] Error 1
make: *** [Makefile:128: all] Error 2
builder for '/nix/store/x3wwsdwrxhidkamin2jf67rd0ixgvn3c-ghc-8.10.4.drv' failed with exit code 2
cannot build derivation '/nix/store/v6cqgcdfwdhsh2rpnf19nxaaslwyb7p9-sdl2-2.5.3.0.drv': 1 dependencies couldn't be built
error: build of '/nix/store/v6cqgcdfwdhsh2rpnf19nxaaslwyb7p9-sdl2-2.5.3.0.drv' failed
And also this one building libdevil
:
libtool: link: g++ -shared -nostdlib /nix/store/4c13cwcklgkmkyi296a9mfqr1rb6sv6m-musl-1.2.2/lib/crti.o /nix/store/i7a5x595a3b9p8ln16agnnsrf894gdbm-gcc-10.3.0/lib/gcc/x86_64-unknown-linux-musl/10.3.0/crtbeginS.o .libs/libIL_la-il_alloc.o .libs/libIL_la-il_doom.o .libs/libIL_la-il_stack.o .libs/libIL_la-il_pcx.o .libs/libIL_la-il_rle.o .libs/libIL_la-il_bits.o .libs/libIL_la-il_endian.o .libs/libIL_la-il_exr.o .libs/libIL_la-il_jpeg.o .libs/libIL_la-il_pic.o .libs/libIL_la-il_sgi.o .libs/libIL_la-il_bmp.o .libs/libIL_la-il_error.o .libs/libIL_la-il_lif.o .libs/libIL_la-il_png.o .libs/libIL_la-il_states.o .libs/libIL_la-il_convbuff.o .libs/libIL_la-il_files.o .libs/libIL_la-il_main.o .libs/libIL_la-il_pnm.o .libs/libIL_la-il_targa.o .libs/libIL_la-il_wdp.o .libs/libIL_la-il_convert.o .libs/libIL_la-il_gif.o .libs/libIL_la-il_manip.o .libs/libIL_la-il_profiles.o .libs/libIL_la-il_tiff.o .libs/libIL_la-il_cut.o .libs/libIL_la-il_header.o .libs/libIL_la-il_mdl.o .libs/libIL_la-il_quantizer.o .libs/libIL_la-il_utility.o .libs/libIL_la-il_dcx.o .libs/libIL_la-il_icon.o .libs/libIL_la-il_mng.o .libs/libIL_la-il_raw.o .libs/libIL_la-il_wal.o .libs/libIL_la-il_dds.o .libs/libIL_la-il_internal.o .libs/libIL_la-il_pal.o .libs/libIL_la-il_rawdata.o .libs/libIL_la-il_devil.o .libs/libIL_la-il_io.o .libs/libIL_la-il_pcd.o .libs/libIL_la-il_register.o .libs/libIL_la-il_psd.o .libs/libIL_la-il_fastconv.o .libs/libIL_la-il_neuquant.o .libs/libIL_la-il_dds-save.o .libs/libIL_la-il_psp.o .libs/libIL_la-il_pix.o .libs/libIL_la-il_pxr.o .libs/libIL_la-il_vtf.o .libs/libIL_la-il_xpm.o .libs/libIL_la-il_hdr.o .libs/libIL_la-il_icns.o .libs/libIL_la-il_jp2.o .libs/libIL_la-altivec_common.o .libs/libIL_la-altivec_typeconversion.o .libs/libIL_la-il_sun.o .libs/libIL_la-il_nvidia.o .libs/libIL_la-il_wbmp.o .libs/libIL_la-il_squish.o .libs/libIL_la-il_iff.o .libs/libIL_la-il_ilbm.o .libs/libIL_la-il_size.o .libs/libIL_la-il_tpl.o .libs/libIL_la-il_fits.o .libs/libIL_la-il_iwi.o .libs/libIL_la-il_blp.o .libs/libIL_la-il_ftx.o .libs/libIL_la-il_dicom.o .libs/libIL_la-il_rot.o .libs/libIL_la-il_texture.o .libs/libIL_la-il_dpx.o .libs/libIL_la-il_utx.o .libs/libIL_la-il_mp3.o -Wl,-rpath -Wl,/nix/store/rslf9ramqpm0cigzshx9sb9m81awjkxg-libtiff-4.3.0/lib -Wl,-rpath -Wl,/nix/store/b493yxrr0glvv3988mkagqlq5k8rg5g1-xz-5.2.5/lib -Wl,-rpath -Wl,/nix/store/31xrqmhrqx1mki5dl695mbwln1nvzxbc-libpng-apng-1.6.37/lib -Wl,-rpath -Wl,/nix/store/wxrvirazjpjg28n7b4ic4xanma2g6j8i-libmng-2.0.3/lib -Wl,-rpath -Wl,/nix/store/4dp91920k88hf9xiwvk560imljzmhkx7-lcms-1.19/lib -Wl,-rpath -Wl,/nix/store/ffqns4hqmfarz4v0786bkr527ycba5l3-gcc-10.3.0-lib/lib/../lib64 -Wl,-rpath -Wl,/nix/store/rslf9ramqpm0cigzshx9sb9m81awjkxg-libtiff-4.3.0/lib -Wl,-rpath -Wl,/nix/store/b493yxrr0glvv3988mkagqlq5k8rg5g1-xz-5.2.5/lib -Wl,-rpath -Wl,/nix/store/31xrqmhrqx1mki5dl695mbwln1nvzxbc-libpng-apng-1.6.37/lib -Wl,-rpath -Wl,/nix/store/wxrvirazjpjg28n7b4ic4xanma2g6j8i-libmng-2.0.3/lib -Wl,-rpath -Wl,/nix/store/4dp91920k88hf9xiwvk560imljzmhkx7-lcms-1.19/lib -Wl,-rpath -Wl,/nix/store/ffqns4hqmfarz4v0786bkr527ycba5l3-gcc-10.3.0-lib/lib/../lib64 /nix/store/rslf9ramqpm0cigzshx9sb9m81awjkxg-libtiff-4.3.0/lib/libtiff.so /nix/store/b493yxrr0glvv3988mkagqlq5k8rg5g1-xz-5.2.5/lib/liblzma.so -ldeflate /nix/store/31xrqmhrqx1mki5dl695mbwln1nvzxbc-libpng-apng-1.6.37/lib/libpng16.so /nix/store/wxrvirazjpjg28n7b4ic4xanma2g6j8i-libmng-2.0.3/lib/libmng.so /nix/store/4dp91920k88hf9xiwvk560imljzmhkx7-lcms-1.19/lib/liblcms.so -ljpeg -L/nix/store/y3yaq4iz18cwdy00182raqrqqkij0cl1-openexr-2.5.7/lib -lIlmImf-2_5 -lImath-2_5 -lHalf-2_5 -lIex-2_5 -lIexMath-2_5 -lIlmThread-2_5 -lz -L/nix/store/5c4bda86vh2f3ylcs0mhxfgfnnp2yv0y-libjpeg-turbo-2.1.0/lib -L/nix/store/1dlhc7w4dlacgmkjbcx9454givv4kdqj-zlib-1.2.11/lib -L/nix/store/31xrqmhrqx1mki5dl695mbwln1nvzxbc-libpng-apng-1.6.37/lib -L/nix/store/b493yxrr0glvv3988mkagqlq5k8rg5g1-xz-5.2.5/lib -L/nix/store/rslf9ramqpm0cigzshx9sb9m81awjkxg-libtiff-4.3.0/lib -L/nix/store/2265hgdd0p74kpksylmi36nvi5giidpq-lcms2-2.12/lib -L/nix/store/wxrvirazjpjg28n7b4ic4xanma2g6j8i-libmng-2.0.3/lib -L/nix/store/4dp91920k88hf9xiwvk560imljzmhkx7-lcms-1.19/lib -L/nix/store/4m1k3nygch371wakfvw3syfybmwjgggs-ilmbase-2.5.7/lib -L/nix/store/4c13cwcklgkmkyi296a9mfqr1rb6sv6m-musl-1.2.2/lib -L/nix/store/ffqns4hqmfarz4v0786bkr527ycba5l3-gcc-10.3.0-lib/lib -L/nix/store/4qq14211l3470xlhcjl3r0lcx2f53p88-gcc-wrapper-10.3.0/bin -L/nix/store/i7a5x595a3b9p8ln16agnnsrf894gdbm-gcc-10.3.0/lib/gcc/x86_64-unknown-linux-musl/10.3.0 -L/nix/store/i7a5x595a3b9p8ln16agnnsrf894gdbm-gcc-10.3.0/lib/gcc/x86_64-unknown-linux-musl/10.3.0/../../../../lib64 -L/nix/store/i7a5x595a3b9p8ln16agnnsrf894gdbm-gcc-10.3.0/lib/gcc/x86_64-unknown-linux-musl/10.3.0/../../.. /nix/store/ffqns4hqmfarz4v0786bkr527ycba5l3-gcc-10.3.0-lib/lib/../lib64/libstdc++.so -lm -lc -lgcc_s /nix/store/i7a5x595a3b9p8ln16agnnsrf894gdbm-gcc-10.3.0/lib/gcc/x86_64-unknown-linux-musl/10.3.0/crtendS.o /nix/store/4c13cwcklgkmkyi296a9mfqr1rb6sv6m-musl-1.2.2/lib/crtn.o -msse -msse2 -msse3 -pthread -Wl,-soname -Wl,libIL.so.1 -o .libs/libIL.so.1.1.0
/nix/store/vf20zcyqr3qzcjhdidzk377qankcqsqa-binutils-2.35.1/bin/ld: cannot find -ldeflate
CC muxinternal.lo
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:501: libIL.la] Error 1
make[1]: Leaving directory '/build/devil-1.7.8/lib'
make: *** [Makefile:322: all-recursive] Error 1
builder for '/nix/store/n24v74x7736yaycg9yk2cccqva0fdwig-libdevil-1.7.8.drv' failed with exit code 2
cannot build derivation '/nix/store/hq26jq44scw0ci7k9vdiqz17njvxw0c4-graphviz-2.47.2.drv': 1 dependencies couldn't be built
cannot build derivation '/nix/store/rwgkf27c28j9rv7krp3cyhy0j060k9f8-wayland-1.19.0.drv': 1 dependencies couldn't be built
cannot build derivation '/nix/store/0lr6gz04igsvac3nan1gnlyslvclpkk6-SDL2-2.0.14.drv': 1 dependencies couldn't be built
cannot build derivation '/nix/store/v6cqgcdfwdhsh2rpnf19nxaaslwyb7p9-sdl2-2.5.3.0.drv': 1 dependencies couldn't be built
error: build of '/nix/store/v6cqgcdfwdhsh2rpnf19nxaaslwyb7p9-sdl2-2.5.3.0.drv' failed
@nh2 Any suggestion what I could try next?
The problem with GHC is gone after updating to newer nixpkgs
. The problem with libdevil
is solved by adding libdeflate
to buildInputs
.
OK, I have gotten it to work with nixpkgs
95f1154f993bc788bad7df1feed1b98c7e7381cb
patched as follows:
diff --git a/pkgs/development/interpreters/python/cpython/default.nix b/pkgs/development/interpreters/python/cpython/default.nix
index f52255f4748..a5fecb6cd05 100644
--- a/pkgs/development/interpreters/python/cpython/default.nix
+++ b/pkgs/development/interpreters/python/cpython/default.nix
@@ -45,7 +45,7 @@
# enableLTO is a subset of the enableOptimizations flag that doesn't harm reproducibility.
# enabling LTO on 32bit arch causes downstream packages to fail when linking
# enabling LTO on *-darwin causes python3 to fail when linking.
-, enableLTO ? stdenv.is64bit && stdenv.isLinux
+, enableLTO ? false # stdenv.is64bit && stdenv.isLinux
, reproducibleBuild ? true
, pythonAttr ? "python${sourceVersion.major}${sourceVersion.minor}"
}:
diff --git a/pkgs/development/libraries/libdevil/default.nix b/pkgs/development/libraries/libdevil/default.nix
index fa48c773dfc..04a6636dc9d 100644
--- a/pkgs/development/libraries/libdevil/default.nix
+++ b/pkgs/development/libraries/libdevil/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, libjpeg, libpng, libmng, lcms1, libtiff, openexr, libGL
+{ lib, stdenv, fetchurl, libdeflate, libjpeg, libpng, libmng, lcms1, libtiff, openexr, libGL
, libX11, pkg-config, OpenGL
}:
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
outputs = [ "out" "dev" ];
- buildInputs = [ libjpeg libpng libmng lcms1 libtiff openexr libGL libX11 ]
+ buildInputs = [ libdeflate libjpeg libpng libmng lcms1 libtiff openexr libGL libX11 ]
++ lib.optionals stdenv.isDarwin [ OpenGL ];
nativeBuildInputs = [ pkg-config ];
Upstream issue about Python: https://github.com/NixOS/nixpkgs/issues/131557, patch: https://github.com/NixOS/nixpkgs/pull/131951
Upstream issue about libdevil
: https://github.com/NixOS/nixpkgs/issues/132218, patch: https://github.com/NixOS/nixpkgs/issues/132218
Turns out, it’s something in static-haskell-nix
specifically that causes libdevil
to fail. The build failure could not be reproduced with upstream pkgsMusl
, see https://github.com/NixOS/nixpkgs/issues/132218#issuecomment-890372968
So my fix (adding libdeflate
to buildInputs
) that I tried to submit upstream isn’t right.
... No CI?
There is, but because the builds can take tens of hours (timing out the usual VM-based CI systems), it's using Buildkite and HerculesCI with a community-sponsored dedicated bulider machine, which aren't safe for building untrusted code, thus they don't build all PRs automatically.
I haven't figured out yet how to tell Buildkite via its UI or a Github comment to build contributer PRs after looking at them, so I build them manually so far.
Some tips regarding this would be appreciated!
If on top of current master
, I cherry-pick into the nixpkgs
submodule the commit https://github.com/NixOS/nixpkgs/commit/60793627351c0432d369b5ff77956871cbb2d413 to fix alsa-lib
compiling with musl, then I get all the way to building the LambdaHack
package (which depends on SDL2), with failure:
Linking dist/build/LambdaHack/LambdaHack ...
/nix/store/8i49006sm0m9d0kri4i4hg7yndn1646b-binutils-2.35.1/bin/ld: cannot find -lSDL2_ttf
That's because SDL2_ttf
doesn't have .a
files.
That can be gotten past with a simple line:
diff --git a/survey/default.nix b/survey/default.nix
index 46d8066..5323198 100644
--- a/survey/default.nix
+++ b/survey/default.nix
@@ -653,6 +653,8 @@ let
#patchelf = issue_61682_throw "patchelf" previous.patchelf;
#xz = issue_61682_throw "xz" previous.xz;
+ SDL2_ttf = previous.SDL2_ttf.overrideAttrs (old: { dontDisableStatic = true; });
+
postgresql = (previous.postgresql.overrideAttrs (old: { dontDisableStatic = true; })).override {
# We need libpq, which does not need systemd,
# and systemd doesn't currently build with musl.
Then we get some more linker errors, leading with:
Linking dist/build/LambdaHack/LambdaHack ...
/nix/store/8i49006sm0m9d0kri4i4hg7yndn1646b-binutils-2.35.1/bin/ld: /nix/store/8khwg9wczxyd29jl6knj2zslmkbb6s3q-SDL2_ttf-2.0.15/lib/libSDL2_ttf.a(SDL_ttf.o): in function `TTF_initFontMetrics':
(.text+0x340): undefined reference to `FT_MulFix'
FT_MulFix
is a freetype
function. The problem here is that the pkg-config
.pc
file generated by SDL2_ttf
is incorrect for static linking: It is hand-written, containing only a Requires:
line:
Name: SDL2_ttf
Description: ttf library for Simple DirectMedia Layer with FreeType 2 support
Version: 2.0.15
Requires: sdl2 >= 2.0.8
Libs: -L${libdir} -lSDL2_ttf
Cflags: -I${includedir}/SDL2
If it was generated by one of the common build systems, it would probably more easily contain the Requires.private
line, with -lfreetype
on it, to indicate that for static linking, linking in freetype
is required because it's a direct dependency of SDL2_ttf
.
This is explained in https://people.freedesktop.org/~dbn/pkg-config-guide.html (search for all occurrences of Requires.private
):
libraries from
Requires.private
will only be included when static linking
For example, the .pc
file for libpng
does it correctly:
Name: libpng
Description: Loads and saves PNG files
Version: 1.6.37
Requires: zlib
Libs: -L${libdir} -lpng16
Libs.private: -lz <- note this line
Cflags: -I${includedir}
The best solution would be to fix SDL2_ttf
to generate a better .pc
file. This would require changing its configure.ac
file.
Bu we can also add the -l
flags in survey/default.nix
.
I have succeeded building SDL2 and associated libraries statically now, and also LambdaHack
, with some overrides I still need to clean up.
But what needs research is how to make a static SDL2 find a graphics card or use software rendering via Mesa llvmpipe
:
/nix/store/wydhcgwplw9grms8d3y8sdfm5srg8xgb-LambdaHack-0.10.2.0/bin/LambdaHack
LambdaHack: SDLCallFailed {sdlExceptionCaller = "SDL.Init.init", sdlFunction = "SDL_Init", sdlExceptionError = "No available video device"}
What happens when you do SDL_VIDEODRIVER=x11 /nix/store/wydhcgwplw9grms8d3y8sdfm5srg8xgb-LambdaHack-0.10.2.0/bin/LambdaHack
?
I was able to reproduce the problems with a small C++ program and I was told libgl can't be linked statically, see https://github.com/utdemir/ghc-musl/issues/14#issuecomment-891353128
No idea how to link a software rendering replacement of libgl (llvmpipe?), but that may be the only solution, unless we can make dlopen to work.
@Mikolaj On Ubuntu I get:
SDL_VIDEODRIVER=x11 ./LambdaHack
LambdaHack: SDLCallFailed {sdlExceptionCaller = "SDL.Video.createRenderer", sdlFunction = "SDL_CreateRenderer", sdlExceptionError = "Couldn't find matching render driver"}
Here is the static binary in case you want to try:
LambdaHack: SDLCallFailed {sdlExceptionCaller = "SDL.Init.init", sdlFunction = "SDL_Init", sdlExceptionError = "No available video device"}
@Mikolaj Sorry, that error was misleading: That happened when I tried to run the game on a headless machine without any graphical display, which doesn't make sense. The newer error from above is the one to look into.
Collecting here some links where people build static GUI apps with Mesa swrast
== llvmpipe
, as I don't know myself yet how to do it:
- TurboVNC: https://github.com/TurboVNC/turbovnc/issues/237, search in the code
- https://www.visitusers.org/index.php?title=Static_Libsim_on_Cray
I've also posted the question to the SDL forum here: https://discourse.libsdl.org/t/what-are-my-options-for-static-linking-on-linux-with-software-opengl-support/32549
LambdaHack: SDLCallFailed {sdlExceptionCaller = "SDL.Init.init", sdlFunction = "SDL_Init", sdlExceptionError = "No available video device"}
@Mikolaj Sorry, that error was misleading: That happened when I tried to run the game on a headless machine without any graphical display, which doesn't make sense. The newer error from above is the one to look into.
I'm getting (on my Ubuntu 16.04 desktop, no VM)
LambdaHack: SDLCallFailed {sdlExceptionCaller = "SDL.Video.createRenderer", sdlFunction = "SDL_CreateRenderer", sdlExceptionError = "Couldn't find matching render driver"}
But that's already more than I was getting with ghc-musl, because a windows opens up and only then it fails with the message on the console.
For what I gather this won't be possible in alpine due musl, since it doesn't support dlopen() calls. That is for my case at least, not in haskell/ghc.
https://github.com/libsdl-org/SDL/blob/main/src/video/x11/SDL_x11dyn.c#L164 https://github.com/libsdl-org/SDL/blob/main/src/loadso/dlopen/SDL_sysloadso.c#L51 https://git.musl-libc.org/cgit/musl/tree/src/ldso/dlopen.c