This is an automated email from the ASF dual-hosted git repository.
paleolimbot pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-nanoarrow.git
The following commit(s) were added to refs/heads/main by this push:
new 2ef8dc3a chore(dev/release): Update release instructions for 0.4.0
(#373)
2ef8dc3a is described below
commit 2ef8dc3a810824e8cda44ffe56ca1b4cd503110e
Author: Dewey Dunnington <[email protected]>
AuthorDate: Fri Jan 26 10:55:05 2024 -0400
chore(dev/release): Update release instructions for 0.4.0 (#373)
---
.env | 2 +-
dev/release/README.md | 83 +++++++++++++++++++--------------
dev/release/verify-release-candidate.sh | 7 +++
docker-compose.yml | 6 +--
4 files changed, 60 insertions(+), 38 deletions(-)
diff --git a/.env b/.env
index 168b033f..b364fee0 100644
--- a/.env
+++ b/.env
@@ -26,7 +26,7 @@ NANOARROW_PLATFORM=alpine
NANOARROW_ARCH=amd64
# Source directory (so that the docker compose app can be used on another
checkout)
-NANOARROW_SOURCE_DIR="."
+NANOARROW_DOCKER_SOURCE_DIR="."
# By default, verify HEAD
NANOARROW_VERIFY_ARGS=""
diff --git a/dev/release/README.md b/dev/release/README.md
index 628e1d00..7acc308c 100644
--- a/dev/release/README.md
+++ b/dev/release/README.md
@@ -25,12 +25,12 @@ Release candidates for nanoarrow are uploaded to
https://dist.apache.org/repos/d
prior to a release vote being called on the
[Apache Arrow developer mailing
list](https://lists.apache.org/[email protected]).
A script (`verify-release-candidate.sh`) is provided to verify such a release
candidate.
-For example, to verify nanoarrow 0.3.0-rc0, one could run:
+For example, to verify nanoarrow 0.4.0-rc0, one could run:
```bash
git clone https://github.com/apache/arrow-nanoarrow.git arrow-nanoarrow
cd arrow-nanoarrow/dev/release
-./verify-release-candidate.sh 0.3.0 0
+./verify-release-candidate.sh 0.4.0 0
```
Full verification requires [CMake](https://cmake.org/download/) to build and
run the test
@@ -53,16 +53,22 @@ The verification script itself is written in `bash` and
requires the `curl`, `gp
`shasum`/`sha512sum` commands. These are typically available from a package
manager except on Windows (see below).
-To run only C library verification (requires CMake and Arrow C++ but not R):
+To run only C library verification (requires CMake and Arrow C++ but not R or
Python):
```bash
-TEST_DEFAULT=0 TEST_C=1 TEST_C_BUNDLED=1 ./verify-release-candidate.sh 0.3.0 0
+TEST_DEFAULT=0 TEST_C=1 TEST_C_BUNDLED=1 ./verify-release-candidate.sh 0.4.0 0
```
To run only R package verification (requires R but not CMake or Arrow C++):
```bash
-TEST_DEFAULT=0 TEST_R=1 ./verify-release-candidate.sh 0.3.0 0
+TEST_DEFAULT=0 TEST_R=1 ./verify-release-candidate.sh 0.4.0 0
+```
+
+To run only Python verification (requires Python but not CMake or Arrow C++):
+
+```bash
+TEST_DEFAULT=0 TEST_PYTHON=1 ./verify-release-candidate.sh 0.4.0 0
```
### MacOS
@@ -99,6 +105,9 @@ export
NANOARROW_CMAKE_OPTIONS="-DArrow_DIR=$(pwd)/arrow/lib/cmake/Arrow -DCMAKE
You can install R using the instructions provided on the
[R Project Download page](https://cloud.r-project.org/bin/macosx/).
+The system `python3` provided by MacOS is sufficient to verify the release
+candidate.
+
### Conda (Linux and MacOS)
Using `conda`, one can install all requirements needed for verification on
Linux
@@ -157,7 +166,7 @@ export R_HOME="/c/Program Files/R/R-4.2.2"
On Debian/Ubuntu (e.g., `docker run --rm -it ubuntu:latest`) you can install
prerequisites using `apt`.
```bash
-apt-get update && apt-get install -y git g++ cmake r-base gnupg curl
+apt-get update && apt-get install -y git g++ cmake r-base gnupg curl
python3-dev python3-venv
# For Arrow C++
apt-get install -y -V ca-certificates lsb-release wget
@@ -178,7 +187,7 @@ On recent Fedora (e.g., `docker run --rm -it
fedora:latest`), you can install al
using `dnf`:
```bash
-dnf install -y git cmake R gnupg curl libarrow-devel
+dnf install -y git cmake R gnupg curl libarrow-devel python3-devel
python3-virtualenv
```
### Arch Linux
@@ -207,7 +216,8 @@ https://dl-cdn.alpinelinux.org/alpine/edge/testing/
EOF
apk update
-apk add bash linux-headers git cmake R R-dev g++ gnupg curl apache-arrow-dev
+apk add bash linux-headers git cmake R R-dev g++ gnupg curl apache-arrow-dev \
+ python3-dev
```
### Centos7
@@ -238,7 +248,7 @@ curl -L
https://github.com/apache/arrow/archive/refs/tags/apache-arrow-9.0.0.tar
make install
# Pass location of Arrow, cmake, and ctest to the verification script
-export NANOARROW_CMAKE_OPTIONS="-DArrow_DIR=$(pwd)/arrow/lib/cmake/Arrow"
+export NANOARROW_CMAKE_OPTIONS="-DArrow_DIR=$(pwd)/arrow/lib64/cmake/arrow"
export CMAKE_BIN=cmake3
export CTEST_BIN=ctest3
@@ -246,6 +256,9 @@ export CTEST_BIN=ctest3
# not skip verifying signatures, just allows errors for unsupported entries in
# the global Arrow KEYS file.
export NANOARROW_ACCEPT_IMPORT_GPG_KEYS_ERROR=1
+
+# System Python on centos7 is not new enough to support the Python package
+export TEST_PYTHON=0
```
### Big endian
@@ -257,7 +270,7 @@ One can verify a nanoarrow release candidate on big endian
by setting
## Creating a release candidate
The first step to creating a nanoarrow release is to create a `maint-VERSION`
branch
-(e.g., `usethis::pr_init("maint-0.3.0")`) and push the branch to `upstream`.
This is
+(e.g., `usethis::pr_init("maint-0.4.0")`) and push the branch to `upstream`.
This is
a good opportunity to run though the above instructions to make sure the
verification
script and instructions are up-to-date. You may also wish to start a manual
dispatch
of the [Verification
workflow](https://github.com/apache/arrow-nanoarrow/actions/workflows/verify.yaml)
@@ -268,11 +281,11 @@ When this is complete, run
```bash
# from the repository root
# 01-prepare.sh <nanoarrow-dir> <prev_veresion> <version> <next_version>
<rc-num>
-dev/release/01-prepare.sh . 0.0.0 0.3.0 0.4.0 0
+dev/release/01-prepare.sh . 0.3.0 0.4.0 0.5.0 0
```
This will update version numbers, the changelong, and create the git tag
-`apache-arrow-nanoarrow-0.3.0-rc0`. Check to make sure that the changelog
+`apache-arrow-nanoarrow-0.4.0-rc0`. Check to make sure that the changelog
and versions are what you expect them to be before pushing the tag (you
may wish to do this by opening a dummy PR to run CI and look at the diff
from the main branch). When you are satisfied that the code at this tag
@@ -294,7 +307,7 @@ file to exist setting the appropriate `GPG_KEY_ID`
environment variable.
```bash
# 02-sign.sh <version> <rc-num>
-dev/release/02-sign.sh 0.3.0 0
+dev/release/02-sign.sh 0.4.0 0
```
Finally, run
@@ -306,7 +319,7 @@ file to exist setting the appropriate `APACHE_USERNAME`
environment variable.
```
# 03-source.sh $0 <version> <rc-num>
-dev/release/03-source.sh 0.3.0 0
+dev/release/03-source.sh 0.4.0 0
```
You should check that the release verification runs locally and/or
@@ -318,7 +331,7 @@ At this point the release candidate is suitable for a vote
on the Apache Arrow d
```
Hello,
-I would like to propose the following release candidate (rc0) of Apache Arrow
nanoarrow [0] version 0.3.0. This is an initial release consisting of 42
resolved GitHub issues from 4 contributors [1].
+I would like to propose the following release candidate (rc0) of Apache Arrow
nanoarrow [0] version 0.4.0. This is an initial release consisting of 44
resolved GitHub issues from 5 contributors [1].
This release candidate is based on commit: {rc_commit} [2]
@@ -329,15 +342,15 @@ Please download, verify checksums and signatures, run the
unit tests, and vote o
The vote will be open for at least 72 hours.
-[ ] +1 Release this as Apache Arrow nanoarrow 0.3.0
+[ ] +1 Release this as Apache Arrow nanoarrow 0.4.0
[ ] +0
-[ ] -1 Do not release this as Apache Arrow nanoarrow 0.3.0 because...
+[ ] -1 Do not release this as Apache Arrow nanoarrow 0.4.0 because...
[0] https://github.com/apache/arrow-nanoarrow
-[1] https://github.com/apache/arrow-nanoarrow/milestone/3?closed=1
-[2]
https://github.com/apache/arrow-nanoarrow/tree/apache-arrow-nanoarrow-0.3.0-rc0
-[3]
https://dist.apache.org/repos/dist/dev/arrow/apache-arrow-nanoarrow-0.3.0-rc0/
-[4]
https://github.com/apache/arrow-nanoarrow/blob/apache-arrow-nanoarrow-0.3.0-rc0/CHANGELOG.md
+[1] https://github.com/apache/arrow-nanoarrow/milestone/4?closed=1
+[2]
https://github.com/apache/arrow-nanoarrow/tree/apache-arrow-nanoarrow-0.4.0-rc0
+[3]
https://dist.apache.org/repos/dist/dev/arrow/apache-arrow-nanoarrow-0.4.0-rc0/
+[4]
https://github.com/apache/arrow-nanoarrow/blob/apache-arrow-nanoarrow-0.4.0-rc0/CHANGELOG.md
[5] https://github.com/apache/arrow-nanoarrow/blob/main/dev/release/README.md
```
@@ -351,6 +364,8 @@ After a passing release vote, the following tasks must be
completed:
[ ] Uploaded artifacts to Subversion
[ ] Created GitHub release
[ ] Submit R package to CRAN
+[ ] Submit Python package to PyPI
+[ ] Update Python package on conda-forge
[ ] Release blog post at https://github.com/apache/arrow-site/pull/288
[ ] Sent announcement to [email protected]
[ ] Removed old artifacts from SVN
@@ -367,7 +382,7 @@ and mark it as closed.
The reporter system for Arrow can be found at
<https://reporter.apache.org/addrelease.html?arrow>. To add a release, a
PMC member must log in with their Apache username/password. The release
-names are in the form `NANOARROW-0.3.0`.
+names are in the form `NANOARROW-0.4.0`.
### Upload artifacts to Subversion / Create GitHub Release
@@ -377,7 +392,7 @@ This script must be run by a PMC member whose
`APACHE_USERNAME` environment vari
has been set in `.env`.
```bash
-dev/release/post-01-upload.sh 0.3.0 0
+dev/release/post-01-upload.sh 0.4.0 0
```
### Submit R package to CRAN
@@ -389,8 +404,8 @@ Before a release candidate is created, the first section of
`usethis::use_release_issue()` should all be completed (i.e., any changes
after release should be minor tweaks). The steps are:
-- Ensure you are on the release branch (i.e., `git switch maint-0.3.0`)
-- Run `usethis::pr_init("r-cran-maint-0.3.0")` and push the branch to your
+- Ensure you are on the release branch (i.e., `git switch maint-0.4.0`)
+- Run `usethis::pr_init("r-cran-maint-0.4.0")` and push the branch to your
fork.
- Ensure `cran_comments.md` is up-to-date.
- Run `devtools::check()` locally and verify that the package version is
correct
@@ -402,7 +417,7 @@ after release should be minor tweaks). The steps are:
Any changes required at this stage should be made as a PR into `main` and
cherry-picked into the `r-cran-maint-XXX` packaging branch. (i.e.,
`git cherry-pick 01234abcdef`). If any changes
-to the source are required, bump the "tweak" version (e.g., `Version: 0.3.0.1`
+to the source are required, bump the "tweak" version (e.g., `Version: 0.4.0.1`
in `DESCRIPTION`).
### Release blog post
@@ -419,14 +434,14 @@ the `mail-relay.apache.org` outgoing server.
Email template:
```
-[ANNOUNCE] Apache Arrow nanoarrow 0.3.0 Released
+[ANNOUNCE] Apache Arrow nanoarrow 0.4.0 Released
-The Apache Arrow community is pleased to announce the 0.3.0 release of Apache
Arrow nanoarrow. This initial release covers 42 resolved issues from 4
contributors[1].
+The Apache Arrow community is pleased to announce the 0.4.0 release of Apache
Arrow nanoarrow. This initial release covers 44 resolved issues from 5
contributors[1].
The release is available now from [2].
Release notes are available at:
-https://github.com/apache/arrow-nanoarrow/blob/apache-arrow-nanoarrow-0.3.0/CHANGELOG.md
+https://github.com/apache/arrow-nanoarrow/blob/apache-arrow-nanoarrow-0.4.0/CHANGELOG.md
What is Apache Arrow?
---------------------
@@ -442,8 +457,8 @@ Please report any feedback to the mailing lists ([4], [5]).
Regards,
The Apache Arrow Community
-[1]:
https://github.com/apache/arrow-nanoarrow/issues?q=is%3Aissue+milestone%3A%22nanoarrow+0.3.0%22+is%3Aclosed
-[2]: https://www.apache.org/dyn/closer.cgi/arrow/apache-arrow-nanoarrow-0.3.0
+[1]:
https://github.com/apache/arrow-nanoarrow/issues?q=is%3Aissue+milestone%3A%22nanoarrow+0.4.0%22+is%3Aclosed
+[2]: https://www.apache.org/dyn/closer.cgi/arrow/apache-arrow-nanoarrow-0.4.0
[3]: https://github.com/apache/arrow-nanoarrow
[4]: https://lists.apache.org/[email protected]
[5]: https://lists.apache.org/[email protected]
@@ -459,14 +474,14 @@ using:
# Once
export APACHE_USERNAME=xxx
# Once for every release candidate
-svn rm --username=$APACHE_USERNAME -m "Clean up svn artifacts"
https://dist.apache.org/repos/dist/dev/arrow/apache-arrow-nanoarrow-0.3.0-rc0/
+svn rm --username=$APACHE_USERNAME -m "Clean up svn artifacts"
https://dist.apache.org/repos/dist/dev/arrow/apache-arrow-nanoarrow-0.4.0-rc0/
```
### Bumped versions on main
This is handled by
-[post-02-bump-versions.sh](https://github.com/apache/arrow-nanoarrow/blob/main/dev/release/post-02-bump-versions.sh):
+[post-02-bump-versions.sh](https://github.com/apache/arrow-nanoarrow/blob/main/dev/release/post-02-bump-versions.sh).
Create a branch and then run:
```bash
-dev/release/post-02-bump-versions.sh . 0.3.0 0.4.0
+dev/release/post-02-bump-versions.sh . 0.4.0 0.5.0
```
diff --git a/dev/release/verify-release-candidate.sh
b/dev/release/verify-release-candidate.sh
index 84013602..61baa219 100755
--- a/dev/release/verify-release-candidate.sh
+++ b/dev/release/verify-release-candidate.sh
@@ -21,6 +21,7 @@
# - cmake >= 3.14
# - R >= 3.5.0
# - Arrow C++ >= 9.0.0
+# - Python >= 3.8
#
# Environment Variables
# - CMAKE_BIN: Command to use for cmake (e.g., cmake3 on Centos7)
@@ -35,12 +36,18 @@
# "gpg --import KEYS" returns an error. In general, we should not use this
# to ensure importing all GPG keys. But newer algorithms such as ed25519 may
# not be supported in old GPG such as GPG on CentOS 7.
+# - NANOARROW_PYTHON_VENV: An absolute path to a virtual environment, into
which
+# nanoarrow Python build and/or test dependencies may be installed. If empty,
+# a temporary virtual environment will be created using Python from
PYTHON_BIN
+# or python3 if PYTHON_BIN is empty.
# - TEST_SOURCE: Set to 0 to selectively run component verification.
# - TEST_C: Builds C libraries and tests using the default CMake
# configuration. Defaults to the value of TEST_SOURCE.
# - TEST_C_BUNDLED: Tests the bundled version of the C libraries.
# - TEST_R: Builds the R package source tarball and runs R CMD check.
# Defaults to the value of TEST_SOURCE.
+# - TEST_PYTHON: Builds the Python package and runs tests. Defaults to the
value
+# of TEST_SOURCE.
# - TEST_WITH_MEMCHECK: Set to a nonzero value to additionally run tests
# with memcheck. This requires valgrind on PATH.
diff --git a/docker-compose.yml b/docker-compose.yml
index a7728972..8542ebdc 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -28,7 +28,7 @@ services:
args:
NANOARROW_ARCH: ${NANOARROW_ARCH}
volumes:
- - ${NANOARROW_SOURCE_DIR}:/nanoarrow
+ - ${NANOARROW_DOCKER_SOURCE_DIR}:/nanoarrow
command: "/bin/bash /nanoarrow/dev/release/verify-release-candidate.sh
$NANOARROW_VERIFY_ARGS"
coverage:
@@ -36,7 +36,7 @@ services:
volumes:
# Don't mix the "dev tools" and "source" checkouts
- ./ci/scripts/coverage.sh:/coverage.sh
- - ${NANOARROW_SOURCE_DIR}:/nanoarrow
+ - ${NANOARROW_DOCKER_SOURCE_DIR}:/nanoarrow
command: "/bin/bash /coverage.sh /nanoarrow"
docs:
@@ -44,5 +44,5 @@ services:
volumes:
# Don't mix the "dev tools" and "source" checkouts
- ./ci/scripts/build-docs.sh:/build-docs.sh
- - ${NANOARROW_SOURCE_DIR}:/nanoarrow
+ - ${NANOARROW_DOCKER_SOURCE_DIR}:/nanoarrow
command: "/bin/bash /build-docs.sh /nanoarrow"