* The stdenv setup script now defines a generic builder that allows

builders for typical Autoconf-style to be much shorten, e.g.,

    . $stdenv/setup
    genericBuild

  The generic builder does lots of stuff automatically:

  - Unpacks source archives specified by $src or $srcs (it knows about
    gzip, bzip2, tar, zip, and unpacked source trees).
  - Determines the source tree.
  - Applies patches specified by $patches.
  - Fixes libtool not to search for libraries in /lib etc.
  - Runs `configure'.
  - Runs `make'.
  - Runs `make install'.
  - Strips debug information from static libraries.
  - Writes nested log information (in the format accepted by
    `log2xml').

  There are also lots of hooks and variables to customise the generic
  builder.  See `stdenv/generic/docs.txt'.

* Adapted the base packages (i.e., the ones used by stdenv) to use the
  generic builder.

* We now use `curl' instead of `wget' to download files in `fetchurl'.

* Neither `curl' nor `wget' are part of stdenv.  We shouldn't
  encourage people to download stuff in builders (impure!).

* Updated some packages.

* `buildinputs' is now `buildInputs' (but the old name also works).

* `findInputs' in the setup script now prevents inputs from being
  processed multiple times (which could happen, e.g., if an input was
  a propagated input of several other inputs; this caused the size
  variables like $PATH to blow up exponentially in the worst case).

* Patched GNU Make to write nested log information in the format
  accepted by `log2xml'.  Also, prior to writing the build command,
  Make now writes a line `building X' to indicate what is being
  built.  This is unfortunately often obscured by the gigantic tool
  invocations in many Makefiles.  The actual build commands are marked
  `unimportant' so that they don't clutter pages generated by
  `log2html'.


svn path=/nixpkgs/trunk/; revision=845
This commit is contained in:
Eelco Dolstra
2004-03-19 16:53:04 +00:00
parent 0fd59fd7a4
commit 5941f66f0e
59 changed files with 891 additions and 376 deletions
@@ -1,9 +1,3 @@
#! /bin/sh
. $stdenv/setup || exit 1
tar xvfj $src || exit 1
cd make-* || exit 1
./configure --prefix=$out || exit 1
make || exit 1
make install || exit 1
#! /bin/sh -e
. $stdenv/setup
genericBuild
@@ -1,4 +1,6 @@
{stdenv, fetchurl}: derivation {
{stdenv, fetchurl, patch}:
derivation {
name = "gnumake-3.80";
system = stdenv.system;
builder = ./builder.sh;
@@ -6,5 +8,7 @@
url = ftp://ftp.nluug.nl/pub/gnu/make/make-3.80.tar.bz2;
md5 = "0bbd1df101bc0294d440471e50feca71";
};
stdenv = stdenv;
patches = [./log.diff];
buildInputs = [patch];
inherit stdenv;
}
@@ -0,0 +1,125 @@
diff -rc make-3.80-orig/job.c make-3.80/job.c
*** make-3.80-orig/job.c 2002-08-10 03:27:17.000000000 +0200
--- make-3.80/job.c 2004-03-18 22:13:11.000000000 +0100
***************
*** 987,993 ****
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
--- 987,993 ----
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
Only in make-3.80: job.c~
diff -rc make-3.80-orig/main.c make-3.80/main.c
*** make-3.80-orig/main.c 2002-08-10 03:27:17.000000000 +0200
--- make-3.80/main.c 2004-03-18 22:23:50.000000000 +0100
***************
*** 254,259 ****
--- 254,262 ----
they appear out of date or not. */
int always_make_flag = 0;
+
+ int logNesting = 0;
+
/* The usage output. We write it this way to make life easier for the
translators, especially those trying to translate to right-to-left
***************
*** 827,832 ****
--- 830,842 ----
}
+ static void closeNesting()
+ {
+ while (logNesting--)
+ printf("\e[q");
+ }
+
+
#ifndef _AMIGA
int
main (argc, argv, envp)
***************
*** 854,859 ****
--- 864,871 ----
no_default_sh_exe = 1;
#endif
+ atexit(closeNesting);
+
default_goal_file = 0;
reading_file = 0;
***************
*** 2782,2787 ****
--- 2794,2805 ----
/* Use entire sentences to give the translators a fighting chance. */
+ if (entering)
+ {
+ printf("\e[p");
+ logNesting++;
+ }
+
if (makelevel == 0)
if (starting_directory == 0)
if (entering)
***************
*** 2810,2813 ****
--- 2828,2837 ----
else
printf (_("%s[%u]: Leaving directory `%s'\n"),
program, makelevel, starting_directory);
+
+ if (!entering)
+ {
+ printf("\e[q");
+ logNesting--;
+ }
}
Only in make-3.80: main.c~
diff -rc make-3.80-orig/make.h make-3.80/make.h
*** make-3.80-orig/make.h 2002-09-11 18:55:44.000000000 +0200
--- make-3.80/make.h 2004-03-18 22:22:00.000000000 +0100
***************
*** 559,562 ****
--- 559,566 ----
extern int atomic_stat PARAMS ((const char *file, struct stat *buf));
extern struct dirent *atomic_readdir PARAMS ((DIR *dir));
+
#endif
+
+
+ extern int logNesting;
Only in make-3.80: make.h~
diff -rc make-3.80-orig/remake.c make-3.80/remake.c
*** make-3.80-orig/remake.c 2002-08-08 02:11:19.000000000 +0200
--- make-3.80/remake.c 2004-03-18 22:27:04.000000000 +0100
***************
*** 1049,1055 ****
--- 1049,1059 ----
/* The normal case: start some commands. */
if (!touch_flag || file->cmds->any_recurse)
{
+ message(0, "\e[pbuilding %s", file->name);
+ logNesting++;
execute_file_commands (file);
+ printf("\e[q");
+ logNesting--;
return;
}
Only in make-3.80: remake.c~