From Fedora Project Wiki

Fedora Package Process

Create Account

If you are a new package maintainer:

  • Create a new account on Fedora Account System (FAS)
    • Click on 'New account' and fill in the blanks.
    • After you create your account, please be sure to sign the CLA (if you click on the "My Account" link in the top right, you should see CLA: CLA Done).
    • Also you need to upload a public RSA SSH key. You need to use the matching private key to access Fedora machines via SSH
  • Create an account in Red Hat bugzilla.
  • Install the client tools
    • To build Packages for the Fedora Collection or EPEL, you need Koji.
    • You'll also need to generate a client side certificate at the Fedora Account System and save the file in ~/.fedora.cert, where fedpkg will look for it by default.
    • You can now use "koji" to try to build your RPM packages on platforms (e.g., PPC) or distributions you don't have. Note that you can test out builds ("scratch" builds) even when your package hasn't been approved and you don't have a sponsor. Here is a simple way to do a scratch build using koji on the command line.

Make a Package

  • Make sure it is a new package. Check this list of existing packages.
  • Create an RPM package:
    • Create an RPM spec-file project
    • Use RPM-stubby to create a spec-file stub. Contributor works on spec-file. Tests on local builds. Support mock builds. Export SRPM/spec-file for review
  • Make sure it is a suitable package
    • Check Packaging Guidelines and Packaging Naming Guidelines to see if it meets the requirements
    • Read some other package submissions to learn about packaging and gain familiarity with the process and requirements. One way of doing this is to join the package-review@lists.fedoraproject.org mailing list.

(provide space to enter URL of hosted SRPM/.spec or scp to fedorapeople.org) and create review-request bug (using mylyn)

Submit For Review

  • Join the mailing lists (introduce yourself)
  • Create your review request (--set an appropriate flag for package review, inform upstream)
    • Fill out this form at bugzilla.
    • Before submitting your request, be sure there’s not a previous request for the same package.
    • Make sure that you put the name of the package (excluding version and release numbers) in the 'Review Summary' field, along with a very brief summary of what the package is.
    • Put a description of your package (usually, this can be the same thing as what you put in the spec %description) in the 'Review Description' field. Include the URLs to your SRPM and SPEC files. Also, explain that this is your first package and you need a sponsor.
  • Upload your package
    • Upload your SRPM and SPEC files onto the Internet somewhere. This can be anywhere accessible by a URL.
    • If you need hosting space, please make a note of it in your ticket submission and someone will take care of you.
    • If you have already got a Fedora Account then you can use your storage at <user-name>.fedorapeople.org for this.
  • Watch the bugzilla report for feedback
    • Watch the Bugzilla report for your first package. You should get notifications of changes by email. Fix any blockers that the reviewer(s) point out.

Ready to Ship

Follow these steps after your package is approved by reviewers.

  • Obtain member sponsorship (to check in and build your package)
  • Add package to Source Code Management (SCM) system and Set Owner
  • Check out the empty module from SCM
    • --Use Eclipse Commands

Update your SCM

  • Import and commit your SRPM into master branch
    • Right click on your locally package made inside eclipse...--can be a new feature
  • Build your package
  • Submit your package as update in Bodhi
  • Close the bugzilla account
  • Add the package to the comp files
    • If appropriate for the package, make it available in "comps" files so that it can be selected during installation and included in yum's package group operations. See PackageMaintainers/CompsXml for more info.
  • Enable Upstream Release Monitoring
    • Fedora has infrastructure available for monitoring new upstream releases of the software you are packaging. Refer to Upstream Release Monitoring for more details.