[PATCH] make: fix bugs 30612, 30723, 31743

Michal Soltys soltys at ziu.info
Sun Mar 20 00:12:28 UTC 2011


A few diffs from official make repository. In particular - 30612 made
compiling dev86 problematic.

Signed-off-by: Michal Soltys <soltys at ziu.info>
---
 make/.md5sum             |    1 +
 make/Pkgfile             |    6 ++-
 make/savannah-bugs.patch |   89 ++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 94 insertions(+), 2 deletions(-)
 create mode 100644 make/savannah-bugs.patch

diff --git a/make/.md5sum b/make/.md5sum
index d35b411..4903532 100644
--- a/make/.md5sum
+++ b/make/.md5sum
@@ -1 +1,2 @@
 1a11100f3c63fcf5753818e59d63088f  make-3.82.tar.bz2
+af491e6f1134e32550da84d3ca8132d3  savannah-bugs.patch
diff --git a/make/Pkgfile b/make/Pkgfile
index 58f4826..0f42444 100644
--- a/make/Pkgfile
+++ b/make/Pkgfile
@@ -4,11 +4,13 @@
 
 name=make
 version=3.82
-release=1
-source=(ftp://ftp.gnu.org/gnu/$name/$name-$version.tar.bz2)
+release=2
+source=(ftp://ftp.gnu.org/gnu/$name/$name-$version.tar.bz2
+	savannah-bugs.patch)
 
 build() {
     cd $name-$version
+    patch -p0 -i ../savannah-bugs.patch
     ./configure --prefix=/usr --mandir=/usr/man --disable-nls
     make
     make DESTDIR=$PKG install
diff --git a/make/savannah-bugs.patch b/make/savannah-bugs.patch
new file mode 100644
index 0000000..f2bb9c0
--- /dev/null
+++ b/make/savannah-bugs.patch
@@ -0,0 +1,89 @@
+https://savannah.gnu.org/bugs/?30612
+https://savannah.gnu.org/bugs/?30723
+https://savannah.gnu.org/bugs/?31743 (no longer visible)
+
+--- main.c	2010-07-19 14:10:53.000000000 +0700
++++ main.c	2011-01-12 21:31:30.114891591 +0700
+@@ -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
+@@ -2093,7 +2094,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))
+--- read.c	2010-07-13 08:20:42.000000000 +0700
++++ read.c	2011-01-12 21:31:23.497486028 +0700
+@@ -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)
+--- read.c	2010/11/06 21:56:24	1.195
++++ read.c	2010/11/30 14:48:53	1.196
+@@ -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);
-- 
1.7.3.5




More information about the CRUX mailing list