0.10 (2021-12-31)

New “definition directory” package environment/script variable

A new environment/script variable has been added to help a project refer to a package’s “definition directory” – the specific folder of a package found under package/. The key for this variable is <PKG_NAME>_DEFDIR.

For example, if a package script wishes to use content from inside the package’s definition directory, they can refer to it as follow:

res = releng_join(LIBFOO_DEFDIR, 'my-resource.txt')

Suppress installation stage for CMake projects

While releng-tool attempts to provide the common “configuration → build → install” stages, not all projects support an installation phase. CMake projects which did not define an install rule, the installation stage for these projects would always fail.

To explicitly skip the install stage for these packages, the LIBFOO_CMAKE_NOINSTALL can be configured inside a package’s definition file to ignore the stage for a package. For example:

LIBFOO_CMAKE_NOINSTALL = True

Support rsync-based sites

releng-tool now supports fetching content from an rsync compatible source. By adjusting a package’s LIBFOO_SITE definition to be prefixed with rsync+, the trailing value can be used to define the rsync source to copy content from.

For example, to copy content from a mounted NAS location at /mnt/nas/project, the following could be used:

LIBFOO_SITE = 'rsync+/mnt/nas/project'

Packages can also pull content from a remote source:

LIBFOO_SITE = 'rsync+anonymous@192.51.100.4:~/project'

What specific source paths are support will vary based off the host’s installed rsync tool.

Remove the requirement for a package version configuration

The LIBFOO_VERSION configuration is the recommended way to define the version of a package. It serves two purposes – it can be used to identify the version to use when pulling content from a remote repository, as well as used when managing the names of build/cache folders for a project.

However, both these purposes are not always required. A package may define a LIBFOO_REVISION entry to specify the specific revision to use for source-fetching. The output of a build location does not require a version value to be postfixed. While specifying a version can help manage/identify output files for a build, for example:

./output/build/libfoo-1.3

The benefits of output inspection and manual version change/testing should not impose defining a version entry for a package. Therefore, package types which do not need a version or have LIBFOO_REVISION defined for a package, the LIBFOO_VERSION configuration can be omitted.

Flexible asset management

Typical runs will download files (dl/) and cache content (cache/) in the project’s root directory. While users could override these paths using the --cache-dir <dir> and --dl-dir <dir> command line options:

  • Needing to specify both these arguments on each run is not always ideal.

  • There was not an easy way to point to a single path to say “store all content in this folder”.

To improve the user experience, the concept on an “asset” directory has been introduced. If a user specifies --assets-dir <dir> on the command line, both the cache and download directories will be stored inside the provided container folder.

For cases where specifying these paths using command line options is not ideal, the following environment variables can be used instead:

  • RELENG_ASSETS_DIR=<dir>

  • RELENG_CACHE_DIR=<dir>

  • RELENG_DL_DIR=<dir>