Some checks failed
Mark stable commit / test-unit (push) Has been cancelled
Mark stable commit / test-integration (push) Has been cancelled
Mark stable commit / test-env-virtual (push) Has been cancelled
Mark stable commit / test-env-nix (push) Has been cancelled
Mark stable commit / test-e2e (push) Has been cancelled
Mark stable commit / test-virgin-user (push) Has been cancelled
Mark stable commit / test-virgin-root (push) Has been cancelled
Mark stable commit / mark-stable (push) Has been cancelled
Refactor Dockerfile into multi-stage virgin/full targets and introduce a single flag-based image build script. Standardize image naming, remove redundant build scripts, and update Makefile targets accordingly. CI workflows now build missing virgin images and run root and user tests consistently across all supported distributions. https://chatgpt.com/share/693c29d9-9b28-800f-a549-5661c783d968
110 lines
3.2 KiB
Makefile
110 lines
3.2 KiB
Makefile
.PHONY: install uninstall \
|
|
build build-no-cache build-no-cache-all build-missing \
|
|
delete-volumes purge \
|
|
test test-unit test-e2e test-integration test-env-virtual test-env-nix \
|
|
setup setup-venv setup-nix
|
|
|
|
# Distro
|
|
# Options: arch debian ubuntu fedora centos
|
|
DISTROS ?= arch debian ubuntu fedora centos
|
|
distro ?= arch
|
|
export distro
|
|
|
|
# ------------------------------------------------------------
|
|
# Base images
|
|
# (kept for documentation/reference; actual build logic is in scripts/build)
|
|
# ------------------------------------------------------------
|
|
BASE_IMAGE_ARCH := archlinux:latest
|
|
BASE_IMAGE_DEBIAN := debian:stable-slim
|
|
BASE_IMAGE_UBUNTU := ubuntu:latest
|
|
BASE_IMAGE_FEDORA := fedora:latest
|
|
BASE_IMAGE_CENTOS := quay.io/centos/centos:stream9
|
|
|
|
# Make them available in scripts
|
|
export BASE_IMAGE_ARCH
|
|
export BASE_IMAGE_DEBIAN
|
|
export BASE_IMAGE_UBUNTU
|
|
export BASE_IMAGE_FEDORA
|
|
export BASE_IMAGE_CENTOS
|
|
|
|
# PYthon Unittest Pattern
|
|
TEST_PATTERN := test_*.py
|
|
export TEST_PATTERN
|
|
|
|
# ------------------------------------------------------------
|
|
# System install
|
|
# ------------------------------------------------------------
|
|
install:
|
|
@echo "Building and installing distro-native package-manager for this system..."
|
|
@bash scripts/installation/main.sh
|
|
|
|
# ------------------------------------------------------------
|
|
# PKGMGR setup
|
|
# ------------------------------------------------------------
|
|
|
|
# Default: keep current auto-detection behavior
|
|
setup: setup-nix setup-venv
|
|
|
|
# Explicit: developer setup (Python venv + shell RC + main.py install)
|
|
setup-venv:
|
|
@bash scripts/setup/venv.sh
|
|
|
|
# Explicit: Nix shell mode (no venv, no RC changes)
|
|
setup-nix:
|
|
@bash scripts/setup/nix.sh
|
|
|
|
# ------------------------------------------------------------
|
|
# Docker build targets (delegated to scripts/build)
|
|
# ------------------------------------------------------------
|
|
build:
|
|
@bash scripts/build/image.sh --target virgin
|
|
@bash scripts/build/image.sh
|
|
|
|
build-missing:
|
|
@bash scripts/build/image.sh --target virgin --missing
|
|
@bash scripts/build/image.sh --missing
|
|
|
|
build-no-cache:
|
|
@bash scripts/build/image.sh --target virgin --no-cache
|
|
@bash scripts/build/image.sh --no-cache
|
|
|
|
build-no-cache-all:
|
|
@set -e; \
|
|
for d in $(DISTROS); do \
|
|
echo "=== build-no-cache: $$d ==="; \
|
|
distro="$$d" $(MAKE) build-no-cache; \
|
|
done
|
|
|
|
# ------------------------------------------------------------
|
|
# Test targets (delegated to scripts/test)
|
|
# ------------------------------------------------------------
|
|
|
|
test-unit: build-missing
|
|
@bash scripts/test/test-unit.sh
|
|
|
|
test-integration: build-missing
|
|
@bash scripts/test/test-integration.sh
|
|
|
|
test-e2e: build-missing
|
|
@bash scripts/test/test-e2e.sh
|
|
|
|
test-env-virtual: build-missing
|
|
@bash scripts/test/test-env-virtual.sh
|
|
|
|
test-env-nix: build-missing
|
|
@bash scripts/test/test-env-nix.sh
|
|
|
|
# Combined test target for local + CI (unit + integration + e2e)
|
|
test: test-env-virtual test-unit test-integration test-e2e
|
|
|
|
delete-volumes:
|
|
@docker volume rm pkgmgr_nix_store_${distro} pkgmgr_nix_cache_${distro} || true
|
|
|
|
purge: delete-volumes build-no-cache
|
|
|
|
# ------------------------------------------------------------
|
|
# Uninstall target
|
|
# ------------------------------------------------------------
|
|
uninstall:
|
|
@bash scripts/uninstall.sh
|