From Fedora Project Wiki
Mandatory review guidelines:
- rpmlint output - rpmlint output that probably doesn't need correcting for - Package meets naming guidelines - Spec file matches base package name - Spec is legible - Spec written in American English - License is acceptable (MIT) - License field in spec is correct - License file included in package %docs or not included in upstream source - Sources match upstream (unless altered due to fix permissibility issues) - Sources contain only permissible code or content - Build succeeds on at least one supported platform - Build succeeds on all supported platforms or has ExcludeArch + bugs filed - BuildRequires correct - Package handles locales w/find_lang - %post, %postun call ldconfig if package contains shared .so files - No bundled libs - Relocatability is justified - Package owns all directories it creates - Package requires those that create directories it requires - Package's files and directories don't conflict with others' - No duplicate files in %files - Each %files section contains %defattr - File permissions are sane - Consistent use of macros - Large documentation files go in -doc package - Missing %doc files do not affect runtime - Headers go in -devel package - Static libs go in -static package - Unversioned .so files go in -devel package - Devel packages require base w/ fully-versioned dependency - Package contains no .la files - GUI app installs .desktop file w/ desktop-file-install or has justification - File names are valid UTF-8
Packaging guidelines:
- license file installed when any subpackage combination is installed
- Package obeys FHS, except libexecdir and /usr/target
- Changelog in prescribed format
- Spec file lacks Packager, Vendor, PreReq tags
- BuildRoot tag included on < F10/EL5
- Correct %clean section on < F13
- Requires correct, justified where necessary
- %build honors applicable compiler flags or justifies otherwise
- Useful -debuginfo package or justification otherwise
- No static executables
- Rpath absent or only used for internal libs
- %config files marked noreplace or justified
- No %config files under /usr
- SysV-style init script
- Spec uses macros instead of hard-coded directory names
- %makeinstall used only when
make install DESTDIR=... doesn't work
- Macros in Summary, %description expandable at SRPM build time
- Conflicts are justified
- No kernel modules
Optional review guidelines:
- Query upstream about including license files - Translations of description, Summary - Builds in mock - Functions as described - Scriptlets are sane - Non-devel subpackages require base w/ fully-versioned dependencies - .pc files go in -devel unless main package is a development tool - No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin - Man pages included for all executables - Latest version - Has dist tag - %global instead of %define - File timestamps preserved by file ops - Parallel make - Patches link to upstream bugs/comments/lists or are otherwise justified