11BUILD_HARNESS_REQ_TEMPLATE:=$(BUILD_HARNESS_PATH)/requirements.template
22BUILD_HARNESS_REQ_NAME:=.build-harness.requirements.txt
33BUILD_HARNESS_REQ:=$(CURDIR)/$(BUILD_HARNESS_REQ_NAME)
4+ BUILD_HARNESS_PIPFILE_NAME:=.build-harness.Pipfile
5+ BUILD_HARNESS_PIPFILE:=$(CURDIR)/$(BUILD_HARNESS_PIPFILE_NAME)
46BUILD_HARNESS_VENV_NAME:=.build-harness.venv
57BUILD_HARNESS_VENV:=$(CURDIR)/$(BUILD_HARNESS_VENV_NAME)
68WITH_BH_VENV=$(shell test -f $(BUILD_HARNESS_REQ) && echo "source $(BUILD_HARNESS_VENV)/bin/activate 2>/dev/null &&")
@@ -26,10 +28,25 @@ $(BUILD_HARNESS_REQ): $(BUILD_HARNESS_REQ_TEMPLATE)
2628 @if [ -f $@ ]; then echo "Removing previously generated build-harness requirements" && rm $@; fi
2729 @cat $(BUILD_HARNESS_REQ_TEMPLATE) | xargs -I % bash -c 'if [ -z "$$(which % 2>/dev/null)" ]; then echo "% not found" && echo "%" >> $@; fi'
2830
29- $(BUILD_HARNESS_VENV): $(BUILD_HARNESS_REQ)
31+ $(BUILD_HARNESS_PIPFILE): $(BUILD_HARNESS_REQ)
32+ @if [ -f $@ ]; then echo "Removing previously generated build-harness Pipfile" && rm $@; fi
33+ @if [ -n "$$(which pipenv 2>/dev/null)" ]; then \
34+ echo "[packages]" >> $@; \
35+ cat $(BUILD_HARNESS_REQ) | xargs -I % bash -c 'if [ -z "$$(which % 2>/dev/null)" ]; then echo "% = \"*\"" >> $@; fi'; \
36+ fi
37+
38+ $(BUILD_HARNESS_VENV): $(BUILD_HARNESS_REQ) $(BUILD_HARNESS_PIPFILE)
3039 @if [ -s $(BUILD_HARNESS_REQ) ]; then echo "Installing: $$(cat $(BUILD_HARNESS_REQ) | tr '\n' ' ')"; fi
31- @test -f $(BUILD_HARNESS_REQ) \
32- && ( \
40+ @if [ -n "$$(which pipenv 2>/dev/null)" ]; then \
41+ echo "Installing build-harness requirements with pipenv..."; \
42+ ( \
43+ $(shell if [ $$(python -c 'import platform; ver=int(platform.python_version()[0]); print(ver)' 2>/dev/null) -eq 2 ] && [ -n "$$(which python3 2>/dev/null)" ]; then echo "python3"; else echo "python"; fi) -m venv $@ \
44+ && source $@/bin/activate && pip install -r <(PIPENV_PIPFILE=$(BUILD_HARNESS_PIPFILE) PIPENV_QUIET=1 pipenv --bare lock -r --pre) --ignore-installed \
45+ ); if [ $$? -ne 0 ]; then rm -rf $@; fi; \
46+ else \
47+ echo "WARNING: Installing build-harness requirements with venv + pip because pipenv was not installed..."; \
48+ ( \
3349 $(shell if [ $$(python -c 'import platform; ver=int(platform.python_version()[0]); print(ver)' 2>/dev/null) -eq 2 ] && [ -n "$$(which python3 2>/dev/null)" ]; then echo "python3"; else echo "python"; fi) -m venv $@ \
3450 && source $@/bin/activate && pip install -r $(BUILD_HARNESS_REQ) --ignore-installed \
35- ); if [ $$? -ne 0 ]; then rm -rf $@; fi
51+ ); if [ $$? -ne 0 ]; then rm -rf $@; fi; \
52+ fi
0 commit comments