summary refs log tree commit diff
path: root/pkgs/development/tools/misc/gdb/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/tools/misc/gdb/default.nix')
-rw-r--r--pkgs/development/tools/misc/gdb/default.nix55
1 files changed, 39 insertions, 16 deletions
diff --git a/pkgs/development/tools/misc/gdb/default.nix b/pkgs/development/tools/misc/gdb/default.nix
index 00aeed1b41be..c29fcc994e2c 100644
--- a/pkgs/development/tools/misc/gdb/default.nix
+++ b/pkgs/development/tools/misc/gdb/default.nix
@@ -1,34 +1,57 @@
-{ fetchurl, stdenv, ncurses, readline, gmp, mpfr, expat, texinfo
-, dejagnu, python, target ? null }:
+{ fetchurl, fetchgit, stdenv, ncurses, readline, gmp, mpfr, expat, texinfo
+, dejagnu, python, target ? null
+
+# Set it to true to fetch the latest release/branchpoint from git.
+, bleedingEdgeVersion ? false
+
+# needed for the git version
+, flex, bison }:
 
 let
-    basename = "gdb-7.2";
+    basename =
+      if bleedingEdgeVersion
+      then "gdb-7.3.20110726"
+      else "gdb-7.3";
 in
+
 stdenv.mkDerivation rec {
   name = basename + stdenv.lib.optionalString (target != null)
       ("-" + target.config);
 
-  src = fetchurl {
-    url = "mirror://gnu/gdb/${basename}.tar.bz2";
-    sha256 = "1w0h6hya0bl46xddd57mdzwmffplwglhnh9x9hv46ll4mf44ni5z";
-  };
+  src =
+    if bleedingEdgeVersion
+    then fetchgit {
+        url = "git://sourceware.org/git/gdb.git";
+        rev = "refs/tags/gdb_7_3-2011-07-26-release";
+      }
+    else fetchurl {
+        url = "mirror://gnu/gdb/${basename}.tar.bz2";
+        # md5 is provided by the annoucement page
+        # http://www.gnu.org/s/gdb/download/ANNOUNCEMENT
+        md5 = "485022b8df7ba2221f217e128f479fe7";
+      };
 
   # I think python is not a native input, but I leave it
   # here while I will not need it cross building
-  buildNativeInputs = [ texinfo python ];
+  buildNativeInputs = [ texinfo python ]
+  ++ stdenv.lib.optionals bleedingEdgeVersion [ flex bison ];
+
   buildInputs = [ ncurses readline gmp mpfr expat ]
     ++ stdenv.lib.optional doCheck dejagnu;
 
-  configureFlags =
+  configureFlags = with stdenv.lib;
     '' --with-gmp=${gmp} --with-mpfr=${mpfr} --with-system-readline
-       --with-expat --with-libexpat-prefix=${expat}
-    '' + stdenv.lib.optionalString (target != null)
-       " --target=${target.config}";
+       --with-expat --with-libexpat-prefix=${expat} --with-python
+    ''
+    + optionalString (target != null) " --target=${target.config}"
+    + optionalString (elem stdenv.system platforms.cygwin) "  --without-python"
+  ;
 
   crossAttrs = {
+    # Do not add --with-python here to avoid cross building it.
     configureFlags =
       '' --with-gmp=${gmp.hostDrv} --with-mpfr=${mpfr.hostDrv} --with-system-readline
-         --with-expat --with-libexpat-prefix=${expat.hostDrv}
+         --with-expat --with-libexpat-prefix=${expat.hostDrv} --without-python
       '' + stdenv.lib.optionalString (target != null)
          " --target=${target.config}";
   };
@@ -41,7 +64,7 @@ stdenv.mkDerivation rec {
   # TODO: Investigate & fix the test failures.
   doCheck = false;
 
-  meta = {
+  meta = with stdenv.lib; {
     description = "GDB, the GNU Project debugger";
 
     longDescription = ''
@@ -54,7 +77,7 @@ stdenv.mkDerivation rec {
 
     license = "GPLv3+";
 
-    platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.cygwin;
-    maintainers = [ stdenv.lib.maintainers.ludo ];
+    platforms = with platforms; linux ++ cygwin;
+    maintainers = with maintainers; [ ludo pierron ];
   };
 }