summary refs log tree commit diff
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2015-10-30 15:16:48 +0100
committerEelco Dolstra <eelco.dolstra@logicblox.com>2015-10-30 15:21:16 +0100
commitd9d5c98c56809d2941404751b2304beab4e00c3e (patch)
treea5fb048bbd8d4f9534f4d3b65bbc2d848338b2b9
parentc20403631da45ab4eff6dc803d4701da421ad05a (diff)
downloadnixpkgs-d9d5c98c56809d2941404751b2304beab4e00c3e.tar
nixpkgs-d9d5c98c56809d2941404751b2304beab4e00c3e.tar.gz
nixpkgs-d9d5c98c56809d2941404751b2304beab4e00c3e.tar.bz2
nixpkgs-d9d5c98c56809d2941404751b2304beab4e00c3e.tar.lz
nixpkgs-d9d5c98c56809d2941404751b2304beab4e00c3e.tar.xz
nixpkgs-d9d5c98c56809d2941404751b2304beab4e00c3e.tar.zst
nixpkgs-d9d5c98c56809d2941404751b2304beab4e00c3e.zip
Add option environment.enableDebugInfo
This makes the debug outputs of packages that have them available to
programs like gdb.
-rw-r--r--nixos/modules/config/debug-info.nix46
-rw-r--r--nixos/modules/config/system-path.nix3
-rw-r--r--nixos/modules/module-list.nix5
-rw-r--r--pkgs/tools/package-management/nix/default.nix2
4 files changed, 52 insertions, 4 deletions
diff --git a/nixos/modules/config/debug-info.nix b/nixos/modules/config/debug-info.nix
new file mode 100644
index 00000000000..a096a9809ce
--- /dev/null
+++ b/nixos/modules/config/debug-info.nix
@@ -0,0 +1,46 @@
+{ config, lib, ... }:
+
+with lib;
+
+{
+
+  options = {
+
+    environment.enableDebugInfo = mkOption {
+      type = types.bool;
+      default = false;
+      description = ''
+        Some NixOS packages provide debug symbols. However, these are
+        not included in the system closure by default to save disk
+        space. Enabling this option causes the debug symbols to appear
+        in <filename>/run/current-system/sw/lib/debug/.build-id</filename>,
+        where tools such as <command>gdb</command> can find them.
+        If you need debug symbols for a package that doesn't
+        provide them by default, you can enable them as follows:
+        <!-- FIXME: ugly, see #10721 -->
+        <programlisting>
+        nixpkgs.config.packageOverrides = pkgs: {
+          hello = overrideDerivation pkgs.hello (attrs: {
+            outputs = attrs.outputs or ["out"] ++ ["debug"];
+            buildInputs = attrs.buildInputs ++ [&lt;nixpkgs/pkgs/build-support/setup-hooks/separate-debug-info.sh>];
+          });
+        };
+        </programlisting>
+      '';
+    };
+
+  };
+
+
+  config = {
+
+    # FIXME: currently disabled because /lib is already in
+    # environment.pathsToLink, and we can't have both.
+    #environment.pathsToLink = [ "/lib/debug/.build-id" ];
+
+    environment.outputsToLink =
+      optional config.environment.enableDebugInfo "debug";
+
+  };
+
+}
diff --git a/nixos/modules/config/system-path.nix b/nixos/modules/config/system-path.nix
index f9257f578bf..e14e4cf1314 100644
--- a/nixos/modules/config/system-path.nix
+++ b/nixos/modules/config/system-path.nix
@@ -103,8 +103,7 @@ in
       [ "/bin"
         "/etc/xdg"
         "/info"
-        "/lib" # FIXME: remove
-        #"/lib/debug/.build-id" # enables GDB to find separated debug info
+        "/lib" # FIXME: remove and update debug-info.nix
         "/sbin"
         "/share/applications"
         "/share/desktop-directories"
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 3a5fb41dc79..77575867f87 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -1,7 +1,8 @@
 [
+  ./config/debug-info.nix
   ./config/fonts/corefonts.nix
-  ./config/fonts/fontconfig.nix
   ./config/fonts/fontconfig-ultimate.nix
+  ./config/fonts/fontconfig.nix
   ./config/fonts/fontdir.nix
   ./config/fonts/fonts.nix
   ./config/fonts/ghostscript.nix
@@ -22,9 +23,9 @@
   ./config/system-environment.nix
   ./config/system-path.nix
   ./config/timezone.nix
-  ./config/vpnc.nix
   ./config/unix-odbc-drivers.nix
   ./config/users-groups.nix
+  ./config/vpnc.nix
   ./config/zram.nix
   ./hardware/all-firmware.nix
   ./hardware/cpu/amd-microcode.nix
diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix
index e74daade3b8..e76e2e811f5 100644
--- a/pkgs/tools/package-management/nix/default.nix
+++ b/pkgs/tools/package-management/nix/default.nix
@@ -43,6 +43,8 @@ let
 
     doInstallCheck = false;
 
+    separateDebugInfo = stdenv.isLinux;
+
     crossAttrs = {
       postUnpack =
         '' export CPATH="${bzip2.crossDrv}/include"