summaryrefslogtreecommitdiffstats
path: root/specs/spf-2.0/about.mdwn
blob: 1604e43e8cc90f5e7c7e6f903b599837bf437499 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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 `<binpkg>.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.
  * Package building can now be configured by a `config` script.
    - There is now no need for any configuration logic in the `build` makefile.
      See $[sectlink][rationale] for rationale behind this design.
    - The list of binary packages that can be built from a source package no
      longer needs to be statically defined.
  * 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 `<binpkg>.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.


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