pgxman uses to specify how a PostgreSQL extension should be built and packaged. Buildkits are added to the buildkit repository.
Below is an example buildkit configuration including all the fields:
apiVersion
- Description: Defines the API version to which the buildkit conforms, ensuring its compatibility.
- Type: String
- Required: Yes
- Supported Values: Currently, only
v1is supported.
name
- Description: Identifies the name of the extension.
- Type: String
- Required: Yes
maintainers
- Description: Lists the individuals or organizations responsible for maintaining the buildkit.
- Type: List of objects
- Required: Yes
- Fields:
name:- Description: The maintainer’s full name.
- Type: String
- Required: Yes
email:- Description: The maintainer’s contact email.
- Type: String
- Required: Yes
source
- Description: Specifies the URI for the extension’s source code. The URI can be a HTTP/HTTPS URL or a local file path.
If the URI is a HTTP/HTTPS URL, it must end with
.tar.gz. - Type: String
- Required: Yes
repository
- Description: Specifies the URL for the extension’s repository, where users can view the source code in more detail.
- Type: String
- Required: Yes
version
- Description: Specifies the version of the extension buildkit. The versioning must adhere to the Semantic Versioning 2.0.0 format.
- Type: String
- Required: Yes
pgVersions
- Description: Lists the PostgreSQL versions compatible with the extension. If unspecified, the extension is assumed to be compatible with all versions.
- Type: List of strings
- Required: No
- Supported Values:
"13","14","15","16" - Default Values:
"13","14","15","16"
license
- Description: Specifies the license under which the extension is distributed. The license must be a valid SPDX license identifier.
- Type: String
- Required: No
build
- Description: Contains Bash scripts that automates the extension’s build process. Some environment variables are set during the execution of these scripts. The built extension must be placed in the
$DESTDIRdirectory. - Type: Object
- Required: Yes
- Fields:
pre:- Description: A list of steps before the main build process.
- Type: List of objects
- Required: No
- Fields:
name:- Description: Name of the build step.
- Type: String
- Required: Yes
run:- Description: Bash command for the build step.
- Type: String
- Required: Yes
main:- Description: A list of steps to be executed during main build process.
- Type: List of objects
- Required: Yes
- Fields:
name:- Description: Name of the build step.
- Type: String
- Required: Yes
run:- Description: Bash command for the build step.
- Type: String
- Required: Yes
- Environment Variables:
DESTDIR: Indicates the directory where the built extension should be placed.WORKDIR: The working directory that contains the source code and the script.PG_CONFIG: Identifies the path to thepg_configexecutable.USE_PGXS: Always set to1.PG_VERSION: The PostgreSQL version that the script is building against.
post:- Description: A list of steps after the main build process.
- Type: List of objects
- Required: No
- Fields:
name:- Description: Name of the build step.
- Type: String
- Required: Yes
run:- Description: Bash command for the build step.
- Type: String
- Required: Yes
runDependencies
- Description: Lists the packages needed for the extension to function properly at runtime. pgxman extensions can be specified as dependencies using the format
pgxman/EXTENSION. - Type: List of strings
- Required: No
buildDependencies
- Description: Lists the packages necessary for building the extension. pgxman extensions can be specified as dependencies using the format
pgxman/EXTENSION. - Type: List of strings
- Required: No
arch
- Description: Lists the architectures that the extension supports. If unspecified, all architectures are assumed to be supported.
- Type: List of strings
- Required: No
- Supported Values:
amd64,arm64 - Default Values:
amd64,arm64
formats
- Description: Lists the formats in which the built extension can be packaged. Currently, only Debian packages (
deb) are supported. - Type: List of strings
- Required: No
- Supported Values:
deb - Default Values:
deb
description
- Description: Provides a succinct overview of the extension.
- Type: String
- Required: No
homepage
- Description: Specifies the URL of the extension’s homepage, where users can find additional information about the extension.
- Type: String
- Required: No
keywords
- Description: Lists keywords relevant to the extension, aiding its discovery in
pgxmantool searches. - Type: List of strings
- Required: No
readme
- Description: Specifies the README content for the extension. The content may include directions for installing, configuring, and using the extension, as well as any other information a user may find helpful. The README will be shown on the registry page. If this field is unspecified,
pgxmantries to detect a README file at the root of extension source. - Type: String
- Required: No
builders
- Description: Specify the builders to be used. If not provided, all supported builders are used.
- Type: Object
- Required: No
- Fields:
debian:bookworm:- Description: Specifies the Debian Bookworm builder.
- Type: Object
- Required: No
- Fields:
buildDependencies:- Description: Lists the packages necessary for building for the
debian:bookwormbuilder. This list overrides the globalbuildDependencies. pgxman extensions can be specified as dependencies using the formatpgxman/EXTENSION. - Type: List of strings
- Required: No
- Description: Lists the packages necessary for building for the
runDependencies:- Description: Lists the packages needed for the extension to function properly at runtime for the
debian:bookwormbuilder. This list overrides the globalrunDependencies. pgxman extensions can be specified as dependencies using the formatpgxman/EXTENSION. - Type: List of strings
- Required: No
- Description: Lists the packages needed for the extension to function properly at runtime for the
image:- Description Speifies the build image.
- Type: String
- Required: No
- Default Value:
ghcr.io/pgxman/builder/debian/bookworm
aptRepositories:- Description: Lists the APT repositories containing the above Debian packages.
- Type: List of objects
- Required: No
- Fields:
id:- Description: The repository’s id.
- Type: String
- Required: Yes
types:- Description: The repository’s types.
- Type: String
- Required: Yes
- Supported Values
deb,deb-src
uris:- Description: The repository’s URIs.
- Type: List of strings
- Required: Yes
suites:- Description: The repository’s suites within the APT repository.
- Type: List of objects
- Required: Yes
components:- Description: The components of the APT repository.
- Type: List of strings
- Required: Yes
signedKey:- Description: The GPG signed key of the APT repository.
- Type: List of objects
- Required: Yes
- Fields:
uri:- Description: The HTTP URL to download the GPG key.
- Type: String
- Required: Yes
format:- Description: The format of the GPG key.
- Type: String
- Required: Yes
- Supported Values:
gpg,asc
ubuntu:jammy:- Description: Specifies the Ubuntu Jammy builder.
- Type: Object
- Required: No
- Fields:
buildDependencies:- Description: Lists the packages necessary for building for the
ubuntu:jammybuilder. This list overrides the globalbuildDependencies. pgxman extensions can be specified as dependencies using the formatpgxman/EXTENSION. - Type: List of strings
- Required: No
- Description: Lists the packages necessary for building for the
runDependencies:- Description: Lists the packages needed for the extension to function properly at runtime for the
ubuntu:jammybuilder. This list overrides the globalrunDependencies. pgxman extensions can be specified as dependencies using the formatpgxman/EXTENSION. - Type: List of strings
- Required: No
- Description: Lists the packages needed for the extension to function properly at runtime for the
image:- Description Speifies the build image.
- Type: String
- Required: No
- Default Value:
ghcr.io/pgxman/builder/ubuntu/jammy
aptRepositories:- Description: Lists the APT repositories containing the above Debian packages.
- Type: List of objects
- Required: No
- Fields:
id:- Description: The repository’s id.
- Type: String
- Required: Yes
types:- Description: The repository’s types.
- Type: String
- Required: Yes
- Supported Values
deb,deb-src
uris:- Description: The repository’s URIs.
- Type: List of strings
- Required: Yes
suites:- Description: The repository’s suites within the APT repository.
- Type: List of objects
- Required: Yes
components:- Description: The components of the APT repository.
- Type: List of strings
- Required: Yes
signedKey:- Description: The GPG signed key of the APT repository.
- Type: List of objects
- Required: Yes
- Fields:
uri:- Description: The HTTP URL to download the GPG key.
- Type: String
- Required: Yes
format:- Description: The format of the GPG key.
- Type: String
- Required: Yes
- Supported Values:
gpg,asc
overrides
- Description: This section allows for the customization of buildkit fields based on specific conditions. It’s particularly useful for adapting the build process to different versions of PostgreSQL or varying build environments.
- Type: Object
- Required: No
- Fields:
pgVersions:-
Description: Tailors the buildkit configuration for specific PostgreSQL versions as defined in the
pgVersionsfield. - Type: Map
- Required: No
-
Key: The key should match the PostgreSQL versions listed in
pgVersionsat the root. -
Value:
- Type: Object
- Fields:
sourceversionbuildbuildersarchformatsreadmebuildDependenciesrunDependencies
-
Examples:
-
Description: Tailors the buildkit configuration for specific PostgreSQL versions as defined in the

