|
1 | 1 | CURDIR ?= $(shell pwd) |
| 2 | +EXPERIMENTS ?= gcvs premopt elision |
| 3 | +MEASUREMENTS ?= perf mem metrics |
2 | 4 |
|
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 |
7 | 7 | LOG_STAGE := log_export |
8 | 8 | 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 . |
10 | 30 |
|
11 | | -build: |
| 31 | +run-quick: fetch-binaries |
12 | 32 | docker buildx build \ |
13 | | - --target $(RUNTIME_STAGE) \ |
14 | | - --tag $(IMAGE_NAME) \ |
| 33 | + --target runtime \ |
| 34 | + --tag $(IMAGE_quick) \ |
| 35 | + --build-arg PREBUILT_BINS=true \ |
15 | 36 | --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) |
19 | 44 |
|
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) |
23 | 49 | 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