Only in /var/lib/copr-rpmbuild/results/samestack/upstream-unpacked/Source0/samestack-0.5.0: .copr diff -U2 -r /var/lib/copr-rpmbuild/results/samestack/upstream-unpacked/Source0/samestack-0.5.0/.gitignore /var/lib/copr-rpmbuild/results/samestack/srpm-unpacked/samestack-0.5.0.tar.gz-extract/samestack-0.5.0/.gitignore --- /var/lib/copr-rpmbuild/results/samestack/upstream-unpacked/Source0/samestack-0.5.0/.gitignore 2026-05-20 20:14:16.000000000 +0000 +++ /var/lib/copr-rpmbuild/results/samestack/srpm-unpacked/samestack-0.5.0.tar.gz-extract/samestack-0.5.0/.gitignore 2026-05-14 19:20:02.000000000 +0000 @@ -48,9 +48,2 @@ rteval_run_results/ stress-ng_run_results/ -# Apogee lifecycle artifacts (private working state) -apogee_artifacts/ - -# Apogee local config (per-developer, not shared) -.mcp.json -.design-approved - diff -U2 -r /var/lib/copr-rpmbuild/results/samestack/upstream-unpacked/Source0/samestack-0.5.0/Makefile /var/lib/copr-rpmbuild/results/samestack/srpm-unpacked/samestack-0.5.0.tar.gz-extract/samestack-0.5.0/Makefile --- /var/lib/copr-rpmbuild/results/samestack/upstream-unpacked/Source0/samestack-0.5.0/Makefile 2026-05-20 20:14:16.000000000 +0000 +++ /var/lib/copr-rpmbuild/results/samestack/srpm-unpacked/samestack-0.5.0.tar.gz-extract/samestack-0.5.0/Makefile 2026-05-14 19:20:02.000000000 +0000 @@ -131,5 +131,5 @@ # COPR build configuration COPR_PROJECT ?= chwhite/SameStack -COPR_CLONE_URL ?= https://gitlab.com/chwhite-systems/samestack.git +COPR_SCRATCH ?= COPR_FEDORA_CHROOTS := \ @@ -149,7 +149,4 @@ rhel-10-s390x rhel-10-x86_64 -# For release builds, resolve the latest tag for buildscm --commit. -COPR_RELEASE_TAG ?= $(shell git describe --tags --abbrev=0 2>/dev/null || echo HEAD) - # Release verification VERIFY_STRICT ?= @@ -165,14 +162,12 @@ mock-rebuild mock rpm-lint-mock srpm-cs mock-cs-rebuild mock-cs rpm-lint-mock-cs \ srpm-rhel mock-rhel-rebuild mock-rhel rpm-lint-mock-rhel \ - copr-test copr-test-cs copr-test-rhel copr-test-all \ - copr-release copr-release-cs copr-release-rhel copr-release-all \ - require-copr _copr-release-preflight \ + copr copr-cs copr-rhel _copr-preflight \ vendor verify-licensing \ verify-clean verify-version verify-spec \ verify-payload verify-payload-fedora verify-payload-cs verify-payload-rhel \ verify-quick verify-release verify-deep \ - _vendor-impl _srpm-impl _srpm-testing-impl _mock-rebuild-impl _rpm-lint-mock-impl \ + _vendor-impl _srpm-impl _mock-rebuild-impl _rpm-lint-mock-impl \ _srpm-rhel-impl _mock-rhel-rebuild-impl _rpm-lint-mock-rhel-impl \ - _copr-test-fedora-impl _copr-test-cs-impl _copr-test-rhel-impl \ + _copr-fedora-impl _copr-cs-impl _copr-rhel-impl \ _mock-cs-rebuild-impl _rpm-lint-mock-cs-impl _verify-spec-impl \ install-tools \ @@ -207,15 +202,8 @@ @echo " mock-rhel RHEL: vendor + srpm + mock rebuild + rpmlint on built RPMs" @echo "" - @echo "COPR test builds (from local branch, requires podman + ~/.config/copr):" - @echo " copr-test Test build from local branch → Fedora chroots" - @echo " copr-test-cs Test build from local branch → CentOS Stream chroots (vendored)" - @echo " copr-test-rhel Test build from local branch → RHEL chroots (vendored)" - @echo " copr-test-all Test build from local branch → all chroots" - @echo "" - @echo "COPR release builds (from remote tag, requires ~/.config/copr):" - @echo " copr-release Release build from remote tag → Fedora chroots" - @echo " copr-release-cs Release build from remote tag → CentOS Stream chroots (vendored)" - @echo " copr-release-rhel Release build from remote tag → RHEL chroots (vendored)" - @echo " copr-release-all Release build from remote tag → all chroots" + @echo "COPR builds (requires podman + ~/.config/copr API token):" + @echo " copr Build SRPM and submit to COPR for Fedora chroots" + @echo " copr-cs Build vendored SRPM and submit to COPR for CentOS Stream chroots" + @echo " copr-rhel Build vendored SRPM and submit to COPR for RHEL chroots" @echo "" @echo "Verification:" @@ -242,6 +230,5 @@ @echo " MOCK_RHEL_CONFIG (default: $(MOCK_RHEL_CONFIG)) - RHEL mock config" @echo " COPR_PROJECT (default: $(COPR_PROJECT)) - COPR project owner/name" - @echo " COPR_CLONE_URL (default: $(COPR_CLONE_URL)) - remote repo URL for release builds" - @echo " COPR_RELEASE_TAG (default: latest git tag) - tag/commit for release builds" + @echo " COPR_SCRATCH (default: off) - set to 1 for scratch builds (not published to repo)" @echo " COPR_CONFIG (default: ~/.config/copr) - path to COPR API token file" @echo " BUILDER_IMAGE (default: $(BUILDER_IMAGE))" @@ -655,14 +642,7 @@ @ls -1 "$(MAKE_OUT)/rpmbuild-rhel/mock-results/"*.rpm 2>/dev/null | grep -v '\.src\.rpm$$' || true -# ── COPR prerequisites (host-side checks, container execution) ─────── -# -# Host checks: copr-cli installed, API token present. -# Builds run inside the builder container — no host-side rpmbuild/cargo needed. - -require-copr: - @command -v copr-cli >/dev/null 2>&1 || { \ - echo "Error: copr-cli not found. Install: dnf install copr-cli" >&2; \ - exit 2; \ - } +# ── COPR builds ───────────────────────────────────────────────────── + +_copr-preflight: @test -f "$(COPR_CONFIG)" || { \ echo "Error: COPR API token not found at $(COPR_CONFIG)" >&2; \ @@ -670,99 +650,57 @@ exit 2; \ } +ifndef COPR_SCRATCH + @echo "Checking tree freshness against origin..." + @git fetch origin --quiet && \ + _local=$$(git rev-parse HEAD) && \ + _remote=$$(git rev-parse origin/master) && \ + _base=$$(git merge-base HEAD origin/master) && \ + if [ "$$_local" != "$$_remote" ]; then \ + if [ "$$_base" != "$$_remote" ]; then \ + echo "Error: local branch has diverged from origin/master." >&2; \ + else \ + echo "Error: local branch is behind origin/master." >&2; \ + fi; \ + echo "Pull upstream changes before submitting a release build." >&2; \ + echo "Use COPR_SCRATCH=1 to skip this check for test builds." >&2; \ + exit 1; \ + fi + @if [ -n "$$(git status --porcelain --untracked-files=no)" ]; then \ + echo "Error: git tree is dirty (tracked files modified)." >&2; \ + echo "Commit or stash changes before submitting a release build." >&2; \ + echo "Use COPR_SCRATCH=1 to skip this check for test builds." >&2; \ + exit 1; \ + fi +endif -# ── COPR test builds (scratch, from local branch) ─────────────────── -# -# Bind-mount the local working tree into the builder container. -# Build SRPM from whatever is on disk (dirty tree is fine). -# Upload to COPR as scratch. Local tree is never modified. - -copr-test: require-copr require-builder-image - $(PODMAN_RUN_COPR) make _srpm-impl - @echo "Submitting test Fedora SRPM to COPR ($(COPR_PROJECT))..." - copr-cli build $(COPR_PROJECT) \ - $$(ls -1t "$(MAKE_OUT)/rpmbuild/SRPMS/"*.src.rpm | head -1) \ - $(foreach c,$(COPR_FEDORA_CHROOTS),--chroot $(c)) \ - --nowait - -copr-test-cs: require-copr require-builder-image - $(PODMAN_RUN_COPR) make _srpm-cs-impl - @echo "Submitting test CentOS Stream SRPM to COPR ($(COPR_PROJECT))..." - copr-cli build $(COPR_PROJECT) \ - $$(ls -1t "$(MAKE_OUT)/rpmbuild-cs/SRPMS/"*.src.rpm | head -1) \ - $(foreach c,$(COPR_CS_CHROOTS),--chroot $(c)) \ - --nowait +copr: require-builder-image _copr-preflight + $(PODMAN_RUN_COPR) make _copr-fedora-impl -copr-test-rhel: require-copr require-builder-image - $(PODMAN_RUN_COPR) make _srpm-rhel-impl - @echo "Submitting test RHEL SRPM to COPR ($(COPR_PROJECT))..." +_copr-fedora-impl: _srpm-impl + @echo "Submitting Fedora SRPM to COPR ($(COPR_PROJECT))..." copr-cli build $(COPR_PROJECT) \ - $$(ls -1t "$(MAKE_OUT)/rpmbuild-rhel/SRPMS/"*.src.rpm | head -1) \ - $(foreach c,$(COPR_RHEL_CHROOTS),--chroot $(c)) \ - --nowait - -copr-test-all: copr-test copr-test-cs copr-test-rhel - -# ── COPR release builds (from remote tag) ──────────────────────────── -# -# Fedora: COPR clones the remote repo at the tag and runs .copr/Makefile -# server-side. Nothing built locally. -# -# CentOS Stream / RHEL: the builder container clones the remote repo -# at the tag into a fresh directory, builds the vendored SRPM there, -# and uploads it. The local working tree is never touched. - -_copr-release-preflight: require-copr - @echo "Release tag: $(COPR_RELEASE_TAG)" - @if [ "$(COPR_RELEASE_TAG)" = "HEAD" ]; then \ - echo "Warning: no git tag found, building from HEAD." >&2; \ - echo "Consider tagging a release first: git tag v0.X.Y && git push --tags" >&2; \ - fi - @echo "Checking tag exists on remote..." - @git ls-remote --tags origin "$(COPR_RELEASE_TAG)" | grep -q . || { \ - echo "Error: tag '$(COPR_RELEASE_TAG)' not found on remote." >&2; \ - echo "Push the tag first: git push origin $(COPR_RELEASE_TAG)" >&2; \ - exit 1; \ - } - -copr-release: _copr-release-preflight - @echo "Submitting Fedora release build to COPR from $(COPR_CLONE_URL) @ $(COPR_RELEASE_TAG)..." - copr-cli buildscm $(COPR_PROJECT) \ - --clone-url $(COPR_CLONE_URL) \ - --commit $(COPR_RELEASE_TAG) \ - --scm-type git \ - --method make_srpm \ - --spec packaging/samestack.spec \ + $$(ls -1t "$(RPM_SRPMS)"/*.src.rpm | head -1) \ $(foreach c,$(COPR_FEDORA_CHROOTS),--chroot $(c)) \ - --nowait + --nowait $(if $(COPR_SCRATCH),--scratch) -copr-release-cs: _copr-release-preflight require-builder-image - @echo "Building vendored CentOS Stream SRPM from $(COPR_CLONE_URL) @ $(COPR_RELEASE_TAG)..." - $(PODMAN_RUN_COPR) bash -c '\ - _build=$$(mktemp -d) && \ - git clone --depth 1 --branch $(COPR_RELEASE_TAG) $(COPR_CLONE_URL) $$_build/src && \ - cd $$_build/src && \ - make _vendor-impl _srpm-cs-impl && \ - echo "SRPM built:" && ls -1 $(RPM_SRPMS_CS)/*.src.rpm' +copr-cs: require-builder-image _copr-preflight + $(PODMAN_RUN_COPR) make _copr-cs-impl + +_copr-cs-impl: _srpm-cs-impl @echo "Submitting CentOS Stream SRPM to COPR ($(COPR_PROJECT))..." copr-cli build $(COPR_PROJECT) \ - $$(ls -1t "$(MAKE_OUT)/rpmbuild-cs/SRPMS/"*.src.rpm | head -1) \ + $$(ls -1t "$(RPM_SRPMS_CS)"/*.src.rpm | head -1) \ $(foreach c,$(COPR_CS_CHROOTS),--chroot $(c)) \ - --nowait + --nowait $(if $(COPR_SCRATCH),--scratch) + +copr-rhel: require-builder-image _copr-preflight + $(PODMAN_RUN_COPR) make _copr-rhel-impl -copr-release-rhel: _copr-release-preflight require-builder-image - @echo "Building vendored RHEL SRPM from $(COPR_CLONE_URL) @ $(COPR_RELEASE_TAG)..." - $(PODMAN_RUN_COPR) bash -c '\ - _build=$$(mktemp -d) && \ - git clone --depth 1 --branch $(COPR_RELEASE_TAG) $(COPR_CLONE_URL) $$_build/src && \ - cd $$_build/src && \ - make _vendor-impl _srpm-rhel-impl && \ - echo "SRPM built:" && ls -1 $(RPM_SRPMS_RHEL)/*.src.rpm' +_copr-rhel-impl: _srpm-rhel-impl @echo "Submitting RHEL SRPM to COPR ($(COPR_PROJECT))..." copr-cli build $(COPR_PROJECT) \ - $$(ls -1t "$(MAKE_OUT)/rpmbuild-rhel/SRPMS/"*.src.rpm | head -1) \ + $$(ls -1t "$(RPM_SRPMS_RHEL)"/*.src.rpm | head -1) \ $(foreach c,$(COPR_RHEL_CHROOTS),--chroot $(c)) \ - --nowait - -copr-release-all: copr-release copr-release-cs copr-release-rhel + --nowait $(if $(COPR_SCRATCH),--scratch) # ── Licensing / SPDX hygiene ────────────────────────────────────────