Skip to content
Snippets Groups Projects
Commit 5872c740 authored by Jens Nolte's avatar Jens Nolte
Browse files

Clean up static build support

parent 5734e3e3
No related branches found
No related tags found
No related merge requests found
{ pkgs, haskellPackages ? pkgs.haskellPackages, args ? {} }:
{
pkgs,
haskellPackages ? pkgs.haskellPackages,
enableStatic ? pkgs.stdenv.targetPlatform.libc == "musl",
args ? {}
}:
let
lib = pkgs.lib;
haskell = pkgs.haskell;
#rawdrv = pkgs.haskell.packages.ghc921.callCabal2nix "q" ./. args;
rawdrv = haskellPackages.callCabal2nix "q" ./. args;
drv = haskell.lib.generateOptparseApplicativeCompletions [ "q" ] rawdrv;
#rawDrv = pkgs.haskell.packages.ghc921.callCabal2nix "q" ./. args;
rawDrv = haskellPackages.callCabal2nix "q" ./. args;
staticDrv = haskell.lib.overrideCabal rawDrv (old: {
enableSharedExecutables = false;
enableSharedLibraries = false;
configureFlags = [
"--ghc-option=-optl=-static"
"--extra-lib-dirs=${pkgs.gmp6.override { withStatic = true; }}/lib"
"--extra-lib-dirs=${pkgs.zlib.static}/lib"
"--extra-lib-dirs=${pkgs.libffi.overrideAttrs (old: { dontDisableStatic = true; })}/lib"
"--extra-lib-dirs=${pkgs.ncurses.override { enableStatic = true; }}/lib"
"--disable-executable-stripping"
];
});
drv = haskell.lib.generateOptparseApplicativeCompletions [ "q" ]
(if enableStatic then staticDrv else rawDrv);
in
if lib.inNixShell then drv.env else drv
......@@ -15,15 +15,17 @@
systems = lib.platforms.unix;
forAllSystems = lib.genAttrs systems;
in {
packages = forAllSystems (system: {
q = import ./. {
pkgs = import nixpkgs { inherit system; overlays = [ quasar-network.overlays.quasar quasar-network.overlay ]; };
};
aarch64-multiplatform.q =
(import nixpkgs { inherit system; overlays = [ self.overlay quasar-network.overlays.quasar quasar-network.overlay ]; }).pkgsCross.aarch64-multiplatform.haskellPackages.q;
packages = forAllSystems (system:
let
nixpkgs' = (import nixpkgs { inherit system; overlays = [ self.overlay quasar-network.overlays.quasar quasar-network.overlay ]; });
in {
q = nixpkgs'.pkgs.haskellPackages.q;
pkgsCross.aarch64-multiplatform.q = nixpkgs'.pkgsCross.aarch64-multiplatform.haskellPackages.q;
static.q = (import nixpkgs { inherit system; overlays = [ self.overlays.static quasar-network.overlays.quasar quasar-network.overlay ]; }).pkgsMusl.haskellPackages.q;
});
pkgsMusl.q = nixpkgs'.pkgsMusl.haskellPackages.q;
}
);
overlay = final: prev: {
haskell = prev.haskell // {
......@@ -36,27 +38,6 @@
};
};
overlays.static = final: prev: {
haskell = prev.haskell // {
packageOverrides = hfinal: hprev: prev.haskell.packageOverrides hfinal hprev // {
q = final.haskell.lib.overrideCabal
(import ./. { pkgs = final; haskellPackages = hfinal; })
(old: {
enableSharedExecutables = false;
enableSharedLibraries = false;
configureFlags = [
"--ghc-option=-optl=-static"
"--extra-lib-dirs=${final.gmp6.override { withStatic = true; }}/lib"
"--extra-lib-dirs=${final.zlib.static}/lib"
"--extra-lib-dirs=${final.libffi.overrideAttrs (old: { dontDisableStatic = true; })}/lib"
"--extra-lib-dirs=${final.ncurses.override { enableStatic = true; }}/lib"
"--disable-executable-stripping"
];
});
};
};
};
defaultPackage.x86_64-linux = self.packages.x86_64-linux.q;
devShell.x86_64-linux = self.defaultPackage.x86_64-linux.env;
};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment