|
|
(191 intermediate revisions by 51 users not shown) |
Line 1: |
Line 1: |
| <!-- page was renamed from JeremyKatz/DraftHowToUpdateYourFedoraPackage
| | {{admon/warning |This page has been moved out of the wiki. The current version of this document is located at https://docs.fedoraproject.org/en-US/package-maintainers/Package_Update_Guide/ Please update your bookmarks.}} |
| -->
| |
| = 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 http://fedoraproject.org/wiki/PackageMaintainers/Join. Use the procedure explained here to update your package. | |
| <!-- N.B.: The link above is written as a longhand URL on purpose.
| |
| -->
| |
| <!-- What is the reason to write it as a longhand URL? -- TillMaas
| |
| -->
| |
| | |
| == Packages in devel branch ==
| |
| | |
| 1. Check out your package from CVS.
| |
| | |
| Prepare the environment (if not already done):
| |
| <pre>export CVSROOT=:ext:USERNAME@cvs.fedoraproject.org:/cvs/pkgs
| |
| export CVS_RSH=ssh
| |
| </pre>
| |
| 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 [[PackageMaintainers/Anatomy| Anatomy]] page:
| |
| <pre>cvs co <package_name>
| |
| </pre>
| |
| | |
| 1. 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 https://admin.fedoraproject.org/accounts/. To upload a new source tarball and replace an older one, run
| |
| <pre>make new-sources FILES="yournewtarball.tar.gz"
| |
| </pre>
| |
| or for multiple files:
| |
| <pre>make new-sources FILES="yournewtarball.tar.gz yourdata.tar.gz"
| |
| </pre>
| |
| 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:
| |
| <pre>make upload FILES="somefile.tar.gz"
| |
| </pre>
| |
| 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.:
| |
| <pre>cvs add packagename-fix-the-foobar.patch
| |
| </pre>
| |
| | |
| 1. Use the command <code>make i386</code>, <code>make x86_64</code>, or <code>make ppc</code> 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).
| |
| | |
| 1. Check if everything that has changed is correct with
| |
| <pre>cvs diff -u
| |
| </pre>
| |
| 1. Commit the verified changes to the <code>devel/</code> branch.
| |
| <pre>cvs commit
| |
| </pre>
| |
| | |
| 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.
| |
| 1. Tag your package:
| |
| <pre>make tag
| |
| </pre>
| |
| 1. Instruct the builders to build your package:
| |
| <pre>make build
| |
| </pre>
| |
| 1. Check the koji build page at http://koji.fedoraproject.org/koji/ for the build process.
| |
| 1. If you are updating a package during a freeze and need the package included in the milestone, please follow the [http://fedoraproject.org/wiki/Releases/Schedule freeze policies] to have your package added.
| |
| | |
| === Example ===
| |
| | |
| <pre>
| |
| export CVSROOT=:ext:USERNAME@cvs.fedoraproject.org:/cvs/pkgs
| |
| export CVS_RSH=ssh
| |
| cvs co foo
| |
| cd foo/devel
| |
| wget -N http://dl.sf.net/foo/foo-0.0.2.tar.bz2
| |
| make new-sources FILES="foo-0.0.2.tar.bz2"
| |
| gedit foo.spec
| |
| make i386
| |
| cvs diff -u
| |
| cvs commit -m "Update to 0.0.2"
| |
| make tag build
| |
| </pre>
| |
| | |
| | |
| The package builders publish your package in the <code>development</code> 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 [#head-552808f592f4c2736cdc61e3f0a5beed9c3cb0ec next chapter] . | |
| | |
| An alternative may be used, as explained in [[PackageMaintainers/UsingCvsFaq| UsingCvsFaq]] .
| |
| | |
| More in-depth information on the build system for Fedora 7 and above is at
| |
| [[PackageMaintainers/UsingKoji| 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:
| |
| | |
| <pre>
| |
| koji untag-pkg dist-f10 foo-1.1.3-1.fc10
| |
| </pre>
| |
| | |
| Where <code>foo-1.1.3-1.fc10</code> is replaced with the name of your package build. See <code>koji help</code> or [[PackageMaintainers/UsingKoji | UsingKoji]] for more information.
| |
| | |
| == Packages in the stable branches ==
| |
| | |
| # Make any required changes in the <code>F-7</code>, <code>F-8/</code> or <code>F-9/</code> directory. In many cases, you can apply the same changes from the <code>devel/</code> branch to the other branches. Use the <code>diff</code> and <code>patch</code> utilities for this purpose.
| |
| # Use the command <code>make i386</code>, <code>make x86_64</code>, or <code>make ppc</code> 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.
| |
| # Commit the verified changes to the branch you are working on: <pre>cvs commit</pre>
| |
| # Tag your package: <pre>make tag</pre>
| |
| # Instruct the builders to build your package:<pre>make build</pre>
| |
| # Check the koji build page at http://koji.fedoraproject.org/koji/ for the build process.
| |
| | |
| === Submit your update to Bodhi ===
| |
| | |
| # This can be accomplished in a few different ways. The easiest being: <pre>make update</pre> If your local username differs from that of your Fedora account, you will need to specify it with the following command: <pre>make update BODHI_USER=foo</pre> Or you add <code>BODHI_USER=foo</code> to the file <code>~/.cvspkgsrc</code>. Alternatively, you can also submit your update using the [https://fedorahosted.org/bodhi/wiki/CLI bodhi-client] , or the [https://admin.fedoraproject.org/updates web interface] .
| |
| # 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 [wiki:Self:Security/TrackingBugs slightly different process] .
| |
| # 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.
| |
| # 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.
| |
| # 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!
| |