User:Till/Package Review Checklist

From FedoraProject

Jump to: navigation, search

This is my incomplete checklist:

Review Guidelines
Stand: 2010-02-27
[] - MUST
{} - external Guidelines
<> - Optional / common sense

[] rpmlint output:
[] Spec in %{name}.spec format

[] license allowed:
[] license matches shortname in License: tag
[] license in tarball and included in %doc:
[] package is code or permissive content:
{} patches sent to upstream and commented
[] Source0 is a working URL
{} Sourceforge URL is Source0:{name}/%{name}-%{version}.tar.gz
<> SourceX / PatchY prefixed with %{name}
[] Source0 matches Upstream:

{} Smallest compressed archive used

<> Latest version is packaged

[] Package builds on all primary architectures:
[] ExcludeArch bugs are filed and commented:
[] BuildRequires are complete (mock builds)
() No file dependencies outside of /etc /bin /sbin /usr/bin /usr/sbin

[] %find_lang used for locales
in %install: %find_lang %{name} 
%files -f %{name}.lang
Maybe: BuildRequires: gettext

[] Every (sub)package containing libraries runs ldconfig
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
[] .h (header) files are in -devel subpackage
[] .a (static libraries) are in -static subpackage
[] contains .pc (pkgconfig) files and has Requires: pkgconfig
() .pc files are in -devel subpackage
[] contains .so.X(.Y) files and .so is in -devel
[] -devel subpackage has Requires: %{name} = %{version}-%{release}
[] .la files (libtool) are not included
[] does not bundle copies of system libraries

[] Has GUI and includes %{name}.desktop
[] Follows desktop entry spec
[] Valid .desktop Name
[] Valid .desktop GenericName
[] Valid .desktop Categories
[] Valid .desktop StartupNotify
[] .desktop file installed with desktop-file-install in %install
[] Prefix: /usr not used (not relocatable)

[] Owns all created directories
[] no duplicates in %files
[] %defattr(-,root,root,-) is in every %files section
[] Does not own files or dirs from other packages
[] included filenames are in UTF-8

[] %clean is rm -rf %{buildroot} or $RPM_BUILD_ROOT 
[] %install starts with rm -rf %{buildroot} or $RPM_BUILD_ROOT
[] Consistent macro usage

[] large documentation is -doc subpackage
[] %doc does not affect runtime
() Contains manpage for every executable

<> %check is present and all tests pass
Packaging Guidelines
Stand: 2009-04-13

{} no pre-built binaries (.a, .so*, executable)
find -print0 -type f | xargs -0 file | cut -d" " -f 2- | sed 's/^ *//' | sort -u

{} well known BuildRoot
%(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

{} PreReq not used
{} RPM_OPT_FLAGS honoured
{} Useful debuginfo generated
{} no duplication of system libraries
{} no rpath
{} Timestamps preserved with cp and install
{} Uses parallel make (%{?_smp_mflags})
{} Requires(pre,post) style notation not used
{} only writes to tmp /var/tmp $TMPDIR %{_tmppath} %{_builddir} (and %{buildroot} on %install and %clean)
{} no Conflicts
{} nothing installed in /srv
{} Changelog in allowed format
{} does not use Scriptlets
There are some rules...

<> Architecture independent packages have: BuildArch: noarch
<> Sane Provides: and Requires:

Naming Guidelines

{} Follows Naming Guidelines

ScriptletSnippets Guidelines

{} shared libraries scriptlet
{} %{_sysconfdir}/gconf/schemas/*.schemas - gconf handling
{} %{_infodir} - texinfo handling
{} scrollkeeper
{} .desktop files with MimeType
{} %{_datadir}/mime/packages. mimeinfo
{} %{_datadir}/icons/hicolor GTK+ Icon Cache
{} %{_datadir}/fonts Fonts

Debuginfo Guidelines

{} follows special guidelines










{} Has BuildRequires: python2-devel and/or python3-devel

{} Defines and uses %{python_sitelib} or %{python_sitearch}:
%if ! (0%{?fedora} > 12 || 0%{?rhel} > 5)
%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}

{} Has BuildRequires: python-setuptools-devel

[] Python eggs must be built from source. They cannot simply drop an egg from upstream into the proper directory.
[] Python eggs must not download any dependencies during the build process.
[] If egg-info files are generated by the modules build scripts they must be included in the package.
[] When building a compat package, it must install using easy_install -m so it won't conflict with the main package.
[] When building multiple versions (for a compat package) one of the packages must contain a default version that is usable via "import MODULE" with no prior setup.
() A package which is used by another package via an egg interface should provide egg info. 

{} Egg install:
%{__python} install --skip-build --root $RPM_BUILD_ROOT