Were you ever bored by the following release chores:
- Verifying the consistence of versioning in program, tarball, git tags, RPMs, ChangeLog, and whatever place that need to know current version?
- Pasting change summaries and details in submission messages, ChangeLog, RPM ChangeLog, bodhi notes, and the hosting website?
- Forget to rpmlint again?
- Having to scratch build, commit, build, and submitting to bodhi in for each dist you intent to support?
- Embarrassed by inconsistency amongst source tarballs and RPMs?
- Need to manually upload source tarball to hosting service providers?
- Manually to copy the COPYING and fill the information in COPYING?
I do, thus the birth of the cmake-fedora, which automates many chores describe above.
CMake is a powerful cross-platform build system, it is considered faster and easier to understand than autotools. However, there are some gotchas for novice packagers.
For example, without setting CPACK_SOURCE_IGNORE_FILES, novices might notice the tarball grow geometrically each time they pack, because the old tarballs are not excluded.
Advance developers also benefit from these convenient macros and targets for project release chores like writing the same release information to ChangeLog, RPM spec file, source control tags, koji build and bodhi submission.
What does cmake-fedora do exactly? (Feature List)
- Edit once in RELEASE-NOTES.txt, applied everywhere, such as:
- ChangeLog
- Source tarball generation
- RPM
- koji scratch build
- fedpkg scratch build, commit, build, update
- bodhi submission, the Change is applied as note.
- Uploading to hosting services like FedoraHosted, SourceForge, GitHub, Google Project hosting (the last three is under development)
- A script to generate templates of build files and documents, such as
- CMakeLists.txt
- MAINTAINER_SETTING_NO_PACK
- RELEASE-NOTES.txt
- SPECS/project.spec.in
- COPYING (and COPYING.LESSER for LGPL)
- Helper macros and targets to:
- Build
- Pack source tarball
- Build rpm, srpm
- rpmlint
- Submit to fedpkg, koji, and bodhi
- Clean older builds
- uninstall
Project’s home page is at here.