cmake-fedora consists a set of scripts and cmake modules that simply the release software packages to RHEL and Fedora.
cmake-fedora is designed to automate most of the release tasks. It not only save your time, but also keeping consistency of release information such as version and release-notes in following places:
cmake-fedora also:
git clone https://pagure.io/cmake-fedora.git
Source archive download page: https://releases.pagure.org/cmake-fedora
You can download the modules-only archive: cmake-fedora-<version>-modules-only.tar.gz
or the full archive that also include helper scripts and documentation: cmake-fedora-<version>.tar.gz
cmake-fedora can be installed as a Fedora/EPEL package using:
yum -y install cmake-fedora
Alternatively, you can install cmake-fedora for the package as: * Git submodule:
git submodule init; git submodule update
ln -s cmake-fedora/Modules .
wget -P SOURCES https://releases.pagure.org/cmake-fedora/cmake-fedora-modules-only-latest.tar.gz
tar zxvf SOURCES/cmake-fedora-modules-only-latest.tar.gz")
cmake build instruction file. Edit it as you normally do with CMake projects. It should contains note that project persistent information like project name, authors, licenses and project summary.
cmake-fedora-newprj
can create CMakeLists.txt if it does not already exists, and helps to configure the basic
document like AUTHORS and COPYING.
This is file you put the version, change summary, !ChangeLog, Bugzilla Bug ID or anything about the upcoming versions/releases.
It looks like:
PRJ_VER=0.1.0 SUMMARY=Summary of this version [Changes] - Fixed RHBZ#XXXXXXX - bug 1 description - fixed RHBZ#YYYYYYY - bug 2 description - Fixes RHBZ#ZZZZZZZ - bug 3 description - fixes RHBZ#WWWWWWW - bug 4 description - other improvement
Note that something like Fixes RHBZ#XXXXXXX
will make Bug XXXXXXXX
associates with this update in Bodhi, the Fedora update center.
The recognized syntax is:
Following are recommend steps to use gettext to translate your project:
Edit 'po/CmakeLists.txt'
INCLUDE(ManageTranslation) INCLUDE(ManageZanata)
SET(SOURCES_I18N ${CMAKE_SOURCE_DIR}/src/IBusChewingEngine.gob ${CMAKE_SOURCE_DIR}/src/IBusChewingEngine-input-events.c ${CMAKE_SOURCE_DIR}/src/IBusChewingEngine-def.c ${CMAKE_SOURCE_DIR}/src/main.c)
MANAGE_GETTEXT(ALL SRCS ${SOURCES_I18N})
MANAGE_ZANATA("https://translate.zanata.org/zanata/" YES VERSION "master" GENERATE_ZANATA_XML )
ADD_DEPENDENCIES(pack_src_pre translations)
make pot_files
to generate .pot files
make zanata_xml
for Zanata setting files.make zanata_push
to push the documents to Zanata for translation.make zanata_pull
make translations
After commit the last change, just run make release
make release should:
When a release is ready, only need to update the RELEASE_NOTES.txt
by fill in:
No need to edit CMakeLists.txt again.
Start from Step 2 in previous section.
pot_files
: Generate pot files for translation.gmo_files
: Generate gmo files for translation.pack_src
: Create a source archivesrpm:
: Create a source RPMrpm
: Create a source RPM and binary rpmsrpmlint
: Run rpmlint for all RPM filesinstall_rpms
: Install all the binary rpms except the debuginfokoji_build_scratch
Run the koji scratch build for all targeted Fedora/EPEL release.upload
: Upload files to hosting servicestag
: Tag the current source tree with the version specified in RELEASE_NOTES.txtfedpkg_build
: Run the fedpkg build for the specified Fedora/EPEL releases.release_fedora
: Release for Fedora and/or EPELrelease
: Run the release process. release_fedora will be invoked if Fedora build support is enabled.clean_pkg
: Remove all the source archive and RPM files.Please submit issues