From Fedora Project Wiki

Revision as of 06:18, 28 May 2008 by Abompard (talk | contribs) (update page for mediawiki)

Aurélien Bompard

Email: aurelien at bompard dot org

Jabber: abompard(a)

I'm rarely on IRC, but when I am it's on #fedora and #fedora-extras

GPG Key: 1B4259B3

Location: Paris, France (GMT+1, +2 during summer)

Profession: Sysadmin

Company: CS Communication & Systems

Homepage: (in french)

Participation in the Fedora Project


I'm a packager for Fedora Extras. I maintain around 40 packages in Fedora Extras, of which the most famous are:

  • amarok
  • awstats
  • glest
  • gwenview
  • psi
  • pure-ftpd
  • php-adodb
  • showimg
  • tiger
  • ulogd
  • xine-lib


I also do as much QA as I can on the new submission request for Extras.

I know a little python and I've written a script to automate these QA checks. You can find it here :

The aim of this script is to test all the MUST items in PackageReviewGuidelines which are not covered by rpmlint.

This script requires python, mock, rpmlint and yum-utils. To use it, follow these steps:

  • Create the rpm build directory structure, for example with fedora-buildrpmtree from the fedora-rpmdevtools package.
  • cd to a temp dir (ex: ~/tmp) in a terminal.
  • run fedora-qa <bugid> or fedora-qa <srpm>
  • answer the questions, and a report will be printed. The report and additional files (like binaries, build log, etc...) can be found in the "~/reports/<rpm_name>" directory. The "~/reports" base dir can be configured in ~/.fedora-qa

The script is very likely to give false-positives, so don't take everything it says for granted. The idea is more to show you where to dig.

Here are the tests performed (in this order):

$ fedora-qa -l
CheckName : ask the user if the name-version-release is correct
CheckSpecDiff : diff the spec files in case of update
CheckSources : check upstream sources: returns a list of lines for the report
CheckPatches : checks the patches in the srpm
CheckBRConsistency : Checks that only one of $RPM_BUILD_ROOT or %{buildroot} is used
CheckBuildRoot : Checks that the BuildRoot is the Fedora-preferred one
CheckDFU : Checks that the desktop-file-utils is required if desktop-file-install is used
CheckBRExceptions : Checks that the package does not have excluded BuildRequires
CheckEncoding : Checks that the spec file is in ASCII or UTF-8
CheckSpecName : Checks that the spec filename is %{name}.spec
CheckSMPFlags : Checks that the smp flags are set for make
CheckQTEnvVars : Checks that the QT environment variables are set
CheckRelocatable : Checks that the package is not marked Relocatable
CheckClean : Checks that the specfile contains a proper %%clean section
CheckBRDuplicates : Checks that the package does not have duplicate BuildRequires
CheckRPMMacros : Checks that paths are replaced with RPM macros
CheckRequiresPrePost : Checks that the form "Requires(pre,post)" is not used
CheckLatestVersion : Checks that the package uses the latest version
CheckForbiddenTag : Checks that the package does not contain forbidden tags
CheckDownloadableSource : checks if at least one of the source is an URL
CheckCleanBRInInstall : Checks that the specfile cleans the BuildRoot in %install
CheckFindLangGettext : Checks that gettext is Required if the %find_lang macro is used
CheckNoarch : checks if the package is improperly built for noarch
CheckMakeInstallMacro : Checks that the %makeinstall macro is not used
CheckGhostPyo : checks if the *.pyo files are %%ghost'ed
CheckSpec : Just read the spec file
CheckDiffTemplate : Diff against the template for relevant packages
CheckBuildMock : Builds the RPM with mock
CheckRpmlint : unleashes rpmlint at the srpm and the binary rpm if the build is complete
CheckFiles : checks files list and ownership
CheckDesktopFile : checks the presence of a .desktop file if the package depends on xorg.
CheckLicenseFile : checks the presence of a license file.
CheckFileListedTwice : checks if a file has been listed multiple times in %%files
CheckDefattr : checks if all the %%files sections contain %%defattr() instructions
CheckLibtoolArchives : checks the presence of a .la libtool archives
CheckDesktopFileProperties : checks if the desktop files are valid
CheckScriptletsRequirements : Checks that the usual programs found in the scriptlets are Required
CheckLangTag : checks that the translation files are tagged
CheckDBUpdate : checks that the package updates the proper database in the scriptlets if it has corresponding files
CheckOwnedDirs : checks that the package does not own standard dirs
CheckConfigFiles : checks config files list and ownership
CheckPkgconfig : checks if the package needs to Require pkgconfig
CheckHicolor : checks if the package needs to Require hicolor-icon-theme
CheckOptFlags : checks if the rpm honors the compiler flags

Help and Communication

I'm a Fedora Mentor , which means you should feel free to contact me if you think I can help you as regards to packaging or processes. I'm also a Fedora Ambassador for Paris and its surroundings in France. Feel free to contact me if you live in this area and you want information about Fedora. I'll try to attend as many Linux-related events as I can, see you there !