From Fedora Project Wiki
Edwintorok (talk | contribs) (formatting) |
Edwintorok (talk | contribs) (formatting) |
||
Line 1: | Line 1: | ||
{{admon/caution|This is NOT official documentation|This page describes the packaging lifecycle from one person's own experience. | {{admon/caution|This is NOT official documentation|This page describes the packaging lifecycle from one person's own experience. | ||
Use the | Use the [[#References|official documentation]] instead}} | ||
= Full Fedora package lifecycle = | = Full Fedora package lifecycle = |
Revision as of 19:34, 20 March 2015
Full Fedora package lifecycle
Do not get discouraged by the large number of steps and be patient: some of them depend only on you (the packager) and take little time, other steps are outside your control and can take a long time to complete.
Preparation
- Check whether a package exists already [1]
- Check whether a review request exists already [2]
- Check whether the package would be allowed at all [3] [4]
- Create bugzilla and FAS accounts, sign the CLA, upload your public SSH key, join the relevant mailing lists [5]
Create the package
- Familiarize yourself with the official guidelines [6] [7]
- Create a .spec file following the official guidelines above
- Make sure that your package builds (using rpmbuild or preferably mock)
- Check that your package meets the review guidelines [8]
- Perform a Koji scratch build [9](this requires having a FAS account, but doesn't require sponsoring)
Get the package reviewed [10]
- Upload your Spec file and SRPM to a public place (you can use your fedoraproject.org webspace if you are sponsored already [11]
- Create a package review request [12], you will need the following info:
- package name, short package description, full package description
- Spec URL
- SRPM URL
- your FAS username
- link to your Koji scratch build (optional)
- if this is your first package block the FE-NEEDSPONSOR bug
- fedora-review flag is blank, nobody is reviewing the package yet
- be patient until you find a reviewer, they will set fedora-review flag to '?'
- fix any issues, and be patient until the package is fully reviewed
- when package is approved the flag will be set to '+'
Upload the package to rawhide
- if this is your first package then find a sponsor and get sponsored into the packager group (you will get an email when this happens)
- create a SCM admin request [13] by setting the fedora-cvs flag to '?' and using the exact template from the official documentation [14]:
- package name
- short description
- upstream URL
- package owners (maintainer and co-maintainers)
- branches: fedora and epel release branches
- initialcc: FAS usernames receiving email regarding the package
- about a day later an admin will set the fedora-cvs flag to '+'
- at this point the repository should be created, and you can track the status at
https://admin.fedoraproject.org/pkgdb/package/<your-package-name>
- some time later the package will show up on
https://apps.fedoraproject.org/packages/<your-package-name>
- use fedpkg to import the package, push the changes and request a koji build for rawhide [15] Note: you are not allowed to force push your git branches, so take care to push working/tested commits, remembering to bump the spec revision each time and run rpmbuild/rpmlint before pushing
- you can use 'koji download-build' to get the built package
Upload the package to Fedora release branches
- read the update policy [16]
- once the Koji build succeeded and you've tested the package use fedpkg and merge master to your other branches, push your changes and request a koji build for each branch in turn
- once the builds succeed and you've tested the package use 'fedpkg update' to request an update in Bodhi:
- package name
- type is newpackage
- request is testing
- bug number of your review request (bodhi can auto-close when package is stable)
- notes: new package
- auto-karma at default settings
- your request will show up in bodhi as PENDING [17]
https://admin.fedoraproject.org/updates/<package-name>
- be patient, there might be an extra day or so delay when the package is being pushed
- the package will go through the following states in bodhi [18]
- taskotron will run some automated tests on your package, giving it negative karma if it fails them
- at some point it will start to get pushed "This update is currently being pushed to the Fedora N testing updates repository."
- a (human) release engineer signs the PENDING updates and they get pushed to TESTING (on an almost daily basis?)
- in TESTING fedora users can see your package if they have the updates-testing repository enabled in yum (default enabled for Alpha releases, disabled for final releases)
- any fedora user with a FAS account can provide feedback (karma)
- package gets promoted to stable if it receives enough positive karma, or enough time passes (3 days for alpha/beta and 7 days for released branches)
Upload the package to EPEL
What is a package's status?
- Search for package name on https://apps.fedoraproject.org/packages/
Found -> package is part of Fedora already
- Open
https://admin.fedoraproject.org/updates/<your-package-name>
- Bodhi update status STABLE: users can
yum install <your-package-name>
ordnf install <your-package>
the package directly - Bodhi update status TESTING: users can
yum install --enablerepo="*-testing" <your-package-name>
ordnf install --enablerepo="*-testing"
the package - Bodhi update status PENDING: users cannot use
yum
ordnf
to install the package yet
- Bodhi update status STABLE: users can
- Open
https://apps.fedoraproject.org/packages/<your-package-name>
Found -> package has (non-scratch) Koji builds
- Open
https://admin.fedoraproject.org/pkgdb/package/<your-package-name>
Found -> package has SCM repo
Found -> a package review request exists on bugzilla
- Open
https://bugzilla.redhat.com/show_bug.cgi?id=<review-bug-number>
and look at flags on the right:- fedora-review: - (blank): nobody is reviewing the package yet
- fedora-review: ? (assigned): the package is being reviewed, look for comments from reviewer
- fedora-review: + (approved): the package is approved by the reviewer
- fedora-cvs: not visible: you are not part of the packagers group, ask someone to sponsor you
- fedora-cvs: ? (scm-admin request): you (the packager) is requesting a git repo for your package
- fedora-cvs: + (scm repo created): admin created git repo
- All of the above searches fail: there is no package (review) yet
References
- ↑ https://apps.fedoraproject.org/packages/
- ↑ http://fedoraproject.org/PackageReviewStatus/
- ↑ http://fedoraproject.org/wiki/Forbidden_items
- ↑ http://fedoraproject.org/wiki/Packaging:LicensingGuidelines
- ↑ http://fedoraproject.org/wiki/Join_the_package_collection_maintainers#Becoming_a_Fedora_Package_Collection_Maintainer
- ↑ http://fedoraproject.org/wiki/Packaging:Guidelines
- ↑ http://fedoraproject.org/wiki/Packaging:OCaml
- ↑ http://fedoraproject.org/wiki/Packaging:ReviewGuidelines
- ↑ http://fedoraproject.org/wiki/Package_Review_Process#Contributor
- ↑ https://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&format=fedora-review search for package reviews on bugzilla
- ↑ https://fedoraproject.org/wiki/Infrastructure/fedorapeople.org
- ↑ http://fedoraproject.org/wiki/Join_the_package_collection_maintainers#Create_Your_Review_Request
- ↑ http://fedoraproject.org/wiki/Package_SCM_admin_requests
- ↑ http://fedoraproject.org/wiki/Package_SCM_admin_requests
- ↑ http://fedoraproject.org/wiki/Join_the_package_collection_maintainers#Get_Sponsored
- ↑ http://fedoraproject.org/wiki/Updates_Policy
- ↑ https://fedoraproject.org/wiki/Bodhi#Pending
- ↑ https://fedoraproject.org/wiki/Bodhi#Pending
- ↑ https://fedoraproject.org/wiki/EPEL_Package_Maintainers
- ↑ https://fedoraproject.org/wiki/EPEL:Packaging?rd=Packaging:EPEL EPEL packaging guidelines
- ↑ https://fedoraproject.org/wiki/EPEL_Updates_Policy EPEL Updates policy
- ↑ https://fedoraproject.org/wiki/EPEL_incompatible_upgrades_policy EPEL incompatible upgrades policy