Author: will
Date: Mon Sep 29 15:05:23 2014
New Revision: 272282
URL: http://svnweb.freebsd.org/changeset/base/272282

Log:
  Search for the nearest PORTSDIR where Mk/bsd.ports.mk exists, from .CURDIR.
  This will only take effect if PORTSDIR is not set, as previously supported.
  
  Use .if exists(), for four specific possibilities relative to .CURDIR:
  ., .., ../.., and ../../..  The fourth possibility is primarily in case
  ports ever grows a third level.  If none of these paths exist, fall back to
  the old default of /usr/ports.
  
  This removes the need to set PORTSDIR explicitly (or via wrapper script) if
  one is running out of a ports tree that is not in /usr/ports, but in a
  home directory.
  
  Reviewed by:  bapt, bdrewery (older version)
  CR:           D799
  MFC after:    1 week
  Sponsored by: Spectra Logic

Modified:
  head/share/mk/bsd.port.mk
  head/share/mk/bsd.port.subdir.mk

Modified: head/share/mk/bsd.port.mk
==============================================================================
--- head/share/mk/bsd.port.mk   Mon Sep 29 10:36:14 2014        (r272281)
+++ head/share/mk/bsd.port.mk   Mon Sep 29 15:05:23 2014        (r272282)
@@ -1,6 +1,22 @@
 # $FreeBSD$
 
-PORTSDIR?=     /usr/ports
+.if !defined(PORTSDIR)
+# Autodetect if the command is being run in a ports tree that's not rooted
+# in the default /usr/ports.  The ../../.. case is in case ports ever grows
+# a third level.
+.if exists(${.CURDIR}/Mk/bsd.port.mk)
+PORTSDIR=      ${.CURDIR}
+.elif exists(${.CURDIR}/../Mk/bsd.port.mk)
+PORTSDIR=      ${.CURDIR}/..
+.elif exists(${.CURDIR}/../../Mk/bsd.port.mk)
+PORTSDIR=      ${.CURDIR}/../..
+.elif exists(${.CURDIR}/../../../Mk/bsd.port.mk)
+PORTSDIR=      ${.CURDIR}/../../..
+.else
+PORTSDIR=      /usr/ports
+.endif
+.endif
+
 BSDPORTMK?=    ${PORTSDIR}/Mk/bsd.port.mk
 
 # Needed to keep bsd.own.mk from reading in /etc/src.conf

Modified: head/share/mk/bsd.port.subdir.mk
==============================================================================
--- head/share/mk/bsd.port.subdir.mk    Mon Sep 29 10:36:14 2014        
(r272281)
+++ head/share/mk/bsd.port.subdir.mk    Mon Sep 29 15:05:23 2014        
(r272282)
@@ -1,6 +1,22 @@
 # $FreeBSD$
 
-PORTSDIR?=     /usr/ports
+.if !defined(PORTSDIR)
+# Autodetect if the command is being run in a ports tree that's not rooted
+# in the default /usr/ports.  The ../../.. case is in case ports ever grows
+# a third level.
+.if exists(${.CURDIR}/Mk/bsd.port.mk)
+PORTSDIR=      ${.CURDIR}
+.elif exists(${.CURDIR}/../Mk/bsd.port.mk)
+PORTSDIR=      ${.CURDIR}/..
+.elif exists(${.CURDIR}/../../Mk/bsd.port.mk)
+PORTSDIR=      ${.CURDIR}/../..
+.elif exists(${.CURDIR}/../../../Mk/bsd.port.mk)
+PORTSDIR=      ${.CURDIR}/../../..
+.else
+PORTSDIR=      /usr/ports
+.endif
+.endif
+
 BSDPORTSUBDIRMK?=      ${PORTSDIR}/Mk/bsd.port.subdir.mk
 
 .include "${BSDPORTSUBDIRMK}"
_______________________________________________
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"

Reply via email to