From Fedora Project Wiki
(add my checklist)
 
(some updates based on other templates)
Line 2: Line 2:


<code>
<code>
Review Guidelines
Review Guidelines
-----------------
-----------------
URL: https://fedoraproject.org/wiki/Packaging:ReviewGuidelines
URL: https://fedoraproject.org/wiki/Packaging:ReviewGuidelines
Stand: 2010-02-27
Stand: 2010-02-27
() - SHOULD
() - SHOULD
[] - MUST
[] - MUST
{} - external Guidelines
{} - external Guidelines
<> - Optional / common sense
<> - Optional / common sense
 
 
[] rpmlint output:
[] rpmlint output:
[] Spec in %{name}.spec format
[] Spec in %{name}.spec format
 
[] license allowed:
[] license allowed:
[] license matches shortname in License: tag
[] license matches shortname in License: tag
https://fedoraproject.org/wiki/Licensing
https://fedoraproject.org/wiki/Licensing
[] license in tarball and included in %doc:
[] license in tarball and included in %doc:
[] package is code or permissive content:
[] package is code or permissive content:
https://fedoraproject.org/wiki/Packaging/Guidelines#CodeVsContent
https://fedoraproject.org/wiki/Packaging/Guidelines#CodeVsContent
{} patches sent to upstream and commented
{} patches sent to upstream and commented
https://fedoraproject.org/wiki/Packaging/PatchUpstreamStatus
https://fedoraproject.org/wiki/Packaging/PatchUpstreamStatus
https://fedoraproject.org/wiki/Packaging/Minutes20080506
https://fedoraproject.org/wiki/Packaging/Minutes20080506
[] Source0 is a working URL
[] Source0 is a working URL
https://fedoraproject.org/wiki/Packaging/SourceURL
https://fedoraproject.org/wiki/Packaging/SourceURL
{} Sourceforge URL is Source0: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.gz
{} Sourceforge URL is Source0: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.gz
https://fedoraproject.org/wiki/Packaging/SourceURL#Sourceforge.net
https://fedoraproject.org/wiki/Packaging/SourceURL#Sourceforge.net
<> SourceX / PatchY prefixed with %{name}
<> SourceX / PatchY prefixed with %{name}
[] Source0 matches Upstream:
[] Source0 matches Upstream:
 
[] Package builds on all primary architectures:
{} Smallest compressed archive used
[] ExcludeArch bugs are filed and commented:
https://fedoraproject.org/wiki/Packaging:SourceURL
[] BuildRequires are complete (mock builds)
 
() No file dependencies outside of /etc /bin /sbin /usr/bin /usr/sbin  
<> Latest version is packaged
https://fedoraproject.org/wiki/Packaging/Guidelines#FileDeps
 
[] Package builds on all primary architectures:
[] %find_lang used for locales
[] ExcludeArch bugs are filed and commented:
https://fedoraproject.org/wiki/Packaging/Guidelines#Handling_Locale_Files
[] BuildRequires are complete (mock builds)
in %install: %find_lang %{name}  
() No file dependencies outside of /etc /bin /sbin /usr/bin /usr/sbin
%files -f %{name}.lang
https://fedoraproject.org/wiki/Packaging/Guidelines#FileDeps
Maybe: BuildRequires: gettext
 
[] %find_lang used for locales
[] Every (sub)package containing libraries runs ldconfig
https://fedoraproject.org/wiki/Packaging/Guidelines#Handling_Locale_Files
%post -p /sbin/ldconfig
in %install: %find_lang %{name}  
%postun -p /sbin/ldconfig
%files -f %{name}.lang
[] .h (header) files are in -devel subpackage
Maybe: BuildRequires: gettext
[] .a (static libraries) are in -static subpackage
 
[] contains .pc (pkgconfig) files and has Requires: pkgconfig
[] Every (sub)package containing libraries runs ldconfig
() .pc files are in -devel subpackage
%post -p /sbin/ldconfig
[] contains .so.X(.Y) files and .so is in -devel
%postun -p /sbin/ldconfig
[] -devel subpackage has Requires: %{name} = %{version}-%{release}
[] .h (header) files are in -devel subpackage
[] .la files (libtool) are not included
[] .a (static libraries) are in -static subpackage
[] does not bundle copies of system libraries
[] contains .pc (pkgconfig) files and has Requires: pkgconfig
https://fedoraproject.org/wiki/Packaging:Guidelines#Duplication_of_system_libraries
() .pc files are in -devel subpackage
[] contains .so.X(.Y) files and .so is in -devel
[] Has GUI and includes %{name}.desktop
[] -devel subpackage has Requires: %{name} = %{version}-%{release}
https://fedoraproject.org/wiki/Packaging/Guidelines#desktop
[] .la files (libtool) are not included
[] Follows desktop entry spec
[] does not bundle copies of system libraries
http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html
https://fedoraproject.org/wiki/Packaging:Guidelines#Duplication_of_system_libraries
[] Valid .desktop Name
 
[] Valid .desktop GenericName
[] Has GUI and includes %{name}.desktop
[] Valid .desktop Categories
https://fedoraproject.org/wiki/Packaging/Guidelines#desktop
http://standards.freedesktop.org/menu-spec/latest/apa.html
[] Follows desktop entry spec
[] Valid .desktop StartupNotify
http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html
http://www.freedesktop.org/wiki/Specifications/startup-notification-spec?action=show&redirect=Standards%2Fstartup-notification-spec
[] Valid .desktop Name
[] .desktop file installed with desktop-file-install in %install
[] Valid .desktop GenericName
[] Prefix: /usr not used (not relocatable)
[] Valid .desktop Categories
https://fedoraproject.org/wiki/Packaging/Guidelines#Relocatable_packages
http://standards.freedesktop.org/menu-spec/latest/apa.html
[] Valid .desktop StartupNotify
[] Owns all created directories
http://www.freedesktop.org/wiki/Specifications/startup-notification-spec?action=show&redirect=Standards%2Fstartup-notification-spec
[] no duplicates in %files
[] .desktop file installed with desktop-file-install in %install
[] %defattr(-,root,root,-) is in every %files section
[] Prefix: /usr not used (not relocatable)
[] Does not own files or dirs from other packages
https://fedoraproject.org/wiki/Packaging/Guidelines#Relocatable_packages
[] included filenames are in UTF-8
 
[] Owns all created directories
[] %clean is rm -rf %{buildroot} or $RPM_BUILD_ROOT  
[] no duplicates in %files
[] %install starts with rm -rf %{buildroot} or $RPM_BUILD_ROOT  
[] %defattr(-,root,root,-) is in every %files section
https://fedoraproject.org/wiki/Packaging/Guidelines#PreppingBuildRootForInstall
[] Does not own files or dirs from other packages
[] Consistent macro usage
[] included filenames are in UTF-8
https://fedoraproject.org/wiki/Packaging/Guidelines#macros
 
[] %clean is rm -rf %{buildroot} or $RPM_BUILD_ROOT  
[] large documentation is -doc subpackage
[] %install starts with rm -rf %{buildroot} or $RPM_BUILD_ROOT  
[] %doc does not affect runtime
https://fedoraproject.org/wiki/Packaging/Guidelines#PreppingBuildRootForInstall
() Contains manpage for every executable
[] Consistent macro usage
https://fedoraproject.org/wiki/Packaging/Guidelines#Man_pages
https://fedoraproject.org/wiki/Packaging/Guidelines#macros
 
Packaging Guidelines
[] large documentation is -doc subpackage
--------------------
[] %doc does not affect runtime
URL: https://fedoraproject.org/wiki/Packaging/Guidelines
() Contains manpage for every executable
Stand: 2009-04-13
https://fedoraproject.org/wiki/Packaging/Guidelines#Man_pages
 
{} no pre-built binaries (.a, .so*, executable)
<> %check is present and all tests pass
https://fedoraproject.org/wiki/Packaging/Guidelines#No_inclusion_of_pre-built_binaries_or_libraries
Packaging Guidelines
find -print0 -type f | xargs -0 file | cut -d" " -f 2- | sed 's/^ *//' | sort -u
--------------------
URL: https://fedoraproject.org/wiki/Packaging/Guidelines
{} well known BuildRoot
Stand: 2009-04-13
%(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
 
%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
{} no pre-built binaries (.a, .so*, executable)
%{_tmppath}/%{name}-%{version}-%{release}-root
https://fedoraproject.org/wiki/Packaging/Guidelines#No_inclusion_of_pre-built_binaries_or_libraries
https://fedoraproject.org/wiki/Packaging/Guidelines#BuildRoot_tag
find -print0 -type f | xargs -0 file | cut -d" " -f 2- | sed 's/^ *//' | sort -u
 
{} PreReq not used
{} well known BuildRoot
https://fedoraproject.org/wiki/Packaging/Guidelines#PreReq
%(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
{} RPM_OPT_FLAGS honoured
%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
https://fedoraproject.org/wiki/Packaging/Guidelines#Compiler_flags
%{_tmppath}/%{name}-%{version}-%{release}-root
{} Useful debuginfo generated
https://fedoraproject.org/wiki/Packaging/Guidelines#BuildRoot_tag
https://fedoraproject.org/wiki/Packaging/Guidelines#Debuginfo_packages
 
{} no duplication of system libraries
{} PreReq not used
https://fedoraproject.org/wiki/Packaging/Guidelines#Duplication_of_system_libraries
https://fedoraproject.org/wiki/Packaging/Guidelines#PreReq
{} no rpath
{} RPM_OPT_FLAGS honoured
https://fedoraproject.org/wiki/Packaging/Guidelines#Beware_of_Rpath
https://fedoraproject.org/wiki/Packaging/Guidelines#Compiler_flags
{} Timestamps preserved with cp and install
{} Useful debuginfo generated
https://fedoraproject.org/wiki/Packaging/Guidelines#Timestamps
https://fedoraproject.org/wiki/Packaging/Guidelines#Debuginfo_packages
{} Uses parallel make (%{?_smp_mflags})
{} no duplication of system libraries
https://fedoraproject.org/wiki/Packaging/Guidelines#Parallel_make
https://fedoraproject.org/wiki/Packaging/Guidelines#Duplication_of_system_libraries
{} Requires(pre,post) style notation not used
{} no rpath
https://fedoraproject.org/wiki/Packaging/Guidelines#Scriptlets_requirements
https://fedoraproject.org/wiki/Packaging/Guidelines#Beware_of_Rpath
{} only writes to tmp /var/tmp $TMPDIR %{_tmppath} %{_builddir} (and %{buildroot} on %install and %clean)
{} Timestamps preserved with cp and install
https://fedoraproject.org/wiki/Packaging/Guidelines#Scriplets_are_only_allowed_to_write_in_certain_directories
https://fedoraproject.org/wiki/Packaging/Guidelines#Timestamps
{} no Conflicts
{} Uses parallel make (%{?_smp_mflags})
https://fedoraproject.org/wiki/Packaging/Conflicts
https://fedoraproject.org/wiki/Packaging/Guidelines#Parallel_make
{} nothing installed in /srv
{} Requires(pre,post) style notation not used
https://fedoraproject.org/wiki/Packaging/Guidelines#No_Files_or_Directories_under_.2Fsrv
https://fedoraproject.org/wiki/Packaging/Guidelines#Scriptlets_requirements
{} Changelog in allowed format
{} only writes to tmp /var/tmp $TMPDIR %{_tmppath} %{_builddir} (and %{buildroot} on %install and %clean)
https://fedoraproject.org/wiki/Packaging/Guidelines#Changelogs
https://fedoraproject.org/wiki/Packaging/Guidelines#Scriplets_are_only_allowed_to_write_in_certain_directories
{} does not use Scriptlets
{} no Conflicts
There are some rules...
https://fedoraproject.org/wiki/Packaging/Conflicts
{} nothing installed in /srv
<> Architecture independent packages have: BuildArch: noarch
https://fedoraproject.org/wiki/Packaging/Guidelines#No_Files_or_Directories_under_.2Fsrv
<> Sane Provides: and Requires:
{} Changelog in allowed format
https://fedoraproject.org/wiki/Packaging/Guidelines#Changelogs
Naming Guidelines
{} does not use Scriptlets
-----------------
There are some rules...
URL: http://fedoraproject.org/wiki/Packaging/NamingGuidelines
 
<> Architecture independent packages have: BuildArch: noarch
{} Follows Naming Guidelines
<> Sane Provides: and Requires:
https://fedoraproject.org/wiki/Packaging/NamingGuidelines
 
https://fedoraproject.org/wiki/Packaging/NamingGuidelines#Pre-Release_packages
Naming Guidelines
-----------------
ScriptletSnippets Guidelines
URL: http://fedoraproject.org/wiki/Packaging/NamingGuidelines
----------------------------
 
URL: https://fedoraproject.org/wiki/Packaging/ScriptletSnippets
{} Follows Naming Guidelines
https://fedoraproject.org/wiki/Packaging/NamingGuidelines
{} shared libraries scriptlet
https://fedoraproject.org/wiki/Packaging/NamingGuidelines#Pre-Release_packages
{} %{_sysconfdir}/gconf/schemas/*.schemas - gconf handling
 
{} %{_infodir} - texinfo handling
ScriptletSnippets Guidelines
https://fedoraproject.org/wiki/Packaging/ScriptletSnippets#Texinfo
----------------------------
{} scrollkeeper
URL: https://fedoraproject.org/wiki/Packaging/ScriptletSnippets
{} .desktop files with MimeType
 
https://fedoraproject.org/wiki/Packaging/ScriptletSnippets#desktop-database
{} shared libraries scriptlet
{} %{_datadir}/mime/packages. mimeinfo
{} %{_sysconfdir}/gconf/schemas/*.schemas - gconf handling
{} %{_datadir}/icons/hicolor GTK+ Icon Cache
{} %{_infodir} - texinfo handling
https://fedoraproject.org/wiki/Packaging/ScriptletSnippets#GTK.2B_icon_cache
https://fedoraproject.org/wiki/Packaging/ScriptletSnippets#Texinfo
{} %{_datadir}/fonts Fonts
{} scrollkeeper
{} .desktop files with MimeType
Debuginfo Guidelines
https://fedoraproject.org/wiki/Packaging/ScriptletSnippets#desktop-database
--------------------
{} %{_datadir}/mime/packages. mimeinfo
https://fedoraproject.org/wiki/Packaging/Debuginfo
{} %{_datadir}/icons/hicolor GTK+ Icon Cache
https://fedoraproject.org/wiki/Packaging/ScriptletSnippets#GTK.2B_icon_cache
{} %{_datadir}/fonts Fonts
{} follows special guidelines
 
Cmake
Debuginfo Guidelines
https://fedoraproject.org/wiki/Packaging/cmake
--------------------
https://fedoraproject.org/wiki/Packaging/Debuginfo
Eclipse  
 
https://fedoraproject.org/wiki/Packaging/EclipsePlugins  
 
{} follows special guidelines
Emacs  
Cmake
https://fedoraproject.org/wiki/Packaging/Emacs  
https://fedoraproject.org/wiki/Packaging/cmake
 
Fonts  
Eclipse  
https://fedoraproject.org/wiki/Packaging/FontsPolicy  
https://fedoraproject.org/wiki/Packaging/EclipsePlugins  
 
Java  
Emacs  
https://fedoraproject.org/wiki/Packaging/Java  
https://fedoraproject.org/wiki/Packaging/Emacs  
 
Mono  
Fonts  
https://fedoraproject.org/wiki/Packaging/Mono  
https://fedoraproject.org/wiki/Packaging/FontsPolicy  
 
OCaml  
Java  
https://fedoraproject.org/wiki/Packaging/OCaml  
https://fedoraproject.org/wiki/Packaging/Java  
 
OpenOffice.org  
Mono  
https://fedoraproject.org/wiki/Packaging/OpenOffice.orgExtensions  
https://fedoraproject.org/wiki/Packaging/Mono  
 
Perl  
OCaml  
https://fedoraproject.org/wiki/Packaging/Perl  
https://fedoraproject.org/wiki/Packaging/OCaml  
 
PHP  
OpenOffice.org  
https://fedoraproject.org/wiki/Packaging/PHP  
https://fedoraproject.org/wiki/Packaging/OpenOffice.orgExtensions  
 
Python
Perl  
https://fedoraproject.org/wiki/Packaging:Python
https://fedoraproject.org/wiki/Packaging/Perl  
 
{} Has BuildRequires: python2-devel and/or python3-devel
PHP  
https://fedoraproject.org/wiki/Packaging:Python#BuildRequires
https://fedoraproject.org/wiki/Packaging/PHP  
 
{} Defines and uses %{python_sitelib} or %{python_sitearch}:
Python
%if ! (0%{?fedora} > 12 || 0%{?rhel} > 5)
https://fedoraproject.org/wiki/Packaging:Python
%{!?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: python2-devel and/or python3-devel
%endif
https://fedoraproject.org/wiki/Packaging:Python#BuildRequires
https://fedoraproject.org/wiki/Packaging:Python#Macros
 
{} Defines and uses %{python_sitelib} or %{python_sitearch}:
%if ! (0%{?fedora} > 12 || 0%{?rhel} > 5)
{} Has BuildRequires: python-setuptools-devel
%{!?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))")}
[] Python eggs must be built from source. They cannot simply drop an egg from upstream into the proper directory.
%endif
[] Python eggs must not download any dependencies during the build process.
https://fedoraproject.org/wiki/Packaging:Python#Macros
[] 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.
{} Has BuildRequires: python-setuptools-devel
() A package which is used by another package via an egg interface should provide egg info.  
 
[] Python eggs must be built from source. They cannot simply drop an egg from upstream into the proper directory.
{} Egg install:
[] Python eggs must not download any dependencies during the build process.
%install
[] If egg-info files are generated by the modules build scripts they must be included in the package.
%{__python} setup.py install --skip-build --root $RPM_BUILD_ROOT  
[] 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.
R  
() A package which is used by another package via an egg interface should provide egg info.  
https://fedoraproject.org/wiki/Packaging/R  
 
{} Egg install:
Ruby  
%install
https://fedoraproject.org/wiki/Packaging/Ruby  
%{__python} setup.py install --skip-build --root $RPM_BUILD_ROOT  
 
Sugar  
R  
https://fedoraproject.org/wiki/Packaging/SugarActivityGuidelines  
https://fedoraproject.org/wiki/Packaging/R  
 
Tcl/Tk  
Ruby  
https://fedoraproject.org/wiki/Packaging/Tcl
https://fedoraproject.org/wiki/Packaging/Ruby  
 
Haskell
Sugar  
https://fedoraproject.org/wiki/Packaging/Haskell
https://fedoraproject.org/wiki/Packaging/SugarActivityGuidelines  
 
Tcl/Tk  
https://fedoraproject.org/wiki/Packaging/Tcl
 
Haskell
https://fedoraproject.org/wiki/Packaging/Haskell
</code>
</code>
[[Category:Package Maintainers/Review Template]]
[[Category:Package Maintainers/Review Template]]

Revision as of 20:11, 2 November 2010

This is my incomplete checklist:

Review Guidelines


URL: https://fedoraproject.org/wiki/Packaging:ReviewGuidelines Stand: 2010-02-27 () - SHOULD [] - MUST {} - external Guidelines <> - Optional / common sense


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

[] license allowed: [] license matches shortname in License: tag https://fedoraproject.org/wiki/Licensing [] license in tarball and included in %doc: [] package is code or permissive content: https://fedoraproject.org/wiki/Packaging/Guidelines#CodeVsContent {} patches sent to upstream and commented https://fedoraproject.org/wiki/Packaging/PatchUpstreamStatus https://fedoraproject.org/wiki/Packaging/Minutes20080506 [] Source0 is a working URL https://fedoraproject.org/wiki/Packaging/SourceURL {} Sourceforge URL is Source0: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.gz https://fedoraproject.org/wiki/Packaging/SourceURL#Sourceforge.net <> SourceX / PatchY prefixed with %{name} [] Source0 matches Upstream:

{} Smallest compressed archive used https://fedoraproject.org/wiki/Packaging:SourceURL

<> 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 https://fedoraproject.org/wiki/Packaging/Guidelines#FileDeps

[] %find_lang used for locales https://fedoraproject.org/wiki/Packaging/Guidelines#Handling_Locale_Files 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 https://fedoraproject.org/wiki/Packaging:Guidelines#Duplication_of_system_libraries

[] Has GUI and includes %{name}.desktop https://fedoraproject.org/wiki/Packaging/Guidelines#desktop [] Follows desktop entry spec http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html [] Valid .desktop Name [] Valid .desktop GenericName [] Valid .desktop Categories http://standards.freedesktop.org/menu-spec/latest/apa.html [] Valid .desktop StartupNotify http://www.freedesktop.org/wiki/Specifications/startup-notification-spec?action=show&redirect=Standards%2Fstartup-notification-spec [] .desktop file installed with desktop-file-install in %install [] Prefix: /usr not used (not relocatable) https://fedoraproject.org/wiki/Packaging/Guidelines#Relocatable_packages

[] 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 https://fedoraproject.org/wiki/Packaging/Guidelines#PreppingBuildRootForInstall [] Consistent macro usage https://fedoraproject.org/wiki/Packaging/Guidelines#macros

[] large documentation is -doc subpackage [] %doc does not affect runtime () Contains manpage for every executable https://fedoraproject.org/wiki/Packaging/Guidelines#Man_pages

<> %check is present and all tests pass Packaging Guidelines


URL: https://fedoraproject.org/wiki/Packaging/Guidelines Stand: 2009-04-13

{} no pre-built binaries (.a, .so*, executable) https://fedoraproject.org/wiki/Packaging/Guidelines#No_inclusion_of_pre-built_binaries_or_libraries 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) %{_tmppath}/%{name}-%{version}-%{release}-root https://fedoraproject.org/wiki/Packaging/Guidelines#BuildRoot_tag

{} PreReq not used https://fedoraproject.org/wiki/Packaging/Guidelines#PreReq {} RPM_OPT_FLAGS honoured https://fedoraproject.org/wiki/Packaging/Guidelines#Compiler_flags {} Useful debuginfo generated https://fedoraproject.org/wiki/Packaging/Guidelines#Debuginfo_packages {} no duplication of system libraries https://fedoraproject.org/wiki/Packaging/Guidelines#Duplication_of_system_libraries {} no rpath https://fedoraproject.org/wiki/Packaging/Guidelines#Beware_of_Rpath {} Timestamps preserved with cp and install https://fedoraproject.org/wiki/Packaging/Guidelines#Timestamps {} Uses parallel make (%{?_smp_mflags}) https://fedoraproject.org/wiki/Packaging/Guidelines#Parallel_make {} Requires(pre,post) style notation not used https://fedoraproject.org/wiki/Packaging/Guidelines#Scriptlets_requirements {} only writes to tmp /var/tmp $TMPDIR %{_tmppath} %{_builddir} (and %{buildroot} on %install and %clean) https://fedoraproject.org/wiki/Packaging/Guidelines#Scriplets_are_only_allowed_to_write_in_certain_directories {} no Conflicts https://fedoraproject.org/wiki/Packaging/Conflicts {} nothing installed in /srv https://fedoraproject.org/wiki/Packaging/Guidelines#No_Files_or_Directories_under_.2Fsrv {} Changelog in allowed format https://fedoraproject.org/wiki/Packaging/Guidelines#Changelogs {} does not use Scriptlets There are some rules...

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

Naming Guidelines


URL: http://fedoraproject.org/wiki/Packaging/NamingGuidelines

{} Follows Naming Guidelines https://fedoraproject.org/wiki/Packaging/NamingGuidelines https://fedoraproject.org/wiki/Packaging/NamingGuidelines#Pre-Release_packages

ScriptletSnippets Guidelines


URL: https://fedoraproject.org/wiki/Packaging/ScriptletSnippets

{} shared libraries scriptlet {} %{_sysconfdir}/gconf/schemas/*.schemas - gconf handling {} %{_infodir} - texinfo handling https://fedoraproject.org/wiki/Packaging/ScriptletSnippets#Texinfo {} scrollkeeper {} .desktop files with MimeType https://fedoraproject.org/wiki/Packaging/ScriptletSnippets#desktop-database {} %{_datadir}/mime/packages. mimeinfo {} %{_datadir}/icons/hicolor GTK+ Icon Cache https://fedoraproject.org/wiki/Packaging/ScriptletSnippets#GTK.2B_icon_cache {} %{_datadir}/fonts Fonts

Debuginfo Guidelines


https://fedoraproject.org/wiki/Packaging/Debuginfo


{} follows special guidelines Cmake https://fedoraproject.org/wiki/Packaging/cmake

Eclipse https://fedoraproject.org/wiki/Packaging/EclipsePlugins

Emacs https://fedoraproject.org/wiki/Packaging/Emacs

Fonts https://fedoraproject.org/wiki/Packaging/FontsPolicy

Java https://fedoraproject.org/wiki/Packaging/Java

Mono https://fedoraproject.org/wiki/Packaging/Mono

OCaml https://fedoraproject.org/wiki/Packaging/OCaml

OpenOffice.org https://fedoraproject.org/wiki/Packaging/OpenOffice.orgExtensions

Perl https://fedoraproject.org/wiki/Packaging/Perl

PHP https://fedoraproject.org/wiki/Packaging/PHP

Python https://fedoraproject.org/wiki/Packaging:Python

{} Has BuildRequires: python2-devel and/or python3-devel https://fedoraproject.org/wiki/Packaging:Python#BuildRequires

{} 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))")} %endif https://fedoraproject.org/wiki/Packaging:Python#Macros


{} 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: %install %{__python} setup.py install --skip-build --root $RPM_BUILD_ROOT

R https://fedoraproject.org/wiki/Packaging/R

Ruby https://fedoraproject.org/wiki/Packaging/Ruby

Sugar https://fedoraproject.org/wiki/Packaging/SugarActivityGuidelines

Tcl/Tk https://fedoraproject.org/wiki/Packaging/Tcl

Haskell https://fedoraproject.org/wiki/Packaging/Haskell