nix: hack static-haskell-nix for updated nixpkgs

This patches static-haskell-nix to work for building postgrest
with updated nixpkgs (from ~202203):

- The ncurses 'enableStatic' argument doesn't exist anymore.
  We use the vanilla package instead, which seems to work fine.
- The 'isExecutable' check fails with a strange error related
  to trying to override 'mkDerivation'.
  We patch 'isExecutable' to check explicitly whether we're building
  postgrest. ('isExecutable' is used to determine whether to build
  a package statically.)
This commit is contained in:
Robert Vollmert
2022-06-13 13:25:54 +02:00
parent d7f54e76f4
commit 63ebf6e92b
4 changed files with 38 additions and 1 deletions
+5
View File
@@ -21,4 +21,9 @@
# See: https://github.com/NixOS/nixpkgs/pull/87879
nixpkgs-openssl-split-runtime-dependencies-of-static-builds =
./nixpkgs-openssl-split-runtime-dependencies-of-static-builds.patch;
static-haskell-nix-ncurses =
./static-haskell-nix-ncurses.patch;
static-haskell-nix-isexecutable =
./static-haskell-nix-isexecutable.patch;
}
@@ -0,0 +1,18 @@
diff --git a/survey/default.nix b/survey/default.nix
index 46d8066..5f7950b 100644
--- a/survey/default.nix
+++ b/survey/default.nix
@@ -85,10 +85,9 @@ let
# Function that tells us if a given Haskell package has an executable.
# Pass only Haskell packages to this!
# Filter away other stuff with `isProperHaskellPackage` first.
- isExecutable = pkg:
- (pkgs.haskell.lib.overrideCabal pkg (drv: {
- passthru.isExecutable = drv.isExecutable or false;
- })).isExecutable;
+ # FIXME postgrest: original fails with our nixpkgs version, we
+ # just hardcode the check to work for a static postgrest build.
+ isExecutable = pkg: pkg.name == "postgrest";
# Turn e.g. `Cabal_1_2_3_4` into `1.2.3.4`.
cabalDottedVersion =
@@ -0,0 +1,13 @@
diff --git a/survey/default.nix b/survey/default.nix
index 46d8066..a47f214 100644
--- a/survey/default.nix
+++ b/survey/default.nix
@@ -1519,7 +1519,7 @@ let
[
"--enable-executable-static" # requires `useFixedCabal`
# `enableShared` seems to be required to avoid `recompile with -fPIC` errors on some packages.
- "--extra-lib-dirs=${final.ncurses.override { enableStatic = true; enableShared = true; }}/lib"
+ "--extra-lib-dirs=${final.ncurses}/lib"
]
# TODO Figure out why this and the below libffi are necessary.
# `working` and `workingStackageExecutables` don't seem to need that,
+2 -1
View File
@@ -17,7 +17,8 @@ let
patches.applyPatches "patched-static-haskell-nix"
static-haskell-nix
[
# No patches currently required.
patches.static-haskell-nix-ncurses
patches.static-haskell-nix-isexecutable
];
patchedNixpkgs =