cmake-fedora consists ​CMake modules and scripts that simplify and automate the release process for software package, especially for Fedora and EPEL.

Even if you are not using CMake on your packages, you can still using following scripts to simplify your package chores. For examples, if you want your packages to be build in koji and submit to bodhi in all active branches like rawhide, f23, f22, f21, simply run

cmake-fedora-fedpkg <SRPM>

It builds the SRPM on all the active branches, skip the already built ones, then submit them to bodhi.

1.0.5

Fedora 18 support.

Source tarball filename is changed back to name-version-Source.tar.gz to avoid confusion between source generate by cmake-fedora (which contains ChangeLog? and projectName.pot) and tarball generation service from hosting site (which does not contain generated files)

koji-build-scratch: rawhide build target does not always have suffix -candidate.

README updated.

TODO updated.

1.0.4

Source tarball filename is now name-version.tar.gz instead of name-version-Source.tar.gz

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)

CMake then produce targets like package, package_source, however,
CMake itself does not recognize the these targets. So we cannot associate and
depend any targets by either ADD_CUSTOM_COMMAND() orADD_DEPENDENCIES()

, in other words, CMake does not recognize package, package_source itself.

But what if you do want to associate some commands and targets before or after the package is built?
Here is some quick hack: Use a target: pack_src for package_source,
just like: