Re: PORTS_MODULES fix
On 06/09/2012 16:51, Doug Barton wrote: > Ok, never mind the last one ... this patch I've actually tested. :) Committed to HEAD and MFC'ed. Thanks everyone for the feedback and help. Doug -- This .signature sanitized for your protection ___ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"
Re: PORTS_MODULES fix
On Jun 9, 2012, at 4:51 PM, Doug Barton wrote: > Ok, never mind the last one ... this patch I've actually tested. :) This one looks good :) (and fixes the item I briefly mentioned in IRC); I'll test it one out. Thanks! -Garrett___ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"
Re: PORTS_MODULES fix
Ok, never mind the last one ... this patch I've actually tested. :) Doug -- This .signature sanitized for your protection Index: kern.post.mk === --- kern.post.mk(revision 236818) +++ kern.post.mk(working copy) @@ -36,9 +36,30 @@ .endif .endfor -# Handle out of tree ports +# Handle ports (as defined by the user) that build kernel modules .if !defined(NO_MODULES) && defined(PORTS_MODULES) -PORTSMODULESENV=SYSDIR=${SYSDIR} +# +# The ports tree needs some environment variables defined to match the new kernel +# +# Ports search for some dependencies in PATH, so add the location of the installed files +LOCALBASE?=/usr/local +# SRC_BASE is how the ports tree refers to the location of the base source files +.if !defined(SRC_BASE) +SRC_BASE!= realpath "${SYSDIR:H}/" +.endif +# OSVERSION is used by some ports to determine build options +.if !defined(OSRELDATE) +# Definition copied from src/Makefile.inc1 +OSRELDATE!=awk '/^\#define[[:space:]]*__FreeBSD_version/ { print $$3 }' \ + ${MAKEOBJDIRPREFIX}${SRC_BASE}/include/osreldate.h +.endif +# Keep the related ports builds in the obj directory so that they are only rebuilt once per kernel build +WRKDIRPREFIX?= ${MAKEOBJDIRPREFIX}${SRC_BASE}/sys/${KERNCONF} +PORTSMODULESENV=\ + PATH=${PATH}:${LOCALBASE}/bin:${LOCALBASE}/sbin \ + SRC_BASE=${SRC_BASE} \ + OSVERSION=${OSRELDATE} \ + WRKDIRPREFIX=${WRKDIRPREFIX} .for __target in all install reinstall clean ${__target}: ports-${__target} ports-${__target}: ___ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"
Re: PORTS_MODULES fix
Ok, after reading your PR and discussion on IRC I have the following which incorporates all the suggestions so far. I haven't actually tested this yet, but if people agree that this is the right direction to go I will before I commit it of course. Doug -- It's always a long day; 86400 doesn't fit into a short. Breadth of IT experience, and depth of knowledge in the DNS. Yours for the right price. :) http://SupersetSolutions.com/ Index: kern.post.mk === --- kern.post.mk(revision 236818) +++ kern.post.mk(working copy) @@ -36,9 +36,30 @@ .endif .endfor -# Handle out of tree ports +# Handle ports (as defined by the user) that build kernel modules .if !defined(NO_MODULES) && defined(PORTS_MODULES) -PORTSMODULESENV=SYSDIR=${SYSDIR} +# +# The ports tree needs some environment variables defined to match the new kernel +# +# Ports search for some dependencies in PATH, so add the location of the installed files +LOCALBASE?=/usr/local +# SRC_BASE is how the ports tree refers to the location of the base source files +.if !defined(SRC_BASE) +SRC_BASE!= realpath "${SYSDIR:H}/" +.endif +# OSVERSION is used by some ports to determine build options +.if !defined(OSRELDATE) +# Definition copied from src/Makefile.inc1 +OSRELDATE!=awk '/^\#define[[:space:]]*__FreeBSD_version/ { print $$3 }' \ + ${MAKEOBJDIRPREFIX}${SRC_BASE}/include/osreldate.h +.endif +# Keep the related ports builds in the obj directory so that they are only rebuilt once per kernel build +WRKDIRPREFIX?= ${MAKEOBJDIRPREFIX}${SRC_BASE}/sys/${KERNCONF}/${__i} +PORTSMODULESENV=\ + PATH= ${PATH}:${LOCALBASE}/bin:${LOCALBASE}/sbin \ + SRC_BASE= ${SRC_BASE} \ + OSVERSION= ${OSRELDATE} \ + WRKDIRPREFIX= ${WRKDIRPREFIX} .for __target in all install reinstall clean ${__target}: ports-${__target} ports-${__target}: ___ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"
Re: PORTS_MODULES fix
On Sat, Jun 9, 2012 at 11:06 AM, Doug Barton wrote: > -BEGIN PGP SIGNED MESSAGE- > Hash: RIPEMD160 > > On 06/09/2012 10:40, Matthew Seaman wrote: >> On 09/06/2012 18:26, Chris Rees wrote: >>> On 9 June 2012 18:15, Doug Barton wrote: I have recently tried the PORTS_MODULES knob, and found a problem. The ports tree searches for some dependencies by finding a binary in PATH, and that fails since by default /usr/local/ isn't there. The attached patch fixes that problem. It would be more robust to use PREFIX there instead of /usr/local explicitly, but I'm not sure how to unravel the mk maze to get that value. If anyone has a suggestion for that, I'd be happy to include it. >>> >>> As you mention, PREFIX is only defined in ports/Mk, and it'd >>> definitely be undesirable to be including any of those files :) >>> >>> The most robust (but unpleasant) solution would be one of the >>> following: >>> >>> PREFIX?=/usr/local PORTSMODULESENV=SYSDIR=${SYSDIR} >>> PATH=${PATH}:${PREFIX}/bin:${PREFIX}/sbin >>> >>> or the equivalent (and perhaps cleaner, not leaving PREFIX >>> defined) >>> >>> .if !defined(PREFIX) PORTSMODULESENV=SYSDIR=${SYSDIR} >>> PATH=${PATH}:/usr/local/bin:/usr/local/sbin .else >>> PORTSMODULESENV=SYSDIR=${SYSDIR} >>> PATH=${PATH}:${PREFIX}/bin:${PREFIX}/sbin .endif >>> >>> Both of these will respect make.conf's setting of PREFIX. >>> >> >> Shouldn't you be looking for LOCALBASE rather than PREFIX in this >> context? > > Both good points. New and improved attached. Looks like my patch, only with LOCALBASE being tunable and with with ${LOCALBASE}/sbin (in short I found a few different bugs from you a few months ago): http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/161452 . Thanks! -Garrett ___ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"
Re: PORTS_MODULES fix
-BEGIN PGP SIGNED MESSAGE- Hash: RIPEMD160 On 06/09/2012 10:40, Matthew Seaman wrote: > On 09/06/2012 18:26, Chris Rees wrote: >> On 9 June 2012 18:15, Doug Barton wrote: >>> I have recently tried the PORTS_MODULES knob, and found a >>> problem. The ports tree searches for some dependencies by >>> finding a binary in PATH, and that fails since by default >>> /usr/local/ isn't there. The attached patch fixes that >>> problem. >>> >>> It would be more robust to use PREFIX there instead of >>> /usr/local explicitly, but I'm not sure how to unravel the mk >>> maze to get that value. If anyone has a suggestion for that, >>> I'd be happy to include it. >> >> As you mention, PREFIX is only defined in ports/Mk, and it'd >> definitely be undesirable to be including any of those files :) >> >> The most robust (but unpleasant) solution would be one of the >> following: >> >> PREFIX?=/usr/local PORTSMODULESENV=SYSDIR=${SYSDIR} >> PATH=${PATH}:${PREFIX}/bin:${PREFIX}/sbin >> >> or the equivalent (and perhaps cleaner, not leaving PREFIX >> defined) >> >> .if !defined(PREFIX) PORTSMODULESENV=SYSDIR=${SYSDIR} >> PATH=${PATH}:/usr/local/bin:/usr/local/sbin .else >> PORTSMODULESENV=SYSDIR=${SYSDIR} >> PATH=${PATH}:${PREFIX}/bin:${PREFIX}/sbin .endif >> >> Both of these will respect make.conf's setting of PREFIX. >> > > Shouldn't you be looking for LOCALBASE rather than PREFIX in this > context? Both good points. New and improved attached. Doug - -- This .signature sanitized for your protection -BEGIN PGP SIGNATURE- Version: GnuPG v2.0.19 (FreeBSD) iEYEAREDAAYFAk/TkJkACgkQyIakK9Wy8Pv36QCeMyL31kOIIwYX/6rCoKFqhufW unsAnjoUG31Cr5TB0GZ1YPv4+zGuz+XY =mM5z -END PGP SIGNATURE- Index: kern.post.mk === --- kern.post.mk(revision 236818) +++ kern.post.mk(working copy) @@ -38,7 +38,9 @@ # Handle out of tree ports .if !defined(NO_MODULES) && defined(PORTS_MODULES) -PORTSMODULESENV=SYSDIR=${SYSDIR} +# The ports tree looks for dependencies in PATH, so we need to accommodate +LOCALBASE?=/usr/local +PORTSMODULESENV=SYSDIR=${SYSDIR} PATH=${PATH}:${LOCALBASE}/bin:${LOCALBASE}/sbin .for __target in all install reinstall clean ${__target}: ports-${__target} ports-${__target}: ___ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"
Re: PORTS_MODULES fix
On 09/06/2012 18:26, Chris Rees wrote: > On 9 June 2012 18:15, Doug Barton wrote: >> I have recently tried the PORTS_MODULES knob, and found a problem. The >> ports tree searches for some dependencies by finding a binary in PATH, >> and that fails since by default /usr/local/ isn't there. The attached >> patch fixes that problem. >> >> It would be more robust to use PREFIX there instead of /usr/local >> explicitly, but I'm not sure how to unravel the mk maze to get that >> value. If anyone has a suggestion for that, I'd be happy to include it. > > As you mention, PREFIX is only defined in ports/Mk, and it'd > definitely be undesirable to be including any of those files :) > > The most robust (but unpleasant) solution would be one of the following: > > PREFIX?=/usr/local > PORTSMODULESENV=SYSDIR=${SYSDIR} PATH=${PATH}:${PREFIX}/bin:${PREFIX}/sbin > > or the equivalent (and perhaps cleaner, not leaving PREFIX defined) > > .if !defined(PREFIX) > PORTSMODULESENV=SYSDIR=${SYSDIR} PATH=${PATH}:/usr/local/bin:/usr/local/sbin > .else > PORTSMODULESENV=SYSDIR=${SYSDIR} PATH=${PATH}:${PREFIX}/bin:${PREFIX}/sbin > .endif > > Both of these will respect make.conf's setting of PREFIX. > Shouldn't you be looking for LOCALBASE rather than PREFIX in this context? Cheers, Matthew -- Dr Matthew J Seaman MA, D.Phil. 7 Priory Courtyard Flat 3 PGP: http://www.infracaninophile.co.uk/pgpkey Ramsgate JID: matt...@infracaninophile.co.uk Kent, CT11 9PW signature.asc Description: OpenPGP digital signature
Re: PORTS_MODULES fix
On 9 June 2012 18:15, Doug Barton wrote: > I have recently tried the PORTS_MODULES knob, and found a problem. The > ports tree searches for some dependencies by finding a binary in PATH, > and that fails since by default /usr/local/ isn't there. The attached > patch fixes that problem. > > It would be more robust to use PREFIX there instead of /usr/local > explicitly, but I'm not sure how to unravel the mk maze to get that > value. If anyone has a suggestion for that, I'd be happy to include it. As you mention, PREFIX is only defined in ports/Mk, and it'd definitely be undesirable to be including any of those files :) The most robust (but unpleasant) solution would be one of the following: PREFIX?=/usr/local PORTSMODULESENV=SYSDIR=${SYSDIR} PATH=${PATH}:${PREFIX}/bin:${PREFIX}/sbin or the equivalent (and perhaps cleaner, not leaving PREFIX defined) .if !defined(PREFIX) PORTSMODULESENV=SYSDIR=${SYSDIR} PATH=${PATH}:/usr/local/bin:/usr/local/sbin .else PORTSMODULESENV=SYSDIR=${SYSDIR} PATH=${PATH}:${PREFIX}/bin:${PREFIX}/sbin .endif Both of these will respect make.conf's setting of PREFIX. Chris ___ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"
PORTS_MODULES fix
I have recently tried the PORTS_MODULES knob, and found a problem. The ports tree searches for some dependencies by finding a binary in PATH, and that fails since by default /usr/local/ isn't there. The attached patch fixes that problem. It would be more robust to use PREFIX there instead of /usr/local explicitly, but I'm not sure how to unravel the mk maze to get that value. If anyone has a suggestion for that, I'd be happy to include it. Any objections to making this change? Doug -- This .signature sanitized for your protection Index: kern.post.mk === --- kern.post.mk(revision 236818) +++ kern.post.mk(working copy) @@ -38,7 +38,7 @@ # Handle out of tree ports .if !defined(NO_MODULES) && defined(PORTS_MODULES) -PORTSMODULESENV=SYSDIR=${SYSDIR} +PORTSMODULESENV=SYSDIR=${SYSDIR} PATH=${PATH}:/usr/local/bin:/usr/local/sbin .for __target in all install reinstall clean ${__target}: ports-${__target} ports-${__target}: ___ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"