This document details each data structure and field that does or can exist within a platform spec file for spk.
The root package spec defines which fields can and should exist at the top level of a spec file.
| Field | Type | Description | 
|---|---|---|
| platform | Identifier | The name and version number of this platform | 
| meta | Meta | Extra package metadata such as description, license, etc | 
| compat | Compat | The compatibility semantics of this packages versioning scheme | 
| deprecated | boolean | True if this package has been deprecated, this is usually reserved for internal use only and should not generally be specified directly in spec files | 
| base | List[Identifier] | (Optional) Base packages to inherit requirements from | 
| requirements | List[Requirement] | The set of requirements for this platform | 
Each platform requirement names a package and the constraints for that package in downstream environments.
Like an Identifier but with a version range rather than an exact version, see versioning.
| Field | Type | Description | 
|---|---|---|
| pkg | Identifier | The package request to add to this platform, often with just a name | 
| atBuild | VersionRange or false | 
          The restriction to apply to this package when the platform is being used in a downstream build environment (when a package is being built). If false it removes any inherited restriction for downstream build environments. | 
      
| atRuntime | VersionRange or false | 
          The restriction to apply to this package when the platform is being used in a downstream runtime environment (when a package is not being built). If false it removes any inherited restriction for downstream runtime environments. |