Environment variables

小技巧

Avoid using external environment variables for a project to configure package options such as compiler flags or interpreters. Managing these options inside a releng-tool project configuration or package definitions can improve configuration management.

Common

When configuration, package definitions or various scripts are invoked by releng-tool, the following environment variables are available:

BUILD_DIR

The build directory.

CACHE_DIR

The cache directory.

DL_DIR

The download directory.

HOST_BIN_DIR

The host directory's prefixed bin directory.

HOST_DIR

The host directory.

HOST_INCLUDE_DIR

The host directory's prefixed include directory.

HOST_LIB_DIR

The host directory's prefixed library directory.

IMAGES_DIR

The images directory.

LICENSE_DIR

The licenses directory.

See also licenses.

NJOBS

Number of calculated jobs to allow at a given time. Unless explicitly set by a system builder on the command line, the calculated number of jobs should be equal to the number of physical cores on the host. When building a specific package and the package overrides the number of jobs to use, the package-defined count will be used instead. This configuration will always be a value of at least one (1).

NJOBSCONF

Number of jobs to allow at a given time. Unlike NJOBS, NJOBSCONF provides the requested configured number of jobs to use. The value may be set to zero (0) to indicate an automatic detection of jobs to use. This can be useful for tools which have their own automatic job count implementation and do not want to rely on the value defined by NJOBS. When building a specific package and the package overrides the number of jobs to use, the package-defined count will be used instead.

OUTPUT_DIR

The output directory.

PKG_BUILD_BASE_DIR

The directory for a specific package's base directory for buildable content. In most cases, this value will be the same as PKG_BUILD_DIR. However, if LIBFOO_BUILD_SUBDIR is configured, PKG_BUILD_DIR will also include the configured sub-directory. The value of LIBFOO_BUILD_SUBDIR does not adjust the value of PKG_BUILD_BASE_DIR.

See also PKG_BUILD_DIR.

PKG_BUILD_DIR

The directory for a specific package's buildable content.

See also PKG_BUILD_BASE_DIR and PKG_BUILD_OUTPUT_DIR.

PKG_BUILD_OUTPUT_DIR

The directory for where a package's build output will be stored.

See also PKG_BUILD_DIR.

PKG_CACHE_DIR

The location of the cache directory for a package. If a package defines a fetch from a repository which can be locally cached, this cache directory represents the location where the local cache of content will be held. For example, if a provide defines a Git-based site, a local cache of the Git repository will be stored in this location. Typically, packages should not need to operate on the cache directory except for advanced cases.

PKG_CACHE_FILE

The location of the cache file for a package. If a package defines a fetch of an archive from a remote source, after the fetch stage is completed, the archive can be found in this location.

For example, if a package defines a site https://www.example.com/test.tgz, the resulting cache file may be <root>/output/dl/test-1.0.tgz.

PKG_DEFDIR

The package's definition directory.

For example, for a package test, the definition directory would be <root>/package/test.

PKG_DEVMODE

Whether the package is configured for development mode. If a package is configured for development mode, the environment variable will be set to a value of one (i.e. PKG_DEVMODE=1).

See also development mode.

PKG_INTERNAL

Whether or not the package is considered "internal". If internal, the environment variable will be set to a value of one (i.e. PKG_INTERNAL=1).

See also internal and external packages.

PKG_LOCALSRCS

Whether the package is configured for local-sources mode. If a package is configured for local-sources, the environment variable will be set to a value of one (i.e. PKG_LOCALSRCS=1).

See also local-sources mode.

PKG_NAME

The name of the package.

PKG_REVISION

The site revision of the package.

See also LIBFOO_REVISION.

PKG_SITE

The site of the package.

See also LIBFOO_SITE.

PKG_VERSION

The version of the package.

See also LIBFOO_VERSION.

PREFIX

The sysroot prefix for the package.

PREFIXED_HOST_DIR

The host directory with the prefix applied.

PREFIXED_STAGING_DIR

The staging area directory with the prefix applied.

PREFIXED_TARGET_DIR

The target area directory with the prefix applied.

RELENG_CLEAN

Flag set if performing a clean request.

RELENG_DEBUG

Flag set if debug-related information should be shown.

RELENG_DEVMODE

The development mode or flag set if in development mode.

RELENG_DISTCLEAN

Flag set if performing an extreme pristine clean request.

RELENG_FORCE

Flag set if performing a forced request from the command line.

RELENG_LOCALSRCS

Flag set if in local-sources mode.

RELENG_MRPROPER

Flag set if performing a pristine clean request.

RELENG_REBUILD

Flag set if performing a re-build request.

RELENG_RECONFIGURE

Flag set if performing a re-configuration request.

RELENG_REINSTALL

Flag set if performing a re-install request.

RELENG_TARGET_PKG

The name of the target package (if any) provided by the command line.

RELENG_VERBOSE

Flag set if verbose-related information should be shown.

RELENG_VERSION

The version of releng-tool.

ROOT_DIR

The root directory.

STAGING_BIN_DIR

The staging area directory's prefixed bin directory.

STAGING_DIR

The staging area directory.

STAGING_INCLUDE_DIR

The staging area directory's prefixed include directory.

STAGING_LIB_DIR

The staging area directory's prefixed library directory.

SYMBOLS_DIR

The symbols area directory.

TARGET_BIN_DIR

The target area directory's prefixed bin directory.

TARGET_DIR

The target area directory.

TARGET_INCLUDE_DIR

The target area directory's prefixed include directory.

TARGET_LIB_DIR

The target area directory's prefixed library directory.

Package-specific variables

Package-specific environment variables are also available if another package or script needs to rely on the (generated) configuration of another package. For example, if a package LIBFOO existed with a package definition:

LIBFOO_VERSION = '1.0.0'

The environment variable LIBFOO_VERSION with a value of 1.0.0 can be used in other configurations and script files. The following package-specific environment variables are available for use, where <PKG> translates to a releng-tool's determined package key:

<PKG>_BUILD_DIR

The directory for a defined package's buildable content.

For most packages, this path will match the value specified in <PKG>_BUILD_OUTPUT_DIR. For package types that do not support in-tree building (e.g. CMake), this path may be the parent of the value specified in <PKG>_BUILD_OUTPUT_DIR:

└── my-releng-tool-project/
    ├── output/
    │   └── build/
    │       └── libfoo-1.0.0          <---- LIBFOO_BUILD_DIR
    │           └── releng-output     <---- LIBFOO_BUILD_OUTPUT_DIR
    │               └── ...
    ├── package/
    │   └── libfoo/
    │       └── libfoo.py
    ├── releng
    ...

For cases where a package uses local sources, this path may change to point to the specified local source path. For example, when configured for local-sources mode, the build directory may exist out of the root directory:

└── libfoo/                           <---- LIBFOO_BUILD_DIR
│   └── ...
└── my-releng-tool-project/
    ├── output/
    │   └── build/
    │       └── libfoo-1.0.0          <---- LIBFOO_BUILD_OUTPUT_DIR
    │           └── ...
    ├── package/
    │   └── libfoo/
    │       └── libfoo.py
    ├── releng
    ...

Or, when using a local VCS type, the path may be set for a folder inside the package's definition directory:

└── my-releng-tool-project/
    ├── output/
    │   └── build/
    │       └── libfoo-1.0.0          <---- LIBFOO_BUILD_OUTPUT_DIR
    │           └── ...
    ├── package/
    │   └── libfoo/
    │       └── local/                <---- LIBFOO_BUILD_DIR
    │           └── ...
    │       └── libfoo.py
    ├── releng
    ...

<PKG>_BUILD_OUTPUT_DIR

The directory for where a defined package's build output will be stored.

This location is a path is a folder inside the project's output/build directory. The name is typically a combination of the package's name and version (e.g. libfoo-1.0.0):

└── my-releng-tool-project/
    ├── output/
    │   └── build/
    │       └── libfoo-1.0.0          <---- LIBFOO_BUILD_OUTPUT_DIR
    │           └── ...
    ├── package/
    │   └── libfoo/
    │       └── libfoo.py
    ├── releng
    ...

However, if no version is specified for a package, the folder name may just be libfoo:

└── my-releng-tool-project/
    ├── output/
    │   └── build/
    │       └── libfoo                <---- LIBFOO_BUILD_OUTPUT_DIR
    │           └── ...
    ├── package/
    │   └── libfoo/
    │       └── libfoo.py
    ├── releng
    ...

Note for some package types, the build output directory may be changed to have an additional path (e.g. output/build/libfoo-1.0.0/releng-output) for package types like CMake. For example:

└── my-releng-tool-project/
    ├── output/
    │   └── build/
    │       └── libfoo-1.0.0
    │           └── releng-output     <---- LIBFOO_BUILD_OUTPUT_DIR
    │               └── ...
    ├── package/
    │   └── libfoo/
    │       └── libfoo.py
    ├── releng
    ...

<PKG>_DEFDIR

The directory where a defined package's definition is stored.

For example, if a package libfoo exists, the LIBFOO_DEFDIR environment variable will contain a directory path matching the path seen below:

└── my-releng-tool-project/
    ├── package/
    │   └── libfoo/                   <---- LIBFOO_DEFDIR
    │       └── libfoo.py
    ├── releng
    ...

<PKG>_NAME

The name of the package.

For example, if a package libfoo exists, the LIBFOO_NAME environment variable will have a value of libfoo.

<PKG>_REVISION

The revision of a defined package. If a package does not define a revision, the value used will match the version value (if set). If no version value exists, this variable may be empty.

<PKG>_VERSION

The version of a defined package. If a package does not define a version, the value used will match the revision value (if set). If no revision value exists, this variable may be empty.

Other variables

releng-tool also accepts environment variables for configuring specific features of the releng-tool process. The following environment variables are accepted:

RELENG_ASSETS_DIR=<dir>

The asset directory to use. The asset directory is the container directory to use for both cache and download content. By default, no asset directory is configured. If a user does not override an asset directory using the --assets-dir argument, the RELENG_ASSETS_DIR can be used as the container directory override for both cache and download content.

RELENG_CACHE_DIR=<dir>

The cache directory to use. By default, the cache directory used is configured to <root>/cache. If a user does not override a cache directory using the --cache-dir argument, the RELENG_CACHE_DIR can be used (if set) to override this location.

RELENG_DL_DIR=<dir>

The download directory to use. By default, the download directory used is configured to <root>/dl. If a user does not override a download directory using the --dl-dir argument, the RELENG_DL_DIR can be used (if set) to override this location.

RELENG_IGNORE_RUNNING_AS_ROOT=1

Suppress the warning generated when running releng-tool with an elevated user.