chroot-make: add some patches from Arch and Fedora.

This commit is contained in:
Juan RP 2012-09-14 08:37:57 +02:00
parent 45b0e54b0b
commit 86c6215603
7 changed files with 314 additions and 2 deletions

View File

@ -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)

View File

@ -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))

View File

@ -0,0 +1,59 @@
https://savannah.gnu.org/bugs/?30653
2012-09-09 Paul Smith <psmith@gnu.org>
* 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

View File

@ -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;

View File

@ -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);

View File

@ -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;
}

View File

@ -1,13 +1,13 @@
# Template build file for 'chroot-make' # Template build file for 'chroot-make'
pkgname=chroot-make pkgname=chroot-make
version=3.82 version=3.82
revision=2
wrksrc="make-${version}" wrksrc="make-${version}"
distfiles="http://ftp.gnu.org/pub/gnu/make/make-$version.tar.bz2"
build_style=gnu-configure build_style=gnu-configure
configure_args="--disable-nls" configure_args="--disable-nls"
revision=1
short_desc="The GNU make system -- for xbps-src use" short_desc="The GNU make system -- for xbps-src use"
maintainer="Juan RP <xtraeme@gmail.com>" maintainer="Juan RP <xtraeme@gmail.com>"
distfiles="http://ftp.gnu.org/pub/gnu/make/make-$version.tar.bz2"
checksum=e2c1a73f179c40c71e2fe8abf8a8a0688b8499538512984da4a76958d0402966 checksum=e2c1a73f179c40c71e2fe8abf8a8a0688b8499538512984da4a76958d0402966
long_desc=" long_desc="
GNU Make is a program that determines which pieces of a large GNU Make is a program that determines which pieces of a large