nix: Move postgrest-check-static inside derivation of static package

This will make the static build fail if we're not producing a static binary.
This commit is contained in:
Wolfgang Walther
2024-01-26 23:24:12 +01:00
committed by Wolfgang Walther
parent 411cf430ad
commit c43696c9a6
3 changed files with 15 additions and 29 deletions
-5
View File
@@ -134,14 +134,9 @@ jobs:
- uses: actions/checkout@v4
- name: Setup Nix Environment
uses: ./.github/actions/setup-nix
with:
tools: tests
cache-id: common
- name: Build static executable
run: nix-build -A postgrestStatic
- name: Check static executable
run: postgrest-check-static result/bin/postgrest
- name: Save built executable as artifact
uses: actions/upload-artifact@v4
with:
+15 -3
View File
@@ -46,9 +46,21 @@ let
});
});
makeExecutableStatic = drv:
lib.justStaticExecutables
(lib.appendConfigureFlag drv "--enable-executable-static");
makeExecutableStatic = drv: pkgs.lib.pipe drv [
(lib.compose.appendConfigureFlags [ "--enable-executable-static" ])
lib.compose.justStaticExecutables
(lib.compose.overrideCabal (drv: {
postInstall = ''
exe="$out/bin/postgrest"
if ! (file "$exe" | grep 'statically linked') then
echo "not a static executable, ldd output:"
ldd "$exe"
exit 1
fi
"$exe" --help
'';
}))
];
in
{
-21
View File
@@ -192,26 +192,6 @@ let
sed -i 's|^module \(.*\):|module \1/|g' test/coverage.overlay
'';
checkStatic =
checkedShellScript
{
name = "postgrest-check-static";
docs = "Verify that the argument is a static executable.";
args = [ "ARG_POSITIONAL_SINGLE([executable], [Executable])" ];
inRootDir = true;
withEnv = postgrest.env;
}
''
exe="$_arg_executable"
ldd_output=$(ldd "$exe" 2>&1 || true)
if ! grep -q "not a dynamic executable" <<< "$ldd_output"; then
echo "not a static executable, ldd output:"
echo "$ldd_output"
exit 1
fi
"$exe" --help
'';
in
buildToolbox
{
@@ -225,6 +205,5 @@ buildToolbox
dumpSchema
coverage
coverageDraftOverlay
checkStatic
];
}