Skip to content

Full rebuild mode empties non-stable distributions due to incomplete per-distribution pool migration #24

@mairas

Description

@mairas

Summary

The scheduled daily rebuild (Nov 17, 06:00 UTC) emptied all non-stable distributions (trixie-unstable, bookworm-unstable, etc.) because full rebuild mode was not updated to handle the per-distribution pool structure introduced in PR #16.

Impact

  • Severity: HIGH
  • Affected: All unstable and distribution-specific repositories
  • Lost packages: cockpit-apt_0.2.0-1_all.deb from trixie-unstable
  • Current state: Only stable distribution receives packages during scheduled rebuilds

Root Cause

Commit dfb2b04 (Nov 15) changed from shared pool/main/ to distribution-specific pools like pool/trixie-unstable/main/. However, full rebuild mode (.github/workflows/update-repo.yml lines 217-237) was not updated:

Current buggy behavior:

# Full rebuild mode
echo "\${{ steps.discover.outputs.repos }}" | while IFS= read -r repo; do
    download_from_repo "$repo" "latest"  # ❌ Hardcoded to stable releases only
done

Problems:

  1. Downloads only stable releases (not pre-releases for unstable channels)
  2. Downloads go to pool/stable/main/ (default when TARGET_DIST not set)
  3. Each distribution now scans only its own pool directory
  4. Result: Non-stable distributions find nothing and become empty

Evidence

  • Git commit 95ec949 (Nov 17, ~06:00 UTC): delete mode 100644 pool/trixie-unstable/main/cockpit-apt_0.2.0-1_all.deb
  • Commit message from dfb2b04 warned: "This is a breaking change in pool structure. Migration strategy for existing packages needs to be decided before deployment."

Expected Behavior

Full rebuild mode should:

  1. Iterate through each distribution separately
  2. Determine channel from distribution name (e.g., "trixie-unstable" → "unstable")
  3. Download appropriate release types (stable=latest, unstable=prerelease)
  4. Set TARGET_DIST correctly so packages land in correct pool directories

Proposed Fix

Update .github/workflows/update-repo.yml full rebuild mode to iterate through distributions and set appropriate release tags and target distributions for each.

Immediate Actions Needed

  1. Restore missing packages: Trigger targeted updates to repopulate unstable distributions
  2. Disable scheduled rebuilds: Comment out schedule: '0 6 * * *' until fix is verified
  3. Implement fix: Update full rebuild mode logic
  4. Add validation: Check package counts before/after rebuild to detect this issue

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions