diff options
author | Ludovic Courtès <ludo@gnu.org> | 2010-11-09 09:14:07 +0000 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2010-11-09 09:14:07 +0000 |
commit | 7ecc652da4fde15b9063f855eb551231f97dff2b (patch) | |
tree | 4f50b120c53f9283cc859459da54753fc5b748ac | |
parent | 162a4a6e6c3a9bf31f195356a7a783813e5ce045 (diff) |
Re-add GNU Make 3.81.
svn path=/nixpkgs/branches/stdenv-updates/; revision=24623
-rw-r--r-- | pkgs/development/tools/build-managers/gnumake/3.81.nix | 46 | ||||
-rw-r--r-- | pkgs/development/tools/build-managers/gnumake/log-3.81.patch | 125 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 1 |
3 files changed, 172 insertions, 0 deletions
diff --git a/pkgs/development/tools/build-managers/gnumake/3.81.nix b/pkgs/development/tools/build-managers/gnumake/3.81.nix new file mode 100644 index 0000000000000..d28198821e3b9 --- /dev/null +++ b/pkgs/development/tools/build-managers/gnumake/3.81.nix @@ -0,0 +1,46 @@ +{stdenv, fetchurl}: + +let version = "3.81"; in +stdenv.mkDerivation { + name = "gnumake-${version}"; + + src = fetchurl { + url = "mirror://gnu/make/make-${version}.tar.bz2"; + md5 = "354853e0b2da90c527e35aabb8d6f1e6"; + }; + + doCheck = true; + + patches = + [ + # Provide nested log output for subsequent pretty-printing by + # nix-log2xml. + ./log-3.81.patch + + # Purity: don't look for library dependencies (of the form + # `-lfoo') in /lib and /usr/lib. It's a stupid feature anyway. + # Likewise, when searching for included Makefiles, don't look in + # /usr/include and friends. + ./impure-dirs.patch + ]; + + meta = { + description = "GNU Make, a program controlling the generation of non-source files from sources"; + + longDescription = + '' Make is a tool which controls the generation of executables and + other non-source files of a program from the program's source files. + + Make gets its knowledge of how to build your program from a file + called the makefile, which lists each of the non-source files and + how to compute it from other files. When you write a program, you + should write a makefile for it, so that it is possible to use Make + to build and install the program. + ''; + + homepage = http://www.gnu.org/software/make/; + + license = "GPLv2+"; + maintainers = [ stdenv.lib.maintainers.ludo ]; + }; +} diff --git a/pkgs/development/tools/build-managers/gnumake/log-3.81.patch b/pkgs/development/tools/build-managers/gnumake/log-3.81.patch new file mode 100644 index 0000000000000..0f3ed6d7299bf --- /dev/null +++ b/pkgs/development/tools/build-managers/gnumake/log-3.81.patch @@ -0,0 +1,125 @@ +diff -rc make-3.81-orig/job.c make-3.81/job.c +*** make-3.81-orig/job.c 2006-03-20 04:03:04.000000000 +0100 +--- make-3.81/job.c 2009-01-19 19:37:28.000000000 +0100 +*************** +*** 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)) +! ? (enable_nested_output ? "\e[3s\e[a%s\e[b" : "%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 +diff -rc make-3.81-orig/main.c make-3.81/main.c +*** make-3.81-orig/main.c 2006-03-20 03:36:37.000000000 +0100 +--- make-3.81/main.c 2009-01-19 19:41:41.000000000 +0100 +*************** +*** 886,891 **** +--- 886,900 ---- + } + + ++ static void close_nesting() ++ { ++ while (stdout_nesting_level--) ++ printf("\e[q"); ++ while (stderr_nesting_level--) ++ fprintf(stderr, "\e[q"); ++ } ++ ++ + #ifdef _AMIGA + int + main (int argc, char **argv) +*************** +*** 931,936 **** +--- 940,950 ---- + atexit (close_stdout); + #endif + ++ atexit(close_nesting); ++ ++ if (getenv("NIX_INDENT_MAKE")) ++ enable_nested_output = 1; ++ + /* Needed for OS/2 */ + initialize_main(&argc, &argv); + +*************** +*** 3095,3100 **** +--- 3109,3120 ---- + + /* Use entire sentences to give the translators a fighting chance. */ + ++ if (entering && enable_nested_output) ++ { ++ printf("\e[p"); ++ stdout_nesting_level++; ++ } ++ + if (makelevel == 0) + if (starting_directory == 0) + if (entering) +*************** +*** 3124,3129 **** +--- 3144,3159 ---- + printf (_("%s[%u]: Leaving directory `%s'\n"), + program, makelevel, starting_directory); + ++ if (!entering && enable_nested_output) ++ { ++ printf("\e[q"); ++ stdout_nesting_level--; ++ } ++ + /* Flush stdout to be sure this comes before any stderr output. */ + fflush (stdout); + } ++ ++ int enable_nested_output = 0; ++ int stdout_nesting_level = 0; ++ int stderr_nesting_level = 0; +diff -rc make-3.81-orig/make.h make-3.81/make.h +*** make-3.81-orig/make.h 2006-02-16 00:54:43.000000000 +0100 +--- make-3.81/make.h 2009-01-19 19:32:03.000000000 +0100 +*************** +*** 609,611 **** +--- 609,614 ---- + #define ENULLLOOP(_v,_c) do{ errno = 0; \ + while (((_v)=_c)==0 && errno==EINTR); }while(0) + ++ extern int enable_nested_output; ++ extern int stdout_nesting_level; ++ extern int stderr_nesting_level; +diff -rc make-3.81-orig/remake.c make-3.81/remake.c +*** make-3.81-orig/remake.c 2006-03-20 03:36:37.000000000 +0100 +--- make-3.81/remake.c 2009-01-19 19:39:40.000000000 +0100 +*************** +*** 1120,1126 **** +--- 1120,1137 ---- + /* The normal case: start some commands. */ + if (!touch_flag || file->cmds->any_recurse) + { ++ if (enable_nested_output) ++ { ++ log_working_directory (1); ++ fprintf(stderr, "\e[pbuilding %s\n", file->name); ++ stderr_nesting_level++; ++ } + execute_file_commands (file); ++ if (enable_nested_output) ++ { ++ fprintf(stderr, "\e[q"); ++ stderr_nesting_level--; ++ } + return; + } + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 07a2f210fa337..6cb583710071c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2427,6 +2427,7 @@ let gnumake = callPackage ../development/tools/build-managers/gnumake { }; gnumake380 = callPackage ../development/tools/build-managers/gnumake-3.80 { }; + gnumake381 = callPackage ../development/tools/build-managers/gnumake/3.81.nix { }; gradle = callPackage ../development/tools/build-managers/gradle { }; |