Initial Makefile
This commit is contained in:
parent
6b358d1167
commit
80f3ecff3a
|
|
@ -0,0 +1,146 @@
|
|||
# DiffSeeker Makefile
|
||||
# Usage: make help
|
||||
|
||||
SHELL := /bin/sh
|
||||
|
||||
PYTHON ?= python3
|
||||
PIP ?= pip3
|
||||
VENV_DIR ?= .venv
|
||||
VENV_PY := $(VENV_DIR)/bin/python
|
||||
VENV_PIP := $(VENV_DIR)/bin/pip
|
||||
|
||||
# Default DB/CSV outputs for convenience targets
|
||||
OUTCSV ?= cfa-output.csv
|
||||
DB ?= diffseeker.db
|
||||
WALKDIR ?= .
|
||||
VOLUME ?= UNKNOWN
|
||||
HASH ?= sha256
|
||||
RESERVE ?= 0
|
||||
|
||||
# Excludes can be overridden: make scan EXCLUDES=".git .svn"
|
||||
EXCLUDES ?= .git .svn
|
||||
|
||||
# Docker image tags (local)
|
||||
PY_IMG ?= diffseeker-python:dev
|
||||
RS_IMG ?= diffseeker-rust:dev
|
||||
|
||||
.DEFAULT_GOAL := help
|
||||
|
||||
.PHONY: help
|
||||
help:
|
||||
@printf "%s\n" "DiffSeeker targets:"
|
||||
@printf "%s\n" ""
|
||||
@printf "%s\n" "Python:"
|
||||
@printf "%s\n" " make venv Create venv and install Python package (editable)"
|
||||
@printf "%s\n" " make py-install Install Python package into existing venv"
|
||||
@printf "%s\n" " make py-test Run Python tests"
|
||||
@printf "%s\n" " make py-clean Remove Python build artifacts"
|
||||
@printf "%s\n" " make scan Run mpchunkcfa scan -> CSV"
|
||||
@printf "%s\n" " make scan-db Run mpchunkcfa scan -> CSV + SQLite"
|
||||
@printf "%s\n" ""
|
||||
@printf "%s\n" "Rust:"
|
||||
@printf "%s\n" " make rs-build Build Rust CLI (release)"
|
||||
@printf "%s\n" " make rs-test Run Rust tests"
|
||||
@printf "%s\n" " make rs-clean Clean Rust build artifacts"
|
||||
@printf "%s\n" ""
|
||||
@printf "%s\n" "Docker:"
|
||||
@printf "%s\n" " make docker-python Build Python Docker image"
|
||||
@printf "%s\n" " make docker-rust Build Rust Docker image"
|
||||
@printf "%s\n" " make docker-scan Run Python scan in container (bind-mount current dir)"
|
||||
@printf "%s\n" ""
|
||||
@printf "%s\n" "Variables (override as needed):"
|
||||
@printf "%s\n" " WALKDIR=., VOLUME=NAME, OUTCSV=FILE.csv, DB=FILE.db, HASH=sha256, RESERVE=0"
|
||||
@printf "%s\n" " EXCLUDES='.git .svn'"
|
||||
|
||||
# -------------------------
|
||||
# Python environment
|
||||
# -------------------------
|
||||
|
||||
.PHONY: venv
|
||||
venv: $(VENV_PY) py-install
|
||||
|
||||
$(VENV_PY):
|
||||
$(PYTHON) -m venv $(VENV_DIR)
|
||||
$(VENV_PIP) install --upgrade pip setuptools wheel
|
||||
|
||||
.PHONY: py-install
|
||||
py-install: $(VENV_PY)
|
||||
$(VENV_PIP) install -e .
|
||||
|
||||
.PHONY: py-test
|
||||
py-test: $(VENV_PY)
|
||||
$(VENV_PIP) install -e .
|
||||
$(VENV_PY) -m pytest -q python/tests
|
||||
|
||||
.PHONY: py-clean
|
||||
py-clean:
|
||||
rm -rf build dist *.egg-info .pytest_cache
|
||||
find python -name "__pycache__" -type d -prune -exec rm -rf {} \; || true
|
||||
|
||||
.PHONY: venv-clean
|
||||
venv-clean:
|
||||
rm -rf $(VENV_DIR)
|
||||
|
||||
# -------------------------
|
||||
# Convenience scan targets
|
||||
# -------------------------
|
||||
|
||||
# Build --exclude args from space-separated EXCLUDES
|
||||
EXCLUDE_ARGS = $(foreach e,$(EXCLUDES),--exclude $(e))
|
||||
|
||||
.PHONY: scan
|
||||
scan: $(VENV_PY)
|
||||
$(VENV_PIP) install -e .
|
||||
$(VENV_DIR)/bin/mpchunkcfa --walk "$(WALKDIR)" -V "$(VOLUME)" -c "$(OUTCSV)" --hash "$(HASH)" $(EXCLUDE_ARGS) --reserve-cores "$(RESERVE)"
|
||||
|
||||
.PHONY: scan-db
|
||||
scan-db: $(VENV_PY)
|
||||
$(VENV_PIP) install -e .
|
||||
$(VENV_DIR)/bin/mpchunkcfa --walk "$(WALKDIR)" -V "$(VOLUME)" -c "$(OUTCSV)" --hash "$(HASH)" $(EXCLUDE_ARGS) --db "$(DB)" --reserve-cores "$(RESERVE)"
|
||||
|
||||
# -------------------------
|
||||
# Rust
|
||||
# -------------------------
|
||||
|
||||
.PHONY: rs-build
|
||||
rs-build:
|
||||
cargo build --release -p diffseeker_cli
|
||||
|
||||
.PHONY: rs-test
|
||||
rs-test:
|
||||
cargo test
|
||||
|
||||
.PHONY: rs-clean
|
||||
rs-clean:
|
||||
cargo clean
|
||||
|
||||
# -------------------------
|
||||
# Docker
|
||||
# -------------------------
|
||||
|
||||
.PHONY: docker-python
|
||||
docker-python:
|
||||
docker build -t $(PY_IMG) -f docker/Dockerfile.python .
|
||||
|
||||
.PHONY: docker-rust
|
||||
docker-rust:
|
||||
docker build -t $(RS_IMG) -f docker/Dockerfile.rust .
|
||||
|
||||
# Run the Python mpchunkcfa in a container, bind-mount current directory to /work
|
||||
# Example:
|
||||
# make docker-scan WALKDIR=/work VOLUME=VOL_A OUTCSV=/work/vol_a.csv
|
||||
.PHONY: docker-scan
|
||||
docker-scan: docker-python
|
||||
docker run --rm -it \
|
||||
-v "$(PWD)":/work \
|
||||
-w /work \
|
||||
$(PY_IMG) \
|
||||
--walk "$(WALKDIR)" -V "$(VOLUME)" -c "$(OUTCSV)" --hash "$(HASH)" $(EXCLUDE_ARGS) --reserve-cores "$(RESERVE)"
|
||||
|
||||
# -------------------------
|
||||
# Meta
|
||||
# -------------------------
|
||||
|
||||
.PHONY: all
|
||||
all: py-test rs-test
|
||||
|
||||
Loading…
Reference in New Issue