Commit Graph
1070 Commits
Author SHA1 Message Date
xtqqczze 924987e45b Revert "chore(deps): update vmactions/freebsd-vm action to v1.5.6 (#12977)"
This reverts commit 055c1d985b.
2026-09-12 14:34:57 +02:00
Sylvestre Ledru 51ed5dc4de CI: fail closed when the reference cannot be read
* .github/workflows/GnuTests.yml (Fetch reference results): Retry the
branch lookup and treat only a 404 as "nothing published yet"; a
transient API error used to look like a missing baseline and silently
skip both comparisons, letting a regression through unnoticed.
(Publish to the reference branch): Same for the published run id, which
guards the force-push.  A suppressed error read as run id 0 would let
this run overwrite a reference a newer run had already placed.
* .github/workflows/NotifyTracking.yml: Do not name a cadence for the
tracking repository's fallback schedule, which is its own to change.
2026-09-10 12:07:42 +02:00
Sylvestre Ledru cbb2643c82 CI: pin the reference read to one commit, notify on failed runs too
* .github/workflows/GnuTests.yml (Fetch reference results): Resolve the
reference branch tip once and read every file at that commit.  The
branch is force-pushed by 'publish-reference', so reading each file by
branch name could straddle a publish and pair one file with another
reference's, comparing against a baseline that never existed.
* .github/workflows/NotifyTracking.yml (jobs.dispatch.if): Dispatch for
any completed run, not only a successful one.  'GnuTests' uploads its
results and only then fails the comparison when it finds a new failure,
and 'publish-reference' publishes regardless, so requiring success left
the graphs un-refreshed for exactly the regressions they exist to show.
2026-09-10 12:07:42 +02:00
Sylvestre Ledru 05b0452518 CI: fix the reference publish race and the secrets conditional
* .github/workflows/NotifyTracking.yml (jobs.dispatch.env): Add
HAVE_APP_CREDENTIALS; the 'secrets' context is not available in a step's
'if:', where it fails with "Unrecognized named-value: 'secrets'", so the
check has to go through a job-level env var.
* .github/workflows/GnuTests.yml (jobs.publish-reference.concurrency):
Serialize publishing.  The step reads the published run id and then
force-pushes, so two overlapping runs could interleave those and let an
older one overwrite a newer reference.
2026-09-10 12:07:42 +02:00
Sylvestre Ledru 9aeedc1e35 CI: notify coreutils-tracking when its input data changes
* .github/workflows/NotifyTracking.yml: New workflow sending a
repository_dispatch to uutils/coreutils-tracking once 'GnuTests' or
'make' has finished on the default branch.

The tracking repository polled our artifacts on a cron, so its graphs
lagged the data by up to six hours.  Telling it when the data is ready
lets it refresh immediately; its schedule stays as a safety net.

A GITHUB_TOKEN only covers the repository it runs in, so this needs a
credential of its own: an organization-owned GitHub App installed on the
tracking repository, read from the TRACKING_APP_ID and
TRACKING_APP_PRIVATE_KEY secrets.  Without them the step warns and the
tracking repository keeps refreshing on its own schedule.
2026-09-10 12:07:42 +02:00
Sylvestre Ledru a62376afb7 CI: publish GNU reference results to a branch
* .github/workflows/GnuTests.yml (env): Add REFERENCE_BRANCH.
(on.push.branches): Exclude the reference branch, which carries no code.
(aggregate): Fetch the reference from that branch rather than resolving
and downloading a workflow artifact.
(publish-reference): New job publishing this run's results on a push to
the default branch.

An artifact is addressable only by run id, so finding one meant listing
workflow runs on the default branch.  That listing's 'branch' filter is
served by an eventually consistent index which intermittently returns a
snapshot weeks out of date, making every test fixed on the default
branch since then look like a fix contributed by the pull request.
2026-09-10 12:07:42 +02:00
oech3 1fb0a48ccb freebsd.yml: fix warning 2026-09-10 10:11:54 +02:00
renovate[bot] 055c1d985b chore(deps): update vmactions/freebsd-vm action to v1.5.6 (#12977)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-09 15:54:01 +00:00
oech3 9cc5daeca9 hostid: build for Windows & remove unsafe (#14427) 2026-09-08 14:05:29 +02:00
Eduardo Rodrigues 1d08c590d0 fix(mktemp): add wasi platform support for temporary directory handling
- Add conditional compilation for WASI target to avoid panics from `std::env::temp_dir()`
- Implement fallback logic in `Options` to read TMPDIR environment variable directly on WASI
- Update `get_tmpdir_env_or_default()` with WASI-specific handling for temp directory resolution
- Add `#[cfg_attr]` annotations to skip host path-dependent tests on WASI sandbox environment
- Ignore 14 tests that require host filesystem access when running under wasi_runner
- Ignore directory permission test on WASI due to lack of `chmod` support and mode parameter limitations
2026-09-08 13:42:43 +02:00
Daniel Hofstetter 1119aff91a ci: fix style_empty_assertions job
by adding checkout step
2026-09-08 13:03:49 +02:00
oech3 9a5b6c90f6 openbsd.yml: remove C toolchain 2026-09-08 10:13:35 +02:00
oech3 9225d22f8b fix outdated comments about onig 2026-09-08 07:34:31 +02:00
Eduardo Rodrigues 13deb9633b fix(wasi): cp attribute preservation and reflink handling
cp treats ENOSYS like EOPNOTSUPP when skipping optional attribute
preservation (WASI has no chmod/chown at all), reads timestamps via
Metadata::accessed/modified instead of the filetime crate (which
panics there), and only errors out of --reflink when explicitly
requested rather than whenever it isn't Never.
2026-09-07 19:26:34 +02:00
oech3 97feb56cdf CICD.yml: remove a hack for onig 2026-09-07 16:10:48 +02:00
wtcpython 35515138e2 expr: replace onig with fancy-regex
Replace the onig C-dependency in expr with the pure-Rust fancy-regex crate.
This removes the onig_sys C library dependency while preserving full POSIX BRE,
backreference, multibyte UTF-8, and C locale compatibility.
2026-09-07 11:31:36 +02:00
Anthony a9176eb1cd tests: enable tail integration coverage on WASI (#13805)
* tests: enable tail integration coverage on WASI

* tests/tail: preserve native platform coverage

* tests: improve WASI tail coverage

* tests/tail: synchronize truncation checks

* tests: improve WASI tail coverage
2026-09-01 09:26:45 +02:00
Sylvestre Ledru bf65901e1e ci: do not train a PGO profile on Windows arm64
The instrumented aarch64-pc-windows-msvc binary writes .profraw files that llvm-profdata rejects with "symbol name is empty" (rust-lang/rust#150123, rust-lang/rust#156675). The job keeps building natively, without PGO.
2026-08-30 23:38:17 +02:00
Sylvestre Ledru 25bf6ba5a2 ci: build the Windows arm64 artifact natively with PGO 2026-08-30 23:38:17 +02:00
Sylvestre Ledru f36da45909 ci: build the published macOS and Windows artifacts with PGO 2026-08-30 23:38:17 +02:00
Sylvestre Ledru 21a5e91ea5 mv: check the single source open at the syscall level
mv already holds the invariant: it has its own cross-device fallback
rather than cp's copy machinery, so it never had the three-open problem.
These pin it in place, since the pending fd-anchored rework of the EXDEV
directory path (GHSA-pp2g) touches exactly this code.

Three assertions: a same-filesystem move must open the source zero times
(it is a rename, not a copy), and the cross-device file and directory
fallbacks must open each source exactly once. Each was verified to fail
by injecting a redundant File::open at the matching call site.

The directory case matches any path ending in the source name opened
O_RDONLY, so it keeps working once the traversal opens by bare name
under a directory fd. Cross-device needs a second filesystem; /dev/shm
supplies it, and the checks skip loudly when it shares a device with
TEMP_DIR rather than passing vacuously.
2026-08-30 21:57:17 +02:00
Sylvestre Ledru 1de64e48b4 cp: check the single source open at the syscall level
New util/check-open-once.sh straces cp and asserts the source path is
opened exactly once, across the default, --sparse=always and
--sparse=never paths. Verified it fails on the previous code with 'opened
the source 3 times', so it guards the invariant rather than restating it.

Kept out of check-toctou.sh: no exploit is known for the old window --
every open used the same credentials and flags -- and the security
scripts should stay about attacker-exploitable splits. The new header
says so and points at the two that do.

Traces open(2) as well as openat(2): rustix issues the former on Linux,
so an openat-only filter matches nothing and passes vacuously.
2026-08-30 21:57:17 +02:00
Sylvestre Ledru 3694e5d3cc ci: enable PGO for macOS arm64 release builds 2026-08-29 21:29:22 +02:00
Sylvestre Ledru 594dc6a8ef ci: enable PGO for Linux x86_64 and aarch64 release builds 2026-08-29 17:47:54 +02:00
oech3 7d10e5bc2b try to fix publishing tag/latest-commit 2026-08-26 21:23:49 +02:00