Background [background] ======================= A source package consists of software source code, a build system, and package metadata. From it is built one or more binary packages, which can be installed into an operating system. Changes Since Version 1.0 [changes] =================================== Following is a summary of differences between versions 1.0 and 2.0 of this source package format: * The platform configuration file list is now split between two files. `platconf` lists build-time configuration files, and `.pkg/platconf` lists run-time configuration files. - As a result, the platform configuration file lists now have a simpler syntax that does not include the type of configuration file. - It is now easy to determine whether individual binary packages are platform-specific. * The source package hierarchy has been clarified to to indicate whether each file is required. - Additionally, certain files are now only required by a certain step in the build process, allowing them to be dynamically generated. * Packages without any sources (such as pure metapackages) are now explicitly allowed. * Maintainer scripts are now explained. * The set of required `build` makefile targets has been changed. - The amount of redundant information in source packages is reduced by not requiring the `build` file to list all binary packages. - The user can choose to build all binary packages, only architecture-independent binary packages, or only architecture-independent binary packages. See $[sectlink][rationale] for rationale behind this design. * The source package version is no longer included in `control`. - It is already given in the most recent entry in `changelog`. * The version identifier syntax now encodes information about source archive repacks and non-trunk distribution uploads. - The syntax has been made strict to make parsing simple and deterministic. * The `Source` and `Package` control fields have been removed, as the information they provided is provided elsewhere. - Source package names are now given only in the `changelog` file. - Binary package names are now given only in the names of `.pkg/` directories. * Platform names are no longer specified in the `Architecture` field. - They are now specified in a new `Platform` field. * Wildcard binary architecture strings are now supported. * Binary package `install` files are no longer required, as not all packages provide data files. Rationale [rationale] ===================== TODO Scope [scope] ============= This specification applies both to source packages and to the package building tools that interact with them. Definitions [defs] ================== TODO source package binary package package sources source package directory package building work area, work area package building tool