svn commit: r314808 - in head: contrib/bmake contrib/bmake/PSD.doc contrib/bmake/mk contrib/bmake/unit-tests usr.bin/bmake
Bryan Drewery
bdrewery at FreeBSD.org
Fri Mar 10 20:24:39 UTC 2017
On 3/6/17 3:02 PM, Simon J. Gerraty wrote:
> Author: sjg
> Date: Mon Mar 6 23:02:33 2017
> New Revision: 314808
> URL: https://svnweb.freebsd.org/changeset/base/314808
>
> Log:
> Merge bmake-20170301
>
> Modified:
> head/contrib/bmake/ChangeLog
> head/contrib/bmake/Makefile
> head/contrib/bmake/PSD.doc/tutorial.ms
> head/contrib/bmake/bmake.1
> head/contrib/bmake/bmake.cat1
> head/contrib/bmake/dir.c
> head/contrib/bmake/main.c
> head/contrib/bmake/make.1
> head/contrib/bmake/meta.c
> head/contrib/bmake/mk/ChangeLog
> head/contrib/bmake/mk/dirdeps.mk
> head/contrib/bmake/mk/dpadd.mk
> head/contrib/bmake/mk/install-mk
> head/contrib/bmake/mk/meta.stage.mk
> head/contrib/bmake/mk/meta2deps.py
> head/contrib/bmake/mk/prog.mk
> head/contrib/bmake/mk/subdir.mk
> head/contrib/bmake/mk/sys.mk
> head/contrib/bmake/mk/sys.vars.mk
> head/contrib/bmake/os.sh
> head/contrib/bmake/parse.c
> head/contrib/bmake/unit-tests/varmisc.exp
> head/contrib/bmake/unit-tests/varmisc.mk
> head/contrib/bmake/var.c
> head/usr.bin/bmake/Makefile
> Directory Properties:
> head/contrib/bmake/ (props changed)
>
> Modified: head/contrib/bmake/ChangeLog
> ==============================================================================
> --- head/contrib/bmake/ChangeLog Mon Mar 6 22:46:49 2017 (r314807)
> +++ head/contrib/bmake/ChangeLog Mon Mar 6 23:02:33 2017 (r314808)
> @@ -1,3 +1,32 @@
> +2017-03-01 Simon J. Gerraty <sjg at bad.crufty.net>
> +
> + * Makefile (_MAKE_VERSION): 20170301
> + Merge with NetBSD make, pick up
> + o main.c: use -C arg as is rather than getcwd()
> + if they identify the same directory.
> +
This change is broken for relative paths specified to -C. I had just
convinced someone that -C was flawless last week and now it's actually
broken!
> ~/git/freebsd/lib/libthr # make -C ../libnetbsd obj
> /usr/obj../libnetbsd created for ../libnetbsd
> ~/git/freebsd/lib/libthr # rm -rf /usr/obj../libnetbsd
> ~/git/freebsd/lib/libthr # make -C ../libthr -V .OBJDIR
> make: "../libthr/../libthr/Makefile" line 14: Could not find src.opts.mk
> make: "../libthr/../libthr/Makefile" line 55: Malformed conditional (${MK_INSTALLLIB} != "no")
> make: "../libthr/../libthr/Makefile" line 61: Malformed conditional (${MK_PROFILE} != "no")
> make: "../libthr/../libthr/Makefile" line 65: Malformed conditional (${MK_TESTS} != "no")
> make: Fatal errors encountered -- cannot continue
> make: stopped in ../libthr
> ~/git/freebsd/lib/libthr # make -C ../libnetbsd -V .OBJDIR
> make: "/usr/share/mk/bsd.obj.mk" line 1: here
> ../libnetbsd/../libnetbsd
> ~/git/freebsd/lib/libthr # make -m .../share/mk -C ../libnetbsd -V .OBJDIR
> make: "/root/git/freebsd/share/mk/bsd.obj.mk" line 45: OBJDIR: ../libnetbsd/../libnetbsd
> make: "/root/git/freebsd/share/mk/bsd.obj.mk" line 46: CURDIR: ../libnetbsd
> ../libnetbsd/../libnetbsd
2 problems:
1. .OBJDIR is somehow duplicate ${.CURDIR}${.CURDIR}
2. The default MAKESYSPATH of .../share/mk doesn't work with -C .., it
ends up reaching out to /usr/share/mk. An explicit -m works though.
Reverting it:
> ~/git/freebsd/lib/libthr # make -C ../libnetbsd -V .OBJDIR
> make: "/root/git/freebsd/share/mk/bsd.obj.mk" line 45: OBJDIR: /root/git/freebsd/lib/libnetbsd
> make: "/root/git/freebsd/share/mk/bsd.obj.mk" line 46: CURDIR: /root/git/freebsd/lib/libnetbsd
> /root/git/freebsd/lib/libnetbsd
Can this piece please be reverted for now while relative paths get more
testing?
> diff --git contrib/bmake/main.c contrib/bmake/main.c
> index 087438927355..870eefd6e591 100644
> --- contrib/bmake/main.c
> +++ contrib/bmake/main.c
> @@ -389,6 +389,7 @@ MainParseArgs(int argc, char **argv)
> int arginc;
> char *argvalue;
> const char *getopt_def;
> + struct stat sa, sb;
> char *optscan;
> Boolean inOption, dashDash = FALSE;
> char found_path[MAXPATHLEN + 1]; /* for searching for sys.mk */
> @@ -457,6 +458,11 @@ rearg:
> (void)fprintf(stderr, "%s: %s.\n", progname, strerror(errno));
> exit(2);
> }
> + if (stat(argvalue, &sa) != -1 &&
> + stat(curdir, &sb) != -1 &&
> + sa.st_ino == sb.st_ino &&
> + sa.st_dev == sb.st_dev)
> + strncpy(curdir, argvalue, MAXPATHLEN);
> ignorePWD = TRUE;
> break;
> case 'D':
--
Regards,
Bryan Drewery
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 496 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freebsd.org/pipermail/svn-src-head/attachments/20170310/826515d6/attachment.sig>
More information about the svn-src-head
mailing list