From 86c6215603c1a0aba326e2fa55f577a95b01699b Mon Sep 17 00:00:00 2001 From: Juan RP Date: Fri, 14 Sep 2012 08:37:57 +0200 Subject: [PATCH] chroot-make: add some patches from Arch and Fedora. --- .../patches/make-3.82-bug30612.patch | 66 ++++++++++ .../patches/make-3.82-bug30723.patch | 13 ++ .../make-3.82-dont-prune-intermediate.patch | 59 +++++++++ .../patches/make-3.82-expensive_glob.patch | 118 ++++++++++++++++++ .../patches/make-3.82-makeflags.patch | 38 ++++++ .../patches/make-3.82-sort-blank.patch | 18 +++ srcpkgs/chroot-make/template | 4 +- 7 files changed, 314 insertions(+), 2 deletions(-) create mode 100644 srcpkgs/chroot-make/patches/make-3.82-bug30612.patch create mode 100644 srcpkgs/chroot-make/patches/make-3.82-bug30723.patch create mode 100644 srcpkgs/chroot-make/patches/make-3.82-dont-prune-intermediate.patch create mode 100644 srcpkgs/chroot-make/patches/make-3.82-expensive_glob.patch create mode 100644 srcpkgs/chroot-make/patches/make-3.82-makeflags.patch create mode 100644 srcpkgs/chroot-make/patches/make-3.82-sort-blank.patch diff --git a/srcpkgs/chroot-make/patches/make-3.82-bug30612.patch b/srcpkgs/chroot-make/patches/make-3.82-bug30612.patch new file mode 100644 index 0000000000..7ed9ff379f --- /dev/null +++ b/srcpkgs/chroot-make/patches/make-3.82-bug30612.patch @@ -0,0 +1,66 @@ +http://savannah.gnu.org/bugs/?30612 + +--- main.c 2010-07-19 17:10:53.000000000 +1000 ++++ main.c 2010-09-23 23:33:37.908855839 +1000 +@@ -1,3 +1,4 @@ ++ + /* Argument parsing and main program of GNU Make. + Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, + 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, +@@ -1138,7 +1139,7 @@ + a macro and some compilers (MSVC) don't like conditionals in macros. */ + { + const char *features = "target-specific order-only second-expansion" +- " else-if shortest-stem undefine" ++ " else-if shortest-stem undefine oneshell" + #ifndef NO_ARCHIVES + " archives" + #endif +--- read.c 2010-07-13 11:20:42.000000000 +1000 ++++ read.c 2010-09-23 23:30:58.018855839 +1000 +@@ -3028,7 +3028,7 @@ + { + /* This looks like the first element in an open archive group. + A valid group MUST have ')' as the last character. */ +- const char *e = p + nlen; ++ const char *e = p; + do + { + e = next_token (e); +@@ -3084,19 +3084,19 @@ + Go to the next item in the string. */ + if (flags & PARSEFS_NOGLOB) + { +- NEWELT (concat (2, prefix, tp)); ++ NEWELT (concat (2, prefix, tmpbuf)); + continue; + } + + /* If we get here we know we're doing glob expansion. + TP is a string in tmpbuf. NLEN is no longer used. + We may need to do more work: after this NAME will be set. */ +- name = tp; ++ name = tmpbuf; + + /* Expand tilde if applicable. */ +- if (tp[0] == '~') ++ if (tmpbuf[0] == '~') + { +- tildep = tilde_expand (tp); ++ tildep = tilde_expand (tmpbuf); + if (tildep != 0) + name = tildep; + } +@@ -3152,7 +3152,11 @@ + else + { + /* We got a chain of items. Attach them. */ +- (*newp)->next = found; ++ if (*newp) ++ (*newp)->next = found; ++ else ++ *newp = found; ++ + + /* Find and set the new end. Massage names if necessary. */ + while (1) diff --git a/srcpkgs/chroot-make/patches/make-3.82-bug30723.patch b/srcpkgs/chroot-make/patches/make-3.82-bug30723.patch new file mode 100644 index 0000000000..a6cec7e1b3 --- /dev/null +++ b/srcpkgs/chroot-make/patches/make-3.82-bug30723.patch @@ -0,0 +1,13 @@ +http://savannah.gnu.org/bugs/?30723 + +--- main.c 2010-07-19 17:10:53.000000000 +1000 ++++ main.c 2010-09-23 23:34:10.932188592 +1000 +@@ -2093,7 +2093,7 @@ + const char *pv = define_makeflags (1, 1); + char *p = alloca (sizeof ("MAKEFLAGS=") + strlen (pv) + 1); + sprintf (p, "MAKEFLAGS=%s", pv); +- putenv (p); ++ putenv (allocated_variable_expand (p)); + } + + if (ISDB (DB_BASIC)) diff --git a/srcpkgs/chroot-make/patches/make-3.82-dont-prune-intermediate.patch b/srcpkgs/chroot-make/patches/make-3.82-dont-prune-intermediate.patch new file mode 100644 index 0000000000..7438902b52 --- /dev/null +++ b/srcpkgs/chroot-make/patches/make-3.82-dont-prune-intermediate.patch @@ -0,0 +1,59 @@ +https://savannah.gnu.org/bugs/?30653 + +2012-09-09 Paul Smith + + * remake.c (update_file_1): Force intermediate files to be + considered, not pruned, if their non-intermediate parent needs to + be remade. Fixes Savannah bug #30653. + +Index: remake.c +=================================================================== +RCS file: /sources/make/make/remake.c,v +retrieving revision 1.153 +retrieving revision 1.154 +diff -u -r1.153 -r1.154 +--- remake.c 5 Mar 2012 14:10:45 -0000 1.153 ++++ remake.c 10 Sep 2012 02:36:05 -0000 1.154 +@@ -612,6 +612,10 @@ + d->file->dontcare = file->dontcare; + } + ++ /* We may have already considered this file, when we didn't know ++ we'd need to update it. Force update_file() to consider it and ++ not prune it. */ ++ d->file->considered = !considered; + + dep_status |= update_file (d->file, depth); + +Index: tests/scripts/features/parallelism +=================================================================== +RCS file: /sources/make/make/tests/scripts/features/parallelism,v +retrieving revision 1.19 +retrieving revision 1.20 +diff -u -r1.19 -r1.20 +--- tests/scripts/features/parallelism 4 Mar 2012 00:24:32 -0000 1.19 ++++ tests/scripts/features/parallelism 10 Sep 2012 02:36:05 -0000 1.20 +@@ -214,6 +214,23 @@ + rmfiles(qw(foo.y foo.y.in main.bar)); + } + ++# Ensure intermediate/secondary files are not pruned incorrectly. ++# See Savannah bug #30653 ++ ++utouch(-15, 'file2'); ++utouch(-10, 'file4'); ++utouch(-5, 'file1'); ++ ++run_make_test(q! ++.INTERMEDIATE: file3 ++file4: file3 ; @mv -f $< $@ ++file3: file2 ; touch $@ ++file2: file1 ; @touch $@ ++!, ++ '--no-print-directory -j2', "touch file3"); ++ ++#rmfiles('file1', 'file2', 'file3', 'file4'); ++ + if ($all_tests) { + # Jobserver FD handling is messed up in some way. + # Savannah bug #28189 diff --git a/srcpkgs/chroot-make/patches/make-3.82-expensive_glob.patch b/srcpkgs/chroot-make/patches/make-3.82-expensive_glob.patch new file mode 100644 index 0000000000..5e555891e8 --- /dev/null +++ b/srcpkgs/chroot-make/patches/make-3.82-expensive_glob.patch @@ -0,0 +1,118 @@ +http://lists.gnu.org/archive/html/bug-make/2011-04/msg00002.html + +Index: read.c +=================================================================== +RCS file: /sources/make/make/read.c,v +retrieving revision 1.198 +retrieving revision 1.200 +diff -u -r1.198 -r1.200 +--- read.c 29 Apr 2011 15:27:39 -0000 1.198 ++++ read.c 7 May 2011 14:36:12 -0000 1.200 +@@ -2901,6 +2901,7 @@ + const char *name; + const char **nlist = 0; + char *tildep = 0; ++ int globme = 1; + #ifndef NO_ARCHIVES + char *arname = 0; + char *memname = 0; +@@ -3109,32 +3110,40 @@ + } + #endif /* !NO_ARCHIVES */ + +- switch (glob (name, GLOB_NOSORT|GLOB_ALTDIRFUNC, NULL, &gl)) +- { +- case GLOB_NOSPACE: +- fatal (NILF, _("virtual memory exhausted")); +- +- case 0: +- /* Success. */ +- i = gl.gl_pathc; +- nlist = (const char **)gl.gl_pathv; +- break; +- +- case GLOB_NOMATCH: +- /* If we want only existing items, skip this one. */ +- if (flags & PARSEFS_EXISTS) +- { +- i = 0; +- break; +- } +- /* FALLTHROUGH */ +- +- default: +- /* By default keep this name. */ ++ /* glob() is expensive: don't call it unless we need to. */ ++ if (!(flags & PARSEFS_EXISTS) && strpbrk (name, "?*[") == NULL) ++ { ++ globme = 0; + i = 1; + nlist = &name; +- break; +- } ++ } ++ else ++ switch (glob (name, GLOB_NOSORT|GLOB_ALTDIRFUNC, NULL, &gl)) ++ { ++ case GLOB_NOSPACE: ++ fatal (NILF, _("virtual memory exhausted")); ++ ++ case 0: ++ /* Success. */ ++ i = gl.gl_pathc; ++ nlist = (const char **)gl.gl_pathv; ++ break; ++ ++ case GLOB_NOMATCH: ++ /* If we want only existing items, skip this one. */ ++ if (flags & PARSEFS_EXISTS) ++ { ++ i = 0; ++ break; ++ } ++ /* FALLTHROUGH */ ++ ++ default: ++ /* By default keep this name. */ ++ i = 1; ++ nlist = &name; ++ break; ++ } + + /* For each matched element, add it to the list. */ + while (i-- > 0) +@@ -3174,7 +3183,8 @@ + #endif /* !NO_ARCHIVES */ + NEWELT (concat (2, prefix, nlist[i])); + +- globfree (&gl); ++ if (globme) ++ globfree (&gl); + + #ifndef NO_ARCHIVES + if (arname) +Index: tests/scripts/functions/wildcard +=================================================================== +RCS file: /sources/make/make/tests/scripts/functions/wildcard,v +retrieving revision 1.6 +retrieving revision 1.7 +diff -u -r1.6 -r1.7 +--- tests/scripts/functions/wildcard 13 Jun 2009 21:21:49 -0000 1.6 ++++ tests/scripts/functions/wildcard 7 May 2011 14:36:11 -0000 1.7 +@@ -88,4 +88,16 @@ + !, + '', "\n"); + ++# TEST #5: wildcard used to verify file existence ++ ++touch('xxx.yyy'); ++ ++run_make_test(q!exists: ; @echo file=$(wildcard xxx.yyy)!, ++ '', "file=xxx.yyy\n"); ++ ++unlink('xxx.yyy'); ++ ++run_make_test(q!exists: ; @echo file=$(wildcard xxx.yyy)!, ++ '', "file=\n"); ++ + 1; diff --git a/srcpkgs/chroot-make/patches/make-3.82-makeflags.patch b/srcpkgs/chroot-make/patches/make-3.82-makeflags.patch new file mode 100644 index 0000000000..30b21ab72f --- /dev/null +++ b/srcpkgs/chroot-make/patches/make-3.82-makeflags.patch @@ -0,0 +1,38 @@ +https://savannah.gnu.org/bugs/?33873 + +Index: main.c +=================================================================== +RCS file: /sources/make/make/main.c,v +retrieving revision 1.246 +diff -u -r1.246 main.c +--- main.c 29 Aug 2010 23:05:27 -0000 1.246 ++++ main.c 27 Jul 2011 22:03:12 -0000 +@@ -2091,10 +2095,16 @@ + + /* Reset makeflags in case they were changed. */ + { ++ if (master_job_slots) ++ { ++ assert (job_slots == default_job_slots); ++ job_slots = master_job_slots; ++ } + const char *pv = define_makeflags (1, 1); + char *p = alloca (sizeof ("MAKEFLAGS=") + strlen (pv) + 1); + sprintf (p, "MAKEFLAGS=%s", pv); + putenv (allocated_variable_expand (p)); ++ job_slots = default_job_slots; + } + + if (ISDB (DB_BASIC)) +@@ -2825,9 +2852,11 @@ + && (*(unsigned int *) cs->value_ptr == + *(unsigned int *) cs->noarg_value)) + ADD_FLAG ("", 0); /* Optional value omitted; see below. */ ++#if 0 + else if (cs->c == 'j') + /* Special case for `-j'. */ + ADD_FLAG ("1", 1); ++#endif + else + { + char *buf = alloca (30); diff --git a/srcpkgs/chroot-make/patches/make-3.82-sort-blank.patch b/srcpkgs/chroot-make/patches/make-3.82-sort-blank.patch new file mode 100644 index 0000000000..cf559237ee --- /dev/null +++ b/srcpkgs/chroot-make/patches/make-3.82-sort-blank.patch @@ -0,0 +1,18 @@ +https://bugs.archlinux.org/task/22733 (fix from Fedora) + +--- function.c 2010-07-13 03:20:39.000000000 +0200 ++++ function.c 2010-10-27 01:43:27.000000000 +0200 +@@ -1138,12 +1138,12 @@ func_sort (char *o, char **argv, const c + { + char c = *(t++); + +- if (! isspace ((unsigned char)c)) ++ if (! isblank ((unsigned char)c)) + continue; + + ++wordi; + +- while (isspace ((unsigned char)*t)) ++ while (isblank ((unsigned char)*t)) + ++t; + } diff --git a/srcpkgs/chroot-make/template b/srcpkgs/chroot-make/template index 579766d8be..da8eb7a76b 100644 --- a/srcpkgs/chroot-make/template +++ b/srcpkgs/chroot-make/template @@ -1,13 +1,13 @@ # Template build file for 'chroot-make' pkgname=chroot-make version=3.82 +revision=2 wrksrc="make-${version}" -distfiles="http://ftp.gnu.org/pub/gnu/make/make-$version.tar.bz2" build_style=gnu-configure configure_args="--disable-nls" -revision=1 short_desc="The GNU make system -- for xbps-src use" maintainer="Juan RP " +distfiles="http://ftp.gnu.org/pub/gnu/make/make-$version.tar.bz2" checksum=e2c1a73f179c40c71e2fe8abf8a8a0688b8499538512984da4a76958d0402966 long_desc=" GNU Make is a program that determines which pieces of a large