User:Gholms/review template

From FedoraProject

< User:Gholms(Difference between revisions)
Jump to: navigation, search
(Added perl guidelines)
Line 145: Line 145:
 
  - No Javadoc %post/%ghost
 
  - No Javadoc %post/%ghost
 
  - No class-path elements in JAR manifests
 
  - No class-path elements in JAR manifests
 +
</pre>
 +
 +
== Perl Guidelines ==
 +
<pre>
 +
- Module requirements use virtual perl(modname) syntax
 +
- Spec BuildRequires correct core modules, not perl-devel
 +
- Spec contains correct MODULE_COMPAT Requires
 +
- Requires/Provides are sane
 +
- CPAN URL tag is not versioned
 +
- All tests enabled where possible
 +
- Use Build.PL if present unless justified otherwise
 +
- .h files not split into -devel package
 
</pre>
 
</pre>
  

Revision as of 18:26, 29 June 2012

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 on EL4
 - 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 uses desktop-file-install/desktop-file-validate for .desktop files
 - 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 subpackage Requires are sane
 - .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
 - Package with test-suite executes it in %check section

Packaging guidelines:
 - Has dist tag
 - Useful without external bits
 - Package obeys FHS, except libexecdir, /usr/target, /run
 - No file in /bin, /sbin, /lib* on >= F17
 - Programs launched before FS mounting use /run instead of /var/run
 - Binaries in /bin, /sbin do not depend on files in /usr on < F17
 - 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
 - Documentation files do not have executable permissions
 - Code compilable with gcc is compiled with gcc
 - %build honors applicable compiler flags or justifies otherwise
 - PIE used for long-running/root daemons, setuid/filecap programs
 - 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 with %config
 - %config files marked noreplace or justified
 - No %config files under /usr
 - Third party package manager configs acceptable, in %_docdir
 - Spec uses macros instead of hard-coded directory names where appropriate
 - Spec uses macros for executables only when configurability is needed
 - %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}
 - No software collections (scl)
 - Build uses only python/perl/shell+coreutils/lua/BuildRequired languages
 - %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, /opt, /usr/local
 - One project per package
 - Patches link to upstream bugs/comments/lists or are otherwise justified
 - Packages needing dirs in /var/run or /var/lock use tmpfiles.d on >= F15

Application / Language-specific guidelines:
 ...

Contents

Systemd Guidelines

 - Traditional service uses a unit file
 - Non-standard service commands converted to standalone scripts
 - Unit names are sane
 - Description= lines do not exceed 80 characters
 - Types are correct
 - Requires=, Wants= used only when necessary
 - Units to not refer to runlevel*.target
 - Symlinks used instead of Name=
 - StandardOutput=, StandardError= used only when necessary
 - Socket-activated service has FESCo approval, correct unit files
 - Unit files go in %_unitdir
 - BuildRequires: systemd-units for %_unitdir macro
 - Packaged unit files are not %config files
 - Unit file scriptlets are correct
 - tmpfiles.d used where needed

Java Guidelines

 - Javadocs go in javadoc subpackage
 - Prefer split JARs over monolithic
 - JAR file names correct
 - JAR files go in %{_javadir} or %{_javadir}-$version
 - Multiple JAR files go in a %{name} subdirectory
 - Javadocs go in unversioned %{_javadocdir}/%{name}
 - javadoc subpackage is noarch on > EL5
 - BuildRequires java-devel, jpackage-utils
 - Requires java >= $version, jpackage-utils
 - Dependencies on java/java-devel >= 1.6.0 add epoch 1
 - Package requiring maven2 Requires jpackage-utils for post and postun
 - Package requiring maven contains correct maven-specific code in spec
 - Wrapper script in %{_bindir}
 - GCJ AOT bits follow GCJ guidelines
 - No devel package
 - pom.xml files, if any, installed with %add_maven_depmap
 - JNI shared objects, JARs that require them go in %{_libdir}/%{name}
 - Calls to System.loadLibrary replaced w/ System.load w/ full .so path
 - Bundled JAR files not included or used for build
 - No Javadoc %post/%ghost
 - No class-path elements in JAR manifests

Perl Guidelines

 - Module requirements use virtual perl(modname) syntax
 - Spec BuildRequires correct core modules, not perl-devel
 - Spec contains correct MODULE_COMPAT Requires
 - Requires/Provides are sane
 - CPAN URL tag is not versioned
 - All tests enabled where possible
 - Use Build.PL if present unless justified otherwise
 - .h files not split into -devel package

Python Guidelines

 - Runtime Requires correct
 - Python macros declared on < F13/EL6
 - All .py files packaged with .pyc, .pyo counterparts
 - Includes .egg-info files/directories when generated
 - Provides/Requires properly filtered
 - Code that invokes gtk.gdk.get_pixels_array() Requires numpy