make: import current stable from upstream Gentoo

The two bugs that we hit in the last upgrade have been fixed.

BUG=None
TEST=updated make, checked `make --version`
TEST=rebuilt x86-alex from source, booted it
TEST=`cbuildbot chromiumos-sdk` worked
TEST=`FEATURES=test emerge google-breakpad` worked

Change-Id: I000c7bf201be050dfbd6c43c1ef792e45b9184ea
Reviewed-on: https://gerrit.chromium.org/gerrit/18537
Reviewed-by: David James <davidjames@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
Commit-Ready: Mike Frysinger <vapier@chromium.org>
This commit is contained in:
Mike Frysinger 2011-08-30 14:38:03 -04:00 committed by Gerrit
parent 2fb52c2d91
commit e3e3f95efa
4 changed files with 154 additions and 0 deletions

View File

@ -0,0 +1,14 @@
http://bugs.gentoo.org/331975
https://savannah.gnu.org/bugs/?30723
--- main.c 2010/07/19 07:10:53 1.243
+++ main.c 2010/08/10 07:35:34 1.244
@@ -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,60 @@
http://bugs.gentoo.org/334889
https://savannah.gnu.org/bugs/?30612
revision 1.194
date: 2010-08-13 22:50:14 -0400; author: psmith; state: Exp; lines: +9 -6; commitid: 4UaslPqQHZTs5wKu;
- Fix Savannah bug #30612: handling of archive references with >1 object
Index: read.c
===================================================================
RCS file: /sources/make/make/read.c,v
retrieving revision 1.193
retrieving revision 1.194
diff -u -p -r1.193 -r1.194
--- read.c 13 Jul 2010 01:20:42 -0000 1.193
+++ read.c 14 Aug 2010 02:50:14 -0000 1.194
@@ -3028,7 +3028,7 @@ parse_file_seq (char **stringp, unsigned
{
/* 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 @@ parse_file_seq (char **stringp, unsigned
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,10 @@ parse_file_seq (char **stringp, unsigned
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,37 @@
--- function.c 2011/04/18 01:25:20 1.121
+++ function.c 2011/05/02 12:35:01 1.122
@@ -706,7 +706,7 @@
const char *word_iterator = argv[0];
char buf[20];
- while (find_next_token (&word_iterator, (unsigned int *) 0) != 0)
+ while (find_next_token (&word_iterator, NULL) != 0)
++i;
sprintf (buf, "%d", i);
@@ -1133,21 +1133,14 @@
/* Find the maximum number of words we'll have. */
t = argv[0];
- wordi = 1;
- while (*t != '\0')
+ wordi = 0;
+ while ((p = find_next_token (&t, NULL)) != 0)
{
- char c = *(t++);
-
- if (! isspace ((unsigned char)c))
- continue;
-
+ ++t;
++wordi;
-
- while (isspace ((unsigned char)*t))
- ++t;
}
- words = xmalloc (wordi * sizeof (char *));
+ words = xmalloc ((wordi == 0 ? 1 : wordi) * sizeof (char *));
/* Now assign pointers to each string in the array. */
t = argv[0];

View File

@ -0,0 +1,43 @@
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sys-devel/make/make-3.82-r1.ebuild,v 1.1 2011/06/07 13:18:10 chainsaw Exp $
EAPI="2"
inherit flag-o-matic eutils
DESCRIPTION="Standard tool to compile source trees"
HOMEPAGE="http://www.gnu.org/software/make/make.html"
SRC_URI="mirror://gnu//make/${P}.tar.bz2"
LICENSE="GPL-3"
SLOT="0"
KEYWORDS="alpha amd64 arm hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~sparc-fbsd ~x86-fbsd"
IUSE="nls static"
DEPEND="nls? ( sys-devel/gettext )"
RDEPEND="nls? ( virtual/libintl )"
src_prepare() {
epatch "${FILESDIR}"/${P}-archives-many-objs.patch #334889
epatch "${FILESDIR}"/${P}-MAKEFLAGS-reexec.patch #31975
epatch "${FILESDIR}"/${P}-memory-corruption.patch #355907
}
src_configure() {
use static && append-ldflags -static
econf \
--program-prefix=g \
$(use_enable nls)
}
src_install() {
emake DESTDIR="${D}" install || die "make install failed"
dodoc AUTHORS ChangeLog NEWS README*
if [[ ${USERLAND} == "GNU" ]] ; then
# we install everywhere as 'gmake' but on GNU systems,
# symlink 'make' to 'gmake'
dosym gmake /usr/bin/make
dosym gmake.1 /usr/share/man/man1/make.1
fi
}