andygrove opened a new pull request, #32:
URL: https://github.com/apache/datafusion-iceberg/pull/32
## Which issue does this PR close?
- Closes #31.
- Part of #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?
Two commits:
1. **Rename the crate back to `iceberg-datafusion`** (library
`iceberg_datafusion`). `datafusion-iceberg` collides on crates.io with the
unrelated `datafusion_iceberg` crate. The change is mechanical: manifests,
`Cargo.lock` and `use` paths.
2. **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 its
`Cargo.toml` has the release version. It creates the source tarball with `git
archive`, runs RAT on it, signs it, writes checksums, uploads it to
`dist/dev/datafusion` and prints the vote email.
- `verify-release-candidate.sh`: checks the signature and checksums, then
runs `cargo fmt --check`, `cargo test --workspace --locked` and `cargo publish
--dry-run` in a sandbox with the pinned toolchain.
- `release-tarball.sh`: moves an approved RC to `dist/release/datafusion`.
- `generate-changelog.py`: writes `dev/changelog/<version>.md` from
merged PRs.
- `run-rat.sh`, `check-rat-report.py` and `rat_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:
- adds a `RAT` job to CI. It audits a `git archive` of the PR, which is
exactly what a release tarball contains.
- restores `LICENSE` and `NOTICE` symlinks in `crates/datafusion`, so the
published crate includes them again (#2 removed them).
- adds the ASF license header to `.gitignore`, the only file RAT flagged.
Not included:
- Making `RAT` a required status check in `.asf.yaml`. That can follow once
the job has run here.
- Publishing still needs `iceberg` to be a crates.io release rather than a
git revision (see #31). Step 1 of the README and `verify-release-candidate.sh`
both check for this.
## What is the testing strategy for this PR?
These scripts only run at release time, so I exercised each one locally.
`svn` and 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 whose
`Cargo.toml` version doesn't match. On the happy path the tarball passes RAT,
the checksums verify, and the expected `svn` commands 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 importing `KEYS` into an empty keyring, and the checksums verify. `cargo
fmt` and all tests pass in the sandbox. `cargo publish --dry-run` then fails
with "dependency `iceberg` does not specify a version", which is the expected
result while `iceberg` is a git dependency.
- **`release-tarball.sh`:** cancels on "n". On "y" it issues the expected
`svn` commands and cleans up.
- **`generate-changelog.py`:** generated a changelog for `bf53e29..a2bc942`
from the GitHub API.
- **`run-rat.sh`:** passes on a `git archive` of this branch, flags a file
without a header, and rejects a corrupted RAT jar.
- **Other checks:** `shellcheck` and `actionlint` are clean. `cargo package
--list -p iceberg-datafusion` includes `LICENSE` and `NOTICE`. fmt, clippy and
tests pass after the rename.
## Are there any user-facing changes?
The crate is renamed back to `iceberg-datafusion`, with import path
`iceberg_datafusion`. Nothing was ever published as `datafusion-iceberg`, so no
released version changes. Users upgrading from `iceberg-datafusion` 0.10.x keep
their dependency name and imports.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]