chroot-make: add some patches from Arch and Fedora.
This commit is contained in:
parent
45b0e54b0b
commit
86c6215603
|
@ -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)
|
|
@ -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))
|
|
@ -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
|
|
@ -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;
|
|
@ -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);
|
|
@ -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;
|
||||||
|
}
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue