Skip to content

Revert "ci: add nightly job to sync source mirror with pkgs in builtin" - #6245

Merged
tgamblin merged 1 commit into
developfrom
revert-6069-ci/add-scheduled-mirror-update
Aug 26, 2026
Merged

Revert "ci: add nightly job to sync source mirror with pkgs in builtin"#6245
tgamblin merged 1 commit into
developfrom
revert-6069-ci/add-scheduled-mirror-update

Conversation

@tgamblin

Copy link
Copy Markdown
Member

Reverts #6069

Job is failing with:

==> Installing "clingo-bootstrap@=spack~apps~docs+ipo+optimized+python+static_libstdcpp build_system=cmake build_type=Release commit=2a025667090d71b2c9dce60fe924feb6bde8f667 generator=make patches:=bebb819,ec99431 platform=linux os=centos7 target=x86_64" from a buildcache
==> Compilers have been configured automatically from PATH inspection
==> Starting concretization pool with 4 processes
==> Error: failed to concretize `acfl@=24.04` for the following reasons:
       1. acfl: Only available on Aarch64
  Analyzing the cause of the failure, this may take a moment...
==> Error:      2. acfl: Only available on Aarch64
        required because conflict constraint
          required because acfl@=24.04 requested explicitly
        required because conflict is triggered when target=x86_64:
          required because acfl@=24.04 requested explicitly
==> Error: failed to concretize `acfl@=24.04` for the following reasons:
     1. acfl: Only available on Aarch64
     2. acfl: Only available on Aarch64
        required because conflict constraint
          required because acfl@=24.04 requested explicitly
        required because conflict is triggered when target=x86_64:
          required because acfl@=24.04 requested explicitly
Some sources failed to fetch; uploading the rest
Nothing was mirrored

which implies several things I missed in review:

  1. The sync job shouldn't need to concretize; we know tarball URLs for versions statically and can add them to the mirror that way.
  2. acfl really needs a redistribute(source=False, binary=False) directive (probably along with some of the other missing packages, as it's proprietary software that we cannot mirror.

@spackbot-triage spackbot-triage Bot added the ci Related to CI/CD workflows and pipelines label Aug 26, 2026
@alecbcs

alecbcs commented Aug 26, 2026

Copy link
Copy Markdown
Member

I'm happy to proceed with the revert here if that's what folks want to do.

The sync job shouldn't need to concretize; we know tarball URLs for versions statically and can add them to the mirror that way.

This workflow isn't just adding the source tarballs. It's also picking up the required patches and resources that apply to missing versions. The concretization comes from spack mirror create which has always used a concretization to determine which of those additional artifacts need to be pulled into a mirror. (Although I think you're right that we could instead determine which patches and resources to mirror via static analysis instead.)

acfl really needs a redistribute(source=False, binary=False) directive (probably along with some of the other missing packages, as it's proprietary software that we cannot mirror

Agreed. This workflow is a good canary in the coal mine to finding binary packages and non-redistributable packages that have made it into the repository without being correctly labeled. As such I kinda lean keeping it in and fixing the packages that pop up as problems over time.

@tgamblin
tgamblin merged commit 0952ff8 into develop Aug 26, 2026
1 of 2 checks passed
@tgamblin
tgamblin deleted the revert-6069-ci/add-scheduled-mirror-update branch August 26, 2026 22:52
@tgamblin

Copy link
Copy Markdown
Member Author

Would rather revert than have this job run needlessly. GitHub clearly needs the help :).

tgamblin added a commit that referenced this pull request Aug 27, 2026
The source mirror analysis turned up packages we can't legally mirror
(acfl was already failing this way in #6245). Add license() and
redistribute(source=False, binary=False) to:

- acfl, armpl-gcc: Arm EULA
- aocc: AMD EULA (install already requires +license-agreed)
- aqlprofile: proprietary binaries; MIT as of rocm 7.0.0, so scope to @:6
- dislin: proprietary freeware
- namd: UIUC non-commercial license (was already non-redistributable)
- psipred: UCL non-commercial license
- py-x21: closed-source wheels
- charmpp: Apache-2.0 as of v7.1; older versions are non-commercial

Assisted-by: Claude <noreply@anthropic.com>

Signed-off-by: Todd Gamblin <tgamblin@llnl.gov>
tgamblin added a commit that referenced this pull request Aug 27, 2026
Re-adds the nightly source mirror sync from #6069 (reverted in #6245).

Nothing about mirroring sources requires concretization: URLs and
sha256 checksums for version tarballs, resources, and patches are all
known statically from `package.py` files. The
`find-missing-mirror-artifacts.py` script here:

1. lists every sha256-addressed artifact in the builtin repo:
   - version tarballs
   - resources
   - URL patches (in packages and from dependencies)

   while skipping manual-download and non-redistributable packages;

2. compares digests against a listing of the mirror's content-addressed
   `_source-cache/archive/` prefix; and

3. emits one TSV line per missing artifact with its:
   - `sha256`
   - exact mirror path, computed with Spack's `default_mirror_layout()`
   - its candidate URLs in order of preference.

A GitHub Actions workflow then downloads each artifact with curl,
verifies the sha256, and uploads artifacts to S3 one at a time.
disk usage is bounded and individual fetch failures only skip that
artifact until the next nightly run.

Co-authored-by: Alec Scott <alec@llnl.gov>
Assisted-by: Claude <noreply@anthropic.com>
Signed-off-by: Todd Gamblin <tgamblin@llnl.gov>

* sync-src-mirror: fetch with spack instead of curl

Merge the download/verify/upload loop into the finder script and fetch
with spack's own fetch strategies via Stage.fetch()/check(). This
honors per-package fetch_options, reuses spack's checksum and redirect
handling, and drops the TSV/bash handoff. Uploads still go through
`aws s3 cp`, one artifact at a time, so disk stays bounded.

Without --upload-to, the script just lists missing artifacts, which
makes it easy to run locally.

Assisted-by: Claude <noreply@anthropic.com>
Signed-off-by: Todd Gamblin <tgamblin@llnl.gov>

---------

Signed-off-by: Todd Gamblin <tgamblin@llnl.gov>
Co-authored-by: Alec Scott <alec@llnl.gov>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci Related to CI/CD workflows and pipelines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants