Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 19 Oct 2015 21:10:56 +0000 (UTC)
From:      Bryan Drewery <bdrewery@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r399792 - in head/Mk: Scripts Uses
Message-ID:  <201510192110.t9JLAugI046688@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: bdrewery
Date: Mon Oct 19 21:10:56 2015
New Revision: 399792
URL: https://svnweb.freebsd.org/changeset/ports/399792

Log:
  Avoid redundantly looking up python command executions for dependency calculation.
  
  This gets all-depends-list in x11/kde4 down to 30 seconds after the 52->41
  second improvement in r399703.
  
  With hat:	portmgr

Modified:
  head/Mk/Scripts/functions.sh
  head/Mk/Uses/python.mk

Modified: head/Mk/Scripts/functions.sh
==============================================================================
--- head/Mk/Scripts/functions.sh	Mon Oct 19 20:53:15 2015	(r399791)
+++ head/Mk/Scripts/functions.sh	Mon Oct 19 21:10:56 2015	(r399792)
@@ -160,17 +160,18 @@ validate_env() {
 }
 
 export_ports_env() {
-	local export_vars make_cmd make_env var results value
+	local export_vars make_cmd make_env var results value uses
 
 	validate_env MAKE PORTSDIR
 
+	uses="perl5 python"
+
 	make_env="\
 		_PORTS_ENV_CHECK=1 \
 		PACKAGE_BUILDING=1 \
 		GNU_CONFIGURE=1 \
 		USE_JAVA=1 \
 		USE_LINUX=1 \
-		USES=perl5 \
 	"
 
 	make_cmd="${make_env}"
@@ -183,6 +184,8 @@ export_ports_env() {
 		OPSYS \
 		OSREL \
 		OSVERSION \
+		PYTHON_PORTVERSION \
+		PYTHONBASE \
 		UID \
 		_JAVA_OS_LIST_REGEXP \
 		_JAVA_PORTS_INSTALLED \
@@ -191,6 +194,7 @@ export_ports_env() {
 		_OSRELEASE \
 		_PERL5_FROM_BIN \
 		_PKG_CHECKED \
+		_PYTHON_DEFAULT_VERSION \
 		_SMP_CPUS \
 	"
 
@@ -199,7 +203,8 @@ export_ports_env() {
 	done
 
 	# Bring in all the vars, but not empty ones.
-	eval $(${MAKE} -f ${PORTSDIR}/Mk/bsd.port.mk ${make_cmd} | grep -v '=$')
+	eval $(${MAKE} -f ${PORTSDIR}/Mk/bsd.port.mk ${make_cmd} \
+	    USES="${uses}" | grep -v '=$')
 	for var in ${export_vars}; do
 		# Export and display non-empty ones.  This is not redundant
 		# with above since we're looping on all vars here; do not

Modified: head/Mk/Uses/python.mk
==============================================================================
--- head/Mk/Uses/python.mk	Mon Oct 19 20:53:15 2015	(r399791)
+++ head/Mk/Uses/python.mk	Mon Oct 19 21:10:56 2015	(r399792)
@@ -263,9 +263,12 @@ WARNING+=	"PYTHON3_DEFAULT_VERSION is de
 .endif
 
 .if exists(${LOCALBASE}/bin/python)
+.if !defined(_PYTHON_DEFAULT_VERSION)
 _PYTHON_DEFAULT_VERSION!=	(${LOCALBASE}/bin/python -c \
 		'import sys; print("%d.%d" % sys.version_info[:2])' 2> /dev/null \
 		|| ${ECHO_CMD} ${_PYTHON_PORTBRANCH}) | ${TAIL} -1
+.endif
+_EXPORTED_VARS+=	_PYTHON_DEFAULT_VERSION
 .if defined(PYTHON_DEFAULT) && (${PYTHON_DEFAULT} != ${_PYTHON_DEFAULT_VERSION})
 WARNING+=	"Your requested default python version ${PYTHON_DEFAULT} is different from the installed default python interpreter version ${_PYTHON_DEFAULT_VERSION}"
 .endif
@@ -382,7 +385,10 @@ PYTHON_MAJOR_VER=	${PYTHON_VER:R}
 PYTHON_REL=		# empty
 PYTHON_ABIVER=		# empty
 PYTHON_PORTSDIR=	${_PYTHON_RELPORTDIR}${PYTHON_SUFFIX}
+.if !defined(PYTHON_PORTVERSION)
 PYTHON_PORTVERSION!=	${MAKE} -V PORTVERSION -C ${PYTHON_PORTSDIR}
+.endif
+_EXPORTED_VARS+=	PYTHON_PORTVERSION
 # Create a 4 integer version string, prefixing 0 to the last token if
 # it's a single character. Only use the the first 3 tokens of
 # PORTVERSION to support pre-release versions (rc3, alpha4, etc) of
@@ -395,8 +401,11 @@ PYTHON_CMD?=		${_PYTHON_BASECMD}${_PYTHO
 PYTHON_ABIVER!=		${PYTHON_CMD}-config --abiflags
 .endif
 
+.if !defined(PYTHONBASE)
 PYTHONBASE!=	(${PYTHON_CMD} -c 'import sys; print(sys.prefix)' \
 			2> /dev/null || ${ECHO_CMD} ${LOCALBASE}) | ${TAIL} -1
+.endif
+_EXPORTED_VARS+=	PYTHONBASE
 
 PYTHON_INCLUDEDIR=	${PYTHONBASE}/include/python${_PYTHON_VERSION}${PYTHON_ABIVER}
 PYTHON_LIBDIR=		${PYTHONBASE}/lib/python${_PYTHON_VERSION}



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