1.4 (2025-01-19)

Introducing the .rt file extension

Changes to the promoted file extension used for project and packages have been made. When releng-tool was originally released, no extension was used for various package definitions and scripts. While functional, this was not always ideal for development environments wanting some level of syntax highlighting support. Over the years, alternative extension support has been added, allowing .releng or even .py for an extension type to be used.

For this release, the promoted extension type to use will now be .rt. It is a minimal file extension with a name appropriate to this tool and is believed to not be in conflict with other modern applications/tools that exist today. releng-tool still supports extensionless files as well as the .py extension. The use of .rt over only using .py will allow developers to have a distinction between releng-tool-compatible Python files and generic Python files.

With these changes, the default project configuration will also be releng-tool.rt. An example project structure is as follows:

└── my-project/
    ├── package/
    │   ├── libbar/
    │   │   ├── libbar.rt
    │   │   └── libbar.hash
    │   └── libfoo/
    │       ├── libfoo.rt
    │       └── libfoo.hash
    └── releng-tool.rt

Improved Cargo support

Support for Cargo-based packages have been improved. Cargo packages now share a build target to prevent re-compiling package dependencies multiple times when multiple Cargo applications exist.

This update also supports automatic Cargo patching for projects that define Cargo libraries. Cargo applications will automatically be patched to use a defined Cargo library in a releng-tool project, if a developer wishes to manage specific libraries in a project.

Lastly, the fetching of Cargo dependencies now occurs after a package’s patch stage. This will allow developers to patch downloaded sources before attempts are made to post-fetch any configured dependencies on a Cargo project.

New «fresh» package action

A new package action named «fresh» (<pkg>-fresh) is now supported by releng-tool. This action can be used by default to easily setup a package into a «fresh» state for development/testing purposes. Essentially, the fresh action is a combination of performing <pkg>-clean then <pkg>-configure.

releng-tool libfoo-fresh

Improved Visual Studio integration

For builds running in a Windows environment, variables provided by a Visual Studio Developer Command Prompt (VsDevCmd.bat) can be preloaded into a projects or package context.

vsdevcmd = True

This can be used to avoid any requirement to run releng-tool from inside a Visual Studio Developer Command Prompt when attempting to perform a build.

Projects looking to use an explicit version of Visual Studio can specify a version string that is compatible with Visual Studio Locator’s (vswhere) -version argument.

vsdevcmd = '[17.0,18.0)'