Conversation
crates.io treats `-` and `_` as equivalent, so `datafusion-iceberg` collides with the existing, unrelated `datafusion_iceberg` crate. Restore `iceberg-datafusion`, the name this crate was published under from apache/iceberg-rust. The workspace version already continues that version line, and existing users keep their `iceberg_datafusion::` imports. Part of apache#30.
Add dev/release/ scripts and documentation for producing ASF source releases, adapted from apache/datafusion: - create-tarball.sh, release-tarball.sh and verify-release-candidate.sh to create, verify and publish release candidates - generate-changelog.py to write dev/changelog/<version>.md - run-rat.sh, check-rat-report.py and rat_exclude_files.txt for the Apache RAT license audit, plus a RAT job in CI - README.md describing the release process Restore the LICENSE and NOTICE symlinks in crates/datafusion so the published crate includes them. Add the ASF license header to .gitignore, the only file RAT flagged. Closes apache#31.
This was referenced Oct 1, 2026
apache#34 adds CLAUDE.md as a symlink to AGENTS.md. RAT reads symlinks in a source tarball as files without a license header, so exclude it, as apache/datafusion-comet and apache/datafusion-python do. AGENTS.md itself carries the header and is still checked.
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.
Which issue does this PR close?
datafusion-icebergis taken on crates.io; switch back toiceberg-datafusion#30.Rationale for this change
This repository was split out of apache/iceberg-rust. That project keeps its release tooling at the repository level, so none of it came over with the crate, and there's currently no way to produce an ASF source release.
#30 proposes keeping the crate's original crates.io name,
iceberg-datafusion, so that releases continue its existing version line. The release tooling is written for that name, so this PR also does the rename.What changes are included in this PR?
Three commits:
Rename the crate back to
iceberg-datafusion(libraryiceberg_datafusion).datafusion-icebergcollides on crates.io with the unrelateddatafusion_icebergcrate. The change is mechanical: manifests,Cargo.lockandusepaths.Add release infrastructure in
dev/release/, adapted from apache/datafusion and apache/datafusion-ballista:create-tarball.sh: checks that the RC tag exists and that itsCargo.tomlhas the release version. It creates the source tarball withgit archive, runs RAT on it, signs it, writes checksums, uploads it todist/dev/datafusionand prints the vote email.verify-release-candidate.sh: checks the signature and checksums, then runscargo fmt --check,cargo test --workspace --lockedandcargo publish --dry-runin a sandbox with the pinned toolchain.release-tarball.sh: moves an approved RC todist/release/datafusion.generate-changelog.py: writesdev/changelog/<version>.mdfrom merged PRs.run-rat.sh,check-rat-report.pyandrat_exclude_files.txt: the Apache RAT license audit. RAT is pinned to 0.16.1 and its jar to a SHA-512.README.md: the release process.The commit also:
RATjob to CI. It audits agit archiveof the PR, which is exactly what a release tarball contains.LICENSEandNOTICEsymlinks incrates/datafusion, so the published crate includes them again (Adapt project for new repo (make it compile + tests passing) #2 removed them)..gitignore, the only file RAT flagged.Exclude
CLAUDE.mdfrom RAT, as Comet and datafusion-python do. docs: add AGENTS.md for coding agents #34 adds it as a symlink toAGENTS.md, and RAT reads symlinks in a tarball as files without a license header.Not included:
RATa required status check in.asf.yaml. That can follow once the job has run here.icebergto be a crates.io release rather than a git revision (see Add release infrastructure #31). Step 1 of the README andverify-release-candidate.shboth check for this.What is the testing strategy for this PR?
These scripts only run at release time, so I exercised each one locally.
svnand the dist downloads were stubbed, and signing used either a stub or a throwaway key, so nothing was uploaded.create-tarball.sh: rejects an unknown tag, and a tag whoseCargo.tomlversion doesn't match. On the happy path the tarball passes RAT, the checksums verify, and the expectedsvncommands are issued.verify-release-candidate.sh: ran end to end against an RC signed with a throwaway key and served from a local directory. The signature verifies after importingKEYSinto an empty keyring, and the checksums verify.cargo fmtand all tests pass in the sandbox.cargo publish --dry-runthen fails with "dependencyicebergdoes not specify a version", which is the expected result whileicebergis a git dependency.release-tarball.sh: cancels on "n". On "y" it issues the expectedsvncommands and cleans up.generate-changelog.py: generated a changelog forbf53e29..a2bc942from the GitHub API.run-rat.sh: passes on agit archiveof this branch, flags a file without a header, and rejects a corrupted RAT jar.shellcheckandactionlintare clean.cargo package --list -p iceberg-datafusionincludesLICENSEandNOTICE. fmt, clippy and tests pass after the rename.Are there any user-facing changes?
The crate is renamed back to
iceberg-datafusion, with import pathiceberg_datafusion. Nothing was ever published asdatafusion-iceberg, so no released version changes. Users upgrading fromiceberg-datafusion0.10.x keep their dependency name and imports.