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:
@@ -21,4 +21,9 @@
|
|||||||
# See: https://github.com/NixOS/nixpkgs/pull/87879
|
# See: https://github.com/NixOS/nixpkgs/pull/87879
|
||||||
nixpkgs-openssl-split-runtime-dependencies-of-static-builds =
|
nixpkgs-openssl-split-runtime-dependencies-of-static-builds =
|
||||||
./nixpkgs-openssl-split-runtime-dependencies-of-static-builds.patch;
|
./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,
|
||||||
@@ -17,7 +17,8 @@ let
|
|||||||
patches.applyPatches "patched-static-haskell-nix"
|
patches.applyPatches "patched-static-haskell-nix"
|
||||||
static-haskell-nix
|
static-haskell-nix
|
||||||
[
|
[
|
||||||
# No patches currently required.
|
patches.static-haskell-nix-ncurses
|
||||||
|
patches.static-haskell-nix-isexecutable
|
||||||
];
|
];
|
||||||
|
|
||||||
patchedNixpkgs =
|
patchedNixpkgs =
|
||||||
|
|||||||
Reference in New Issue
Block a user