2.7 (2026-02-08)

Improved processing of command outputs

For executable calls, all command line output is now processed as a stream over character polling for newlines. This should help improve a user's experience for outputs that utilize a carriage return character to update an existing line.

For example, Git fetch attempts would previously output multiple lines of fetch status updates:

fetching my-project...
fetching most recent sources
remote: Enumerating objects: 2517, done.
remote: Counting objects:   0% (1/2517)
remote: Counting objects:   1% (26/2517)
remote: Counting objects:   2% (51/2517)
...
remote: Counting objects: 100% (2517/2517), done.
remote: Compressing objects:   0% (1/1812)
remote: Compressing objects:   1% (19/1812)
remote: Compressing objects:   2% (37/1812)
...
remote: Compressing objects: 100% (1812/1812), done.
Receiving objects:   0% (1/2517)
Receiving objects:   1% (26/2517)
Receiving objects:   2% (51/2517)
...
Receiving objects: 100% (2517/2517), 3.60 MiB | 8.47 MiB/s, done.
remote: Total 2517 (delta 1038), reused 1465 (delta 663), pack-reused 0 (from 0)
Resolving deltas:   0% (0/1038)
Resolving deltas:   1% (11/1038)
Resolving deltas:   2% (21/1038)
...
Resolving deltas: 100% (1038/1038), done.
...

Where now the output operates in a similar fashion as one would experience if invoking git calls directly:

fetching my-project...
fetching most recent sources
remote: Enumerating objects: 2517, done.
remote: Counting objects: 100% (2517/2517), done.
remote: Compressing objects: 100% (1812/1812), done.
remote: Total 2517 (delta 1038), reused 1465 (delta 663), pack-reused 0 (from 0)
Receiving objects: 100% (2517/2517), 3.60 MiB | 8.72 MiB/s, done.
Resolving deltas: 100% (1038/1038), done.
...

Linting support

New linting actions have been added into releng-tool. Users can perform a quality check on a project using:

releng-tool lint

Or perform a package-specific lint using:

releng-tool <package-name>-lint

Linting checks are very limited at this time by only checking for expected package definition variables. Ideally it can be improved/expanded on over time.

Meson Build Type package option

A new package option LIBFOO_MESON_BUILD_TYPE has been added for Meson packages. In previous releases, to override the build type, an option override was required to be set:

LIBFOO_CONF_OPTS = {
    'buildtype': 'debug',
}

Alternatively, users can now specify the build type without needing to prepare package options:

LIBFOO_MESON_BUILD_TYPE = 'debug'

Only show SSH error logs for remote Git actions

Git operations will now suppress non-error log messages by default. This it to help avoid possible MOTDs or other instance banner messages that is not typically desired in an automated fetch/build context.

New Package Stage Extension Events

Extension support now includes events for individual package stages (e.g. configuration, build, etc.). Each stage will now emit events at the start of a stage and after a stage has been successfully run.

For example, to hook into the start and end events of each package's configuration stage, the following can be used:

def releng_setup(app):
    app.connect('package-configure-started', on_pkgcfg_started)
    app.connect('package-configure-finished', on_pkgcfg_finished)

def on_pkgcfg_started(env):
    ...

def on_pkgcfg_finished(env):
    ...

For more information, see extensions.