Edwintorok (talk | contribs) (note about s390) |
Edwintorok (talk | contribs) (rearrange based on package not maintainer steps) |
||
Line 2: | Line 2: | ||
Use the [[#References|official documentation]] instead}} | Use the [[#References|official documentation]] instead}} | ||
= | = 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 | |||
# Check whether a package exists already <ref>https://apps.fedoraproject.org/packages/</ref> | This procedure tries to find out where in its lifecycle a package is by searching for lifecycle states in reverse order: | ||
# Check whether a review request exists already <ref>http://fedoraproject.org/PackageReviewStatus/</ref> | #* Check whether a package exists already in a release <ref>https://apps.fedoraproject.org/packages/</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 | #* Check whether the package has (non-scratch) Koji builds <code>https://apps.fedoraproject.org/packages/<your-package-name></code> | ||
#* Check whether a SCM repository exists already <code>https://admin.fedoraproject.org/pkgdb/package/<your-package-name></code> | |||
#* 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> | |||
# Not found | |||
# Familiarize yourself with the official guidelines <ref>http://fedoraproject.org/wiki/Packaging:Guidelines</ref> <ref>http://fedoraproject.org/wiki/Packaging:OCaml</ref> | #* You can [[#NewPackager|become a package maintainer]] and create a package yourself | ||
# Create a .spec file following the official guidelines above | #* Familiarize yourself with the official guidelines <ref>http://fedoraproject.org/wiki/Packaging:Guidelines</ref> <ref>http://fedoraproject.org/wiki/Packaging:OCaml</ref> | ||
# Make sure that your package builds (using rpmbuild or preferably mock) | #* Create a .spec file following the official guidelines above | ||
# Check that your package meets the review guidelines <ref>http://fedoraproject.org/wiki/Packaging:ReviewGuidelines</ref> | #* Make sure that your package builds (using rpmbuild or preferably mock <ref>http://fedoraproject.org/wiki/Using_Mock_to_test_package_builds</ref>) | ||
# | #* Check that your package meets the review guidelines <ref>http://fedoraproject.org/wiki/Packaging:ReviewGuidelines</ref> | ||
#* (optional) perform a Koji scratch build <ref>http://fedoraproject.org/wiki/Package_Review_Process#Contributor</ref> (this requires having a FAS account, but doesn't require sponsoring) | |||
#* (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. | |||
# 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) | |||
#* Create a package review request <ref>https://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&format=fedora-review</ref>. 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 | |||
# | # 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 '''?''' | |||
# | |||
# be patient until you find a reviewer, they will set 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 <code>spec</code>, <code>SRPM</code> 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 <code>fedora-review</code> flag to '''+''' | |||
# | # Approved: '''fedora-review''' is '''+''' | ||
#* 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: | |||
#** 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 <code>https://admin.fedoraproject.org/pkgdb/package/<your-package-name></code> | ||
# the package | #* might take about an hour until your permissions are synchronized | ||
#* use {{package|fedpkg}} to import the package, and push the changes<ref>http://fedoraproject.org/wiki/Join_the_package_collection_maintainers#Get_Sponsored</ref> | |||
{{admon/note|test your commits| you are not allowed to force push your git branches, so take care at least run <code>fedpkg local</code> and <code>fedpkg lint</code> 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}} | |||
# a | #* request a koji build for rawhide from your master branch with <code>fedpkg build</code>: koji will build for <code>x86_64</code>, <code>i686</code> and <code>armv7l</code>. | ||
You can access the build logs from the koji webinterface or cli. | |||
# | #* you can use <code>koji download-build</code> to get the built package | ||
# package | #* 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 | ||
#* 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> | |||
#* 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 | |||
#* 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 <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> | |||
# 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 <code>yum install</code> or <code>dnf install</code> 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 <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) | |||
#* 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 | |||
# 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> | |||
= EPEL package lifecycle = | |||
{{admon/warning|TBD|where to get approval, what is the exact lifecycle for an EPEL package}} | {{admon/warning|TBD|where to get approval, what is the exact lifecycle for an EPEL package}} | ||
# Read the EPEL policies <ref>https://fedoraproject.org/wiki/EPEL_Package_Maintainers</ref> <ref>https://fedoraproject.org/wiki/EPEL:Packaging?rd=Packaging:EPEL EPEL packaging guidelines</ref> <ref>https://fedoraproject.org/wiki/EPEL_Updates_Policy EPEL Updates policy</ref> <ref>https://fedoraproject.org/wiki/EPEL_incompatible_upgrades_policy EPEL incompatible upgrades policy</ref> | #* Read the EPEL policies <ref>https://fedoraproject.org/wiki/EPEL_Package_Maintainers</ref> <ref>https://fedoraproject.org/wiki/EPEL:Packaging?rd=Packaging:EPEL EPEL packaging guidelines</ref> <ref>https://fedoraproject.org/wiki/EPEL_Updates_Policy EPEL Updates policy</ref> <ref>https://fedoraproject.org/wiki/EPEL_incompatible_upgrades_policy EPEL incompatible upgrades policy</ref> | ||
= | = 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 <ref>https://bugzilla.redhat.com/createaccount.cgi</ref> | |||
* | #* Create a FAS account <ref>https://admin.fedoraproject.org/accounts</ref> | ||
** | #* Login to FAS and sign the CLA, upload your public SSH key, and (optionally) your OpenPGP key | ||
* | #* Consult the documentation <ref>http://fedoraproject.org/wiki/Join_the_package_collection_maintainers</ref> | ||
** | #* 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 <ref>http://fedoraproject.org/wiki/Join_the_package_collection_maintainers#Becoming_a_Fedora_Package_Collection_Maintainer</ref> <ref>https://lists.fedoraproject.org/mailman/listinfo</ref> | |||
#* Send a self-introduction email <ref>http://fedoraproject.org/wiki/Join_the_package_collection_maintainers#Introduce_yourself</ref> | |||
#* Get sponsored into the packager group (you will get an email when this is done) <ref>http://fedoraproject.org/wiki/Join_the_package_collection_maintainers#Get_Sponsored</ref> <ref>http://fedoraproject.org/wiki/How_to_get_sponsored_into_the_packager_group</ref> | |||
#* Read the package maintenance guide <ref>http://fedoraproject.org/wiki/Package_maintenance_guide</ref> | |||
= References = | = References = | ||
<references/> | <references/> |
Revision as of 22:14, 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