fix: remove stray newline from burr/examples symlink target#748
Merged
Conversation
The burr/examples symlink was committed with target '../examples\n' (12 bytes) instead of '../examples' (11 bytes). Most tools tolerate the trailing newline, but stricter consumers (Java's FileReader via Apache RAT, some Linux extractors of the source tarball) treat '../examples\n' as a literal nonexistent target and fail. Manifested in CI as a RAT crash on the source tarball produced by git-archive: the symlink in the tarball points to '../examples\n', which doesn't resolve, and RAT raises FileNotFoundException trying to read it as a file. Recreate the symlink via 'rm burr/examples && ln -s ../examples burr/examples' to write the correct 11-byte target.
skrawcz
approved these changes
Apr 25, 2026
Previously, if RAT crashed partway through scanning (e.g. on the broken burr/examples symlink that motivated this PR), the verify script would print a warning, parse the truncated XML report, find zero unapproved licenses in whatever RAT managed to scan before the crash, and report success. That false green is what hid the symlink corruption when PR #745 merged into main, even though our release-validation workflow technically ran on main. The CI run scanned 14 files (out of ~700), saw RAT exit code 1, swallowed it, and called the build green. Treat any nonzero exit from RAT as a hard failure of license verification. Print the last 25 lines of RAT stderr so the next debug session has the trace immediately.
elijahbenizzy
added a commit
that referenced
this pull request
Apr 25, 2026
…hook end-of-file-fixer mistreats the symlink as a regular text file and appends '\n' to the link target, turning '../examples' (11 bytes) into '../examples\n' (12 bytes). Strict consumers (Apache RAT, Linux tar extractors) then fail to resolve the symlink. This is exactly the bug that motivated PR #748 — without this exclude, the next pre-commit run on a maintainer's machine would silently re-corrupt the symlink. Also exclude trailing-whitespace defensively for the same reason.
…hook end-of-file-fixer mistreats the symlink as a regular text file and appends '\n' to the link target, turning '../examples' (11 bytes) into '../examples\n' (12 bytes). Strict consumers (Apache RAT, Linux tar extractors) then fail to resolve the symlink. This is exactly the bug that motivated PR #748 — without this exclude, the next pre-commit run on a maintainer's machine would silently re-corrupt the symlink. Also exclude trailing-whitespace defensively for the same reason.
f4df928 to
8d45fbe
Compare
…exts GitHub branch protection matches the check_run.name field exactly. The actual check names produced by our workflow are 'build-artifacts' and 'install-and-smoke (3.12)' — the 'Release Validation / ...' prefix appears in the PR Checks tab UI but is not part of the check name. With the prefixed names in .asf.yaml, branch protection is stuck on 'Expected — Waiting for status to be reported' even though the checks have completed successfully.
Branch protection requires "Release Validation / build-artifacts" and "Release Validation / install-and-smoke (3.12)" as exact context names. Set the workflow's job 'name:' fields to match, so the check_run names that GitHub reports satisfy those contexts directly. Reverts the .asf.yaml change in 612f36b — the source of truth is the prefixed names; align the workflow to them rather than the other way around so this PR can land without admin override.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The
burr/examplessymlink in this repo has been committed with target../examples\n(12 bytes — note the trailing newline) instead of../examples(11 bytes). Most tools tolerate it, but a few don't:../examples\nas the target, can't find that path, and raisesFileNotFoundException.This is the bug that took down the
build-artifactsstep in our release-validation workflow when we built RC3 artifacts from latest main.The fix recreates the symlink via
rm burr/examples && ln -s ../examples burr/examples. The diff GitHub will render is "two identical-looking lines" — but with a "No newline at end of file" marker on the new side, which is the indicator that the blob is exactly 11 bytes.Verification
Before this fix that would print
12.Test plan
git archive HEADextracted on Linux resolvesburr/examples/__init__.py