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.