From Fedora Project Wiki

m (Fixed links)
m (short clarification where to run make new-sources)
Line 24: Line 24:
<pre>make new-sources FILES="yournewtarball.tar.gz"
<pre>make new-sources FILES="yournewtarball.tar.gz"
or for multiple files:
in the branch directory (i.e. devel in this case) or for multiple files:
<pre>make new-sources FILES="yournewtarball.tar.gz yourdata.tar.gz"
<pre>make new-sources FILES="yournewtarball.tar.gz yourdata.tar.gz"

Revision as of 20:11, 12 July 2008

Fedora Package Update HOWTO

This document shows you how to update a package you maintain in Fedora. It assumes you already have a package in the Fedora repositories. For more information on becoming a package maintainer, refer to PackageMaintainers/Join. Use the procedure explained here to update your package.

Packages in devel branch

  • Check out your package from CVS.

Prepare the environment (if not already done):

export CVS_RSH=ssh

Check out a local working copy of the CVS module you plan to edit, e.g. (for a description of the directory layout, see the Anatomy page:

cvs co <package_name>
  • If you update to a new upstream version you have to upload the tarball to an external lookaside cache. Operations on the lookaside cache require a client-side certificate, grab it and see instructions for installing it at To upload a new source tarball and replace an older one, run
make new-sources FILES="yournewtarball.tar.gz"

in the branch directory (i.e. devel in this case) or for multiple files:

make new-sources FILES="yournewtarball.tar.gz yourdata.tar.gz"

This also updates your local copy of the .cvsignore and sources files. You will need to do this for each branch that you will be building the new version for. The new tarball will be uploaded only once and the rest will be md5sum checked and not uploaded, only the .cvsignore and sources files will be updated.

If you just want to add another tarball (e.g. a big gzipped patch or a documentation tarball), use:

make upload FILES="somefile.tar.gz"

Contrary to "make new-sources", this does not purge old files from the ".cvsignore" and "sources" files.

If you just have a small patch, initscript, or otherwise plain text file, you can commit those directly to CVS. This can be done with the cvs add command, e.g.:

cvs add packagename-fix-the-foobar.patch
  • Use the command make i386, make x86_64, or make ppc to test a package build on your local system. Then install and test the package. If something doesn't work, fix it and repeat this step. For F-7 and later branches you can also use the koji build system to do a scratch build perhaps for some arch you don't have locally: 'make srpm; koji build --scratch --arch-override x86_64 dist-f9 packagename-version-release.src.rpm' (to build just for x86_64 for example).
  • Check if everything that has changed is correct with
cvs diff -u

1. Commit the verified changes to the devel/ branch.

cvs commit

As a test whether the full commit was fine, you can check out a fresh working copy into a different directory. It should succeed in fetching the binaries from lookaside cache and also pass simple build tests such as make i386 or make srpm at least.

  • Tag your package:
make tag
  • Instruct the builders to build your package:
make build


export CVS_RSH=ssh
cvs co foo
cd foo/devel
wget -N
make new-sources FILES="foo-0.0.2.tar.bz2"
gedit foo.spec
# change the required things in the specfile
make i386
# check that the changes you made are correct
cvs diff -u
# commit
cvs commit -m "Update to 0.0.2"
# request build
make tag build

The package builders publish your package in the development tree, also called "Rawhide." If the package is a stable update, you may also provide it to users of the currently-maintained stable Fedora release. To make it available to F-8 or F-9 users, for example, use the procedure outlined in the next chapter.

An alternative may be used, as explained in UsingCvsFaq.

More in-depth information on the build system for Fedora 7 and above is at UsingKoji.

Removing a package from the devel branch

From time to time you may want to remove a package you pushed to the devel branch (rawhide). This could happen in a situation where a bug or issue is found in your package that will be resolved upstream in upstream's next release. You may want to wait for this release instead of back-porting a fix yourself, and so pulling the broken package from rawhide makes sense.

You can remove the package from rawhide by using koji as follows:

koji untag-pkg dist-f10 foo-1.1.3-1.fc10

Where foo-1.1.3-1.fc10 is replaced with the name of your package build. See koji help or UsingKoji for more information.

Packages in the stable branches

  1. Make any required changes in the F-7, F-8/ or F-9/ directory. In many cases, you can apply the same changes from the devel/ branch to the other branches. Use the diff and patch utilities for this purpose.
  2. Use the command make i386, make x86_64, or make ppc to test a package build on your local system. Then install and test the package. If something doesn't work, fix it and repeat this step.
  3. Commit the verified changes to the branch you are working on:
    cvs commit
  4. Tag your package:
    make tag
  5. Instruct the builders to build your package:
    make build
  6. Check the koji build page at for the build process.

Submit your update to Bodhi

  1. This can be accomplished in a few different ways. The easiest being:
    make update
    If your local username differs from that of your Fedora account, you will need to specify it with the following command:
    make update BODHI_USER=foo
    Or you add BODHI_USER=foo to the file ~/.cvspkgsrc. Alternatively, you can also submit your update using the bodhi-client , or the web interface .
  2. Once submitted, bodhi will automatically request that your update be pushed to updates-testing. If you feel that community testing is unnecessary for your update, you can choose to push it straight to the stable fedora-updates repository instead. Note that security updates follow a slightly different process .
  3. A Release Engineer then signs and pushes out your updates. The signing step is currently a manual process, so your updates will not be instantly released once submitted to bodhi.
  4. Once pushed to testing, people are able to +1/-1 the updates "karma", based on whether or not it seems to be functional for them. If your update reaches a karma of 3, it will automatically be pushed to stable. Likewise, if it reaches -3, it will be automatically unpushed. If your update does not receive enough feedback to automatically push it to stable, you will have to submit it as a final update yourself. This can easily be done with the command-line tool, or with the web interface.
  5. You will then be notified when your update has been pushed to stable. Bodhi will close all associated bugs and send an announcement to fedora-package-announce. At this point, your update has been officially released!