0.11 (2022-02-26)

New script functions

A series of new helper script functions are now available for projects.

The releng_require_version helper function has been added to allow releng-tool projects to specify the minimum version of releng-tool needed to run a project. For example, to indicate that at least v0.11 is required, the following can be used:

releng_require_version('0.11')

If the version requirement is not met, the releng-tool process will stop, indicating that the host environment’s releng-tool package requires an update.

At this time, using this option now may not yield ideal output for releng-tool versions prior to v0.11, as the function is not available in these version. A workaround that could be used is the following:

try:
    releng_require_version('0.11')
except NameError:
    releng_exit('requires releng-tool v0.11 or greater')

The releng_cat and releng_ls helper functions have been introduced to help developers examine/debug their releng-tool package states. The releng_cat helper function can be used to dump the contents of a file to the standard output stream (similar to the cat command):

releng_cat('config.log')

The releng_ls helper function can be used to dump the file listing for a directory to the standard output stream (similar to the ls command):

releng_ls(IMAGES_DIR)

Improved support for extracting zip files

The initial zip-file extraction for releng-tool would cycle through defined directory and file entries in an archive, ensuring directories were created before writing extracted files into project’s output directory. It has been observed that with some archive files, the parsing of an archive may not always identify directory entries. This can result in the extraction phase failing for packages, where it attempts to extract a file to a directory which has not been created.

To be flexible with various zip archive types, this release adjusts the extraction for zip files to always attempt to build directory paths, even if a directory entry is not specified.

Introducing the --force argument

For developers testing changes in their releng-tool project, or changes with one or more packages defined in their project, a developer will most likely try to reconfigure/rebuild packages to verify these changes. Since releng-tool does not repeat completed stages, developers will utilize certain packages actions to re-perform stages. For example, a developer can rebuild a package using:

releng-tool libfoo-rebuild

While the various libfoo-re* actions can help a developer re-perform a stage, sometimes a developer may wish to force a repeat trigger of all stages in their project. By specifying the --force argument on the command line, each package’s configuration, build and install stages will be performed again in the same manner as if a user invoked libfoo-reconfigure on each package:

releng-tool --force

A reminder to developers that rebuilds can be complex and may not always yield the same results as a clean build.

With the --force argument providing an easy way to perform configuration/build/install stages again, the argument can also be used for overriding some fetched content. If a user invokes releng-tool with the fetch argument, all cachable version control content will be fetched again:

releng-tool fetch

However, this does not apply to content which is stored into the download (dl/) folder. If a user wanted to force the re-downloading of a package’s site without performing a distclean or manually deleting a package’s file, using the fetch action along with the --force argument can be used instead. For example, to re-download a package’s file:

releng-tool libfoo-fetch --force

Or re-download all package files:

releng-tool fetch --force