# Work in progress... A note on mock versions: There are now two main branches to be aware of: - mock-1.0 (pre-F13 and EPEL5) - mock-1.1+ (F-13+ and EPEL6+) In the upstream git tree, mock-1.0 is tracked on the branch origin/mock-1.0, while mock-1.1+ is in the master branch. Please be careful when updating the various distro to use the correct branch and version number when generating tarfiles for RPM generation. Note that we've now switched over to using git for the package repositories (as opposed to the old CVS repositories). To make use of the new format, you must install the fedora-packager package and clone the mock package repository: $ sudo yum install fedora-packager $ fedpkg clone mock $ mv mock mock-fedora.git The last step is not strictly required, but I do it to keep from confusing the package repository with the upstream (source) repository ===================================================================== Release checklist overview: 1) upstream git tree: pull, merge, checkin, tag and push 2) koji git tree: for each release: checkin tarball and spec, kick off builds 3) bodhi: schedule releases ===================================================================== For a mock 1.1+ release In the upstream git tree: 0) fetch updates from origin and fast forward your local master $ git fetch origin $ git checkout master $ git merge origin/master 1) create a branch from master (e.g. 'prerelease') and switch to it $ git branch prelease master $ git checkout prerelease 2) fetch remotes and merge remote updates $ git fetch jkeating $ git merge jkeating/updates-for-clark 3) merge any local branch work and reolve any conflicts $ git merge work 4) update configure.ac with new version info (don't commit yet) 5) update the %changelog section of mock.spec.in 6) run 'autogen.sh' to update autoconf files 7) run 'configure' to generate Makefile and mock.spec 8) run 'make rpm' to generate binary RPM and propagate version changes (Note this also generates a tar file for use later). 9) verify that docs/runtests.sh uses a supported config file (i.e. released fedora minus one). If not, edit and commit 10) run 'make check' and fix any reported failures until it passes 11) check in any changes from above 12) remove ChangeLog and AUTHORS 13) run 'make dist' to generate ChangeLog and AUTHORS files 14) commit configure.ac and any other changes with a version bump message: $ git commit -m 'version bump' configure.ac 15) tag the git tree: $ git tag -u mock- 16) checkout master and merge your work directory: $ git checkout master $ git merge prerelease 16) push to main git repo (only from master branch): $ git push --tags origin master In the fedora git (koji) tree 1) cd to the previously cloned mock package repository $ cd ../mock-fedora.git 2) upload the new source tarball from the upstream git tree $ fedpkg new-sources ../mock.git/mock-1.1.3.tar.gz 3) copy in the new specfile that matches the tarball $ cp ../mock.git/mock.spec . 4) create a clog from the new specfile $ fedpkg clog 5) commit and push the new sources $ fedpkg commit -F clog -p 6) initiate a koji build $ fedpkg build --notwait 7) switch branches to the latest released fedora $ fedpkg switch-branch f14 8) repeat steps 2 through 6 for the new branch 9) repeat for all supported fedora releases and EPEL releases (e.g. f14, f13, el6) At this point you should push the just built packages to their respective testing repositories. This can be done either with the Bodhi WebUI at https://admin.fedoraproject.org/updates/ or if there are no other package dependencies, using the 'make update' target of the CVS Makefile. Note that you do not need to do this for the devel branch since it automatically gets pushed to testing. ===================================================================== For a mock 1.0 release In the git tree: 0) fetch updates from origin and fast forward your local mock-1.0 $ git fetch origin $ git checkout mock-1.0 $ git merge origin/mock-1.0 1) create a branch from mock-1.0 (e.g. 'prerelease') and switch to it $ git branch prelease mock-1.0 $ git checkout prerelease 2) fetch remotes and merge remote updates $ git fetch jkeating $ git merge jkeating/mock-1.0-updates 3) merge any local branch work and reolve any conflicts $ git merge work 4) update configure.ac with new version info (don't commit yet) 5) update the %changelog section of mock.spec.in 6) run 'autogen.sh' to update autoconf files 7) run 'configure' to generate Makefile and mock.spec 8) run 'make rpm' to generate binary RPM and propagate version changes (Note this also generates a tar file for use later). 9) verify that docs/runtests.sh uses a supported config file (i.e. epel5 or F11/F12). If not, edit and commit 10) run 'make check' and fix any reported failures until it passes 11) check in any changes from above 12) remove ChangeLog and AUTHORS 13) run 'make dist' to generate ChangeLog and AUTHORS files 14) commit configure.ac and any other changes with a version bump message: $ git commit -m 'version bump' configure.ac 15) tag the git tree: $ git tag -u mock- 16) checkout master and merge your work directory: $ git checkout master $ git merge prerelease 16) push to main git repo (only from master branch): $ git push --tags origin master In the fedora git (koji) tree 1) cd to the previously cloned mock package repository $ cd mock-fedora.git 2) switch to the EPEL5 branch $ fedpkg switch-branch el5 3) install a new tarball from the upstream git tree $ fedpkg new-source ../mock.git/mock-1.0.9.tar.gz 4) copy the matching specfile $ cp ../mock.git/mock.spec . 5) create a changelong entry file (clog) $ fedpkg clog 6) commit and push the new tarball and specfile $ fedpkg commit -F clog -p 7) initiate a koji build $ fedpkg build --nowait