User:Gholms/review template
From FedoraProject
< User:Gholms(Difference between revisions)
| Line 67: | Line 67: | ||
- All relevant documentation is packaged, tagged appropriately | - All relevant documentation is packaged, tagged appropriately | ||
- Documentation files do not have executable permissions | - Documentation files do not have executable permissions | ||
| + | - Code compilable with gcc is compiled with gcc | ||
- %build honors applicable compiler flags or justifies otherwise | - %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 | - Package with .pc files Requires pkgconfig on < EL6 | ||
- Useful -debuginfo package or disabled and justified | - Useful -debuginfo package or disabled and justified | ||
| Line 75: | Line 77: | ||
- %config files marked noreplace or justified | - %config files marked noreplace or justified | ||
- No %config files under /usr | - 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 instead of hard-coded directory names where appropriate | ||
- Spec uses macros for executables only when configurability is needed | - Spec uses macros for executables only when configurability is needed | ||
| Line 81: | Line 83: | ||
- Macros in Summary, %description expandable at SRPM build time | - Macros in Summary, %description expandable at SRPM build time | ||
- Spec uses %{SOURCE#} instead of $RPM_SOURCE_DIR or %{sourcedir} | - 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 | - %global instead of %define where appropriate | ||
- Package containing translations BuildRequires gettext | - Package containing translations BuildRequires gettext | ||
| Line 97: | Line 101: | ||
Application / Language-specific guidelines: | Application / Language-specific guidelines: | ||
... | ... | ||
| + | </pre> | ||
| + | |||
| + | == Systemd Guidelines == | ||
| + | <pre> | ||
| + | - 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 | ||
</pre> | </pre> | ||
Revision as of 18:09, 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:
...
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
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