forked from SharkGamerZ/CRAB
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
56 lines (48 loc) · 1.97 KB
/
Copy pathMakefile
File metadata and controls
56 lines (48 loc) · 1.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
.PHONY: install setup clean venv _install_core _check_python
.DEFAULT_GOAL := install
VENV_DIR = .venv
PIP = $(VENV_DIR)/bin/pip
CRAB_BIN = $(VENV_DIR)/bin/crab
# 0. The Guardrail (Fails instantly if Python is too old)
_check_python:
@python3 -c 'import sys; sys.exit(1) if sys.version_info < (3, 10) else sys.exit(0)' || \
(echo "============================================================"; \
echo "[!] ERROR: CRAB requires Python 3.10 or higher."; \
echo " You are currently using: $$(python3 --version 2>&1)"; \
echo ""; \
echo " Suggestion: Run \`module load python\` or activate a modern"; \
echo " Python environment before running \`make\` again."; \
echo "============================================================"; exit 1)
# 1. The Virtual Environment Builder
venv: _check_python
python3 -m venv $(VENV_DIR)
$(PIP) install --upgrade pip
$(PIP) install argcomplete
@echo 'eval "$$(register-python-argcomplete crab)"' >> $(VENV_DIR)/bin/activate
@echo 'register-python-argcomplete --shell fish crab | source' >> $(VENV_DIR)/bin/activate.fish
# 2. The Traffic Cop (Checks if already installed)
install:
@if [ -x "$(CRAB_BIN)" ]; then \
echo "============================================================"; \
echo "[!] CRAB is already installed in this directory."; \
echo ""; \
echo "To configure new benchmarks, activate your environment:"; \
echo " source $(VENV_DIR)/bin/activate"; \
echo " crab setup"; \
echo ""; \
echo "To completely reinstall, run \`make clean\` first."; \
echo "============================================================"; \
else \
$(MAKE) _install_core; \
fi
# 3. The Actual Installation
_install_core: venv
$(PIP) install -e .
@echo "[✔] CRAB core installed in virtual environment."
@echo "Launching setup wizard to configure benchmarks..."
$(CRAB_BIN) setup
setup:
$(CRAB_BIN) setup
clean:
@echo "Cleaning up build artifacts..."
rm -rf build/ dist/ *.egg-info $(VENV_DIR)