Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 29 Sep 2014 15:05:23 +0000 (UTC)
From:      Will Andrews <will@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r272282 - head/share/mk
Message-ID:  <201409291505.s8TF5Nhh066884@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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}"



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201409291505.s8TF5Nhh066884>