diff options
author | Bryan Drewery <bdrewery@FreeBSD.org> | 2015-10-19 21:10:56 +0000 |
---|---|---|
committer | Bryan Drewery <bdrewery@FreeBSD.org> | 2015-10-19 21:10:56 +0000 |
commit | 95e25b27ad9518c35563b51c575fd28a1f242446 (patch) | |
tree | bddf483675d2e441f221337304eacd4cc9e1e53c | |
parent | ef91c743636268788584dafdad8d66e4cffbf8ea (diff) | |
download | freebsd-ports-95e25b27ad9518c35563b51c575fd28a1f242446.zip |
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
-rw-r--r-- | Mk/Scripts/functions.sh | 11 | ||||
-rw-r--r-- | Mk/Uses/python.mk | 9 |
2 files changed, 17 insertions, 3 deletions
diff --git a/Mk/Scripts/functions.sh b/Mk/Scripts/functions.sh index f02345276a26..05871137b1da 100644 --- a/Mk/Scripts/functions.sh +++ b/Mk/Scripts/functions.sh @@ -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 diff --git a/Mk/Uses/python.mk b/Mk/Uses/python.mk index a2695f9bc2a1..446da4aff3ac 100644 --- a/Mk/Uses/python.mk +++ b/Mk/Uses/python.mk @@ -263,9 +263,12 @@ WARNING+= "PYTHON3_DEFAULT_VERSION is defined, consider using DEFAULT_VERSIONS=p .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}${_PYTHON_VERSION} 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} |