@@ -8,6 +8,8 @@ BUILD_HARNESS_VENV:=$(CURDIR)/$(BUILD_HARNESS_VENV_NAME)
88WITH_BH_VENV=$(shell test -f $(BUILD_HARNESS_REQ) && echo "source $(BUILD_HARNESS_VENV)/bin/activate 2>/dev/null &&")
99LOCAL_PYTHON_VERSION=$(shell python -c 'import platform; ver=int(platform.python_version()[0]); print(ver)' 2>/dev/null)
1010
11+ BUILD_HARNESS_VENV_SKIP_EXISTING=false
12+
1113# This doesn't conform to extreme edge-use-cases of modules/python/Makefile.env, but should cover >99% of use.
1214LOCAL_PROJECT_PYTHON_VERSION=$(shell if [ -e $(CURDIR)/Pipfile ]; then awk '/python_version*([0-9\.]*)/' Pipfile | awk 'match($$0, /[0-9\.]+/) {print substr($$0, RSTART, RLENGTH)}'; else echo ""; fi)
1315LOCAL_PROJECT_PYTHON_VERSION_MAJOR=$(shell echo "$(LOCAL_PROJECT_PYTHON_VERSION)" | cut -c1)
@@ -42,14 +44,19 @@ $(BUILD_HARNESS_REQ): $(BUILD_HARNESS_REQ_TEMPLATE)
4244
4345$(BUILD_HARNESS_PIPFILE): $(BUILD_HARNESS_REQ)
4446 @if [ -f $@ ]; then echo "Removing previously generated build-harness Pipfile" && rm $@; fi
45- @ if [ -n "$$(which pipenv 2>/dev/null)" ]; then \
47+ if [ -n "$$(which pipenv 2>/dev/null)" ]; then \
4648 echo "Generating $@"; \
4749 if [ -n "$(LOCAL_PROJECT_PYTHON_VERSION)" ]; then \
4850 echo "[requires]" >> $@; \
4951 echo "python_version = \"$(LOCAL_PROJECT_PYTHON_VERSION)\"" >> $@; \
5052 fi; \
5153 echo "[packages]" >> $@; \
52- cat $(BUILD_HARNESS_REQ) | xargs -I % bash -c 'if [ -z "$$(which % 2>/dev/null)" ]; then echo "% = \"*\"" >> $@; fi'; \
54+ if [ "$(BUILD_HARNESS_VENV_SKIP_EXISTING)" = true ] ; then \
55+ echo "Will skip required packages that exist in your path..."; \
56+ cat $(BUILD_HARNESS_REQ) | xargs -I % bash -c 'if [ -z "$$(which % 2>/dev/null)" ]; then echo "% = \"*\"" >> $@; fi'; \
57+ else \
58+ cat $(BUILD_HARNESS_REQ) | xargs -I % bash -c 'echo "% = \"*\"" >> $@'; \
59+ fi; \
5360 fi
5461
5562$(BUILD_HARNESS_VENV): $(BUILD_HARNESS_REQ) $(BUILD_HARNESS_PIPFILE)
0 commit comments