New Package Process for Existing Contributors
This is a short version of the New Package Process, streamlined to show how existing contributors can make new packages.
-
Read the Packaging Guidelines and Package Naming Guidelines. Really. Be comfortable with them.
-
Make a package.
-
You should make sure that it is a new package. A list of existing packages in Fedora Packages is here: https://src.fedoraproject.org/projects/rpms/*
-
Some information on how to create an RPM package is in Packaging Tutorial.
-
Make sure that your package meets the Packaging Guidelines and Package Naming Guidelines
-
Be aware of forbidden items and Package Review Guidelines. They will be used during the package review.
-
-
Upload your SRPM and SPEC files onto the internet somewhere.
-
If you have already got a Fedora Account then you can use your storage at https://fedorapeople.org for this.
-
-
Make sure you have a Bugzilla account at bugzilla.redhat.com
-
Fill out Bugzilla Fedora review form to create a review request.
-
Make sure you put the name of the package in the
Review Summary
field, along with a very brief summary of what it is -
Make sure that you put the URL paths for the SPEC file and the SRPM file in the
Review Description
-
Put a description of your package (usually, this can be the same thing as what you put in the spec
%description
) inReview Description
-
The review process is described in detail in Package Review Guidelines.
-
-
Watch the review request in Bugzilla. Fix any blockers that the reviewer(s) point out.
-
When the package is approved, request a distgit repository for your package.
-
Make sure the reviewer is the Assignee in your Bugzilla ticket.
-
Request a distgit repository with
fedpkg request-repo PACKAGE-NAME BUGZILLA-TICKET-NUMBER
. (Package Maintenance Guide has more information aboutfedpkg
.) You might need to get a pagure-API-token before being able to successfully request the repo. -
When the repo is created, it only contains the
rawhide
branch. If you want to bring the package to other Fedora releases, see Requesting branches.
-
-
Once the requests have been processed, checkout the distgit repository with
fedpkg clone <packagename>
. -
Import your srpm
-
First
fkinit -u username
-
Then you can import the approved SRPM into the rawhide branch by running
fedpkg import libfoo-x.x.x.src.rpm; git commit -m "Initial import (fedora#nnnnnn)."
(wherennnnnn
is your Bugzilla package review bug number). If your package is using autochangelog, writing the bug number as specified will make Bodhi automatically close the bug when your package is submitted to Rawhide stable repository. -
Obviously, replace
libfoo-x.x.x.src.rpm
with the full path to your approved SRPM. -
You should see it upload the sources, and finish successfully. If you didn’t set up
ssh-agent
it will ask often for your ssh-key passphrase. This is normal. -
Now run
git push
to get the final versions in your rawhide branch.
-
-
You can now import the package to your branches (which you requested in Step 7) too
-
The quickest way to do this is to use
fedpkg switch-branch BRANCH
to switch the branch (whereBRANCH
can bef13
and so on). -
Now you can
git merge rawhide
. This will get.spec
file,.gitignore
and source file together with any patches and other files from the rawhide branch and create an identical commit. -
Previous step already created commit for you, now you can push the results using
fedpkg push
orgit push
.
-
-
Request builds
-
For each branch that you’d like to request a build for, switch using
fedpkg switch-branch
and runfedpkg build
. -
If everything goes well, it should queue up your branch for building, the package will cleanly build, and you’re done!
-
If it fails to build, the buildsystem will send you an email to report the failure and link you to the logs. Commit any needed changes to git, bump the spec release number and request a new build.
-
-
Close the Bugzilla ticket (assuming that the package built successfully)
-
You should close it with resolution
NEXTRELEASE
orRAWHIDE
, depending on where you built the package. The resolution field will appear after you set the status field toCLOSED
.
-
-
If this package will be built for any version of Fedora that is already released please submit it for inclusion in the
fedora-updates
repository for those versions of Fedora. See Package Update Guide for more details. -
Add the package to the comps file(s) if appropriate.
-
Consider enabling Upstream Release Monitoring for the package.
We know that this process can be as clear as mud sometimes, we’re always trying to make it better. If you run into any problems, or have any questions, please ask on the Fedora development list.
Package Maintenance Guide may also be of use.
Want to help? Learn how to contribute to Fedora Docs ›