From 991654fa4ab7be07ce70b02bcc935491239a52c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Domen=20Ko=C5=BEar?= Date: Fri, 1 Sep 2017 16:49:50 +0200 Subject: [PATCH] haskell: add combinator to enable DWARF debugging Tested using: $ cat test-strip.nix with (import ./. {}); with haskell.lib; haskell.packages.ghc802.override { overrides = self: super: { microlens = enableDWARFDebugging super.microlens; }; } $ nix-build -A microlens test-strip.nix $ objdump -t --- pkgs/development/haskell-modules/lib.nix | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/pkgs/development/haskell-modules/lib.nix b/pkgs/development/haskell-modules/lib.nix index 6da19794f6f..48110cffabf 100644 --- a/pkgs/development/haskell-modules/lib.nix +++ b/pkgs/development/haskell-modules/lib.nix @@ -73,6 +73,17 @@ rec { disableHardening = drv: flags: overrideCabal drv (drv: { hardeningDisable = flags; }); + # Controls if Nix should strip the binary files (removes debug symbols) + doStrip = drv: overrideCabal drv (drv: { dontStrip = false; }); + dontStrip = drv: overrideCabal drv (drv: { dontStrip = true; }); + + # Useful for debugging segfaults with gdb. + # -g: enables debugging symbols + # --disable-*-stripping: tell GHC not to strip resulting binaries + # dontStrip: see above + enableDWARFDebugging = drv: + appendConfigureFlag (dontStrip drv) "--ghc-options=-g --disable-executable-stripping --disable-library-stripping"; + sdistTarball = pkg: lib.overrideDerivation pkg (drv: { name = "${drv.pname}-source-${drv.version}"; # Since we disable the haddock phase, we also need to override the