From Fedora Project Wiki
(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...')
 
No edit summary
Line 1: Line 1:
<pre>
Mandatory review guidelines:
Mandatory review guidelines:
  - rpmlint output
  - rpmlint output
- rpmlint output that probably doesn't need correcting for
  ...
  - Package meets naming guidelines
  - Package meets naming guidelines
  - Spec file matches base package name
  - Spec file name matches base package name
- License is acceptable
  ...
- License field in spec is correct
- License files included in package %docs or not included in upstream source
- License files installed when any subpackage combination is installed
- Spec written in American English
  - Spec is legible
  - Spec is legible
- Spec written in American English
  - Sources match upstream unless altered to fix permissibility issues
- License is acceptable (MIT)
  Upstream MD5: ...
- License field in spec is correct
  Your MD5:      ...
- 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 at least one supported platform
  - Build succeeds on all supported platforms or has ExcludeArch + bugs filed
  - Build succeeds on all supported platforms or has ExcludeArch + bugs filed
  - BuildRequires correct
  - BuildRequires correct
  - Package handles locales w/find_lang
  - Package handles locales with %find_lang
  - %post, %postun call ldconfig if package contains shared .so files
  - %post, %postun call ldconfig if package contains shared .so files
  - No bundled libs
  - No bundled system libs
  - Relocatability is justified
  - Relocatability is justified
  - Package owns all directories it creates
  - Package owns all directories it creates
  - Package requires those that create directories it requires
  - Package requires other packages for directories it uses but does not own
- Package's files and directories don't conflict with others'
  - No duplicate files in %files unless necessary for license files
  - No duplicate files in %files
- File permissions are sane
  - Each %files section contains %defattr
  - Each %files section contains %defattr
- File permissions are sane
  - Consistent use of macros
  - Consistent use of macros
- Sources contain only permissible code or content
  - Large documentation files go in -doc package
  - Large documentation files go in -doc package
  - Missing %doc files do not affect runtime
  - Missing %doc files do not affect runtime
Line 30: Line 34:
  - Static libs go in -static package
  - Static libs go in -static package
  - Unversioned .so files go in -devel package
  - Unversioned .so files go in -devel package
  - Devel packages require base w/ fully-versioned dependency
  - Devel packages require base with fully-versioned dependency
  - Package contains no .la files
  - Package contains no .la files
  - GUI app installs .desktop file w/ desktop-file-install or has justification
  - GUI app installs .desktop file w/ desktop-file-install or has justification
- Package's files and directories don't conflict with others' or justified
  - File names are valid UTF-8
  - File names are valid UTF-8
Optional review guidelines:
- Query upstream about including license files
- Translations of description, Summary
- Builds in mock
- Builds on all supported platforms
- 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


Packaging guidelines:
Packaging guidelines:
  - license file installed when any subpackage combination is installed
  - Has dist tag
- Useful without external bits
  - Package obeys FHS, except libexecdir and /usr/target
  - Package obeys FHS, except libexecdir and /usr/target
  - Changelog in prescribed format
  - Changelog in prescribed format
  - Spec file lacks Packager, Vendor, PreReq tags
  - Spec file lacks Packager, Vendor, PreReq tags
  - BuildRoot tag included on < F10/EL5
  - Correct BuildRoot tag on < F10/EL6
  - Correct %clean section on < F13
  - Correct %clean section on < F13/EL6
  - Requires correct, justified where necessary
  - Requires correct, justified where necessary
- Summary, description do not use trademarks incorrectly
- All relevant documentation is packaged, tagged appropriately
  - %build honors applicable compiler flags or justifies otherwise
  - %build honors applicable compiler flags or justifies otherwise
  - Useful -debuginfo package or justification otherwise
- Package with .pc files Requires pkgconfig on < EL6
  - Useful -debuginfo package or disabled and justified
  - No static executables
  - No static executables
  - Rpath absent or only used for internal libs
  - Rpath absent or only used for internal libs
Line 53: Line 74:
  - %makeinstall used only when ``make install DESTDIR=...'' doesn't work
  - %makeinstall used only when ``make install DESTDIR=...'' doesn't work
  - Macros in Summary, %description expandable at SRPM build time
  - Macros in Summary, %description expandable at SRPM build time
  - Conflicts are justified
  - Spec uses %{SOURCE#} instead of $RPM_SOURCE_DIR or %{sourcedir}
- No kernel modules
  - %global instead of %define where appropriate
 
- Package containing translations BuildRequires gettext
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
  - File timestamps preserved by file ops
  - Parallel make
  - Parallel make
- Spec does not use Requires(pre,post) notation
- User, group creation handled correctly (See Packaging:UsersAndGroups)
- Web app files go in /usr/share/%{name}, not /var/www
- Conflicts are justified
- No external kernel modules
- No files in /srv
- One project per package
  - Patches link to upstream bugs/comments/lists or are otherwise justified
  - Patches link to upstream bugs/comments/lists or are otherwise justified
Application / Language-specific guidelines:
...
</pre>

Revision as of 19:53, 1 November 2010

Mandatory review guidelines:
 - rpmlint output
   ...
 - Package meets naming guidelines
 - Spec file name matches base package name
 - License is acceptable
   ...
 - License field in spec is correct
 - License files included in package %docs or not included in upstream source
 - License files installed when any subpackage combination is installed
 - Spec written in American English
 - Spec is legible
 - Sources match upstream unless altered to fix permissibility issues
   Upstream MD5:  ...
   Your MD5:      ...
 - Build succeeds on at least one supported platform
 - Build succeeds on all supported platforms or has ExcludeArch + bugs filed
 - BuildRequires correct
 - Package handles locales with %find_lang
 - %post, %postun call ldconfig if package contains shared .so files
 - No bundled system libs
 - Relocatability is justified
 - Package owns all directories it creates
 - Package requires other packages for directories it uses but does not own
 - No duplicate files in %files unless necessary for license files
 - File permissions are sane
 - Each %files section contains %defattr
 - Consistent use of macros
 - Sources contain only permissible code or content
 - 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 with fully-versioned dependency
 - Package contains no .la files
 - GUI app installs .desktop file w/ desktop-file-install or has justification
 - Package's files and directories don't conflict with others' or justified
 - File names are valid UTF-8

Optional review guidelines:
 - Query upstream about including license files
 - Translations of description, Summary
 - Builds in mock
 - Builds on all supported platforms
 - 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

Packaging guidelines:
 - Has dist tag
 - Useful without external bits
 - Package obeys FHS, except libexecdir and /usr/target
 - Changelog in prescribed format
 - Spec file lacks Packager, Vendor, PreReq tags
 - Correct BuildRoot tag on < F10/EL6
 - Correct %clean section on < F13/EL6
 - Requires correct, justified where necessary
 - Summary, description do not use trademarks incorrectly
 - All relevant documentation is packaged, tagged appropriately
 - %build honors applicable compiler flags or justifies otherwise
 - Package with .pc files Requires pkgconfig on < EL6
 - Useful -debuginfo package or disabled and justified
 - 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
 - Spec uses %{SOURCE#} instead of $RPM_SOURCE_DIR or %{sourcedir}
 - %global instead of %define where appropriate
 - Package containing translations BuildRequires gettext
 - File timestamps preserved by file ops
 - Parallel make
 - Spec does not use Requires(pre,post) notation
 - User, group creation handled correctly (See Packaging:UsersAndGroups)
 - Web app files go in /usr/share/%{name}, not /var/www
 - Conflicts are justified
 - No external kernel modules
 - No files in /srv
 - One project per package
 - Patches link to upstream bugs/comments/lists or are otherwise justified

Application / Language-specific guidelines:
 ...