From owner-svn-src-vendor@freebsd.org Sat Apr 15 00:51:21 2017 Return-Path: Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 791E1D3DF36; Sat, 15 Apr 2017 00:51:21 +0000 (UTC) (envelope-from sjg@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 430EA8A; Sat, 15 Apr 2017 00:51:21 +0000 (UTC) (envelope-from sjg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v3F0pKX0033592; Sat, 15 Apr 2017 00:51:20 GMT (envelope-from sjg@FreeBSD.org) Received: (from sjg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3F0pJJ1033578; Sat, 15 Apr 2017 00:51:19 GMT (envelope-from sjg@FreeBSD.org) Message-Id: <201704150051.v3F0pJJ1033578@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: sjg set sender to sjg@FreeBSD.org using -f From: "Simon J. Gerraty" Date: Sat, 15 Apr 2017 00:51:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r316947 - in vendor/NetBSD/bmake/dist: . mk unit-tests X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the vendor work area tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Apr 2017 00:51:21 -0000 Author: sjg Date: Sat Apr 15 00:51:18 2017 New Revision: 316947 URL: https://svnweb.freebsd.org/changeset/base/316947 Log: Import bmake-20170413 Modified: vendor/NetBSD/bmake/dist/ChangeLog vendor/NetBSD/bmake/dist/Makefile vendor/NetBSD/bmake/dist/job.c vendor/NetBSD/bmake/dist/main.c vendor/NetBSD/bmake/dist/mk/ChangeLog vendor/NetBSD/bmake/dist/mk/auto.obj.mk vendor/NetBSD/bmake/dist/mk/dirdeps.mk vendor/NetBSD/bmake/dist/mk/install-mk vendor/NetBSD/bmake/dist/mk/meta.stage.mk vendor/NetBSD/bmake/dist/mk/meta2deps.py vendor/NetBSD/bmake/dist/mk/mkopt.sh vendor/NetBSD/bmake/dist/str.c vendor/NetBSD/bmake/dist/unit-tests/modmatch.exp vendor/NetBSD/bmake/dist/unit-tests/modmatch.mk Modified: vendor/NetBSD/bmake/dist/ChangeLog ============================================================================== --- vendor/NetBSD/bmake/dist/ChangeLog Sat Apr 15 00:39:45 2017 (r316946) +++ vendor/NetBSD/bmake/dist/ChangeLog Sat Apr 15 00:51:18 2017 (r316947) @@ -1,8 +1,35 @@ +2017-04-13 Simon J. Gerraty + + * Makefile (_MAKE_VERSION): 20170413 + Merge with NetBSD make, pick up + o main.c: when setting .OBJDIR ignore '$' in paths. + + * job.c: use MALLOC_OPTIONS to set malloc_options. + +2017-04-11 Simon J. Gerraty + + * Makefile (_MAKE_VERSION): 20170411 + Merge with NetBSD make, pick up + o str.c: Str_Match: allow [^a-z] to behave as expected. + +2017-03-26 Simon J. Gerraty + + * Makefile (_MAKE_VERSION): 20170326 + Merge with NetBSD make, pick up + o main.c: purge relative paths from realpath cache when .OBJDIR + is changed. + +2017-03-11 Simon J. Gerraty + + * Makefile (_MAKE_VERSION): 20170311 + Merge with NetBSD make, pick up + o main.c: only use -C arg "as is" if it starts with '/'. + 2017-03-01 Simon J. Gerraty * Makefile (_MAKE_VERSION): 20170301 Merge with NetBSD make, pick up - o main.c: use -C arg as is rather than getcwd() + o main.c: use -C arg "as is" rather than getcwd() if they identify the same directory. o parse.c: ensure loadfile buffer is \n terminated in non-mmap case Modified: vendor/NetBSD/bmake/dist/Makefile ============================================================================== --- vendor/NetBSD/bmake/dist/Makefile Sat Apr 15 00:39:45 2017 (r316946) +++ vendor/NetBSD/bmake/dist/Makefile Sat Apr 15 00:51:18 2017 (r316947) @@ -1,7 +1,7 @@ -# $Id: Makefile,v 1.81 2017/03/01 17:01:23 sjg Exp $ +# $Id: Makefile,v 1.85 2017/04/13 16:29:40 sjg Exp $ # Base version on src date -_MAKE_VERSION= 20170301 +_MAKE_VERSION= 20170413 PROG= bmake Modified: vendor/NetBSD/bmake/dist/job.c ============================================================================== --- vendor/NetBSD/bmake/dist/job.c Sat Apr 15 00:39:45 2017 (r316946) +++ vendor/NetBSD/bmake/dist/job.c Sat Apr 15 00:51:18 2017 (r316947) @@ -373,7 +373,10 @@ static void JobSigLock(sigset_t *); static void JobSigUnlock(sigset_t *); static void JobSigReset(void); -const char *malloc_options="A"; +#if !defined(MALLOC_OPTIONS) +# define MALLOC_OPTIONS "A" +#endif +const char *malloc_options= MALLOC_OPTIONS; static void job_table_dump(const char *where) Modified: vendor/NetBSD/bmake/dist/main.c ============================================================================== --- vendor/NetBSD/bmake/dist/main.c Sat Apr 15 00:39:45 2017 (r316946) +++ vendor/NetBSD/bmake/dist/main.c Sat Apr 15 00:51:18 2017 (r316947) @@ -1,4 +1,4 @@ -/* $NetBSD: main.c,v 1.257 2017/02/08 17:47:36 christos Exp $ */ +/* $NetBSD: main.c,v 1.260 2017/04/13 13:55:23 christos Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -69,7 +69,7 @@ */ #ifndef MAKE_NATIVE -static char rcsid[] = "$NetBSD: main.c,v 1.257 2017/02/08 17:47:36 christos Exp $"; +static char rcsid[] = "$NetBSD: main.c,v 1.260 2017/04/13 13:55:23 christos Exp $"; #else #include #ifndef lint @@ -81,7 +81,7 @@ __COPYRIGHT("@(#) Copyright (c) 1988, 19 #if 0 static char sccsid[] = "@(#)main.c 8.3 (Berkeley) 3/19/94"; #else -__RCSID("$NetBSD: main.c,v 1.257 2017/02/08 17:47:36 christos Exp $"); +__RCSID("$NetBSD: main.c,v 1.260 2017/04/13 13:55:23 christos Exp $"); #endif #endif /* not lint */ #endif @@ -458,7 +458,8 @@ rearg: (void)fprintf(stderr, "%s: %s.\n", progname, strerror(errno)); exit(2); } - if (stat(argvalue, &sa) != -1 && + if (argvalue[0] == '/' && + stat(argvalue, &sa) != -1 && stat(curdir, &sb) != -1 && sa.st_ino == sb.st_ino && sa.st_dev == sb.st_dev) @@ -721,22 +722,15 @@ Boolean Main_SetObjdir(const char *fmt, ...) { struct stat sb; - char *p, *path; - char buf[MAXPATHLEN + 1], pbuf[MAXPATHLEN + 1]; + char *path; + char buf[MAXPATHLEN + 1]; Boolean rc = FALSE; va_list ap; va_start(ap, fmt); - vsnprintf(path = pbuf, MAXPATHLEN, fmt, ap); + vsnprintf(path = buf, MAXPATHLEN, fmt, ap); va_end(ap); - /* expand variable substitutions */ - if (strchr(path, '$') != 0) { - snprintf(buf, MAXPATHLEN, "%s", path); - path = p = Var_Subst(NULL, buf, VAR_GLOBAL, VARF_WANTRES); - } else - p = NULL; - if (path[0] != '/') { snprintf(buf, MAXPATHLEN, "%s/%s", curdir, path); path = buf; @@ -752,25 +746,35 @@ Main_SetObjdir(const char *fmt, ...) Var_Set(".OBJDIR", objdir, VAR_GLOBAL, 0); setenv("PWD", objdir, 1); Dir_InitDot(); + cached_realpath(".OBJDIR", NULL); /* purge */ rc = TRUE; if (enterFlag && strcmp(objdir, curdir) != 0) enterFlagObj = TRUE; } } - free(p); return rc; } static Boolean Main_SetVarObjdir(const char *var, const char *suffix) { - char *p1, *path; - if ((path = Var_Value(var, VAR_CMD, &p1)) == NULL) + char *p, *path, *xpath; + + if ((path = Var_Value(var, VAR_CMD, &p)) == NULL) return FALSE; - (void)Main_SetObjdir("%s%s", path, suffix); - free(p1); + /* expand variable substitutions */ + if (strchr(path, '$') != 0) + xpath = Var_Subst(NULL, path, VAR_GLOBAL, VARF_WANTRES); + else + xpath = path; + + (void)Main_SetObjdir("%s%s", xpath, suffix); + + if (xpath != path) + free(xpath); + free(p); return TRUE; } @@ -1922,7 +1926,23 @@ cached_realpath(const char *pathname, ch cache->flags = INTERNAL; #endif } - + if (resolved == NULL && strcmp(pathname, ".OBJDIR") == 0) { + /* purge any relative paths */ + Hash_Entry *he, *nhe; + Hash_Search hs; + + he = Hash_EnumFirst(&cache->context, &hs); + while (he) { + nhe = Hash_EnumNext(&hs); + if (he->name[0] != '/') { + if (DEBUG(DIR)) + fprintf(stderr, "cached_realpath: purging %s\n", he->name); + Hash_DeleteEntry(&cache->context, he); + } + he = nhe; + } + return NULL; + } if ((rp = Var_Value(pathname, cache, &cp)) != NULL) { /* a hit */ strlcpy(resolved, rp, MAXPATHLEN); Modified: vendor/NetBSD/bmake/dist/mk/ChangeLog ============================================================================== --- vendor/NetBSD/bmake/dist/mk/ChangeLog Sat Apr 15 00:39:45 2017 (r316946) +++ vendor/NetBSD/bmake/dist/mk/ChangeLog Sat Apr 15 00:51:18 2017 (r316947) @@ -1,3 +1,24 @@ +2017-04-01 Simon J. Gerraty + + * install-mk (MK_VERSION): 20170401 + + * meta2deps.py: add is_src so we can check if obj dependency + is also a src dependency. + +2017-03-26 Simon J. Gerraty + + * install-mk (MK_VERSION): 20170326 + + * meta.stage.mk: do nothing if NO_STAGING is defined. + +2017-03-24 Simon J. Gerraty + + * auto.obj.mk: handle the case of __objdir=obj or obj.${MACHINE} etc. + +2017-03-18 Simon J. Gerraty + + * mkopt.sh: treat WITH_*=NO like no; ie. WITHOUT_* + 2017-03-01 Simon J. Gerraty * install-mk (MK_VERSION): 20170301 Modified: vendor/NetBSD/bmake/dist/mk/auto.obj.mk ============================================================================== --- vendor/NetBSD/bmake/dist/mk/auto.obj.mk Sat Apr 15 00:39:45 2017 (r316946) +++ vendor/NetBSD/bmake/dist/mk/auto.obj.mk Sat Apr 15 00:51:18 2017 (r316947) @@ -1,4 +1,4 @@ -# $Id: auto.obj.mk,v 1.12 2015/12/16 01:57:06 sjg Exp $ +# $Id: auto.obj.mk,v 1.13 2017/03/24 20:53:22 sjg Exp $ # # @(#) Copyright (c) 2004, Simon J. Gerraty # @@ -57,7 +57,10 @@ __objdir_made != echo ${__objdir}/; umas # This causes make to use the specified directory as .OBJDIR .OBJDIR: ${__objdir} .if ${.OBJDIR:tA} != ${__objdir:tA} && ${__objdir_made:Uno:M${__objdir}/*} != "" +# watch out for __objdir being relative path +.if !(${__objdir:M/*} == "" && ${.OBJDIR:tA} == ${${.CURDIR}/${__objdir}:L:tA}) .error could not use ${__objdir}: .OBJDIR=${.OBJDIR} .endif .endif .endif +.endif Modified: vendor/NetBSD/bmake/dist/mk/dirdeps.mk ============================================================================== --- vendor/NetBSD/bmake/dist/mk/dirdeps.mk Sat Apr 15 00:39:45 2017 (r316946) +++ vendor/NetBSD/bmake/dist/mk/dirdeps.mk Sat Apr 15 00:51:18 2017 (r316947) @@ -1,4 +1,4 @@ -# $Id: dirdeps.mk,v 1.86 2017/03/01 20:26:51 sjg Exp $ +# $Id: dirdeps.mk,v 1.87 2017/03/07 01:49:03 sjg Exp $ # Copyright (c) 2010-2013, Juniper Networks, Inc. # All rights reserved. @@ -57,7 +57,7 @@ # distinguish them from others. # # Before each Makefile.depend file is read, we set -# DEP_RELDIR to be the the RELDIR (path relative to SRCTOP) for +# DEP_RELDIR to be the RELDIR (path relative to SRCTOP) for # its directory, and DEP_MACHINE etc according to the . # represented by the suffix of the corresponding target. # Modified: vendor/NetBSD/bmake/dist/mk/install-mk ============================================================================== --- vendor/NetBSD/bmake/dist/mk/install-mk Sat Apr 15 00:39:45 2017 (r316946) +++ vendor/NetBSD/bmake/dist/mk/install-mk Sat Apr 15 00:51:18 2017 (r316947) @@ -55,7 +55,7 @@ # Simon J. Gerraty # RCSid: -# $Id: install-mk,v 1.138 2017/03/01 20:26:51 sjg Exp $ +# $Id: install-mk,v 1.140 2017/04/03 21:04:09 sjg Exp $ # # @(#) Copyright (c) 1994 Simon J. Gerraty # @@ -70,7 +70,7 @@ # sjg@crufty.net # -MK_VERSION=20170301 +MK_VERSION=20170401 OWNER= GROUP= MODE=444 Modified: vendor/NetBSD/bmake/dist/mk/meta.stage.mk ============================================================================== --- vendor/NetBSD/bmake/dist/mk/meta.stage.mk Sat Apr 15 00:39:45 2017 (r316946) +++ vendor/NetBSD/bmake/dist/mk/meta.stage.mk Sat Apr 15 00:51:18 2017 (r316947) @@ -1,4 +1,4 @@ -# $Id: meta.stage.mk,v 1.48 2017/03/01 22:48:07 sjg Exp $ +# $Id: meta.stage.mk,v 1.49 2017/04/01 02:10:34 sjg Exp $ # # @(#) Copyright (c) 2011-2017, Simon J. Gerraty # @@ -13,6 +13,8 @@ # sjg@crufty.net # +.ifndef NO_STAGING + .if !target(__${.PARSEFILE}__) # the guard target is defined later @@ -324,3 +326,4 @@ stale_staged: staging .NOMETA .endif .endif .endif +.endif Modified: vendor/NetBSD/bmake/dist/mk/meta2deps.py ============================================================================== --- vendor/NetBSD/bmake/dist/mk/meta2deps.py Sat Apr 15 00:39:45 2017 (r316946) +++ vendor/NetBSD/bmake/dist/mk/meta2deps.py Sat Apr 15 00:51:18 2017 (r316947) @@ -37,7 +37,7 @@ We only pay attention to a subset of the """ RCSid: - $Id: meta2deps.py,v 1.24 2017/02/08 22:17:10 sjg Exp $ + $Id: meta2deps.py,v 1.25 2017/04/03 21:04:09 sjg Exp $ Copyright (c) 2011-2013, Juniper Networks, Inc. All rights reserved. @@ -491,6 +491,21 @@ class MetaFile: if not file: f.close() + def is_src(self, base, dir, rdir): + """is base in srctop""" + for dir in [dir,rdir]: + if not dir: + continue + path = '/'.join([dir,base]) + srctop = self.find_top(path, self.srctops) + if srctop: + if self.dpdeps: + self.add(self.file_deps, path.replace(srctop,''), 'file') + self.add(self.src_deps, dir.replace(srctop,''), 'src') + self.seenit(dir) + return True + return False + def parse_path(self, path, cwd, op=None, w=[]): """look at a path for the op specified""" @@ -519,10 +534,9 @@ class MetaFile: # to the src dir, we may need to add dependencies for each rdir = dir dir = abspath(dir, cwd, self.last_dir, self.debug, self.debug_out) - if rdir == dir or rdir.find('./') > 0: - rdir = None - if os.path.islink(dir): rdir = os.path.realpath(dir) + if rdir == dir: + rdir = None # now put path back together path = '/'.join([dir,base]) if self.debug > 1: @@ -543,17 +557,9 @@ class MetaFile: # finally, we get down to it if dir == self.cwd or dir == self.curdir: return - srctop = self.find_top(path, self.srctops) - if srctop: - if self.dpdeps: - self.add(self.file_deps, path.replace(srctop,''), 'file') - self.add(self.src_deps, dir.replace(srctop,''), 'src') + if self.is_src(base, dir, rdir): self.seenit(w[2]) - self.seenit(dir) - if rdir and not rdir.startswith(srctop): - dir = rdir # for below - rdir = None - else: + if not rdir: return objroot = None Modified: vendor/NetBSD/bmake/dist/mk/mkopt.sh ============================================================================== --- vendor/NetBSD/bmake/dist/mk/mkopt.sh Sat Apr 15 00:39:45 2017 (r316946) +++ vendor/NetBSD/bmake/dist/mk/mkopt.sh Sat Apr 15 00:51:18 2017 (r316947) @@ -1,5 +1,5 @@ : -# $Id: mkopt.sh,v 1.10 2015/06/07 17:29:08 sjg Exp $ +# $Id: mkopt.sh,v 1.11 2017/03/18 21:36:42 sjg Exp $ # # @(#) Copyright (c) 2014, Simon J. Gerraty # @@ -40,7 +40,7 @@ _mk_opt() { eval "_mov=\$$_mo _wov=\$$_wo _wiv=\$$_wi" case "$_wiv" in - no) _wov=no;; + [Nn][Oo]) _wov=no;; esac _v=${_mov:-${_wov:+no}} _v=${_v:-${_wiv:+yes}} Modified: vendor/NetBSD/bmake/dist/str.c ============================================================================== --- vendor/NetBSD/bmake/dist/str.c Sat Apr 15 00:39:45 2017 (r316946) +++ vendor/NetBSD/bmake/dist/str.c Sat Apr 15 00:51:18 2017 (r316947) @@ -1,4 +1,4 @@ -/* $NetBSD: str.c,v 1.36 2016/04/06 09:57:00 gson Exp $ */ +/* $NetBSD: str.c,v 1.37 2017/04/11 17:30:13 sjg Exp $ */ /*- * Copyright (c) 1988, 1989, 1990, 1993 @@ -69,14 +69,14 @@ */ #ifndef MAKE_NATIVE -static char rcsid[] = "$NetBSD: str.c,v 1.36 2016/04/06 09:57:00 gson Exp $"; +static char rcsid[] = "$NetBSD: str.c,v 1.37 2017/04/11 17:30:13 sjg Exp $"; #else #include #ifndef lint #if 0 static char sccsid[] = "@(#)str.c 5.8 (Berkeley) 6/1/90"; #else -__RCSID("$NetBSD: str.c,v 1.36 2016/04/06 09:57:00 gson Exp $"); +__RCSID("$NetBSD: str.c,v 1.37 2017/04/11 17:30:13 sjg Exp $"); #endif #endif /* not lint */ #endif @@ -373,16 +373,23 @@ Str_Match(const char *string, const char * by a range (two characters separated by "-"). */ if (*pattern == '[') { + int nomatch; + ++pattern; + if (*pattern == '^') { + ++pattern; + nomatch = 1; + } else + nomatch = 0; for (;;) { if ((*pattern == ']') || (*pattern == 0)) - return(0); + return(nomatch); if (*pattern == *string) break; if (pattern[1] == '-') { c2 = pattern[2]; if (c2 == 0) - return(0); + return(nomatch); if ((*pattern <= *string) && (c2 >= *string)) break; @@ -393,6 +400,8 @@ Str_Match(const char *string, const char } ++pattern; } + if (nomatch) + return 0; while ((*pattern != ']') && (*pattern != 0)) ++pattern; goto thisCharOK; Modified: vendor/NetBSD/bmake/dist/unit-tests/modmatch.exp ============================================================================== --- vendor/NetBSD/bmake/dist/unit-tests/modmatch.exp Sat Apr 15 00:39:45 2017 (r316946) +++ vendor/NetBSD/bmake/dist/unit-tests/modmatch.exp Sat Apr 15 00:51:18 2017 (r316947) @@ -14,4 +14,6 @@ LIB=e X_LIBS:M${LIB${LIB:tu}} is "/tmp/l LIB=e X_LIBS:M*/lib${LIB}.a is "/tmp/libe.a" LIB=e X_LIBS:M*/lib${LIB}.a:tu is "/TMP/LIBE.A" Mscanner=OK +Upper=One Two Three Four +Lower=five six seven exit status 0 Modified: vendor/NetBSD/bmake/dist/unit-tests/modmatch.mk ============================================================================== --- vendor/NetBSD/bmake/dist/unit-tests/modmatch.mk Sat Apr 15 00:39:45 2017 (r316946) +++ vendor/NetBSD/bmake/dist/unit-tests/modmatch.mk Sat Apr 15 00:51:18 2017 (r316947) @@ -15,7 +15,9 @@ res = no res = OK .endif -all: +all: show-libs check-cclass + +show-libs: @for x in $X; do ${.MAKE} -f ${MAKEFILE} show LIB=$$x; done @echo "Mscanner=${res}" @@ -23,3 +25,9 @@ show: @echo 'LIB=${LIB} X_LIBS:M$${LIB$${LIB:tu}} is "${X_LIBS:M${LIB${LIB:tu}}}"' @echo 'LIB=${LIB} X_LIBS:M*/lib$${LIB}.a is "${X_LIBS:M*/lib${LIB}.a}"' @echo 'LIB=${LIB} X_LIBS:M*/lib$${LIB}.a:tu is "${X_LIBS:M*/lib${LIB}.a:tu}"' + +LIST= One Two Three Four five six seven + +check-cclass: + @echo Upper=${LIST:M[A-Z]*} + @echo Lower=${LIST:M[^A-Z]*}