From 7123bddc184e4c96caa7705b319609f07534359d Mon Sep 17 00:00:00 2001 From: Sander Date: Fri, 1 May 2026 15:31:07 +0200 Subject: [PATCH] libghostty-vt: fix linker tests for darwin --- nix/libghostty-vt.nix | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/nix/libghostty-vt.nix b/nix/libghostty-vt.nix index eedc47e05..2b67fc838 100644 --- a/nix/libghostty-vt.nix +++ b/nix/libghostty-vt.nix @@ -103,14 +103,25 @@ stdenv.mkDerivation (finalAttrs: { --replace-fail "$out" "$dev" ''; - passthru.tests = { + passthru.tests = let + sharedExt = stdenv.hostPlatform.extensions.sharedLibrary; + sharedLibName = version: + if stdenv.hostPlatform.isDarwin + then "libghostty-vt.${version}${sharedExt}" + else "libghostty-vt${sharedExt}.${version}"; + linkCheck = bin: pat: + if stdenv.hostPlatform.isDarwin + then ''otool -L "${bin}" | grep -q ${pat}'' + else ''ldd "${bin}" 2>/dev/null | grep -q ${pat}''; + in { sanity-check = let version = "${lib.versions.major finalAttrs.version}.${lib.versions.minor finalAttrs.version}.${lib.versions.patch finalAttrs.version}"; in runCommand "sanity-check" {} (builtins.concatStringsSep "\n" [ '' - ${lib.getExe' stdenv.cc "nm"} "${finalAttrs.finalPackage}/lib/libghostty-vt.so.${version}" | grep -q 'T ghostty_terminal_new' - ${lib.getExe' stdenv.cc "nm"} "${finalAttrs.finalPackage.dev}/lib/libghostty-vt.a" | grep -q 'T ghostty_terminal_new' + set +o pipefail + ${lib.getExe' stdenv.cc "nm"} "${finalAttrs.finalPackage}/lib/${sharedLibName version}" | grep -qE 'T _?ghostty_terminal_new' + ${lib.getExe' stdenv.cc "nm"} "${finalAttrs.finalPackage.dev}/lib/libghostty-vt.a" | grep -qE 'T _?ghostty_terminal_new' '' ( lib.optionalString simd @@ -167,7 +178,7 @@ stdenv.mkDerivation (finalAttrs: { then "yes" else "no" }" - ldd "$out/bin/test" 2>/dev/null | grep -q libghostty-vt + ${linkCheck "$out/bin/test" "libghostty-vt"} runHook postInstallCheckHooks ''; @@ -205,7 +216,7 @@ stdenv.mkDerivation (finalAttrs: { then "yes" else "no" }" - ! ldd "$out/bin/test" 2>/dev/null | grep -q libghostty-vt + ! ${linkCheck "$out/bin/test" "libghostty-vt"} runHook postInstallCheckHooks ''; @@ -240,7 +251,7 @@ stdenv.mkDerivation (finalAttrs: { installCheckPhase = '' runHook preInstallCheckHooks - ldd "$out/bin/test" 2>/dev/null | grep -q libghostty-vt + ${linkCheck "$out/bin/test" "libghostty-vt"} runHook postInstallCheckHooks '';