nix: debug build, ccache
authorGabor X Toth <*@tg-x.net>
Thu, 6 Oct 2016 16:01:48 +0000 (16:01 +0000)
committerGabor X Toth <*@tg-x.net>
Thu, 6 Oct 2016 16:01:48 +0000 (16:01 +0000)
default.nix

index 4e4a117c266c45c6c9e4ef5572ecbf6eb4bc930d..ef3ed2c6d9e919e2eda58e11fc3c45f9a8d804a7 100644 (file)
 # c) use nixpkgs at a given path
 #    --arg pkgs /path/to/nixpkgs
 #
+## CCACHE
+#
+# To enable ccache, use the following:
+#
+#    --argstr ccache_dir /var/cache/ccache
 
-{ pkgs ? null }:
+# or when using nix-shell:
+#    --argstr ccache_dir ~/.ccache
+#
+# and make sure the given directory is writable by the nixpkgs group when using nix-build or nix-env -i,
+# or the current user when using nix-shell
+#
+
+{
+ pkgs ? null,
+ ccache_dir ? "",
+}:
 
 let
   syspkgs = import <nixpkgs> { };
@@ -54,13 +69,14 @@ let
                 import <nixpkgs> { }
               else
                 import pkgs {};
+  stdenv = usepkgs.stdenvAdapters.keepDebugInfo usepkgs.stdenv;
 
-in with usepkgs; usepkgs.stdenv.mkDerivation rec {
+in with usepkgs; stdenv.mkDerivation rec {
   src = ./.;
   name = "gnunet-dev";
 
   buildInputs = [
-    makeWrapper pkgconfig
+    makeWrapper pkgconfig autoconf automake ccache
     adns curl gettext gmp gnutls gss ncurses openldap zlib sqlite mariadb postgresql
     libextractor libgcrypt libgnurl libidn libmicrohttpd
     libpsl libtool libunistring libxml2
@@ -70,6 +86,8 @@ in with usepkgs; usepkgs.stdenv.mkDerivation rec {
     test -e Makefile && make distclean
   '';
 
+  NIX_CFLAGS_COMPILE = "-ggdb -O0";
+
   configureFlags = [
     "--enable-gcc-hardening"
     "--enable-linker-hardening"
@@ -82,6 +100,13 @@ in with usepkgs; usepkgs.stdenv.mkDerivation rec {
   preConfigure = ''
     ./bootstrap
     configureFlags="$configureFlags --with-nssdir=$out/lib"
+
+    if [ -n "${ccache_dir}" ]; then
+      export CC='ccache gcc'
+      export CCACHE_COMPRESS=1
+      export CCACHE_DIR="${ccache_dir}"
+      export CCACHE_UMASK=007
+    fi
   '';
 
   doCheck = false;