From Fedora Project Wiki
Fedora package lifecycle
A package goes through the following states from its creation until its part of a release. At each state you can take the listed steps to move it to the next state.
- Unknown
- This procedure tries to find out where in its lifecycle a package is by searching for lifecycle states in reverse order:
- Check whether a package exists already in a release [1]
- Check whether the package has (non-scratch) Koji builds
https://apps.fedoraproject.org/packages/<your-package-name>
- Check whether a SCM repository exists already
https://admin.fedoraproject.org/pkgdb/package/<your-package-name>
- Check whether a review request exists already [2]
- Check whether the package would be allowed at all [3] [4]
- Not found
- You can become a package maintainer and create a package yourself
- Familiarize yourself with the official guidelines [5] [6]
- Create a .spec file following the official guidelines above
- Make sure that your package builds (using rpmbuild or preferably mock [7])
- Check that your package meets the review guidelines [8]
- (optional) perform a Koji scratch build [9] (this requires having a FAS account, but doesn't require sponsoring)
- (optional) run
fedora-review
to get prepared for the review. The output doesn't have to be perfect, certain things may be safe to ignore. Discuss with your reviewer/sponsor if you are uncertain on what to do with the warnings reported.
- Creating review request
- Upload your
spec
andSRPM
files to a public place (you can use your fedoraproject.org webspage if you are sponsored already [10], or some personal site otherwise) - Create a package review request [11]. You'll need to have the following information at hand:
- 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
- Upload your
- Review requested: fedora-review is -
- nobody is reviewing the package yet
- be patient until you find a reviewer, they will set the fedora-review flag to ?
- Under review: fedora-review is ?
- a fedora packager is reviewing your package, be patient and solve any issues they find.
- Increment the spec release version, add a changelog entry, and post the new
spec
,SRPM
and (optionally) Koji URLs to bugzilla together with an explanation of what you changed. - iterate until the reviewer approves your package, at which point they will set the
fedora-review
flag to +
- Approved: fedora-review is +
- if this is your first package then find a sponsor, see becoming a packager
- create a SCM admin request [12] by setting the fedora-cvs flag to ? and using the exact template from the official documentation [13]. You will need the following information at hand:
- package name
- short description
- upstream URL
- package owners (maintainer and co-maintainers)
- branches: fedora and epel release branches that you want to target
- list of FAS usernames receiving email regarding the package (probably just you unless package is co-maintained)
- SCM repository requested: fedora-cvs flag is ?
- wait for about a day, when an admin will set the fedora-cvs flag to +
- SCM repository granted: fedora-cvs flag is +
- at this point the repository should be created, and you can track the status at
https://admin.fedoraproject.org/pkgdb/package/<your-package-name>
- might take about an hour until your permissions are synchronized
- use
fedpkg
to import the package, and push the changes[14] - Test your commits: you are not allowed to force push your git branches, so take care at least run
fedpkg local
andfedpkg lint
to check for problems before pushing any changes. Remember to bump the spec revision and add a changelog entry in the spec file each time - request a koji build for rawhide from your master branch with
fedpkg build
: koji will build forx86_64
,i686
andarmv7l
. - You can access the build logs from the koji webinterface or cli.
- you can use
koji download-build
to get the built package - some time later the package will show up on
https://apps.fedoraproject.org/packages/<your-package-name>
- at this point the repository should be created, and you can track the status at
- Has
koji
build for rawhide- make sure to always request a build for rawhide (master branch) before pushing or requesting builds for other branches
- read the update policy [15]
- 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
- Has
koji
build for a (branched) fedora release- once the builds succeed and you've tested the package use 'fedpkg update' to request an update in Bodhi. You will need the following information:
- 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
- bodhi (?) will also trigger a build for
s390
ands390x
- your request will show up in bodhi as PENDING [16]
https://admin.fedoraproject.org/updates/<package-name>
- once the builds succeed and you've tested the package use 'fedpkg update' to request an update in Bodhi. You will need the following information:
- Bodhi shows PENDING status for package
- the package goes through PENDING -> TESTING -> STABLE for each fedora release independently. Note that rawhide builds must not be submitted to Bodhi, they should be available automatically after some time.
- while in this state users cannot
yum install
ordnf install
your package yet - a (human) release engineer manually signs and pushes packages from PENDING to TESTING almost daily
- be patient, there might be an extra day or so delay when the package is being pushed
- taskotron will run some automated tests on your package, posts its logs to bodhi and gives negative karma if it fails any tests
- at some point it will start to get pushed "This update is currently being pushed to the Fedora N testing updates repository."
- Bodhi shows TESTING status for package
- in TESTING fedora users can see your package if they have the
updates-testing
repository enabled inyum
ordnf
(default enabled for Alpha releases, disabled for final releases):yum install --enablerepo="*-testing" <your-package-name>
ordnf install --enablerepo="*-testing" <your-package-name>
- 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)
- it can also get rejected if it receives too much negative karma, at which point you have the fix the problems and submit a new spec revision that will become PENDING again
- in TESTING fedora users can see your package if they have the
- Bodhi shows STABLE status for package
- users can now install your package as usual with
yum install <yourpackage>
ordnf install <yourpackage>
- users can now install your package as usual with
EPEL package lifecycle
New packager
- 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.
- Create a bugzilla account [21]
- Create a FAS account [22]
- Login to FAS and sign the CLA, upload your public SSH key, and (optionally) your OpenPGP key
- Consult the documentation [23]
- At this point you can submit your package review request
- Make sure to block the FE-NEEDSPONSOR bug if you are not yet sponsored into the packager group (i.e. this is your first package)
- Inform upstream that you are packaging their software
- Join the relevant mailing lists [24] [25]
- Send a self-introduction email [26]
- Respond to bugzilla comments until your package is approved
- Get sponsored into the packager group (you will get an email when this is done) [27] [28]
- Read the package maintenance guide and upload your package [29]
- Submit your package to (branched) releases using Bodhi
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/Packaging:Guidelines
- ↑ http://fedoraproject.org/wiki/Packaging:OCaml
- ↑ http://fedoraproject.org/wiki/Using_Mock_to_test_package_builds
- ↑ http://fedoraproject.org/wiki/Packaging:ReviewGuidelines
- ↑ http://fedoraproject.org/wiki/Package_Review_Process#Contributor
- ↑ https://fedoraproject.org/wiki/Infrastructure/fedorapeople.org
- ↑ https://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&format=fedora-review
- ↑ 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/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
- ↑ https://bugzilla.redhat.com/createaccount.cgi
- ↑ https://admin.fedoraproject.org/accounts
- ↑ http://fedoraproject.org/wiki/Join_the_package_collection_maintainers
- ↑ http://fedoraproject.org/wiki/Join_the_package_collection_maintainers#Becoming_a_Fedora_Package_Collection_Maintainer
- ↑ https://lists.fedoraproject.org/mailman/listinfo
- ↑ http://fedoraproject.org/wiki/Join_the_package_collection_maintainers#Introduce_yourself
- ↑ http://fedoraproject.org/wiki/Join_the_package_collection_maintainers#Get_Sponsored
- ↑ http://fedoraproject.org/wiki/How_to_get_sponsored_into_the_packager_group
- ↑ http://fedoraproject.org/wiki/Package_maintenance_guide