From Linux NFS

Jump to: navigation, search


Project: fedfs-utils

[ Project Home | News | Downloads | Docs | Mailing Lists | Source Control | Issues ]

Fedora packaging recipes

Set up

Start here:


See also:




Install redhat-rpm-config and fedora-packager:

 $ sudo yum install redhat-rpm-config fedora-packager fedora-review
 $ fedora-packager-setup

It asks for an "Export password." This is to protect the certificate before it is imported into a web browser. Web browser use is not required. Note that I will have to do this step every 6 months because the certificate generated by this step will expire.

Add your user ID to the local system's "mock" group.

 # usermod -a -G mock cel

After a new branch is created, you may find you are missing a mock config file for a new Fedora release.

 $ fedpkg mock-config > /tmp/mock.cfg
 $ sudo mv /tmp/mock.cfg /etc/mock/fedora-20-x86_64.cfg

Start up ssh agent. If id_rsa is password-protected, enter the appropriate password.

 $ ssh-agent bash
 $ ssh-add ~/.ssh/fedora/id_rsa

The very first time you need to set up a certificate. This cert will have to be copied to all systems you do any packaging work on. The cert expires every so often, and a new one will need to be generated.

 $ fedora-cert -n

Creates a local ~/.fedora and ~/.fedora.cert which can be copied to other systems.

This certificate is valid for six months. If any part of the below process fails because your certificate is no longer valid, use:

 $ fedora-cert -v

If the certificate has expired, fedora-cert will generate a fresh certificate. Your FAS password (used with admin.fedoraproject.org) is needed to complete this process.

Updating an existing package

Looks like we are following this process:

 $ fedpkg clone fedfs-utils

If you already have a repository, make sure you start out on the master branch.

 $ fedpkg switch-branch master

It turns out "wget" of a gitweb tarball just doesn't work. I always get an XML blob. Clicking on the link works as expected. So I used my local copy of the fedfs-releases repository instead.

 $ fedpkg new-sources ~/src/fedfs/fedfs-releases/fedfs-utils-0.9.1.tar.gz

Update the .spec file Version: and Release: tags. When updating a non-master branch, heed the instructions here when updating the Release: tag.

Try out the changes with one or all of these:

 $ fedpkg mockbuild
 $ fedpkg local
 $ rpmlint fedfs-utils.spec
 $ fedpkg lint
 $ fedpkg install; fedpkg verify-files
 $ fedora-review fedfs-utils

Fix any problems, then commit and push. Copy the commit message from the change log in the .spec file.

 $ fedpkg commit -p

Test the commit by recloning the package into /tmp and performing the mockbuild step again. If all is well, request a build:

 $ fedpkg build

Check the package build status here:


When are these changes available in rawhide so they can be tested?

When you are happy with the changes and the build is working, switch to appropriate stable branches and apply your change there.

 $ git show > /tmp/diff
 $ fedpkg switch-branch f19
 $ patch -p1 -i /tmp/diff
 $ fedpkg diff
 $ fedpkg mockbuild
 $ fedpkg local
 $ fedpkg install; fedpkg verify-files

After all is well, commit and push, and then build. Copy the commit message from the change log in the .spec file.

 $ fedpkg commit -p
 $ fedpkg build

If this is rawhide, you are done. Note that branches that are still in alpha may also behave like rawhide in that no fedpkg update step is required (the branch isn't using bodhi yet). Check bodhi to see if the branch is listed.

For branches controlled by bodhi, notify bodhi of the update to get the change into the stable release branches. Your FAS password (used with admin.fedoraproject.org) is needed to complete this process.

 $ fedpkg update

After a week, if you haven't gained any negative karma, bodhi should let you log into the BUI and push the change to stable, which releases it to the download repositories after a day or two.

Click on the link in the e-mail. It should take you to a page under


Be sure to log in (top of the column on the left). Once logged in, you should see a link on the upper right hand side of the page labeled "Mark as stable". Click there.

Setting up a system for Extra Packages for Enterprise Linux (EPEL) package building and testing

External references:

  * http://fedoraproject.org/wiki/EPEL/FAQ
  * https://fedoraproject.org/wiki/EPEL
  * http://fedoraproject.org/wiki/Packaging:DistTag
  * https://fedoraproject.org/wiki/Packaging:SysVInitScript

On Oracle Linux, set up the public yum repo.

 # cd /etc/yum.repos.d
 # wget https://public-yum.oracle.com/public-yum-ol6.repo
 # yum update

Next, install "epel-release" on your EL6 system so that you can install packages from the EPEL repository.

 # rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

Now, with epel-release installed, you can install redhat-rpm-config and fedora-packager.

 # yum install redhat-rpm-config fedora-packager

Start up ssh-agent with the Fedora ssh key. Use the local password.

 $ ssh-agent bash
 $ ssh-add ~/.ssh/fedora/id_rsa

Go into your local Fedora package directory, and bring down a fresh copy of the fedfs-utils package source.

 $ fedpkg clone fedfs-utils

Switch to the EPEL branch.

 $ fedpkg switch-branch el6

Make your changes and go to the mockbuild step above.

[ these instructions are incomplete ]

As a final step, a packaging review must be requested. See:

Personal tools