From 59fcec2e6d6860db7068d418f5a72897b974819b Mon Sep 17 00:00:00 2001 From: Hermes Date: Sat, 8 Aug 2026 11:52:14 +0000 Subject: [PATCH] Build with static D runtime config (matches reference Dockerfile) --- pkgs/anisette-v3-server/default.nix | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/pkgs/anisette-v3-server/default.nix b/pkgs/anisette-v3-server/default.nix index 653b1b2..c2cb824 100644 --- a/pkgs/anisette-v3-server/default.nix +++ b/pkgs/anisette-v3-server/default.nix @@ -4,7 +4,6 @@ fetchFromGitHub, zlib, openssl_1_1, - libplist, }: buildDubPackage rec { @@ -20,12 +19,14 @@ buildDubPackage rec { dubLock = ./dub-lock.json; - # libplist is dlopen'd at runtime by the plist-d C binding (libplist-2.0.so.3). - # The reference Docker image installs it explicitly (see Dadoum/anisette-v3-server#46: - # "Anisette did build but not run with current Dockerfile, I have added the - # dependencies"). Without it the ADI provisioning step fails silently and the - # server serves unprovisioned data, so Apple rejects the login. - buildInputs = [ zlib openssl_1_1 libplist ]; + # The reference Dockerfile builds with `dub build -c "static"` (statically + # linked D runtime). The Android-ELF loader does low-level symbol resolution + # and memory manipulation that is fragile with a dynamically-linked D runtime + # (GC/TLS conflicts), which can make the ADI provisioning step fail silently. + # Match the reference build config. + dubBuildFlags = [ "-c" "static" ]; + + buildInputs = [ zlib openssl_1_1 ]; installPhase = '' runHook preInstall