= Packaging Policy = This document defines the policy for creating packages. == Multiple Packages per Software == Installation files of a software shall be put into separated packages according to their purpose. For a software "foo": * Package "foo": Contains all runtime files, i.e. everything needed to "run" the software. This may include executables (e.g. executable "bin/foo"), shared libraries (e.g. "lib/libfoo.so"), data files (e.g. "data/foo/foo-runtime-data"). * Package "foo-devel": Contains only the files needed for development. This includes header files and static libraries. Shared libraries are not to be included. Instead the package must declare package "foo" with the matching version as a requirement. * Package "foo-doc": Contains the documentation for using "foo". * Package "foo-devel-doc": Contains the documentation for "foo" development, like API documentation etc. * Package "foo-debuginfo": Contains the debug information for the package "foo". If multiple packages are defined, they must not contain any common files. If a software contains client and server software that can be used independently from each other, two separate sets of packages shall be created. == Provides Declaration == A package "foo" must declare the following provided resolvables: * "foo=" with naming the exact version of the package. * "cmd:=" for each executable with version installed in "bin/". This includes a declaration for "cmd:foo", if there is an executable named like the package. * "lib:=" for each shared library (not including a suffix, e.g. "libfoo") with version installed in "lib/". If the backward compatibility of a resolvable is known, a "compat >= " shall be added accordingly.