diff --git a/platform.md b/platform.md index b26ab00..ca09895 100644 --- a/platform.md +++ b/platform.md @@ -71,6 +71,7 @@ Examples of a platform might include: - [Environment](#environment) - [Buildpack Environment](#buildpack-environment) - [Base Image-Provided Variables](#base-image-provided-variables) + - [POSIX Path Variables](#posix-path-variables) - [User-Provided Variables](#user-provided-variables) - [Operator-Defined Variables](#operator-defined-variables) - [Launch Environment](#launch-environment) @@ -1133,6 +1134,8 @@ buildpack without modification: |-----------------------------|--------------------------------| | `HOME` | Current user's home directory | +##### POSIX Path Variables + The following variables SHOULD be set in the lifecycle execution environment and MAY be modified by prior buildpacks before they are provided to a given buildpack: | Env Variable | Layer Path | Contents | @@ -1148,24 +1151,29 @@ The platform SHOULD NOT assume any other base-image-provided environment variabl ##### User-Provided Variables User-provided environment variables MUST be supplied by the platform as files in the `/env/` directory. + Each file SHALL define a single environment variable, where the file name defines the key and the file contents define the value. -User-provided environment variables MAY be modified by prior buildpacks before they are provided to a given buildpack. +User-provided environment variables that are [POSIX path variables](#posix-path-variables) MAY be modified by prior buildpacks before they are provided to a given buildpack, +however the user-provided value is always prepended to the buildpack-provided value. -The platform SHOULD NOT set user-provided environment variables directly in the lifecycle execution environment. +User-provided environment variables that are not POSIX path variables MAY NOT be modified by prior buildpacks before they are provided to a given buildpack. -The `/env/` directory follows the same convention as [Environment Variable Modification Rules](https://github.com/buildpacks/spec/blob/main/buildpack.md#environment-variable-modification-rules). +The platform SHOULD NOT set user-provided environment variables directly in the lifecycle execution environment. ##### Operator-Defined Variables -Operator-provided environment varaiables MUST be supplied by the platform as files in the `/env/` directory. + +Operator-provided environment variables MUST be supplied by the platform as files in the `/env/` directory. Each file SHALL define a single environment variable, where the file name defines the key and the file contents define the value. -Operator-defined environment variables MAY be modified by subsequent buildpacks before they are provided to a given buildpack. +The `/env/` directory follows the [Environment Variable Modification Rules](https://github.com/buildpacks/spec/blob/main/buildpack.md#environment-variable-modification-rules) +outlined in the [Buildpack Interface Specification](buildpack.md), except for the modification behavior when no period-delimited suffix is provided; when no suffix is provided, the behavior is `default`. -The platform SHOULD NOT set operator-provided environment variables directly in the lifecycle execution environment. +Operator-defined environment variables MAY be modified by prior buildpacks before they are provided to a given buildpack, +however the operator-defined value is always applied after the buildpack-provided value. -The `/env/` directory follows the [Environment Variable Modification Rules](https://github.com/buildpacks/spec/blob/main/buildpack.md#environment-variable-modification-rules) outlined in the [Buildpack Interface Specification](buildpack.md), except for the modification behavior when no period-delimited suffix is provided; when no suffix is provided, the behavior is `default`. +The platform SHOULD NOT set operator-provided environment variables directly in the lifecycle execution environment. #### Launch Environment