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
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 +
- iterate until the reviewer approves your package, at which point they will set the
- 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]
- at this point the repository should be created, and you can track the status at
- request a koji build for rawhide from your master branch with
fedpkg build
: koji will build forx86_64
,i686
andarmv7l
.
- request a koji build for rawhide from your master branch with
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>
- you can use
- 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."
- while in this state users cannot
- 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]
- Get sponsored into the packager group (you will get an email when this is done) [27] [28]
- Read the package maintenance guide [29]
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