This document describes the Apache Software Foundation (ASF) release process for Apache Axis2/C. All releases must comply with ASF Release Policy.
The Release Manager (RM) must:
Be an Apache committer with write access to the repository
Have a PGP key that meets ASF requirements:
Export and register your PGP key:
# Export your public key gpg --armor --export your-key-id >> KEYS # Verify key is available gpg --list-secret-keys
Append your key to the KEYS file at:
https://dist.apache.org/repos/dist/release/axis/axis2/c/core/KEYShttps://dist.apache.org/repos/dist/dev/axis/axis2/c/core/KEYSEnsure you have:
Axis2/C follows the same release model as Apache httpd: source-only releases.
Per the ASF Release Policy:
“Every ASF release MUST contain one or more source packages... binary/bytecode packages MAY be distributed alongside official Apache releases.”
The Apache HTTP Server Project explicitly states:
“The Apache HTTP Server Project itself does not provide binary releases of software, only source code.”
Why source-only for Axis2/C:
Users who need pre-built binaries should use their distribution's package manager or build from source.
Unlike Java projects (such as Axis2/Java) which use the Nexus staging repository to publish Maven artifacts to Maven Central, Axis2/C is a native C library that does not produce Maven artifacts.
For C projects, the release distribution mechanism is:
dist.apache.org SVN repositoriesThis is consistent with Apache httpd and other Apache C projects.
For major releases, consider creating a release branch:
git checkout master git pull origin master git checkout -b release/2.0.0
For minor/patch releases, you may release directly from master.
Update version in these files:
| File | Description |
|---|---|
configure.ac | AC_INIT(axis2c-src, X.Y.Z) and VERSION_NO |
util/configure.ac | VERSION_NO |
axiom/configure.ac | VERSION_NO |
guththila/configure.ac | VERSION_NO |
neethi/configure.ac | VERSION_NO |
samples/configure.ac | Version references |
NOTICE | Copyright year range |
NEWS | Release notes summary |
doxygenconf | PROJECT_NUMBER |
docs/release-notes-X.Y.Z.md with resolved issuesINSTALL file if needed./autogen.sh
./configure --prefix=/tmp/axis2c-test \ --enable-tests=yes \ --with-apache2=/usr/include/apache2 make clean make make check make install
make check
Verify all tests pass. Fix any failures before proceeding.
make dist # Creates: axis2c-src-X.Y.Z.tar.gz
# Extract and build from source tarball tar xzf axis2c-src-X.Y.Z.tar.gz cd axis2c-src-X.Y.Z ./configure --prefix=/tmp/axis2c-verify make make check
ASF releases require GPG signatures and SHA-512 checksums (MD5 and SHA-1 are no longer acceptable).
#!/bin/bash VERSION="2.0.0" # Sign source distribution gpg --armor --detach-sign axis2c-src-${VERSION}.tar.gz
#!/bin/bash VERSION="2.0.0" sha512sum axis2c-src-${VERSION}.tar.gz > axis2c-src-${VERSION}.tar.gz.sha512
# Verify GPG signatures gpg --verify axis2c-src-${VERSION}.tar.gz.asc axis2c-src-${VERSION}.tar.gz # Verify checksums sha512sum -c axis2c-src-${VERSION}.tar.gz.sha512
Use SVN to upload to the development distribution area. Note the SVN dev path does NOT include core/ — it is dist/dev/axis/axis2/c/:
# Checkout dev area (empty directory, creates it if needed) svn checkout https://dist.apache.org/repos/dist/dev/axis/axis2/c/ ~/repos/axis2c-dev-dist cd ~/repos/axis2c-dev-dist # Create version directory and copy artifacts mkdir ${VERSION} cp ~/repos/axis-axis2-c-core/axis2c-src-${VERSION}.tar.gz ${VERSION}/ cp ~/repos/axis-axis2-c-core/axis2c-src-${VERSION}.tar.gz.asc ${VERSION}/ cp ~/repos/axis-axis2-c-core/axis2c-src-${VERSION}.tar.gz.sha512 ${VERSION}/ # Commit svn add ${VERSION} svn commit -m "Stage Apache Axis2/C ${VERSION} RC1 for vote"
Do NOT copy KEYS into the version directory — the KEYS file lives at the parent level (dist/release/axis/axis2/c/KEYS) and is already maintained.
The site is built with MkDocs and committed to axis2/c/core-staging/ in the axis-site repo. ASF GitPubSub auto-publishes this to https://axis.apache.org/axis2/c/core-staging/ within minutes of the push.
This is a temporary staging directory used only during the release vote — identical to the Axis2/Java core-staging pattern. Do NOT update core/ yet; that happens post-vote (Step 7).
# Install MkDocs if not already available pip install mkdocs mkdocs-material # Build site from axis-axis2-c-core docs/ cd ~/repos/axis-axis2-c-core mkdocs build # Output is in site/ # Sync built site into core-staging (does not touch production core/) rsync -av ~/repos/axis-axis2-c-core/site/ ~/repos/site/axis-site/axis2/c/core-staging/ # Commit to axis-site master branch cd ~/repos/site/axis-site git add axis2/c/core-staging/ git commit -m "axis2/c core-staging for ${VERSION} release vote" git push
Before building, ensure docs/downloads.md has the correct download links for the new version pointing to downloads.apache.org/axis/axis2/c/core/${VERSION}/.
Send a vote email to c-dev@axis.apache.org. Keep it brief — see the Axis2/Java vote format as a model:
Subject: [VOTE] Release Apache Axis2/C X.Y.Z I'd like to call a vote on releasing Apache Axis2/C X.Y.Z. This is the first release of Axis2/C since 1.6.0 in 2009. Version X.Y.Z includes 17 years of bug fixes (115+ Jira issues resolved), HTTP/2 support with pure JSON-RPC services, and removes obsolete transports (TCP, CGI, libcurl, AMQP, IIS/ISAPI). Git tag: https://github.com/apache/axis-axis2-c-core/releases/tag/vX.Y.Z Distributions: https://dist.apache.org/repos/dist/dev/axis/axis2/c/X.Y.Z/ Site: https://axis.apache.org/axis2/c/core-staging/ +1 from me Your Name
Notes:
core-staging/ — the temporary preview URL built in Step 4.2. This matches the Axis2/Java release pattern./core/Voting guide:
### 5.2 Vote Requirements Per ASF policy: - Voting period must be **at least 72 hours** - Requires **at least 3 binding +1 votes** from PMC members - **No -1 votes** from PMC members (or issues must be resolved) ## Step 6: After Vote Passes ### 6.1 Tag the Release ```bash git tag -s vX.Y.Z -m "Apache Axis2/C X.Y.Z release" git push origin vX.Y.Z
# Move from dev to release svn mv https://dist.apache.org/repos/dist/dev/axis/axis2/c/core/${VERSION} \ https://dist.apache.org/repos/dist/release/axis/axis2/c/core/ \ -m "Promote Axis2/C ${VERSION} release"
If new committer keys were added:
svn checkout https://dist.apache.org/repos/dist/release/axis/axis2/c/core/ axis2c-release cd axis2c-release # Append new keys cat new_KEYS >> KEYS svn commit -m "Update KEYS for ${VERSION} release"
Per ASF policy, only keep the latest release in the main distribution area:
# Move old versions to archive svn mv https://dist.apache.org/repos/dist/release/axis/axis2/c/core/OLD_VERSION \ https://archive.apache.org/dist/axis/axis2/c/core/ \ -m "Archive Axis2/C OLD_VERSION"
After the vote passes, replace the production site with core-staging and delete the staging directory:
cd ~/repos/site/axis-site # Replace production site with staged content rsync -av --delete axis2/c/core-staging/ axis2/c/core/ # Remove the staging directory git rm -r axis2/c/core-staging # Stage and commit git add -A axis2/c/core/ git commit -m "Apache Axis2/C ${VERSION} site" git push
ASF GitPubSub automatically deploys the commit.
Verify:
Deployment is typically within minutes but may take up to an hour.
Wait for:
To c-user@axis.apache.org and c-dev@axis.apache.org:
Subject: [ANNOUNCE] Apache Axis2/C X.Y.Z Released The Apache Axis2/C team is pleased to announce the release of Apache Axis2/C X.Y.Z. Apache Axis2/C is a high-performance web services framework written in C, supporting HTTP/2, JSON-RPC, and legacy SOAP. Download: https://axis.apache.org/axis2/c/core/download.html Release Notes: https://axis.apache.org/axis2/c/core/release-notes-X.Y.Z.html Key changes in this release: - [List major changes] Regards, The Apache Axis2/C Team
To announce@apache.org (separate email, from @apache.org address):
Subject: [ANNOUNCE] Apache Axis2/C X.Y.Z Released The Apache Axis2/C team is pleased to announce the release of Apache Axis2/C version X.Y.Z. Apache Axis2/C is a high-performance SOAP/HTTP web services framework written in C. It provides support for WS-* specifications through Rampart/C and modern HTTP/2 + JSON-RPC protocols. Download: https://axis.apache.org/axis2/c/core/ Documentation: https://axis.apache.org/axis2/c/core/ Regards, The Apache Axis2/C Team
If one exists, update doap.rdf with the new release information.
If a release branch was used:
git checkout master git merge release/X.Y.Z git push origin master
If the vote fails:
If builds fail on different platforms: