check / check (push) Canceled after 0s
A hit opens the variant file and nothing else: its content type comes from the file's first bytes, and a file in no output format is a miss. Its access time and hit count, and the access time of a cached source a miss uses, go without waiting to the goroutine that wrote late counts, which now writes them all once a second; each kind of access time waits in a channel of 10,000 that drops the rest. checkNegativeCache leaves expired rows to CleanExpired. The .meta files, metaCache, Lookup and golang-lru go, with their tests. Dropping the .meta skip made the variant and source reconciliation walks identical, so they share one. make bench runs a parallel cache hit benchmark on the host, outside make check. Model: opus-5-5
97 lines
2.4 KiB
Makefile
97 lines
2.4 KiB
Makefile
.PHONY: bootstrap setup check lint test fmt fmt-check build clean docker docker-smoke docker-versioned docker-test devserver devserver-stop hooks loadtest bench
|
|
|
|
VERSION := $(shell git describe --tags --always --dirty 2>/dev/null || echo "dev")
|
|
LDFLAGS := -X main.Version=$(VERSION)
|
|
|
|
# Use nix-shell to provide CGO dependencies unless they are already available
|
|
# (e.g. inside an existing nix-shell).
|
|
HAS_PKGCONFIG := $(shell command -v pkg-config 2>/dev/null)
|
|
ifdef HAS_PKGCONFIG
|
|
NIX_RUN_PREFIX =
|
|
NIX_RUN_SUFFIX =
|
|
else
|
|
NIX_RUN_PREFIX = nix-shell -p pkg-config vips libheif git --run '
|
|
NIX_RUN_SUFFIX = '
|
|
endif
|
|
|
|
# Default target: run all checks
|
|
check:
|
|
@script/check
|
|
|
|
bootstrap:
|
|
@script/bootstrap
|
|
|
|
setup:
|
|
@script/setup
|
|
|
|
# Check formatting without modifying files
|
|
fmt-check:
|
|
@script/fmt-check
|
|
|
|
# Format code
|
|
fmt:
|
|
@script/fmt
|
|
|
|
# Run linter (the lint phase of the Dockerfile)
|
|
lint:
|
|
@script/lint
|
|
|
|
# Run tests (the test phase of the Dockerfile)
|
|
test:
|
|
@script/test
|
|
|
|
# Build the binary
|
|
build:
|
|
@echo "Building pixad..."
|
|
$(NIX_RUN_PREFIX)CGO_ENABLED=1 go build -ldflags "$(LDFLAGS)" -o ./bin/pixad ./cmd/pixad$(NIX_RUN_SUFFIX)
|
|
|
|
# Clean build artifacts
|
|
clean:
|
|
rm -rf bin/
|
|
rm -rf ./data
|
|
|
|
# Build Docker image (tagged via script/projectname)
|
|
docker:
|
|
@script/docker
|
|
|
|
# Build the image, start it, and wait for its healthcheck (needs Docker;
|
|
# not part of check)
|
|
docker-smoke:
|
|
@script/docker-smoke
|
|
|
|
# Measure throughput, latency and peak memory with the default duration and
|
|
# number of clients (needs Docker and Go; a benchmark, not part of check)
|
|
loadtest:
|
|
@script/loadtest
|
|
|
|
# Serve cache hits in parallel through the image handler and report hits per
|
|
# second (needs Go on the host after `script/bootstrap --cgo`, not Docker; a
|
|
# benchmark, not part of check)
|
|
bench:
|
|
@script/bench
|
|
|
|
# Build Docker image as `make docker` does, and also tag it pixa:$(VERSION)
|
|
docker-versioned:
|
|
@script/docker
|
|
docker tag pixa pixa:$(VERSION)
|
|
|
|
# Run tests in Docker, as `make test` does
|
|
docker-test:
|
|
@script/test
|
|
|
|
# Run local dev server in Docker
|
|
devserver: docker-versioned devserver-stop
|
|
docker run -d --name pixad-dev -p 8080:8080 \
|
|
-v $(CURDIR)/config.dev.yml:/etc/pixa/config.yml:ro \
|
|
pixa:latest
|
|
@echo "pixad running at http://localhost:8080"
|
|
|
|
# Stop dev server
|
|
devserver-stop:
|
|
-docker stop pixad-dev 2>/dev/null
|
|
-docker rm pixad-dev 2>/dev/null
|
|
|
|
# Install pre-commit hook
|
|
hooks:
|
|
@script/install-precommit
|