# Variables ROOT_DIR := $(PWD) BUILD_TOOL := $(ROOT_DIR)/tools/build DISTRO ?= almalinux/el9 # Authentication variables (optional) # VAULT_ROLE_ID - Use AppRole authentication if set # VAULT_ROLE - Kubernetes role for service account authentication (default: rpmbuilder) # Automatically find all packages with metadata.yaml PACKAGES := $(shell find $(ROOT_DIR)/rpms -mindepth 1 -maxdepth 1 -type d -exec test -f {}/metadata.yaml \; -print | xargs -n1 basename | sort) # Default target to build all packages .PHONY: all list build clean test all: build-all # List all available packages list: @echo "Available packages:" @for package in $(PACKAGES); do \ echo " $$package"; \ done # Build all packages using Python tool build-all: @echo "Building all packages using Python tooling for distro $(DISTRO)..." $(BUILD_TOOL) build-all --distro $(DISTRO) # Build all packages using native build (no Docker) build-all-native: @echo "Building all packages natively (no Docker) for distro $(DISTRO)..." $(BUILD_TOOL) build-all --distro $(DISTRO) --native # Build all packages using Buildah build-all-buildah: @echo "Building all packages using Buildah for distro $(DISTRO)..." $(BUILD_TOOL) build-all --distro $(DISTRO) --buildah # Build specific package using Python tool .PHONY: $(PACKAGES) $(PACKAGES): @echo "Building package: $@ for distro $(DISTRO)" $(BUILD_TOOL) build --distro $(DISTRO) $@ # Dry run - show what would be built without building dry-run: @echo "Dry run - showing what would be built for distro $(DISTRO):" $(BUILD_TOOL) build-all --distro $(DISTRO) --dry-run # Run unit tests test: @uv run --group dev pytest tests/ -q; rc=$$?; [ $$rc -eq 5 ] && exit 0 || exit $$rc # Clean target clean: @echo "Cleaning build artifacts..." rm -rf $(ROOT_DIR)/dist # Update packages from GitHub releases update: @echo "Checking for package updates from GitHub releases..." $(ROOT_DIR)/tools/update-gh --all # Update specific package from GitHub update-%: @echo "Checking for updates for package: $*" $(ROOT_DIR)/tools/update-gh --package $*