diff --git a/base/make/0001-fix-memory-area-overlap.patch b/base/make/0001-fix-memory-area-overlap.patch deleted file mode 100644 index f7feddbee..000000000 --- a/base/make/0001-fix-memory-area-overlap.patch +++ /dev/null @@ -1,41 +0,0 @@ -# --- SDE-COPYRIGHT-NOTE-BEGIN --- -# This copyright note is auto-generated by ./scripts/Create-CopyPatch. -# -# Filename: package/.../make/0001-fix-memory-area-overlap.patch -# Copyright (C) 2010 The OpenSDE Project -# -# More information can be found in the files COPYING and README. -# -# This patch file is dual-licensed. It is available under the license the -# patched project is licensed under, as long as it is an OpenSource license -# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms -# of the GNU General Public License as published by the Free Software -# Foundation; either version 2 of the License, or (at your option) any later -# version. -# --- SDE-COPYRIGHT-NOTE-END --- - -bug #27148: Use of strcpy on overlapping memory areas -http://savannah.gnu.org/bugs/?27148 -http://cvs.savannah.gnu.org/viewvc/make/job.c?root=make&r1=1.194&r2=1.195 - -2009-08-01 Paul Smith - * job.c (new_job): Use memmove() instead of strcpy() since both - pointers are in the same memory block. Fixes Savannah bug #27148. - Patch by Petr Machata. - -diff --git a/job.c b/job.c -index a81cd81..3251efe 100644 ---- a/job.c -+++ b/job.c -@@ -1594,7 +1594,7 @@ new_job (struct file *file) - /* There are no more references in this line to worry about. - Copy the remaining uninteresting text to the output. */ - if (out != in) -- strcpy (out, in); -+ memmove (out, in, strlen (in) + 1); - - /* Finally, expand the line. */ - lines[i] = allocated_variable_expand_for_file (cmds->command_lines[i], --- -1.6.5.3 - diff --git a/base/make/0002-fix-stack-limit.patch b/base/make/0002-fix-stack-limit.patch deleted file mode 100644 index a15d771aa..000000000 --- a/base/make/0002-fix-stack-limit.patch +++ /dev/null @@ -1,127 +0,0 @@ -# --- SDE-COPYRIGHT-NOTE-BEGIN --- -# This copyright note is auto-generated by ./scripts/Create-CopyPatch. -# -# Filename: package/.../make/0002-fix-stack-limit.patch -# Copyright (C) 2010 The OpenSDE Project -# -# More information can be found in the files COPYING and README. -# -# This patch file is dual-licensed. It is available under the license the -# patched project is licensed under, as long as it is an OpenSource license -# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms -# of the GNU General Public License as published by the Free Software -# Foundation; either version 2 of the License, or (at your option) any later -# version. -# --- SDE-COPYRIGHT-NOTE-END --- - -bug #22010: The increased stack rlimit is inherited by the subprocesses to make. -http://savannah.gnu.org/bugs/?22010 -http://cvs.savannah.gnu.org/viewvc/make/make.h?root=make&r1=1.132&r2=1.133&view=patch -http://cvs.savannah.gnu.org/viewvc/make/main.c?root=make&r1=1.228&r2=1.229&view=patch -http://cvs.savannah.gnu.org/viewvc/make/job.c?root=make&r1=1.191&r2=1.192&view=patch - -2009-06-07 Paul Smith - * make.h: Move SET_STACK_SIZE determination to make.h. - * main.c (main): New global variable, STACK_LIMIT, holds the - original stack limit when make was started. - * job.c (start_job_command): Reset the stack limit, if we changed it. - Fixes Savannah bug #22010. - -diff --git a/job.c b/job.c -index 3251efe..7fe08fa 100644 ---- a/job.c -+++ b/job.c -@@ -1275,6 +1275,12 @@ start_job_command (struct child *child) - if (job_rfd >= 0) - close (job_rfd); - -+#ifdef SET_STACK_SIZE -+ /* Reset limits, if necessary. */ -+ if (stack_limit.rlim_cur) -+ setrlimit (RLIMIT_STACK, &stack_limit); -+#endif -+ - child_execute_job (child->good_stdin ? 0 : bad_stdin, 1, - argv, child->environment); - } -@@ -2237,7 +2243,7 @@ construct_command_argv_internal (char *line, char **restp, char *shell, - "for", "case", "if", ":", ".", "break", - "continue", "export", "read", "readonly", - "shift", "times", "trap", "switch", "unset", -- 0 }; -+ "ulimit", 0 }; - - char *sh_chars; - char **sh_cmds; -diff --git a/main.c b/main.c -index 483babf..42964e0 100644 ---- a/main.c -+++ b/main.c -@@ -44,14 +44,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */ - # include - #endif - --#if defined(HAVE_SYS_RESOURCE_H) && defined(HAVE_GETRLIMIT) && defined(HAVE_SETRLIMIT) --# define SET_STACK_SIZE --#endif -- --#ifdef SET_STACK_SIZE --# include --#endif -- - #ifdef _AMIGA - int __stack = 20000; /* Make sure we have 20K of stack space */ - #endif -@@ -213,6 +205,13 @@ int print_version_flag = 0; - - static struct stringlist *makefiles = 0; - -+/* Size of the stack when we started. */ -+ -+#ifdef SET_STACK_SIZE -+struct rlimit stack_limit; -+#endif -+ -+ - /* Number of job slots (commands that can be run at once). */ - - unsigned int job_slots = 1; -@@ -919,11 +918,15 @@ main (int argc, char **argv, char **envp) - struct rlimit rlim; - - /* Set the stack limit huge so that alloca does not fail. */ -- if (getrlimit (RLIMIT_STACK, &rlim) == 0) -+ if (getrlimit (RLIMIT_STACK, &rlim) == 0 -+ && rlim.rlim_cur > 0 && rlim.rlim_cur < rlim.rlim_max) - { -+ stack_limit = rlim; - rlim.rlim_cur = rlim.rlim_max; - setrlimit (RLIMIT_STACK, &rlim); - } -+ else -+ stack_limit.rlim_cur = 0; - } - #endif - -diff --git a/make.h b/make.h -index 994f4f2..25c2bef 100644 ---- a/make.h -+++ b/make.h -@@ -378,6 +378,14 @@ extern int no_default_sh_exe; - extern int unixy_shell; - #endif /* WINDOWS32 */ - -+#if defined(HAVE_SYS_RESOURCE_H) && defined(HAVE_GETRLIMIT) && defined(HAVE_SETRLIMIT) -+# define SET_STACK_SIZE -+#endif -+#ifdef SET_STACK_SIZE -+# include -+struct rlimit stack_limit; -+#endif -+ - struct floc - { - const char *filenm; --- -1.6.5.3 - diff --git a/base/make/make-3.82-0001-MAKEFLAGS-re-exec.patch b/base/make/make-3.82-0001-MAKEFLAGS-re-exec.patch new file mode 100644 index 000000000..635d976ad --- /dev/null +++ b/base/make/make-3.82-0001-MAKEFLAGS-re-exec.patch @@ -0,0 +1,85 @@ +# --- SDE-COPYRIGHT-NOTE-BEGIN --- +# This copyright note is auto-generated by ./scripts/Create-CopyPatch. +# +# Filename: package/.../make/make-3.82-0001-MAKEFLAGS-re-exec.patch +# Copyright (C) 2012 The OpenSDE Project +# +# More information can be found in the files COPYING and README. +# +# This patch file is dual-licensed. It is available under the license the +# patched project is licensed under, as long as it is an OpenSource license +# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms +# of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# --- SDE-COPYRIGHT-NOTE-END --- + +From 09a507e60034ce2ca38210a6eeaf1f9552edda68 Mon Sep 17 00:00:00 2001 +From: Christian Wiese +Date: Mon, 22 Oct 2012 17:39:10 +0200 +Subject: [PATCH] MAKEFLAGS re-exec + +ChangeLog: + +2010-08-10 Paul Smith + + * main.c (main): Expand MAKEFLAGS before adding it to the + environment when re-exec'ing. Fixes Savannah bug #30723. + +tests/ChangeLog: + +2010-08-10 Paul Smith + + * scripts/features/reinvoke: Ensure command line variable settings + are preserved across make re-exec. Tests Savannah bug #30723. +--- + main.c | 2 +- + tests/scripts/features/reinvoke | 17 ++++++++++++++++- + 2 files changed, 17 insertions(+), 2 deletions(-) + +diff --git a/main.c b/main.c +index c6989e3..9fe8090 100644 +--- a/main.c ++++ b/main.c +@@ -2093,7 +2093,7 @@ main (int argc, char **argv, char **envp) + 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/tests/scripts/features/reinvoke b/tests/scripts/features/reinvoke +index 9952ced..eb1a349 100644 +--- a/tests/scripts/features/reinvoke ++++ b/tests/scripts/features/reinvoke +@@ -57,9 +57,24 @@ include $(F)', + # Now try with the file we're not updating being the actual file we're + # including: this and the previous one test different parts of the code. + +-run_make_test(undef, "F=b", "[ -f b ] || echo >> b\nhello\n") ++run_make_test(undef, 'F=b', "[ -f b ] || echo >> b\nhello\n") + + &rmfiles('a','b','c'); + ++# Ensure command line variables are preserved properly across re-exec ++# Tests for Savannah bug #30723 ++ ++run_make_test(' ++ifdef RECURSE ++-include foo30723 ++endif ++recurse: ; @$(MAKE) -f $(MAKEFILE_LIST) RECURSE=1 test ++test: ; @echo F.O=$(F.O) ++foo30723: ; @touch $@ ++', ++ '--no-print-directory F.O=bar', "F.O=bar\n"); ++ ++unlink('foo30723'); ++ + # This tells the test driver that the perl test script executed properly. + 1; +-- +1.7.2.3 + diff --git a/base/make/make-3.82-0002-oneshell.patch b/base/make/make-3.82-0002-oneshell.patch new file mode 100644 index 000000000..9ae7109f8 --- /dev/null +++ b/base/make/make-3.82-0002-oneshell.patch @@ -0,0 +1,74 @@ +# --- SDE-COPYRIGHT-NOTE-BEGIN --- +# This copyright note is auto-generated by ./scripts/Create-CopyPatch. +# +# Filename: package/.../make/make-3.82-0002-oneshell.patch +# Copyright (C) 2012 The OpenSDE Project +# +# More information can be found in the files COPYING and README. +# +# This patch file is dual-licensed. It is available under the license the +# patched project is licensed under, as long as it is an OpenSource license +# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms +# of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# --- SDE-COPYRIGHT-NOTE-END --- + +From cfa19c5629f0252c4ab9058cadb582890ec3300b Mon Sep 17 00:00:00 2001 +From: Christian Wiese +Date: Mon, 22 Oct 2012 17:47:09 +0200 +Subject: [PATCH] oneshell + +ChangeLog: + +2010-08-13 Paul Smith + + * main.c (main): Add "oneshell" to $(.FEATURES) (forgot to add + this in 3.82!) + +test/ChangeLog: + + * run_make_tests.pl (set_more_defaults): Set a %FEATURES hash to + the features available in $(.FEATURES). +--- + main.c | 2 +- + tests/run_make_tests.pl | 3 +++ + 2 files changed, 4 insertions(+), 1 deletions(-) + +diff --git a/main.c b/main.c +index 9fe8090..782b0de 100644 +--- a/main.c ++++ b/main.c +@@ -1138,7 +1138,7 @@ main (int argc, char **argv, char **envp) + 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 +diff --git a/tests/run_make_tests.pl b/tests/run_make_tests.pl +index 2c8c08b..7291c55 100755 +--- a/tests/run_make_tests.pl ++++ b/tests/run_make_tests.pl +@@ -29,6 +29,7 @@ + # You should have received a copy of the GNU General Public License along with + # this program. If not, see . + ++%FEATURES = (); + + $valgrind = 0; # invoke make with valgrind + $valgrind_args = ''; +@@ -367,6 +368,8 @@ sub set_more_defaults + $parallel_jobs = 1; + } + ++ %FEATURES = map { $_ => 1 } split /\s+/, `sh -c "echo '\\\$(info \\\$(.FEATURES))' | $make_path -f- 2>/dev/null"`; ++ + # Set up for valgrind, if requested. + + if ($valgrind) { +-- +1.7.2.3 + diff --git a/base/make/make-3.82-0003-archives-many-objects.patch b/base/make/make-3.82-0003-archives-many-objects.patch new file mode 100644 index 000000000..074cdab91 --- /dev/null +++ b/base/make/make-3.82-0003-archives-many-objects.patch @@ -0,0 +1,141 @@ +# --- SDE-COPYRIGHT-NOTE-BEGIN --- +# This copyright note is auto-generated by ./scripts/Create-CopyPatch. +# +# Filename: package/.../make/make-3.82-0003-archives-many-objects.patch +# Copyright (C) 2012 The OpenSDE Project +# +# More information can be found in the files COPYING and README. +# +# This patch file is dual-licensed. It is available under the license the +# patched project is licensed under, as long as it is an OpenSource license +# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms +# of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# --- SDE-COPYRIGHT-NOTE-END --- + +From d3df5370acf8000b7319417f885a584230658ddc Mon Sep 17 00:00:00 2001 +From: Christian Wiese +Date: Mon, 22 Oct 2012 17:50:44 +0200 +Subject: [PATCH] archives many objects + +ChangeLog: + +2010-08-13 Paul Smith + + * read.c (parse_file_seq): Fix various errors parsing archives + with multiple objects in the parenthesis, as well as wildcards. + Fixes Savannah bug #30612. + +tests/ChangeLog: + +2010-08-13 Paul Smith + + * scripts/features/archives: New regression tests for archive + support. Test for fix to Savannah bug #30612. +--- + read.c | 15 ++++++++----- + tests/scripts/features/archives | 42 +++++++++++++++++++++++++++++++++++++++ + 2 files changed, 51 insertions(+), 6 deletions(-) + create mode 100644 tests/scripts/features/archives + +diff --git a/read.c b/read.c +index a3ad88e..9dfd4ea 100644 +--- a/read.c ++++ b/read.c +@@ -3028,7 +3028,7 @@ parse_file_seq (char **stringp, unsigned int size, int stopchar, + { + /* 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 @@ parse_file_seq (char **stringp, unsigned int size, int stopchar, + 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,10 @@ parse_file_seq (char **stringp, unsigned int size, int stopchar, + 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/tests/scripts/features/archives b/tests/scripts/features/archives +new file mode 100644 +index 0000000..00aa1af +--- /dev/null ++++ b/tests/scripts/features/archives +@@ -0,0 +1,42 @@ ++# -*-mode: perl-*- ++ ++$description = "Test GNU make's archive management features."; ++ ++$details = "\ ++This only works on systems that support it."; ++ ++# If this instance of make doesn't support archives, skip it ++exists $FEATURES{archives} or return -1; ++ ++# Create some .o files to work with ++utouch(-60, qw(a1.o a2.o a3.o)); ++ ++# Very simple ++run_make_test('all: libxx.a(a1.o)', ++ '', "ar rv libxx.a a1.o\nar: creating libxx.a\na - a1.o\n"); ++ ++# Multiple .o's. Add a new one to the existing library ++run_make_test('all: libxx.a(a1.o a2.o)', ++ '', "ar rv libxx.a a2.o\na - a2.o\n"); ++ ++# Touch one of the .o's so it's rebuilt ++utouch(-40, 'a1.o'); ++run_make_test(undef, '', "ar rv libxx.a a1.o\nr - a1.o\n"); ++ ++# Use wildcards ++run_make_test('all: libxx.a(*.o)', ++ '', "#MAKE#: Nothing to be done for `all'.\n"); ++ ++# Touch one of the .o's so it's rebuilt ++utouch(-30, 'a1.o'); ++run_make_test(undef, '', "ar rv libxx.a a1.o\nr - a1.o\n"); ++ ++# Use both wildcards and simple names ++utouch(-50, 'a2.o'); ++run_make_test('all: libxx.a(a3.o *.o)', '', ++ "ar rv libxx.a a3.o\na - a3.o\nar rv libxx.a a2.o\nr - a2.o\n"); ++ ++rmfiles(qw(a1.o a2.o a3.o libxx.a)); ++ ++# This tells the test driver that the perl test script executed properly. ++1; +-- +1.7.2.3 + diff --git a/base/make/make-3.82-0004-improve-glob-speed.patch b/base/make/make-3.82-0004-improve-glob-speed.patch new file mode 100644 index 000000000..b1648827e --- /dev/null +++ b/base/make/make-3.82-0004-improve-glob-speed.patch @@ -0,0 +1,154 @@ +# --- SDE-COPYRIGHT-NOTE-BEGIN --- +# This copyright note is auto-generated by ./scripts/Create-CopyPatch. +# +# Filename: package/.../make/make-3.82-0004-improve-glob-speed.patch +# Copyright (C) 2012 The OpenSDE Project +# +# More information can be found in the files COPYING and README. +# +# This patch file is dual-licensed. It is available under the license the +# patched project is licensed under, as long as it is an OpenSource license +# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms +# of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# --- SDE-COPYRIGHT-NOTE-END --- + +From b905f2002daaacc62cc5c083ebc6f7ba787a793e Mon Sep 17 00:00:00 2001 +From: Christian Wiese +Date: Mon, 22 Oct 2012 17:58:00 +0200 +Subject: [PATCH] improve glob speed + +ChangeLog: + +2011-05-07 Paul Smith + + * read.c (parse_file_seq): Ensure existence checks use glob(). + +2011-05-01 Paul Smith + + * read.c (parse_file_seq): Don't try to invoke glob() unless there + are potential wildcard characters in the filename. Performance + enhancement suggested by Michael Meeks + +tests/Changelog: + +2011-05-07 Paul Smith + + * scripts/functions/wildcard: Verify wildcard used to test for + file existence/non-existence. +--- + read.c | 58 ++++++++++++++++++++++--------------- + tests/scripts/functions/wildcard | 12 ++++++++ + 2 files changed, 46 insertions(+), 24 deletions(-) + +diff --git a/read.c b/read.c +index 9dfd4ea..8587e85 100644 +--- a/read.c ++++ b/read.c +@@ -2904,6 +2904,7 @@ parse_file_seq (char **stringp, unsigned int size, int stopchar, + const char *name; + const char **nlist = 0; + char *tildep = 0; ++ int globme = 1; + #ifndef NO_ARCHIVES + char *arname = 0; + char *memname = 0; +@@ -3112,32 +3113,40 @@ parse_file_seq (char **stringp, unsigned int size, int stopchar, + } + #endif /* !NO_ARCHIVES */ + +- switch (glob (name, GLOB_NOSORT|GLOB_ALTDIRFUNC, NULL, &gl)) +- { +- case GLOB_NOSPACE: +- fatal (NILF, _("virtual memory exhausted")); ++ /* glob() is expensive: don't call it unless we need to. */ ++ if (!(flags & PARSEFS_EXISTS) && strpbrk (name, "?*[") == NULL) ++ { ++ globme = 0; ++ i = 1; ++ nlist = &name; ++ } ++ 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 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 */ ++ 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; +- } ++ default: ++ /* By default keep this name. */ ++ i = 1; ++ nlist = &name; ++ break; ++ } + + /* For each matched element, add it to the list. */ + while (i-- > 0) +@@ -3177,7 +3186,8 @@ parse_file_seq (char **stringp, unsigned int size, int stopchar, + #endif /* !NO_ARCHIVES */ + NEWELT (concat (2, prefix, nlist[i])); + +- globfree (&gl); ++ if (globme) ++ globfree (&gl); + + #ifndef NO_ARCHIVES + if (arname) +diff --git a/tests/scripts/functions/wildcard b/tests/scripts/functions/wildcard +index 2841f5d..bcd84ad 100644 +--- a/tests/scripts/functions/wildcard ++++ b/tests/scripts/functions/wildcard +@@ -88,4 +88,16 @@ all: ; @echo $(wildcard xz--y*.7) + !, + '', "\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; +-- +1.7.2.3 + diff --git a/base/make/make-3.82-0005-sort-word-count-algorithm.patch b/base/make/make-3.82-0005-sort-word-count-algorithm.patch new file mode 100644 index 000000000..20f97c5c9 --- /dev/null +++ b/base/make/make-3.82-0005-sort-word-count-algorithm.patch @@ -0,0 +1,186 @@ +# --- SDE-COPYRIGHT-NOTE-BEGIN --- +# This copyright note is auto-generated by ./scripts/Create-CopyPatch. +# +# Filename: package/.../make/make-3.82-0005-sort-word-count-algorithm.patch +# Copyright (C) 2012 The OpenSDE Project +# +# More information can be found in the files COPYING and README. +# +# This patch file is dual-licensed. It is available under the license the +# patched project is licensed under, as long as it is an OpenSource license +# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms +# of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# --- SDE-COPYRIGHT-NOTE-END --- + +From 1515cb543da14853a1751b397317f46dcbdbbbdf Mon Sep 17 00:00:00 2001 +From: Christian Wiese +Date: Mon, 22 Oct 2012 18:01:40 +0200 +Subject: [PATCH] sort word count algorithm + +ChangeLog: + +2011-05-02 Paul Smith + + * function.c (func_sort): Use the same algorithm to count the + number of words we will get after the split, as we use to split. + Based on a patch from Matthias Hopf. Fixes Savannah bug #33125. + +tests/ChangeLog: + +2011-05-02 Paul Smith + + * scripts/functions/sort: Add a test for Savannah bug #33125. +--- + function.c | 17 ++----- + tests/scripts/functions/sort | 98 +++++++++++++++++++---------------------- + 2 files changed, 50 insertions(+), 65 deletions(-) + +diff --git a/function.c b/function.c +index e2f6c8c..17ca6a4 100644 +--- a/function.c ++++ b/function.c +@@ -706,7 +706,7 @@ func_words (char *o, char **argv, const char *funcname UNUSED) + const char *word_iterator = argv[0]; + char buf[20]; + +- while (find_next_token (&word_iterator, (unsigned int *) 0) != 0) ++ while (find_next_token (&word_iterator, NULL) != 0) + ++i; + + sprintf (buf, "%d", i); +@@ -1133,21 +1133,14 @@ func_sort (char *o, char **argv, const char *funcname UNUSED) + + /* Find the maximum number of words we'll have. */ + t = argv[0]; +- wordi = 1; +- while (*t != '\0') ++ wordi = 0; ++ while ((p = find_next_token (&t, NULL)) != 0) + { +- char c = *(t++); +- +- if (! isspace ((unsigned char)c)) +- continue; +- ++ ++t; + ++wordi; +- +- while (isspace ((unsigned char)*t)) +- ++t; + } + +- words = xmalloc (wordi * sizeof (char *)); ++ words = xmalloc ((wordi == 0 ? 1 : wordi) * sizeof (char *)); + + /* Now assign pointers to each string in the array. */ + t = argv[0]; +diff --git a/tests/scripts/functions/sort b/tests/scripts/functions/sort +index d472102..b558910 100644 +--- a/tests/scripts/functions/sort ++++ b/tests/scripts/functions/sort +@@ -1,55 +1,47 @@ +-$description = "The following test creates a makefile to verify\n" +- ."the ability of make to sort lists of object. Sort\n" +- ."will also remove any duplicate entries. This will also\n" +- ."be tested."; +- +-$details = "The make file is built with a list of object in a random order\n" +- ."and includes some duplicates. Make should sort all of the elements\n" +- ."remove all duplicates\n"; +- +-open(MAKEFILE,"> $makefile"); +- +-# The Contents of the MAKEFILE ... +- +-print MAKEFILE "foo := moon_light days \n" +- ."foo1:= jazz\n" +- ."bar := captured \n" +- ."bar2 = boy end, has rise A midnight \n" +- ."bar3:= \$(foo)\n" +- ."s1 := _by\n" +- ."s2 := _and_a\n" +- ."t1 := \$(addsuffix \$(s1), \$(bar) )\n" +- ."t2 := \$(addsuffix \$(s2), \$(foo1) )\n" +- ."t3 := \$(t2) \$(t2) \$(t2) \$(t2) \$(t2) \$(t2) \$(t2) \$(t2) \$(t2) \$(t2) \n" +- ."t4 := \$(t3) \$(t3) \$(t3) \$(t3) \$(t3) \$(t3) \$(t3) \$(t3) \$(t3) \$(t3) \n" +- ."t5 := \$(t4) \$(t4) \$(t4) \$(t4) \$(t4) \$(t4) \$(t4) \$(t4) \$(t4) \$(t4) \n" +- ."t6 := \$(t5) \$(t5) \$(t5) \$(t5) \$(t5) \$(t5) \$(t5) \$(t5) \$(t5) \$(t5) \n" +- ."t7 := \$(t6) \$(t6) \$(t6) \n" +- ."p1 := \$(addprefix \$(foo1), \$(s2) )\n" +- ."blank:= \n" +- ."all:\n" +- ."\t\@echo \$(sort \$(bar2) \$(foo) \$(addsuffix \$(s1), \$(bar) ) \$(t2) \$(bar2) \$(bar3))\n" +- ."\t\@echo \$(sort \$(blank) \$(foo) \$(bar2) \$(t1) \$(p1) )\n" +- ."\t\@echo \$(sort \$(foo) \$(bar2) \$(t1) \$(t4) \$(t5) \$(t7) \$(t6) )\n"; +- +- +-# END of Contents of MAKEFILE +- +-close(MAKEFILE); +- +-&run_make_with_options($makefile,"",&get_logfile); +- +-# Create the answer to what should be produced by this Makefile +-$answer = "A boy captured_by days end, has jazz_and_a midnight moon_light rise\n" +- ."A boy captured_by days end, has jazz_and_a midnight moon_light rise\n" +- ."A boy captured_by days end, has jazz_and_a midnight moon_light rise\n"; +- +-&compare_output($answer,&get_logfile(1)); ++# -*-perl-*- ++ ++$description = "The following test creates a makefile to verify ++the ability of make to sort lists of object. Sort ++will also remove any duplicate entries. This will also ++be tested."; ++ ++$details = "The make file is built with a list of object in a random order ++and includes some duplicates. Make should sort all of the elements ++remove all duplicates\n"; ++ ++run_make_test(' ++foo := moon_light days ++foo1:= jazz ++bar := captured ++bar2 = boy end, has rise A midnight ++bar3:= $(foo) ++s1 := _by ++s2 := _and_a ++t1 := $(addsuffix $(s1), $(bar) ) ++t2 := $(addsuffix $(s2), $(foo1) ) ++t3 := $(t2) $(t2) $(t2) $(t2) $(t2) $(t2) $(t2) $(t2) $(t2) $(t2) ++t4 := $(t3) $(t3) $(t3) $(t3) $(t3) $(t3) $(t3) $(t3) $(t3) $(t3) ++t5 := $(t4) $(t4) $(t4) $(t4) $(t4) $(t4) $(t4) $(t4) $(t4) $(t4) ++t6 := $(t5) $(t5) $(t5) $(t5) $(t5) $(t5) $(t5) $(t5) $(t5) $(t5) ++t7 := $(t6) $(t6) $(t6) ++p1 := $(addprefix $(foo1), $(s2) ) ++blank:= ++all: ++ @echo $(sort $(bar2) $(foo) $(addsuffix $(s1), $(bar) ) $(t2) $(bar2) $(bar3)) ++ @echo $(sort $(blank) $(foo) $(bar2) $(t1) $(p1) ) ++ @echo $(sort $(foo) $(bar2) $(t1) $(t4) $(t5) $(t7) $(t6) ) ++', ++ '', 'A boy captured_by days end, has jazz_and_a midnight moon_light rise ++A boy captured_by days end, has jazz_and_a midnight moon_light rise ++A boy captured_by days end, has jazz_and_a midnight moon_light rise ++'); ++ ++ ++# Test with non-space/tab whitespace. Note that you can't see the ++# original bug except using valgrind. ++ ++run_make_test("FOO = a b\tc\rd\fe \f \f \f \f \ff ++all: ; \@echo \$(words \$(sort \$(FOO)))\n", ++ '', "5\n"); + + 1; +- +- +- +- +- +- +-- +1.7.2.3 + diff --git a/base/make/make-3.82-0006-construct-command-line.patch b/base/make/make-3.82-0006-construct-command-line.patch new file mode 100644 index 000000000..c85d9ec2e --- /dev/null +++ b/base/make/make-3.82-0006-construct-command-line.patch @@ -0,0 +1,89 @@ +# --- SDE-COPYRIGHT-NOTE-BEGIN --- +# This copyright note is auto-generated by ./scripts/Create-CopyPatch. +# +# Filename: package/.../make/make-3.82-0006-construct-command-line.patch +# Copyright (C) 2012 The OpenSDE Project +# +# More information can be found in the files COPYING and README. +# +# This patch file is dual-licensed. It is available under the license the +# patched project is licensed under, as long as it is an OpenSource license +# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms +# of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# --- SDE-COPYRIGHT-NOTE-END --- + +From 12e4f0b3019ddd621147358500e87b91ac6361cf Mon Sep 17 00:00:00 2001 +From: Christian Wiese +Date: Mon, 22 Oct 2012 18:03:56 +0200 +Subject: [PATCH] construct command line + +ChangeLog: + +2011-05-07 Eli Zaretskii + + * job.c (construct_command_argv_internal): Don't assume shellflags + is always non-NULL. Escape-protect characters special to the + shell when copying the value of SHELL into new_line. Fixes + Savannah bug #23922. +--- + job.c | 23 ++++++++++++++++------- + 1 files changed, 16 insertions(+), 7 deletions(-) + +diff --git a/job.c b/job.c +index aacfb84..535a751 100644 +--- a/job.c ++++ b/job.c +@@ -2792,12 +2792,12 @@ construct_command_argv_internal (char *line, char **restp, char *shell, + + unsigned int shell_len = strlen (shell); + unsigned int line_len = strlen (line); +- unsigned int sflags_len = strlen (shellflags); ++ unsigned int sflags_len = shellflags ? strlen (shellflags) : 0; + char *command_ptr = NULL; /* used for batch_mode_shell mode */ + char *new_line; + + # ifdef __EMX__ /* is this necessary? */ +- if (!unixy_shell) ++ if (!unixy_shell && shellflags) + shellflags[0] = '/'; /* "/c" */ + # endif + +@@ -2859,19 +2859,28 @@ construct_command_argv_internal (char *line, char **restp, char *shell, + + new_argv = xmalloc (4 * sizeof (char *)); + new_argv[0] = xstrdup(shell); +- new_argv[1] = xstrdup(shellflags); ++ new_argv[1] = xstrdup(shellflags ? shellflags : ""); + new_argv[2] = line; + new_argv[3] = NULL; + return new_argv; + } + +- new_line = alloca (shell_len + 1 + sflags_len + 1 ++ new_line = alloca ((shell_len*2) + 1 + sflags_len + 1 + + (line_len*2) + 1); + ap = new_line; +- memcpy (ap, shell, shell_len); +- ap += shell_len; ++ /* Copy SHELL, escaping any characters special to the shell. If ++ we don't escape them, construct_command_argv_internal will ++ recursively call itself ad nauseam, or until stack overflow, ++ whichever happens first. */ ++ for (p = shell; *p != '\0'; ++p) ++ { ++ if (strchr (sh_chars, *p) != 0) ++ *(ap++) = '\\'; ++ *(ap++) = *p; ++ } + *(ap++) = ' '; +- memcpy (ap, shellflags, sflags_len); ++ if (shellflags) ++ memcpy (ap, shellflags, sflags_len); + ap += sflags_len; + *(ap++) = ' '; + command_ptr = ap; +-- +1.7.2.3 + diff --git a/base/make/make-3.82-0007-copy-on-expand.patch b/base/make/make-3.82-0007-copy-on-expand.patch new file mode 100644 index 000000000..080cf42de --- /dev/null +++ b/base/make/make-3.82-0007-copy-on-expand.patch @@ -0,0 +1,148 @@ +# --- SDE-COPYRIGHT-NOTE-BEGIN --- +# This copyright note is auto-generated by ./scripts/Create-CopyPatch. +# +# Filename: package/.../make/make-3.82-0007-copy-on-expand.patch +# Copyright (C) 2012 The OpenSDE Project +# +# More information can be found in the files COPYING and README. +# +# This patch file is dual-licensed. It is available under the license the +# patched project is licensed under, as long as it is an OpenSource license +# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms +# of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# --- SDE-COPYRIGHT-NOTE-END --- + +From 3d11dcdc977ef7db3897663b806fe08856ca4190 Mon Sep 17 00:00:00 2001 +From: Christian Wiese +Date: Mon, 22 Oct 2012 18:05:12 +0200 +Subject: [PATCH] copy on expand + +ChangeLog: + +2011-08-29 Paul Smith + + * expand.c (variable_expand_string): Always allocate a new buffer + for a string we're expanding. The string we're working on can get + freed while we work on it (for example if it's the value of a + variable which modifies itself using an eval operation). + See Savannah patch #7534 for the original report by Lubomir Rintel. + +tests/ChangeLog: + +2011-08-29 Paul Smith + + * scripts/features/varnesting: Test resetting of variables while + expanding them. See Savannah patch #7534 +--- + expand.c | 20 +++++---------- + tests/scripts/features/varnesting | 47 +++++++++++++++++++------------------ + 2 files changed, 31 insertions(+), 36 deletions(-) + +diff --git a/expand.c b/expand.c +index 2315b06..9aeaa13 100644 +--- a/expand.c ++++ b/expand.c +@@ -197,7 +197,7 @@ variable_expand_string (char *line, const char *string, long length) + { + struct variable *v; + const char *p, *p1; +- char *abuf = NULL; ++ char *save; + char *o; + unsigned int line_offset; + +@@ -212,16 +212,11 @@ variable_expand_string (char *line, const char *string, long length) + return (variable_buffer); + } + +- /* If we want a subset of the string, allocate a temporary buffer for it. +- Most of the functions we use here don't work with length limits. */ +- if (length > 0 && string[length] != '\0') +- { +- abuf = xmalloc(length+1); +- memcpy(abuf, string, length); +- abuf[length] = '\0'; +- string = abuf; +- } +- p = string; ++ /* We need a copy of STRING: due to eval, it's possible that it will get ++ freed as we process it (it might be the value of a variable that's reset ++ for example). Also having a nil-terminated string is handy. */ ++ save = length < 0 ? xstrdup (string) : xstrndup (string, length); ++ p = save; + + while (1) + { +@@ -411,8 +406,7 @@ variable_expand_string (char *line, const char *string, long length) + ++p; + } + +- if (abuf) +- free (abuf); ++ free (save); + + variable_buffer_output (o, "", 1); + return (variable_buffer + line_offset); +diff --git a/tests/scripts/features/varnesting b/tests/scripts/features/varnesting +index 15d5071..d8f3ffb 100644 +--- a/tests/scripts/features/varnesting ++++ b/tests/scripts/features/varnesting +@@ -1,29 +1,30 @@ +-$description = "The following test creates a makefile to ..."; ++# -*-perl-*- ++$description = "Test recursive variables"; + + $details = ""; + +-open(MAKEFILE,"> $makefile"); +- +-# The Contents of the MAKEFILE ... +- +-print MAKEFILE "x = variable1\n" +- ."variable2 := Hello\n" +- ."y = \$(subst 1,2,\$(x))\n" +- ."z = y\n" +- ."a := \$(\$(\$(z)))\n" +- ."all: \n" +- ."\t\@echo \$(a)\n"; +- +-# END of Contents of MAKEFILE +- +-close(MAKEFILE); +- +-&run_make_with_options($makefile,"",&get_logfile); +- +-# Create the answer to what should be produced by this Makefile +-$answer = "Hello\n"; +- +-&compare_output($answer,&get_logfile(1)); ++run_make_test(' ++x = variable1 ++variable2 := Hello ++y = $(subst 1,2,$(x)) ++z = y ++a := $($($(z))) ++all: ++ @echo $(a) ++', ++ '', "Hello\n"); ++ ++# This tests resetting the value of a variable while expanding it. ++# You may only see problems with this if you're using valgrind or ++# some other memory checker that poisons freed memory. ++# See Savannah patch #7534 ++ ++run_make_test(' ++VARIABLE = $(eval VARIABLE := echo hi)$(VARIABLE) ++wololo: ++ @$(VARIABLE) ++', ++ '', "hi\n"); + + 1; + +-- +1.7.2.3 + diff --git a/base/make/make-3.82-0008-parallel-remake.patch b/base/make/make-3.82-0008-parallel-remake.patch new file mode 100644 index 000000000..2bf395b01 --- /dev/null +++ b/base/make/make-3.82-0008-parallel-remake.patch @@ -0,0 +1,97 @@ +# --- SDE-COPYRIGHT-NOTE-BEGIN --- +# This copyright note is auto-generated by ./scripts/Create-CopyPatch. +# +# Filename: package/.../make/make-3.82-0008-parallel-remake.patch +# Copyright (C) 2012 The OpenSDE Project +# +# More information can be found in the files COPYING and README. +# +# This patch file is dual-licensed. It is available under the license the +# patched project is licensed under, as long as it is an OpenSource license +# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms +# of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# --- SDE-COPYRIGHT-NOTE-END --- + +From 4c7a70c558579d5b42d54fde1397c121d3df31c4 Mon Sep 17 00:00:00 2001 +From: Christian Wiese +Date: Mon, 22 Oct 2012 18:06:56 +0200 +Subject: [PATCH] parallel remake + +ChangeLog: + +2011-09-18 Paul Smith + + * main.c (main): If we're re-exec'ing and we're the master make, + then restore the job_slots value so it goes back into MAKEFLAGS + properly. See Savannah bug #33873. + +test/ChangeLog: + +2011-09-18 Paul Smith + + * scripts/features/parallelism: On re-exec make sure we preserve + the value of MAKEFLAGS when necessary. See Savannah bug #33873. +--- + main.c | 8 +++++--- + tests/scripts/features/parallelism | 17 +++++++++++++++++ + 2 files changed, 22 insertions(+), 3 deletions(-) + +diff --git a/main.c b/main.c +index 782b0de..68587ae 100644 +--- a/main.c ++++ b/main.c +@@ -2088,6 +2088,11 @@ main (int argc, char **argv, char **envp) + + ++restarts; + ++ /* If we're re-exec'ing the first make, put back the number of ++ job slots so define_makefiles() will get it right. */ ++ if (master_job_slots) ++ job_slots = master_job_slots; ++ + /* Reset makeflags in case they were changed. */ + { + const char *pv = define_makeflags (1, 1); +@@ -2824,9 +2829,6 @@ define_makeflags (int all, int makefile) + && (*(unsigned int *) cs->value_ptr == + *(unsigned int *) cs->noarg_value)) + ADD_FLAG ("", 0); /* Optional value omitted; see below. */ +- else if (cs->c == 'j') +- /* Special case for `-j'. */ +- ADD_FLAG ("1", 1); + else + { + char *buf = alloca (30); +diff --git a/tests/scripts/features/parallelism b/tests/scripts/features/parallelism +index cc0f84f..6122412 100644 +--- a/tests/scripts/features/parallelism ++++ b/tests/scripts/features/parallelism +@@ -164,6 +164,23 @@ inc.mk: + + rmfiles('inc.mk'); + ++# TEST #11: Make sure -jN from MAKEFLAGS is processed even when we re-exec ++# See Savannah bug #33873 ++ ++$extraENV{MAKEFLAGS} = '-j4'; ++ ++run_make_test(q! ++things = thing1 thing2 ++all: $(things) ++$(things):; @echo '$@ start'; sleep 1; echo '$@ end' ++-include inc.mk ++inc.mk: ; @touch $@ ++!, ++ '', "thing1 start\nthing2 start\nthing1 end\nthing2 end\n"); ++ ++delete $extraENV{MAKEFLAGS}; ++rmfiles('inc.mk'); ++ + if ($all_tests) { + # Implicit files aren't properly recreated during parallel builds + # Savannah bug #26864 +-- +1.7.2.3 + diff --git a/base/make/make-3.82-0009-long-command-line.patch b/base/make/make-3.82-0009-long-command-line.patch new file mode 100644 index 000000000..9fa77a21b --- /dev/null +++ b/base/make/make-3.82-0009-long-command-line.patch @@ -0,0 +1,72 @@ +# --- SDE-COPYRIGHT-NOTE-BEGIN --- +# This copyright note is auto-generated by ./scripts/Create-CopyPatch. +# +# Filename: package/.../make/make-3.82-0009-long-command-line.patch +# Copyright (C) 2012 The OpenSDE Project +# +# More information can be found in the files COPYING and README. +# +# This patch file is dual-licensed. It is available under the license the +# patched project is licensed under, as long as it is an OpenSource license +# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms +# of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# --- SDE-COPYRIGHT-NOTE-END --- + +From 23a3b958d8a80e601c1a0bf0770af6b854d00187 Mon Sep 17 00:00:00 2001 +From: Christian Wiese +Date: Mon, 22 Oct 2012 18:12:47 +0200 +Subject: [PATCH] long command line + +ChangeLog: + +2012-09-09 Paul Smith + + * job.c (construct_command_argv_internal): Keep the command line + on the heap for very long lines. Fixes Savannah bug #36451. +--- + job.c | 13 +++++++++---- + 1 files changed, 9 insertions(+), 4 deletions(-) + +diff --git a/job.c b/job.c +index 535a751..386d241 100644 +--- a/job.c ++++ b/job.c +@@ -2865,8 +2865,8 @@ construct_command_argv_internal (char *line, char **restp, char *shell, + return new_argv; + } + +- new_line = alloca ((shell_len*2) + 1 + sflags_len + 1 +- + (line_len*2) + 1); ++ new_line = xmalloc ((shell_len*2) + 1 + sflags_len + 1 ++ + (line_len*2) + 1); + ap = new_line; + /* Copy SHELL, escaping any characters special to the shell. If + we don't escape them, construct_command_argv_internal will +@@ -2933,8 +2933,11 @@ construct_command_argv_internal (char *line, char **restp, char *shell, + *ap++ = *p; + } + if (ap == new_line + shell_len + sflags_len + 2) +- /* Line was empty. */ +- return 0; ++ { ++ /* Line was empty. */ ++ free (new_line); ++ return 0; ++ } + *ap = '\0'; + + #ifdef WINDOWS32 +@@ -3074,6 +3077,8 @@ construct_command_argv_internal (char *line, char **restp, char *shell, + fatal (NILF, _("%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"), + __FILE__, __LINE__); + #endif ++ ++ free (new_line); + } + #endif /* ! AMIGA */ + +-- +1.7.2.3 + diff --git a/base/make/make-3.82-0010-intermediate-parallel.patch b/base/make/make-3.82-0010-intermediate-parallel.patch new file mode 100644 index 000000000..eb0dc43c3 --- /dev/null +++ b/base/make/make-3.82-0010-intermediate-parallel.patch @@ -0,0 +1,79 @@ +# --- SDE-COPYRIGHT-NOTE-BEGIN --- +# This copyright note is auto-generated by ./scripts/Create-CopyPatch. +# +# Filename: package/.../make/make-3.82-0010-intermediate-parallel.patch +# Copyright (C) 2012 The OpenSDE Project +# +# More information can be found in the files COPYING and README. +# +# This patch file is dual-licensed. It is available under the license the +# patched project is licensed under, as long as it is an OpenSource license +# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms +# of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# --- SDE-COPYRIGHT-NOTE-END --- + +From b1260285aca75246e8028d1b5221304540bd59c7 Mon Sep 17 00:00:00 2001 +From: Christian Wiese +Date: Mon, 22 Oct 2012 18:15:13 +0200 +Subject: [PATCH] intermediate parallel + +ChangeLog: + +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. +--- + remake.c | 4 ++++ + tests/scripts/features/parallelism | 17 +++++++++++++++++ + 2 files changed, 21 insertions(+), 0 deletions(-) + +diff --git a/remake.c b/remake.c +index 27d2550..a8d7cdf 100644 +--- a/remake.c ++++ b/remake.c +@@ -614,6 +614,10 @@ update_file_1 (struct file *file, unsigned int depth) + 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); + +diff --git a/tests/scripts/features/parallelism b/tests/scripts/features/parallelism +index 6122412..090827b 100644 +--- a/tests/scripts/features/parallelism ++++ b/tests/scripts/features/parallelism +@@ -211,6 +211,23 @@ rm main.x"); + 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 +-- +1.7.2.3 + diff --git a/base/make/make.desc b/base/make/make.desc index 0e797eae2..873e293ce 100644 --- a/base/make/make.desc +++ b/base/make/make.desc @@ -3,7 +3,7 @@ [COPY] This copyright note is auto-generated by ./scripts/Create-CopyPatch. [COPY] [COPY] Filename: package/.../make/make.desc -[COPY] Copyright (C) 2006 The OpenSDE Project +[COPY] Copyright (C) 2006 - 2012 The OpenSDE Project [COPY] Copyright (C) 2004 - 2006 The T2 SDE Project [COPY] Copyright (C) 1998 - 2003 Clifford Wolf [COPY] @@ -34,8 +34,8 @@ [L] GPL [S] Stable -[V] 3.81 +[V] 3.82 [P] X -1---5---9 107.700 -[D] 2397905372 make-3.81.tar.gz ftp://ftp.gnu.org/pub/gnu/make/ +[D] 778767654 make-3.82.tar.gz ftp://ftp.gnu.org/pub/gnu/make/