Re: svn commit: r250699 - in head: share/mk usr.bin/make

2013-05-18 Thread Simon J. Gerraty

On Fri, 17 May 2013 23:34:08 +0200, Tijl Coosemans writes:
_PORTCONF!=3D/usr/local/libexec/portconf
=2Efor i in ${_PORTCONF:S/|/ /g}
${i:S/%/ /g}

Is it possible to re-write this to be less dependent on how .for is
parsed?
Eg.  assuming i is foo=[%]blah%goo

${i:C,=.*,,g} = ${i:C,.*=%*,,:S,%, ,g}

works the same for fmake and bmake.
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to svn-src-head-unsubscr...@freebsd.org


Re: svn commit: r250699 - in head: share/mk usr.bin/make

2013-05-17 Thread Tijl Coosemans
On 2013-05-16 17:28, Simon J. Gerraty wrote:
 Author: sjg
 Date: Thu May 16 15:28:38 2013
 New Revision: 250699
 URL: http://svnweb.freebsd.org/changeset/base/250699
 
 Log:
   Build bmake by default.

For me /usr/src is a symlink to /some/path and now if I build from
/usr/src some parts end up in /usr/obj/usr/src and other parts
in /usr/obj/some/path. It used to be the latter.

/usr/ports is a symlink too:

% cd /usr/ports/www/firefox
% pwd
/usr/home/tijl/freebsd/ports/head/www/firefox
% make -V .CURDIR
/usr/ports/www/firefox
% cd /usr/home/tijl/freebsd/ports/head/www/firefox
% pwd
/usr/home/tijl/freebsd/ports/head/www/firefox
% make -V .CURDIR
/home/tijl/freebsd/ports/head/www/firefox

So it seems to change /usr/home back into /home too.

This breaks ports-mgmt/portconf because it adds the following to
/etc/make.conf but .CURDIR never matches the real path.

.if !empty(.CURDIR:M/usr/home/tijl/freebsd/ports*)  
exists(/usr/local/libexec/portconf)
...
.endif



signature.asc
Description: OpenPGP digital signature


Re: svn commit: r250699 - in head: share/mk usr.bin/make

2013-05-17 Thread Simon J. Gerraty
For me /usr/src is a symlink to /some/path and now if I build from
/usr/src some parts end up in /usr/obj/usr/src and other parts
in /usr/obj/some/path. It used to be the latter.

This could be the result of some bits being built by the old freebsd
make. 

Since the early stage of buildworld doesn't use the up to date
bsd.own.mk I suspect that the install of bmake as
$MAKEOBJDIRPREFIX$.CURDIR/make.$MACHINE/make 
may not be working.

Ok, I just checked - it isn't, it gets installed there as bmake,
which would explain the havior you see.

Should be fixed now.
Also bmake will now ignore PWD always - same as fmake.
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to svn-src-head-unsubscr...@freebsd.org


Re: svn commit: r250699 - in head: share/mk usr.bin/make

2013-05-17 Thread Tijl Coosemans
On 2013-05-17 21:39, Simon J. Gerraty wrote:
 For me /usr/src is a symlink to /some/path and now if I build from
 /usr/src some parts end up in /usr/obj/usr/src and other parts
 in /usr/obj/some/path. It used to be the latter.
 
 This could be the result of some bits being built by the old freebsd
 make. 
 
 Since the early stage of buildworld doesn't use the up to date
 bsd.own.mk I suspect that the install of bmake as
 $MAKEOBJDIRPREFIX$.CURDIR/make.$MACHINE/make 
 may not be working.
 
 Ok, I just checked - it isn't, it gets installed there as bmake,
 which would explain the havior you see.
 
 Should be fixed now.
 Also bmake will now ignore PWD always - same as fmake.

Thanks, it seems to work now.

Bmake doesn't seem to like what portconf puts in make.conf though:

# Begin portconf settings
# Do not touch these lines
.if !empty(.CURDIR:M/usr/home/tijl/freebsd/ports*)  
exists(/usr/local/libexec/portconf)
_PORTCONF!=/usr/local/libexec/portconf
.for i in ${_PORTCONF:S/|/ /g}
${i:S/%/ /g}
.endfor
.endif
# End portconf settings

When the output of /usr/local/libexec/portconf is empty make
warns about it:

make: /etc/make.conf line 115: warning: Couldn't read shell's output for
/usr/local/libexec/portconf

When it isn't empty, make fails on ${i:S/%/ /g} (evaluates to
VAR= or VAR=value):

make: /etc/make.conf line 117: Need an operator
make: Fatal errors encountered -- cannot continue




signature.asc
Description: OpenPGP digital signature


Re: svn commit: r250699 - in head: share/mk usr.bin/make

2013-05-17 Thread Simon J. Gerraty

On Fri, 17 May 2013 23:34:08 +0200, Tijl Coosemans writes:
When the output of /usr/local/libexec/portconf is empty make
warns about it:

Yes.  This is to avoid accidents.
If you *know* that no output is a valid result, you can add '; echo' to
the end of the command to suppress the warning.


make: /etc/make.conf line 115: warning: Couldn't read shell's output fo=
r
/usr/local/libexec/portconf

When it isn't empty, make fails on ${i:S/%/ /g} (evaluates to

Interesting will ponder that.

___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to svn-src-head-unsubscr...@freebsd.org


Re: svn commit: r250699 - in head: share/mk usr.bin/make

2013-05-17 Thread Jilles Tjoelker
On Fri, May 17, 2013 at 03:28:10PM -0700, Simon J. Gerraty wrote:
 On Fri, 17 May 2013 23:34:08 +0200, Tijl Coosemans writes:
 When the output of /usr/local/libexec/portconf is empty make
 warns about it:

 Yes.  This is to avoid accidents.
 If you *know* that no output is a valid result, you can add '; echo' to
 the end of the command to suppress the warning.

 make: /etc/make.conf line 115: warning: Couldn't read shell's output fo=
 r
 /usr/local/libexec/portconf

Note that adding '; echo' will result in an additional fork() or vfork()
call. If -c /usr/local/libexec/portconf is given, FreeBSD sh execs
portconf. If there is an echo command after it, sh will have to (v)fork.

In NetBSD, this is not a concern because NetBSD sh (v)forks in either
case.

Placing the echo before the external command will let FreeBSD sh avoid
the fork as well, but some common other shells (bash, recent mksh) will
not fork for -c external but will fork for -c builtin;external.

-- 
Jilles Tjoelker
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to svn-src-head-unsubscr...@freebsd.org