Repository navigation
ci: install build script tools from hash-locked requirements - #466
Conversation
Argus reviewAuto-review is off for this repo. Tick the box below to run a review on this PR. Running Argus review... Estimated cost
Tip: you can also comment |
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the
|
04b446b to
13664c1
Compare
This comment has been minimized.
This comment has been minimized.
Scorecard flags the six pip installs in the wheel and sdist build scripts, because none check hashes. Each now installs from a lock file in .github/requirements/ with --require-hashes: - build_sdist.sh installs build, twine and tomli from sdist.txt. - cibw/build_wheels.sh installs cibuildwheel from cibuildwheel.txt. - cibw/pre_build.sh installs setuptools, wheel, cython and tomli from pre-build.txt, and for a pre-release toml-cli and qbraid-core from pre-release.txt. The locks pin the versions CI installs today, so nothing builds differently. They include cibuildwheel 4.3.4, Cython 3.3.0, setuptools 84.2.1 and wheel 0.48.0. pre_build.sh runs as cibuildwheel's before-build step for every Python from 3.10 to 3.14, on Linux, Windows and macOS, so pre-build.txt and pre-release.txt are universal from Python 3.10. Dependabot's uv entry picks up the new .in files. The two `pip install --upgrade pip` lines go away, since they were unpinned installs too. The pip that ships in the build environments already reads these files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
13664c1 to
8ce9746
Compare
There was a problem hiding this comment.
Argus · 10/10 — No findings
Argus reviewed 12 files and checked 3 for bugs, security, architecture, and regressions. Custom agent ponytail-review also ran. The diff matches the stated goal.
What this PR does · 13 author checks
- Fix the six Scorecard Pinned-Dependencies alerts in bin/ by installing build script tools from hash-locked requirements without changing how builds run.
Author's checks
- Build script pip installs use lock files in .github/requirements/ with --require-hashes.
- bin/build_sdist.sh installs build, twine and tomli from sdist.txt.
- bin/cibw/build_wheels.sh installs cibuildwheel from cibuildwheel.txt.
- bin/cibw/pre_build.sh installs setuptools, wheel, cython and tomli from pre-build.txt.
- The pre-release branch of bin/cibw/pre_build.sh installs toml-cli and qbraid-core from pre-release.txt.
- Remove both pip install --upgrade pip lines.
- pre-build.txt and pre-release.txt install with pip --require-hashes on Python 3.10 through 3.14.
- sdist.txt installs with pip --require-hashes on Python 3.10, 3.11 and 3.14; cibuildwheel.txt installs on 3.11.
- All locks resolve with uv pip install --dry-run --require-hashes for the four listed Linux, Windows and macOS target platforms.
- build_sdist.sh builds the sdist and passes twine check.
- pre_build.sh passes on Python 3.10; with PRE_RELEASE_BUILD=true it passes on 3.11 and stamps 1.3.0a0.
- All 20 build identifiers in the release matrix resolve with the locked cibuildwheel.
- Merge #465 first and rebase the second PR to resolve the overlapping CHANGELOG addition.
usage: 325.9k tokens · 19 stages
Contract: config/full · checked: bug_hunter, security, architecture, regression, single-pass review, ponytail-review · review took 1m34s
| Stage | Model | Tokens | Cost |
|---|---|---|---|
| Intent | openai/gpt-6.1-sol |
5.8k | $0.0116 |
| Triage | openai/gpt-6.1-sol |
26.5k | $0.0299 |
| Lead agent | openai/gpt-6.1-sol |
3.6k | $0.0204 |
| Review specialists (15) | openai/gpt-6.1-sol |
170.6k | $0.3575 |
| Review | openai/gpt-6.1-sol |
119.5k | $0.2448 |
Dashboard → · @argus-eye help
🧠 Learned: 1 PR summary · 1 architecture note
build_wheels.sh already runs from the repo root: cibuildwheel builds the package in the current directory, and every workflow calls the script from there. Resolving the lock from the script's own folder added nothing, so the path is now the same plain one the script assumes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
|
No findings from Argus, merging |
Summary of changes
Fixes the six Scorecard Pinned-Dependencies alerts on the build scripts in
bin/. Each pip install now uses a lock file in.github/requirements/with--require-hashes:bin/build_sdist.shsdist.txtbin/cibw/build_wheels.shcibuildwheel.txtbin/cibw/pre_build.shpre-build.txtbin/cibw/pre_build.sh(pre-release only)pre-release.txtThe two
pip install --upgrade piplines are removed. They were unpinned installs too, and the build environments already ship a pip that reads these files.Nothing builds differently. The locks pin the versions the last CI run on
maininstalled: cibuildwheel 4.3.4, Cython 3.3.0, setuptools 84.2.1, wheel 0.48.0 and tomli 2.5.0.pre_build.shruns as cibuildwheel's before-build step for each Python from 3.10 to 3.14, on Linux, Windows and macOS. That is whypre-build.txtandpre-release.txtare universal locks from Python 3.10. Dependabot's existinguventry picks up the new.infiles, and.gitattributesalready collapses the.txtfiles in diffs.Merge order
Merge #465 first. Until it lands, Dependabot's weekly
uvupdate fails on the exact qbraid-core pin inlab-env-tools.in. This PR addsqbraid-coretopre-release.in, so it depends on that fix too. Both PRs add a CHANGELOG line in the same spot, so the second one to merge needs a rebase.Validation
pip --require-hashes:pre-build.txtandpre-release.txton Python 3.10 to 3.14.sdist.txton 3.10, 3.11 and 3.14.cibuildwheel.txton 3.11.uv pip install --dry-run --require-hashesforx86_64-manylinux_2_28,x86_64-pc-windows-msvc,aarch64-apple-darwinandx86_64-apple-darwin.build_sdist.shbuilt the sdist and passedtwine check.pre_build.shpassed on Python 3.10.pre_build.shwithPRE_RELEASE_BUILD=truepassed on 3.11 and stamped1.3.0a0.--print-build-identifiers).This PR's CI runs the wheel builds through
pre_build.shand the sdist job. The pre-release path runs only inpre-release.yml. It is covered by the local run above.