Axis2/C Release Process¶
This document describes the Apache Software Foundation (ASF) release process for Apache Axis2/C. All releases must comply with ASF Release Policy.
Prerequisites¶
Release Manager Requirements¶
The Release Manager (RM) must:
- Be an Apache committer with write access to the repository
- Have a PGP key that meets ASF requirements:
- RSA key with at least 4096 bits (recommended)
- Key must be signed by other Apache committers (web of trust)
-
Public key must be uploaded to public key servers
-
Export and register your PGP key:
-
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/KEYS
Build Environment¶
Ensure you have:
- GCC or Clang compiler
- Autotools (autoconf, automake, libtool)
- OpenSSL development headers
- Apache httpd development headers (for mod_axis2)
- Optional: libxml2, json-c, nghttp2
Release Process Overview¶
- Prepare the release branch
- Update version numbers and documentation
- Build and test source distribution
- Sign artifacts and generate checksums
- Upload to ASF staging area
- Call for vote
- After vote passes: promote release
- Deploy updated website
- Announce release
Source-Only Releases¶
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:
- ASF Policy Compliance: Source releases are required; binaries are optional
- Apache httpd Precedent: The flagship ASF C project releases source-only
- ABI Complexity: C binary compatibility varies by compiler, flags, and linked libraries
- Platform Diversity: Maintaining binaries for Linux, macOS, FreeBSD, Android is impractical
- Modern Practice: Users install via system package managers (apt, yum, brew) or build from source
- Enterprise Expectations: Production deployments typically build from source with custom configurations
Users who need pre-built binaries should use their distribution's package manager or build from source.
Note on Nexus Staging Repository¶
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:
- Source tarballs are uploaded directly to
dist.apache.orgSVN repositories - There is no Nexus step required for Axis2/C releases
This is consistent with Apache httpd and other Apache C projects.
Step 1: Prepare the Release¶
1.1 Create a Release Branch (Optional)¶
For major releases, consider creating a release branch:
For minor/patch releases, you may release directly from master.
1.2 Update Version Numbers¶
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 |
1.3 Update Documentation¶
- Update
docs/release-notes-X.Y.Z.mdwith resolved issues - Review and update
INSTALLfile if needed - Verify all documentation links work
1.4 Regenerate Build System¶
Step 2: Build and Test¶
2.1 Build from Source¶
./configure --prefix=/tmp/axis2c-test \
--enable-tests=yes \
--with-apache2=/usr/include/apache2
make clean
make
make check
make install
2.2 Run Test Suite¶
Verify all tests pass. Fix any failures before proceeding.
2.3 Create Source Distribution¶
2.4 Verify Source Distribution Builds¶
# 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
Step 3: Sign and Checksum¶
ASF releases require GPG signatures and SHA-512 checksums (MD5 and SHA-1 are no longer acceptable).
3.1 Sign Artifacts¶
#!/bin/bash
VERSION="2.0.0"
# Sign source distribution
gpg --armor --detach-sign axis2c-src-${VERSION}.tar.gz
3.2 Create SHA-512 Checksums¶
#!/bin/bash
VERSION="2.0.0"
sha512sum axis2c-src-${VERSION}.tar.gz > axis2c-src-${VERSION}.tar.gz.sha512
3.3 Verify Signatures¶
# 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
Step 4: Upload to Staging¶
4.1 Upload to ASF Development Area¶
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.
4.2 Build and Commit Site to core-staging¶
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/${VERSION}/.
Step 5: Call for Vote¶
5.1 Send Vote Email¶
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:
- The site link uses core-staging/ — the temporary preview URL built in Step 4.2.
This matches the Axis2/Java release pattern.
- After the vote passes, core-staging is promoted to core/ (Step 7) and deleted.
- The distributions path does NOT include /core/
Voting guide: - Download and verify signatures: gpg --verify .asc - Verify checksums: sha512sum -c .sha512 - Build from source and run tests - Review release notes and documentation
### 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
6.2 Promote Artifacts to Release Area¶
# 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"
6.3 Update KEYS File¶
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"
6.4 Archive Old Releases¶
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"
Step 7: Deploy Website¶
7.1 Promote core-staging to core¶
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.
7.2 Verify Site Deployment¶
Verify: - https://axis.apache.org/axis2/c/core/ - https://axis.apache.org/axis2/c/core/downloads/
Deployment is typically within minutes but may take up to an hour.
Step 8: Announce Release¶
8.1 Wait for Mirror Propagation¶
Wait for: - Distributions available on mirrors (check https://downloads.apache.org/axis/axis2/c/core/) - Site updated and accessible
8.2 Send Announcement¶
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
Step 9: Post-Release Tasks¶
9.1 Update JIRA¶
- Mark the version as released in JIRA
- Create the next version if not exists
- Close resolved issues for this release
9.2 Update DOAP File¶
If one exists, update doap.rdf with the new release information.
9.3 Merge Release Branch¶
If a release branch was used:
9.4 Prepare for Next Release¶
- Update version in configure.ac to next SNAPSHOT/development version
- Create empty release notes file for next version
Troubleshooting¶
Vote Fails¶
If the vote fails: 1. Address all concerns raised during voting 2. Increment the release candidate number (rc2, rc3, etc.) 3. Upload new artifacts to dev area 4. Call for a new vote
Build Issues¶
If builds fail on different platforms: 1. Set up CI testing before release 2. Consider using Docker for reproducible builds 3. Test on multiple platforms (Linux, macOS, FreeBSD)
Signature Verification Fails¶
- Ensure your key is uploaded to key servers
- Verify KEYS file contains your public key
- Re-sign artifacts if needed
References¶
- ASF Release Policy
- ASF Release Publishing
- Release Signing
- Apache Voting Process
- Apache httpd Release Guidelines - Reference for C project source-only releases
- Axis2/C Issue Tracker