4.1 (2026-08-01)

Target skeleton report

At the end of a releng-tool run, the output folder will now have a report generated (skeleton-target.txt) which captures the file structure of the target directory:

<root-dir>/output/skeleton-target.txt

The goal is to make it easier for developers to compare file structure of packages as their projects evolve.

Re-introducing configuring CMAKE_PREFIX_PATH to support “Config” finds

This release revisits the use of releng-tool configuring the CMAKE_PREFIX_PATH option. The use of CMAKE_PREFIX_PATH was previously removed to help prevent issues of find_* (e.g. when CMAKE_FIND_ROOT_PATH_MODE_PROGRAM is not set to NEVER). In turn, if a prefix is configured to a staging/target path, cross-compiled programs may be detected/used in CMake find_* calls leading to unexpected results. While the removal of a CMAKE_PREFIX_PATH assignment prevented this issue, it broke the ability to use CMake “Config”-based dependency lookups.

When CMake options were attempted to be cleaned up (based on observations noted above), the prefix assignment was dropped over using CMake module path configurations. The use of modules appeared to be the proper approach for managing this, which was easily configured and integrated into releng-tool. However, “Module” mode in CMake is only one of the supported modes; CMake also supports a “Config” mode. When examining the find_package documentation, a “Config” mode operates on different search patterns. For example:

<prefix>/(lib/<arch>|lib*|share)/<name>*/

This does not use the share/cmake/Modules/ folder and can result in packages unable to easily find packages when using “Config” mode without explicit configurations.

There is a desire to have releng-tool to be flexible to support this and the assignment on CMAKE_PREFIX_PATH appears to be the only way to support this (e.g. supporting a combination of a toolchain sysroot (if used), releng-tool staging/target paths and a host sysroot (if used)).

This release re-adds the CMAKE_PREFIX_PATH assignment to applicable paths. Having both CMAKE_MODULE_PATH and CMAKE_PREFIX_PATH set should cover all CMake find modes.

If this change causes issues for developers, immediate workarounds are as follows. First, configuring a quirk on the command line:

releng-tool --quirk releng.cmake.disable_default_prefix

Alternative, adding the quirk in the project configuration:

releng_config(
    ...
    quirks=[
        ...
        'releng.cmake.disable_default_prefix',
    ],
)

Or registering the following environment variable:

RELENG_QUIRKS=releng.cmake.disable_default_prefix

Allow local package types to use sibling root path as a fallback

The use of local site type now supports finding package sources in the sibling folder based on the root path. Typically local packages would require to be held inside of a local folder in the package folder:

└── my-releng-tool-project/
    ├── package/
    │   └── libfoo/
    │       ├── local/                <----
    │       │   ├── src/
    │       │   │   └── ...
    │       │   └── Makefile
    │       └── libfoo.rt
    ...

Considering the above example, with this release, the libfoo sources can now reside alongside the project folder:

├── libfoo/                           <----
│   ├── src/
│   │   └── ...
│   └── Makefile
└── my-releng-tool-project/
    ├── package/
    │   └── libfoo/
    │       └── libfoo.rt
    ...

The goal is to make it easier to initial development/testing for packages which may not yet be available through a version control system.