From Fedora Project Wiki
Edwintorok (talk | contribs) (rearrange based on package not maintainer steps) |
Edwintorok (talk | contribs) No edit summary |
||
Line 8: | Line 8: | ||
# Unknown | # Unknown | ||
#* This procedure tries to find out where in its lifecycle a package is by searching for lifecycle states in reverse order: | |||
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 <ref>https://apps.fedoraproject.org/packages/</ref> | #* Check whether a package exists already in a release <ref>https://apps.fedoraproject.org/packages/</ref> | ||
#* Check whether the package has (non-scratch) Koji builds <code>https://apps.fedoraproject.org/packages/<your-package-name></code> | #* Check whether the package has (non-scratch) Koji builds <code>https://apps.fedoraproject.org/packages/<your-package-name></code> | ||
Line 15: | Line 14: | ||
#* Check whether a review request exists already <ref>http://fedoraproject.org/PackageReviewStatus/</ref> | #* Check whether a review request exists already <ref>http://fedoraproject.org/PackageReviewStatus/</ref> | ||
#* Check whether the package would be allowed at all <ref>http://fedoraproject.org/wiki/Forbidden_items</ref> <ref>http://fedoraproject.org/wiki/Packaging:LicensingGuidelines</ref> | #* Check whether the package would be allowed at all <ref>http://fedoraproject.org/wiki/Forbidden_items</ref> <ref>http://fedoraproject.org/wiki/Packaging:LicensingGuidelines</ref> | ||
# Not found | # Not found | ||
#* You can [[#NewPackager|become a package maintainer]] and create a package yourself | #* You can [[#NewPackager|become a package maintainer]] and create a package yourself | ||
#* Familiarize yourself with the official guidelines <ref>http://fedoraproject.org/wiki/Packaging:Guidelines</ref> <ref>http://fedoraproject.org/wiki/Packaging:OCaml</ref> | #* Familiarize yourself with the official guidelines <ref>http://fedoraproject.org/wiki/Packaging:Guidelines</ref> <ref>http://fedoraproject.org/wiki/Packaging:OCaml</ref> | ||
Line 26: | Line 23: | ||
#* (optional) run <code>fedora-review</code> to get prepared for the review. The output doesn't have to be perfect, certain things may be safe to ignore. | #* (optional) run <code>fedora-review</code> 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. | Discuss with your reviewer/sponsor if you are uncertain on what to do with the warnings reported. | ||
# Creating review request | # Creating review request | ||
#* Upload your <code>spec</code> and <code>SRPM</code> files to a public place (you can use your fedoraproject.org webspage if you are sponsored already <ref>https://fedoraproject.org/wiki/Infrastructure/fedorapeople.org</ref>, or some personal site otherwise) | #* Upload your <code>spec</code> and <code>SRPM</code> files to a public place (you can use your fedoraproject.org webspage if you are sponsored already <ref>https://fedoraproject.org/wiki/Infrastructure/fedorapeople.org</ref>, or some personal site otherwise) | ||
Line 36: | Line 32: | ||
#** link to your Koji scratch build (optional) | #** link to your Koji scratch build (optional) | ||
#** if this is your first package block the FE-NEEDSPONSOR bug | #** if this is your first package block the FE-NEEDSPONSOR bug | ||
# Review requested: '''fedora-review''' is '''-''' | # Review requested: '''fedora-review''' is '''-''' | ||
#* nobody is reviewing the package yet | #* nobody is reviewing the package yet | ||
#* be patient until you find a reviewer, they will set the '''fedora-review''' flag to '''?''' | #* be patient until you find a reviewer, they will set the '''fedora-review''' flag to '''?''' | ||
# Under review: '''fedora-review''' is '''?''' | # Under review: '''fedora-review''' is '''?''' | ||
#* a fedora packager is reviewing your package, be patient and solve any issues they find. | #* a fedora packager is reviewing your package, be patient and solve any issues they find. | ||
Line 46: | Line 40: | ||
with an explanation of what you changed. | with an explanation of what you changed. | ||
#* iterate until the reviewer approves your package, at which point they will set the <code>fedora-review</code> flag to '''+''' | #* iterate until the reviewer approves your package, at which point they will set the <code>fedora-review</code> flag to '''+''' | ||
# Approved: '''fedora-review''' is '''+''' | # Approved: '''fedora-review''' is '''+''' | ||
#* if this is your first package then find a sponsor, see [[#NewMaintainer|becoming a packager]] | #* if this is your first package then find a sponsor, see [[#NewMaintainer|becoming a packager]] | ||
#* create a SCM admin request <ref>http://fedoraproject.org/wiki/Package_SCM_admin_requests</ref> by setting the '''fedora-cvs''' flag to '''?''' and using the exact template from the official documentation <ref>http://fedoraproject.org/wiki/Package_SCM_admin_requests</ref>. You will need the following information at hand: | #* create a SCM admin request <ref>http://fedoraproject.org/wiki/Package_SCM_admin_requests</ref> by setting the '''fedora-cvs''' flag to '''?''' and using the exact template from the official documentation <ref>http://fedoraproject.org/wiki/Package_SCM_admin_requests</ref>. You will need the following information at hand: | ||
Line 57: | Line 49: | ||
#** branches: fedora and epel release branches that you want to target | #** 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) | #** list of FAS usernames receiving email regarding the package (probably just you unless package is co-maintained) | ||
# SCM repository requested: '''fedora-cvs''' flag is '''?''' | # SCM repository requested: '''fedora-cvs''' flag is '''?''' | ||
#* wait for about a day, when an admin will set the '''fedora-cvs''' flag to '''+''' | #* wait for about a day, when an admin will set the '''fedora-cvs''' flag to '''+''' | ||
# SCM repository granted: '''fedora-cvs''' flag is '''+''' | # SCM repository granted: '''fedora-cvs''' flag is '''+''' | ||
#* at this point the repository should be created, and you can track the status at <code>https://admin.fedoraproject.org/pkgdb/package/<your-package-name></code> | #* at this point the repository should be created, and you can track the status at <code>https://admin.fedoraproject.org/pkgdb/package/<your-package-name></code> | ||
Line 70: | Line 60: | ||
#* you can use <code>koji download-build</code> to get the built package | #* you can use <code>koji download-build</code> to get the built package | ||
#* some time later the package will show up on <code>https://apps.fedoraproject.org/packages/<your-package-name></code> | #* some time later the package will show up on <code>https://apps.fedoraproject.org/packages/<your-package-name></code> | ||
# Has <code>koji</code> build for rawhide | # Has <code>koji</code> build for rawhide | ||
#* make sure to always request a build for rawhide (master branch) before pushing or requesting builds for other branches | #* make sure to always request a build for rawhide (master branch) before pushing or requesting builds for other branches | ||
#* read the update policy <ref>http://fedoraproject.org/wiki/Updates_Policy</ref> | #* read the update policy <ref>http://fedoraproject.org/wiki/Updates_Policy</ref> | ||
#* 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 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 <code>koji</code> build for a (branched) fedora release | # Has <code>koji</code> 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: | #* 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: | ||
Line 87: | Line 74: | ||
#* bodhi (?) will also trigger a build for <code>s390</code> and <code>s390x</code> | #* bodhi (?) will also trigger a build for <code>s390</code> and <code>s390x</code> | ||
#* your request will show up in bodhi as PENDING <ref>https://fedoraproject.org/wiki/Bodhi#Pending</ref><code>https://admin.fedoraproject.org/updates/<package-name></code> | #* your request will show up in bodhi as PENDING <ref>https://fedoraproject.org/wiki/Bodhi#Pending</ref><code>https://admin.fedoraproject.org/updates/<package-name></code> | ||
# Bodhi shows PENDING status for package | # 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, | #* 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. | they should be available automatically after some time. | ||
Line 97: | Line 82: | ||
#* taskotron will run some automated tests on your package, posts its logs to bodhi and gives negative karma if it fails any tests | #* 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." | #* 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 | # Bodhi shows TESTING status for package | ||
#* in TESTING fedora users can see your package if they have the <code>updates-testing</code> repository enabled in {{package|yum}} or {{package|dnf}} (default enabled for Alpha releases, disabled for final releases): <code>yum install --enablerepo="*-testing" <your-package-name></code> or <code>dnf install --enablerepo="*-testing" <your-package-name></code> | #* in TESTING fedora users can see your package if they have the <code>updates-testing</code> repository enabled in {{package|yum}} or {{package|dnf}} (default enabled for Alpha releases, disabled for final releases): <code>yum install --enablerepo="*-testing" <your-package-name></code> or <code>dnf install --enablerepo="*-testing" <your-package-name></code> | ||
#* any fedora user with a FAS account can provide feedback (karma) | #* 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) | #* 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 | #* 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 | ||
# Bodhi shows STABLE status for package | # Bodhi shows STABLE status for package | ||
#* users can now install your package as usual with <code>yum install <yourpackage></code> or <code>dnf install <yourpackage></code> | #* users can now install your package as usual with <code>yum install <yourpackage></code> or <code>dnf install <yourpackage></code> |
Revision as of 22:16, 20 March 2015
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