Skip to content

Commit 319d12d

Browse files
committed
More robust Makefile with proper errors
1 parent 4da4cff commit 319d12d

File tree

1 file changed

+61
-20
lines changed

1 file changed

+61
-20
lines changed

Makefile

Lines changed: 61 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,70 @@
11
CURDIR ?= $(shell pwd)
2+
EXPERIMENTS ?= gcvs premopt elision
3+
MEASUREMENTS ?= perf mem metrics
24

3-
export EXPERIMENTS ?= gcvs premopt elision
4-
export MEASUREMENTS ?= perf mem metrics
5-
6-
IMAGE_NAME := run-full:latest
5+
IMAGE_full := full:latest
6+
IMAGE_quick := quick:latest
77
LOG_STAGE := log_export
88
RUNTIME_STAGE := runtime
9-
RESULTS := $(PWD)/results
9+
RESULTS := $(CURDIR)/results
10+
LOGFILE := experiment.log
11+
12+
VENV_DIR := .venv
13+
VENV_PYTHON := $(VENV_DIR)/bin/python
14+
PYTHON := $(VENV_PYTHON) # Use venv python consistently
15+
16+
BIN_DIR ?= $(CURDIR)/artefacts/bin
17+
BIN_ARCHIVE ?= artefacts-bin.tar.xz
18+
PREBUILT_DIR := $(CURDIR)/artefacts/prebuilt
19+
PREBUILT_BIN := $(PREBUILT_DIR)/bin # Added definition
20+
21+
GDRIVE_FILE_ID = 1oDkZ2RH65iq25_65AppzdLH_zzbt6oRz
22+
GDRIVE_ARTEFACT = $(PREBUILT_DIR)/$(BIN_ARCHIVE)
23+
24+
.PHONY: venv run-full run-quick fetch-binaries bare-metal
25+
26+
venv:
27+
@test -d $(VENV_DIR) || python3 -m venv $(VENV_DIR)
28+
$(PYTHON) -m pip install --upgrade pip
29+
$(PYTHON) -m pip install .
1030

11-
build:
31+
run-quick: fetch-binaries
1232
docker buildx build \
13-
--target $(RUNTIME_STAGE) \
14-
--tag $(IMAGE_NAME) \
33+
--target runtime \
34+
--tag $(IMAGE_quick) \
35+
--build-arg PREBUILT_BINS=true \
1536
--load .
16-
docker buildx build \
17-
--target $(LOG_STAGE) \
18-
--output type=local,dest=$(CURDIR) .
37+
@test -f $(LOGFILE) || touch $(LOGFILE)
38+
chmod a+w $(LOGFILE)
39+
docker run --rm -it \
40+
--mount type=bind,source="$(LOGFILE)",target=/app/experiment.log \
41+
--mount type=bind,source="$(RESULTS)",target=/app/results \
42+
--mount type=bind,source="$(PREBUILT_BIN)",target=/app/artefacts/bin \
43+
$(IMAGE_quick)
1944

20-
run-full: build
21-
touch $(CURDIR)/docker-run-full.log
22-
chmod a+w $(CURDIR)/docker-run-full.log
45+
run-full:
46+
docker buildx build --target runtime --tag $(IMAGE_full) --load .
47+
@test -f $(LOGFILE) || touch $(LOGFILE)
48+
chmod a+w $(LOGFILE)
2349
docker run --rm -it \
24-
--mount type=bind,source="$(CURDIR)/docker-run-full.log",target=/app/experiment.log \
25-
--mount type=bind,source="$(CURDIR)/results",target=/app/results \
26-
$(if $(PEXECS),--env PEXECS="$(PEXECS)",) \
27-
--env EXPERIMENTS="$(EXPERIMENTS)" \
28-
--env MEASUREMENTS="$(MEASUREMENTS)" \
29-
$(IMAGE_NAME)
50+
--mount type=bind,source="$(LOGFILE)",target=/app/experiment.log \
51+
--mount type=bind,source="$(RESULTS)",target=/app/results \
52+
$(IMAGE_full)
53+
54+
tarball:
55+
@echo "Compressing $(BIN_DIR) with maximum compression..."
56+
cd artefacts && tar -cf - bin | xz -9e > $(BIN_ARCHIVE)
57+
@echo "Created $(BIN_ARCHIVE) ($$(du -h artefacts/$(BIN_ARCHIVE) | cut -f1))"
58+
59+
fetch-binaries: venv
60+
@mkdir -p $(PREBUILT_DIR)
61+
@echo "Downloading from Google Drive..."
62+
@gdown $(GDRIVE_FILE_ID) -O $(GDRIVE_ARTEFACT)
63+
@echo "Download complete. File size: $$(du -h $(GDRIVE_ARTEFACT) | cut -f1)"
64+
@echo "Unzipping $(GDRIVE_ARTEFACT) to $(PREBUILT_DIR)..."
65+
tar -xvf $(GDRIVE_ARTEFACT) -C $(PREBUILT_DIR) # Fixed typo
66+
@echo "Done"
67+
68+
bare-metal: venv
69+
./run build-benchmarks
70+

0 commit comments

Comments
 (0)