From Fedora Project Wiki
Edwintorok (talk | contribs) (formatting) |
Edwintorok (talk | contribs) (formatting) |
||
Line 4: | Line 4: | ||
= Full Fedora package lifecycle = | = Full Fedora package lifecycle = | ||
Do not get discouraged by the large number of steps and be patient: some of them depend only on | 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. | ||
you (the packager) and take little time, other steps are outside your control | |||
and can take a long time to complete. | |||
== Preparation == | == Preparation == | ||
# Check whether a package exists already | # Check whether a package exists already <ref>https://apps.fedoraproject.org/packages/</ref> | ||
# Check whether a review request exists already | # Check whether a review request exists already <ref>http://fedoraproject.org/PackageReviewStatus/</ref> | ||
# Check whether the package would be allowed at all | # 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> | ||
# Create bugzilla and FAS accounts, sign the CLA, upload your public SSH key, join the relevant mailing lists | # Create bugzilla and FAS accounts, sign the CLA, upload your public SSH key, join the relevant mailing lists <ref>http://fedoraproject.org/wiki/Join_the_package_collection_maintainers#Becoming_a_Fedora_Package_Collection_Maintainer</ref> | ||
== Create the package == | == Create the package == | ||
# Familiarize yourself with the official guidelines | # Familiarize yourself with the official guidelines <ref>http://fedoraproject.org/wiki/Packaging:Guidelines</ref> <ref>http://fedoraproject.org/wiki/Packaging:OCaml</ref> | ||
# Create a .spec file following the official guidelines above | # Create a .spec file following the official guidelines above | ||
# Make sure that your package builds (using rpmbuild or preferably mock) | # Make sure that your package builds (using rpmbuild or preferably mock) | ||
# Check that your package meets the review guidelines | # Check that your package meets the review guidelines <ref>http://fedoraproject.org/wiki/Packaging:ReviewGuidelines</ref> | ||
# Perform a Koji scratch build | # 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) | ||
== Get the package reviewed | == Get the package reviewed <ref>https://bugzilla.redhat.com/bugzilla/enter_bug.cgi?product=Fedora&format=fedora-review search for package reviews on bugzilla</ref> == | ||
# Upload your Spec file and SRPM to a public place (you can use your fedoraproject.org webspace if you are sponsored already | # Upload your Spec file and SRPM to a public place (you can use your fedoraproject.org webspace if you are sponsored already <ref>https://fedoraproject.org/wiki/Infrastructure/fedorapeople.org</ref> | ||
# Create a package review request | # Create a package review request <ref>http://fedoraproject.org/wiki/Join_the_package_collection_maintainers#Create_Your_Review_Request</ref>, you will need the following info: | ||
#* package name, short package description, full package description | #* package name, short package description, full package description | ||
#* Spec URL | #* Spec URL | ||
Line 41: | Line 39: | ||
# 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) | # 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 | # 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>: | ||
#* package name | #* package name | ||
#* short description | #* short description | ||
Line 49: | Line 47: | ||
#* initialcc: FAS usernames receiving email regarding the package | #* initialcc: FAS usernames receiving email regarding the package | ||
# about a day later an admin will set the fedora-cvs flag to '+' | # 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/< | # 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> | ||
# some time later the package will show up on https://apps.fedoraproject.org/packages/< | # some time later the package will show up on <code>https://apps.fedoraproject.org/packages/<your-package-name></code> | ||
# use fedpkg to import the package, push the changes and request a koji build for rawhide | # use fedpkg to import the package, push the changes and request a koji build for rawhide <ref>http://fedoraproject.org/wiki/Join_the_package_collection_maintainers#Get_Sponsored</ref> 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 | # you can use 'koji download-build' to get the built package | ||
== Upload the package to Fedora release branches == | == Upload the package to Fedora release branches == | ||
# read the update policy | # 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 | ||
# once the builds succeed and you've tested the package use 'fedpkg update' to request an update in Bodhi: | # once the builds succeed and you've tested the package use 'fedpkg update' to request an update in Bodhi: | ||
Line 66: | Line 64: | ||
#* auto-karma at default settings | #* auto-karma at default settings | ||
# your request will show up in bodhi as PENDING | # 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> | ||
# be patient, there might be an extra day or so delay when the package is being pushed | # 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 | # the package will go through the following states in bodhi <ref>https://fedoraproject.org/wiki/Bodhi#Pending</ref> | ||
# taskotron will run some automated tests on your package, giving it negative karma if it fails them | # 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." | # at some point it will start to get pushed "This update is currently being pushed to the Fedora N testing updates repository." | ||
Line 79: | Line 77: | ||
{{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> | ||
== What is a package's status? == | == What is a package's status? == | ||
Line 88: | Line 83: | ||
* Search for package name on https://apps.fedoraproject.org/packages/ | * Search for package name on https://apps.fedoraproject.org/packages/ | ||
Found -> package is part of Fedora already | Found -> package is part of Fedora already | ||
* Open https://admin.fedoraproject.org/updates/<your-package-name> | * Open <code>https://admin.fedoraproject.org/updates/<your-package-name></code> | ||
** Bodhi update status STABLE: users can <code>yum install < | ** Bodhi update status STABLE: users can <code>yum install <your-package-name></code> or <code>dnf install <your-package></code> the package directly | ||
** Bodhi update status TESTING: users can <code>yum install --enablerepo="*-testing"< | ** Bodhi update status TESTING: users can <code>yum install --enablerepo="*-testing" <your-package-name></code> or <code>dnf install --enablerepo="*-testing"</code> the package | ||
** Bodhi update status PENDING: users cannot use <code>yum</code> or <code>dnf</code> to install the package yet | ** Bodhi update status PENDING: users cannot use <code>yum</code> or <code>dnf</code> to install the package yet | ||
* Open https://apps.fedoraproject.org/packages/<your-package-name> | * Open <code>https://apps.fedoraproject.org/packages/<your-package-name></code> | ||
Found -> package has (non-scratch) Koji builds | Found -> package has (non-scratch) Koji builds | ||
* Open https://admin.fedoraproject.org/pkgdb/package/<your-package-name> | * Open <code>https://admin.fedoraproject.org/pkgdb/package/<your-package-name></code> | ||
Found -> package has SCM repo | Found -> package has SCM repo | ||
* Search on http://fedoraproject.org/PackageReviewStatus | * Search on <code>http://fedoraproject.org/PackageReviewStatus</code> | ||
Found -> a package review request exists on bugzilla | 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: | * Open <code>https://bugzilla.redhat.com/show_bug.cgi?id=<review-bug-number></code> and look at flags on the right: | ||
** ''fedora-review'': '''-''' (blank): nobody is reviewing the package yet | ** ''fedora-review'': '''-''' (blank): nobody is reviewing the package yet | ||
** ''fedora-review'': '''?''' (assigned): the package is being reviewed, look for comments from reviewer | ** ''fedora-review'': '''?''' (assigned): the package is being reviewed, look for comments from reviewer | ||
Line 106: | Line 101: | ||
** ''fedora-cvs'': '''+''' (scm repo created): admin created git repo | ** ''fedora-cvs'': '''+''' (scm repo created): admin created git repo | ||
* All of the above searches fail: there is no package (review) yet | * All of the above searches fail: there is no package (review) yet | ||
= References = | |||
<references/> |
Revision as of 19:31, 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