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'
|
||||
pkgname=chroot-make
|
||||
version=3.82
|
||||
revision=2
|
||||
wrksrc="make-${version}"
|
||||
distfiles="http://ftp.gnu.org/pub/gnu/make/make-$version.tar.bz2"
|
||||
build_style=gnu-configure
|
||||
configure_args="--disable-nls"
|
||||
revision=1
|
||||
short_desc="The GNU make system -- for xbps-src use"
|
||||
maintainer="Juan RP <xtraeme@gmail.com>"
|
||||
distfiles="http://ftp.gnu.org/pub/gnu/make/make-$version.tar.bz2"
|
||||
checksum=e2c1a73f179c40c71e2fe8abf8a8a0688b8499538512984da4a76958d0402966
|
||||
long_desc="
|
||||
GNU Make is a program that determines which pieces of a large
|
||||
|
|
Loading…
Reference in New Issue