From Fedora Project Wiki

< User:Gholms

Revision as of 20:55, 3 September 2010 by Gholms (talk | contribs) (Created page with 'Mandatory review guidelines: - rpmlint output - rpmlint output that probably doesn't need correcting for - Package meets naming guidelines - Spec file matches base package na...')
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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