I know this is more of a LFS issue (feel free to forward this to
LFS if you wish), but Make 3.82 has a few bugs that affect the
compilation of packages outside those required in LFS book.

In particular, the Dev86src package (needed to build lilo) cannot be
built using make 3.82. There is a CLFS patch for Dev86src to get
it to work under make 3.82:

http://www.mail-archive.com/[email protected]/msg01541.html

But this is a workaround for an actual bug in make 3.82. Anyway, for
those interested, I found a patch that fixes this make bug as well as
two other ones.

The attached patch (collected by Michal Soltys <soltys at ziu.info>)
fixes several make 3.82 bugs (30612,30723,31743) the first of which
prevents the successful building of the Dev86src package
(http://www.debath.co.uk/dev86/) which is required to build the lilo
package (http://lilo.alioth.debian.org/). 
These fixes have all been accepted upstream.

 * http://lists.crux.nu/pipermail/crux/2011-March/009482.html
 * http://www.mail-archive.com/[email protected]/msg01541.html
 * http://stackoverflow.com/questions/4282254/dev86-compile-error
 * https://savannah.gnu.org/bugs/?30612
 * https://savannah.gnu.org/bugs/?30723
 * https://savannah.gnu.org/bugs/?31743 (inaccessible, bug number reused)
 * http://lists.gnu.org/archive/html/bug-make/2010-07/msg00200.html
 * http://lists.gnu.org/archive/html/bug-make/2010-08/msg00059.html
 * http://lists.gnu.org/archive/html/bug-make/2010-12/msg00000.html

After applying this patch and building make 3.82, all of its 428 check
tests (still) pass and I can now build Dev86src-0.16.18.

I for one am hoping that upstream does not wait as long to release
make 3.83 as they did make 3.82.


  Cheers,

  Mike Shell
 


 
This patch (collected by Michal Soltys <soltys at ziu.info>) fixes several
make 3.82 bugs (30612,30723,31743) the first of which prevents the
successful building of the Dev86src package (http://www.debath.co.uk/dev86/)
which is required to build the lilo package (http://lilo.alioth.debian.org/).
These fixes have all been accepted upstream.

 * http://lists.crux.nu/pipermail/crux/2011-March/009482.html
 * http://www.mail-archive.com/[email protected]/msg01541.html
 * http://stackoverflow.com/questions/4282254/dev86-compile-error
 * https://savannah.gnu.org/bugs/?30612
 * https://savannah.gnu.org/bugs/?30723
 * https://savannah.gnu.org/bugs/?31743 (inaccessible, bug number reused)
 * http://lists.gnu.org/archive/html/bug-make/2010-07/msg00200.html
 * http://lists.gnu.org/archive/html/bug-make/2010-08/msg00059.html
 * http://lists.gnu.org/archive/html/bug-make/2010-12/msg00000.html


--- make-3.82/main.c	2010-07-19 14:10:53.000000000 +0700
+++ make-3.82/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))
--- make-3.82/read.c	2010-07-13 08:20:42.000000000 +0700
+++ make-3.82/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)
--- make-3.82/read.c	2010/11/06 21:56:24	1.195
+++ make-3.82/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);
-- 
http://linuxfromscratch.org/mailman/listinfo/blfs-support
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page

Reply via email to