From Fedora Project Wiki
m (Fit in 80 columns) |
No edit summary |
||
Line 50: | Line 50: | ||
- No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin | - No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin | ||
- Man pages included for all executables | - Man pages included for all executables | ||
- Package with test-suite executes it in %check section | |||
Packaging guidelines: | Packaging guidelines: | ||
Line 62: | Line 63: | ||
- Summary, description do not use trademarks incorrectly | - Summary, description do not use trademarks incorrectly | ||
- All relevant documentation is packaged, tagged appropriately | - All relevant documentation is packaged, tagged appropriately | ||
- Documentation files do not have executable permissions | |||
- %build honors applicable compiler flags or justifies otherwise | - %build honors applicable compiler flags or justifies otherwise | ||
- Package with .pc files Requires pkgconfig on < EL6 | - Package with .pc files Requires pkgconfig on < EL6 | ||
Line 87: | Line 89: | ||
- One project per package | - 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 | ||
- Packages needing dirs in /var/run or /var/lock use tmpfiles.d on >= F15 | |||
Application / Language-specific guidelines: | Application / Language-specific guidelines: |
Revision as of 18:00, 6 February 2011
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 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 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 - Documentation files do not have executable permissions - %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 with %config - %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 - Packages needing dirs in /var/run or /var/lock use tmpfiles.d on >= F15 Application / Language-specific guidelines: ...
Java Guidelines
- Javadocs go in javadoc subpackage - Prefer split JARs over monolithic - JAR file names correct - JAR files go in %{_javadir} or %{_javadir}-$version - 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 maven contains correct maven-specific code in spec - GCJ AOT bits follow GCJ guidelines - No devel package - JNI shared objects, JARs that require them go in %{_libdir}/%{name} - 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