diff options
-rw-r--r-- | specs/architecture-string.txt | 5 | ||||
-rw-r--r-- | specs/source-package-format-1.0.txt | 5 | ||||
-rw-r--r-- | specs/spf-2.0/buildsys.mdwn | 38 | ||||
-rw-r--r-- | specs/spf-2.0/fields.mdwn | 52 | ||||
-rw-r--r-- | specs/spf-2.0/index.mdwn | 21 | ||||
-rw-r--r-- | specs/spf-2.0/metadata.mdwn | 20 |
6 files changed, 104 insertions, 37 deletions
diff --git a/specs/architecture-string.txt b/specs/architecture-string.txt index e8976fc..d66966b 100644 --- a/specs/architecture-string.txt +++ b/specs/architecture-string.txt @@ -1,13 +1,12 @@ Title: Architecture String Syntax - Status: DRAFT + Status: OBSOLETE Date: 2012-05-28 1. Status of This Document =========================== -This specification is in `DRAFT` status. It is a work-in-progress and is -subject to change. Comments and revisions are welcome. +This specification is `OBSOLETE`. 2. Abstract diff --git a/specs/source-package-format-1.0.txt b/specs/source-package-format-1.0.txt index 7a06322..f149055 100644 --- a/specs/source-package-format-1.0.txt +++ b/specs/source-package-format-1.0.txt @@ -1,13 +1,12 @@ Title: Source Package Format 1.0 - Status: DRAFT + Status: OBSOLETE Date: 2012-03-08 1. Status of This Document =========================== -This specification is in `DRAFT` status. It is a work-in-progress and is -subject to change. Comments and revisions are welcome. +This specification is `OBSOLETE`. 1.1. Remaining Tasks --------------------- diff --git a/specs/spf-2.0/buildsys.mdwn b/specs/spf-2.0/buildsys.mdwn index 07c8039..a483d46 100644 --- a/specs/spf-2.0/buildsys.mdwn +++ b/specs/spf-2.0/buildsys.mdwn @@ -49,9 +49,21 @@ Certain environment variables (see $[sectlink][env-vars]) shall be set when the Build Work Area [work-area] =========================== -When building packages, a new directory named `tmp` shall be created in the -source package directory. In this directory, the package source code shall be -copied or unpacked into a directory called `src` shall be created. +When building packages, the package building tool shall create a new directory +named `tmp` in the source package directory. In this directory, the package +building tool shall copy or unpack the package source code into a directory +called `src`. + +For each binary package, the `build` file (see $[sectlink][build]) must create +within the work area `tmp` a directory named `<binpkg>.data`, where `<binpkg>` +is the name of the binary package. See $[sectlink][bin-name] for the +requirements on binary package names. + +Before installing binary package data files into `<binpkg>.data`, the `build` +file may stage them in a different directory immediately under the work area +directory `tmp`. For example, opkhelper's **oh-autoinstall**(1) installs files +into `tmp/dest/` before **oh-installfiles**(1) moves them to +`tmp/<binpkg>.data/`. After all expected binary packages have been built, the work area (`tmp` and its children) shall be removed. @@ -60,14 +72,9 @@ children) shall be removed. Environment Variables [env-vars] ================================ -Certain environment variables shall be set to provide to the configuration -script and build makefile information about the package and the environments in -and for which binary packages are to be built. - -The terms "build system" and "host system" below are used according to [the -convention set by GNU Autoconf][target-triplets]. The build system is the type -of system on which a package is built. The host system is the type of system on -which a binary package is expected to be natively installed and used. +The package building tool shall set certain environment variables to provide to +the build makefile information about the package and the environments in and for +which binary packages are to be built. Package Variables [env-vars-pkg] -------------------------------- @@ -100,9 +107,18 @@ The following environment variables shall be set to describe the source package: architecture-dependent or architecture-independent packages may have been selected for building. + * `OPK_WORK_AREA` + + The absolute path to the build work area (see $[sectlink][work-area]). + Build and Host System Variables [env-vars-sys] ---------------------------------------------- +The terms "build system" and "host system" are used according to [the convention +set by GNU Autoconf][target-triplets]. The build system is the type of system +on which a package is built. The host system is the type of system on which a +binary package is expected to be natively installed and used. + The following environment variables shall be set to describe the build system: * `OPK_BUILD_ARCH` diff --git a/specs/spf-2.0/fields.mdwn b/specs/spf-2.0/fields.mdwn index be5ec08..c28db8d 100644 --- a/specs/spf-2.0/fields.mdwn +++ b/specs/spf-2.0/fields.mdwn @@ -12,6 +12,8 @@ The fields in the source package metadata are: A list of packages that must be installed before the package can be built. + See $[sectlink][rel-syntax] for the syntax of this field. + Variable substitutions are performed on the value of this field. * `Homepage` (optional) @@ -68,20 +70,24 @@ The fields in the binary package metadata are: - The string `boot` for packages containing only boot loaders, kernel images, and device firmware; - - The string `dbg` for packages containing only debugging symbols; - - The string `dev` for packages containing only utilities used to build - other packages, such as distribution package build utilities, compilers, - and utilities that configure compiler and linker flags; - - The string `doc` for packages containing only manual pages and other - upstream documentation files; - - The string `lib` for packages containing only shared libraries and object - files; - - The string `libdev` for packages containing only header files, unversioned - library symbolic links used when linking, and configuration files and - architecture-independent utilities that configure compiler and linker + - The string `dbg` for architecture-dependent packages containing only + debugging symbols; + - The string `dev` for platform-independent packages containing only + utilities used to build other packages, such as distribution package build + utilities, compilers, and utilities that configure compiler and linker flags; - - The string `locale` for packages containing only locale files; - - The string `share` for packages containing only architecture-independent + - The string `doc` for architecture-independent platform-independent + packages containing only manual pages and other upstream documentation + files; + - The string `lib` for architecture-dependent packages containing only + shared libraries and object files; + - The string `libdev` for architecture-dependent packages containing only + header files, unversioned library symbolic links used when linking, and + configuration files and architecture-independent utilities that configure + compiler and linker flags; + - The string `locale` for architecture-independent platform-independent + packages containing only locale files; + - The string `share` for architecture-independent packages containing only data; and - The string `util` for packages containing only executable files, such as utilities and binaries run by other programs. @@ -113,18 +119,26 @@ The fields in the binary package metadata are: A list of packages that must be installed and configured before the package may itself be configured. + See $[sectlink][rel-syntax] for the syntax of this field. + Variable substitutions are performed on the value of this field. * `Recommends` (optional) + See $[sectlink][rel-syntax] for the syntax of this field. + Variable substitutions are performed on the value of this field. * `Suggests` (optional) + See $[sectlink][rel-syntax] for the syntax of this field. + Variable substitutions are performed on the value of this field. * `Pre-Depends` (optional) + See $[sectlink][rel-syntax] for the syntax of this field. + A list of packages that must be installed before the package may itself be installed. @@ -132,14 +146,20 @@ The fields in the binary package metadata are: * `Conflicts` (optional) + See $[sectlink][rel-syntax] for the syntax of this field. + Variable substitutions are performed on the value of this field. * `Provides` (optional) + See $[sectlink][rel-syntax] for the syntax of this field. + Variable substitutions are performed on the value of this field. * `Replaces` (optional) + See $[sectlink][rel-syntax] for the syntax of this field. + Variable substitutions are performed on the value of this field. * `Description` (required) @@ -149,3 +169,9 @@ The fields in the binary package metadata are: description. Variable substitutions are performed on the value of this field. + + +Package Relationship Fields Syntax [rel-syntax] +=============================================== + +TODO diff --git a/specs/spf-2.0/index.mdwn b/specs/spf-2.0/index.mdwn index 1efee59..2a45902 100644 --- a/specs/spf-2.0/index.mdwn +++ b/specs/spf-2.0/index.mdwn @@ -1,6 +1,6 @@ Status: DRAFT - Date: 2020-06-17 - Revises: Source Package Format 1.0 + Date: 2023-09-25 + Obsoletes: Source Package Format 1.0 Abstract @@ -15,11 +15,26 @@ Status This specification is in `DRAFT` status. It is a work-in-progress and is subject to change. Comments and revisions are welcome. +Although some sections have yet to be written, this specification is already +implemented by package building tools and over 100 source packages since 2012. +Any changes made to written sections will maintain compatibility with the +existing format and implementations. + +Occasionally, new optional elements of the format are added and existing +limitations are relaxed. Such changes are made in tandem with corresponding +support being added to package building tools. Source packages that make use of +such new elements and relaxed limitations are responsible for ensuring that +package building tools are new enough to support them, by listing such tools and +minimum required versions in the `Build-Depends` control field (see +$[sectlink][fields-src]). Refer to the release notes of package building tools +to identify the versions in which support is added for changes to this Source +Package Format. + Legal Notice ============ -Copyright © 2012, 2019, 2020 Patrick "P. J." McDermott +Copyright © 2012, 2019-2021, 2023 Patrick "P. J." McDermott Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/specs/spf-2.0/metadata.mdwn b/specs/spf-2.0/metadata.mdwn index 74fdefe..913fd43 100644 --- a/specs/spf-2.0/metadata.mdwn +++ b/specs/spf-2.0/metadata.mdwn @@ -107,7 +107,9 @@ and minus signs, and periods. Names must be at least two characters long and must start with either a letter or a digit. (A regular expression for this is `[a-z0-9][a-z0-9+.-]+`.) -Source package names may not begin with the reserved string "src-". +Source package names may not begin with the reserved string "src-". *This +limitation is expected to be removed in a future draft of this version of this +Source Package Format.* Binary Package Names [bin-name] ------------------------------- @@ -117,11 +119,14 @@ and minus signs, and periods. Names must be at least two characters long and must start with either a letter or a digit. (A regular expression for this is `[a-z0-9][a-z0-9+.-]+`.) -Binary package names may not begin with the reserved string "src-". +Binary package names may not begin with the reserved string "src-". *This +limitation is expected to be removed in a future draft of this version of this +Source Package Format.* A binary package clean name is a binary package name with all plus and minus signs and periods removed. No two binary packages built from the same source -package may have the same clean name. +package may have the same clean name. *This limitation is expected to be +removed in a future draft of this version of this Source Package Format.* Source Package Version Identifier [src-ver] @@ -129,7 +134,14 @@ Source Package Version Identifier [src-ver] In general, the syntax of source package version identifiers is: - <pkgver>[+sip<siprev>][-<pkgrev>][+<dist>~<distrev>][~bpu<distnum>+<bpurev>] + [<epoch>:]<pkgver>[+sip<siprev>][-<pkgrev>][+<dist>~<distrev>][~bpu<distnum>+<bpurev>] + +`<epoch>` should almost always be omitted, in which case it is effectively zero. +It may be used when the upstream version numbering scheme changes or when one or +more binary packages are migrated to a different source package with a different +upstream version numbering scheme. It must be a string of one or more digits, +the first of which must be greater than or equal to `1`. (A regular expression +for this is `[1-9][0-9]*`.) `<pkgver>` is the version of the original upstream package or the native package. It may only consist of lowercase Latin letters, digits, periods, |