Loading...

patches@linuxfromscratch.org

[Prev] Thread [Next]  |  [Prev] Date [Next]

[lfs-patches] r2377 - trunk/make matthew Thu Feb 16 16:00:59 2012

Author: matthew
Date: 2012-02-16 16:37:58 -0700 (Thu, 16 Feb 2012)
New Revision: 2377

Added:
   trunk/make/make-3.82-fixes-1.patch
Log:
Fix a number of bugs in Make-3.82

Added: trunk/make/make-3.82-fixes-1.patch
===================================================================
--- trunk/make/make-3.82-fixes-1.patch                          (rev 0)
+++ trunk/make/make-3.82-fixes-1.patch  2012-02-16 23:37:58 UTC (rev 2377)
@@ -0,0 +1,227 @@
+Submitted By:            Matt Burgess <matthew_at_linuxfromscratch_dot_org>
+Date:                    2012-02-16
+Initial Package Version: 3.82
+Upstream Status:         From Upstream
+Origin:                  Upstream
+Description:             Fixes a number of bugs that prevent packages outside 
of
+                         LFS from building.
+
+diff -Naur make-3.82.orig/ChangeLog make-3.82/ChangeLog
+--- make-3.82.orig/ChangeLog   2010-07-28 05:39:50.000000000 +0000
++++ make-3.82/ChangeLog        2012-02-16 21:13:38.547958645 +0000
+@@ -1,3 +1,18 @@
++2010-11-28  Paul Smith  <[EMAIL PROTECTED]>
++
++      * read.c (record_target_var): Don't reset v if it's the same as
++      the global version.  Fixes Savannah bug #31743.
++
++2010-08-13  Paul Smith  <[EMAIL PROTECTED]>
++
++      * read.c (parse_file_seq): Fix various errors parsing archives
++      with multiple objects in the parenthesis, as well as wildcards.
++      Fixes Savannah bug #30612.
++
++2010-08-10  Paul Smith  <[EMAIL PROTECTED]>
++      * main.c (main): Expand MAKEFLAGS before adding it to the
++      environment when re-exec'ing.  Fixes Savannah bug #30723.
++
+ 2010-07-28  Paul Smith  <[EMAIL PROTECTED]>
+ 
+       Version 3.82 released.
+diff -Naur make-3.82.orig/main.c make-3.82/main.c
+--- make-3.82.orig/main.c      2010-07-19 07:10:53.000000000 +0000
++++ make-3.82/main.c   2012-02-16 21:13:38.548958648 +0000
+@@ -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 -Naur make-3.82.orig/read.c make-3.82/read.c
+--- make-3.82.orig/read.c      2010-07-13 01:20:42.000000000 +0000
++++ make-3.82/read.c   2012-02-16 21:13:38.550958648 +0000
+@@ -1811,7 +1811,8 @@
+           int len = strlen(v->name);
+ 
+           gv = lookup_variable (v->name, len);
+-          if (gv && (gv->origin == o_env_override || gv->origin == o_command))
++          if (gv && v != gv
++              && (gv->origin == o_env_override || gv->origin == o_command))
+             {
+               if (v->value != 0)
+                 free (v->value);
+@@ -3028,7 +3029,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 +3085,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 +3153,10 @@
+             else
+               {
+                 /* We got a chain of items.  Attach them.  */
++                if (*newp)
+                 (*newp)->next = found;
++                else
++                *newp = found;
+ 
+                 /* Find and set the new end.  Massage names if necessary.  */
+                 while (1)
+diff -Naur make-3.82.orig/tests/ChangeLog make-3.82/tests/ChangeLog
+--- make-3.82.orig/tests/ChangeLog     2010-07-28 05:39:50.000000000 +0000
++++ make-3.82/tests/ChangeLog  2012-02-16 21:13:38.551958648 +0000
+@@ -1,3 +1,12 @@
++2010-08-13  Paul Smith  <[EMAIL PROTECTED]>
++
++      * scripts/features/archives: New regression tests for archive
++      support.  Test for fix to Savannah bug #30612.
++
++2010-08-10  Paul Smith  <[EMAIL PROTECTED]>
++      * scripts/features/reinvoke: Ensure command line variable settings
++      are preserved across make re-exec.  Tests Savannah bug #30723.
++
+ 2010-07-28  Paul Smith  <[EMAIL PROTECTED]>
+ 
+       * scripts/targets/POSIX: Compatibility issues with Solaris (and
+diff -Naur make-3.82.orig/tests/run_make_tests.pl 
make-3.82/tests/run_make_tests.pl
+--- make-3.82.orig/tests/run_make_tests.pl     2010-07-13 01:20:43.000000000 
+0000
++++ make-3.82/tests/run_make_tests.pl  2012-02-16 21:23:22.364814080 +0000
+@@ -29,6 +29,7 @@
+ # You should have received a copy of the GNU General Public License along with
+ # this program.  If not, see <http://www.gnu.org/licenses/>.
+ 
++%FEATURES = ();
+ 
+ $valgrind = 0;              # invoke make with valgrind
+ $valgrind_args = '';
+@@ -367,6 +368,8 @@
+      $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) {
+diff -Naur make-3.82.orig/tests/scripts/features/archives 
make-3.82/tests/scripts/features/archives
+--- make-3.82.orig/tests/scripts/features/archives     1970-01-01 
00:00:00.000000000 +0000
++++ make-3.82/tests/scripts/features/archives  2012-02-16 21:26:15.257086258 
+0000
+@@ -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;
+diff -Naur make-3.82.orig/tests/scripts/features/reinvoke 
make-3.82/tests/scripts/features/reinvoke
+--- make-3.82.orig/tests/scripts/features/reinvoke     2005-06-27 
22:18:47.000000000 +0000
++++ make-3.82/tests/scripts/features/reinvoke  2012-02-16 21:13:38.552958648 
+0000
+@@ -57,9 +57,21 @@
+ # 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');
+ 
++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;
+diff -Naur make-3.82.orig/tests/scripts/features/targetvars 
make-3.82/tests/scripts/features/targetvars
+--- make-3.82.orig/tests/scripts/features/targetvars   2009-06-09 
15:35:39.000000000 +0000
++++ make-3.82/tests/scripts/features/targetvars        2012-02-16 
21:13:38.552958648 +0000
+@@ -237,6 +237,16 @@
+ 
+ run_make_test(undef, 'FOO=C', "C f1\n");
+ 
++# TEST #19: Conditional variables with command-line settings
++               
++run_make_test('
++a: FOO ?= f1
++a: ; @echo "$(FOO)"
++',
++              '', "f1\n");
++
++run_make_test(undef, 'FOO=C', "C\n");
++
+ # TEST #20: Check for continuation after semicolons
+ 
+ run_make_test(q!

-- 
http://linuxfromscratch.org/mailman/listinfo/patches
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page