diff --git a/pkgs/development/tools/build-managers/gnumake-3.80/default.nix b/pkgs/development/tools/build-managers/gnumake-3.80/default.nix new file mode 100644 index 00000000000..cd58f2624ed --- /dev/null +++ b/pkgs/development/tools/build-managers/gnumake-3.80/default.nix @@ -0,0 +1,10 @@ +{stdenv, fetchurl}: + +stdenv.mkDerivation { + name = "gnumake-3.81"; + src = fetchurl { + url = http://ftp.gnu.org/pub/gnu/make/make-3.81.tar.bz2; + md5 = "354853e0b2da90c527e35aabb8d6f1e6"; + }; + patches = [./log.diff]; +} diff --git a/pkgs/development/tools/build-managers/gnumake-3.80/log.diff b/pkgs/development/tools/build-managers/gnumake-3.80/log.diff new file mode 100644 index 00000000000..99111ca3495 --- /dev/null +++ b/pkgs/development/tools/build-managers/gnumake-3.80/log.diff @@ -0,0 +1,113 @@ +diff -rc make-orig/job.c make-3.81/job.c +*** make-orig/job.c 2006-03-20 04:03:04.000000000 +0100 +--- make-3.81/job.c 2006-06-21 17:31:52.000000000 +0200 +*************** +*** 1083,1089 **** + appear. */ + + message (0, (just_print_flag || (!(flags & COMMANDS_SILENT) && !silent_flag)) +! ? "%s" : (char *) 0, p); + + /* Tell update_goal_chain that a command has been started on behalf of + this target. It is important that this happens here and not in +--- 1083,1089 ---- + appear. */ + + message (0, (just_print_flag || (!(flags & COMMANDS_SILENT) && !silent_flag)) +! ? "\e[3s\e[a%s\e[b" : (char *) 0, p); + + /* Tell update_goal_chain that a command has been started on behalf of + this target. It is important that this happens here and not in +diff -rc make-orig/main.c make-3.81/main.c +*** make-orig/main.c 2006-03-20 03:36:37.000000000 +0100 +--- make-3.81/main.c 2006-06-21 17:48:43.000000000 +0200 +*************** +*** 886,891 **** +--- 886,900 ---- + } + + ++ static void closeNesting() ++ { ++ while (logNestingStdout--) ++ printf("\e[q"); ++ while (logNestingStderr--) ++ fprintf(stderr, "\e[q"); ++ } ++ ++ + #ifdef _AMIGA + int + main (int argc, char **argv) +*************** +*** 931,936 **** +--- 940,947 ---- + atexit (close_stdout); + #endif + ++ atexit(closeNesting); ++ + /* Needed for OS/2 */ + initialize_main(&argc, &argv); + +*************** +*** 3095,3100 **** +--- 3106,3117 ---- + + /* Use entire sentences to give the translators a fighting chance. */ + ++ if (entering) ++ { ++ printf("\e[p"); ++ logNestingStdout++; ++ } ++ + if (makelevel == 0) + if (starting_directory == 0) + if (entering) +*************** +*** 3124,3129 **** +--- 3141,3155 ---- + printf (_("%s[%u]: Leaving directory `%s'\n"), + program, makelevel, starting_directory); + ++ if (!entering) ++ { ++ printf("\e[q"); ++ logNestingStdout--; ++ } ++ + /* Flush stdout to be sure this comes before any stderr output. */ + fflush (stdout); + } ++ ++ int logNestingStdout = 0; ++ int logNestingStderr = 0; +diff -rc make-orig/make.h make-3.81/make.h +*** make-orig/make.h 2006-02-16 00:54:43.000000000 +0100 +--- make-3.81/make.h 2006-06-21 17:39:35.000000000 +0200 +*************** +*** 609,611 **** +--- 609,613 ---- + #define ENULLLOOP(_v,_c) do{ errno = 0; \ + while (((_v)=_c)==0 && errno==EINTR); }while(0) + ++ extern int logNestingStdout; ++ extern int logNestingStderr; +diff -rc make-orig/remake.c make-3.81/remake.c +*** make-orig/remake.c 2006-03-20 03:36:37.000000000 +0100 +--- make-3.81/remake.c 2006-06-21 17:31:52.000000000 +0200 +*************** +*** 1120,1126 **** +--- 1120,1130 ---- + /* The normal case: start some commands. */ + if (!touch_flag || file->cmds->any_recurse) + { ++ fprintf(stderr, "\e[pbuilding %s\n", file->name); ++ logNestingStderr++; + execute_file_commands (file); ++ fprintf(stderr, "\e[q"); ++ logNestingStderr--; + return; + } + diff --git a/pkgs/development/tools/parsing/sdf/sdf2-bundle-2.3.3.nix b/pkgs/development/tools/parsing/sdf/sdf2-bundle-2.3.3.nix index c2620b561ab..c973a5b3477 100644 --- a/pkgs/development/tools/parsing/sdf/sdf2-bundle-2.3.3.nix +++ b/pkgs/development/tools/parsing/sdf/sdf2-bundle-2.3.3.nix @@ -1,4 +1,6 @@ -{stdenv, fetchurl, aterm, getopt, pkgconfig}: +# Note: sdf2-bundle currently requires GNU make 3.80; remove explicit +# dependency when this is fixed. +{stdenv, fetchurl, aterm, getopt, pkgconfig, make}: stdenv.mkDerivation { name = "sdf2-bundle-2.3.3"; @@ -7,6 +9,6 @@ stdenv.mkDerivation { md5 = "62ecabe5fbb8bbe043ee18470107ef88"; }; - buildInputs = [aterm pkgconfig]; + buildInputs = [aterm pkgconfig make]; propagatedBuildInputs = [getopt]; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2d0cae51a8c..f27970322c3 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -497,6 +497,10 @@ rec { inherit fetchurl stdenv; }); + gnumake380 = import ../development/tools/build-managers/gnumake-3.80 { + inherit fetchurl stdenv; + }; + mk = (import ../development/tools/build-managers/mk) { inherit fetchurl stdenv; }; @@ -988,6 +992,7 @@ rec { sdf = (import ../development/tools/parsing/sdf) { inherit fetchurl stdenv aterm getopt pkgconfig; + make = gnumake380; }; jikespg = (import ../development/tools/parsing/jikespg) {