1.2 (2024-07-01)

Automatic package preparation for compatible local-sourced packages

When operating in a local-sources mode, users would be required to prepare the sources of internal-flagged packages before running a build. While this gives users full control over the sources used, the process can be a tedious when trying to prepare a new working environment.

To help improve the user experience, when releng-tool is now operating in a local-sources mode and an internal-flagged package does not have sources already setup, releng-tool will attempt to prepare the package automatically. For supported version control systems, when a repository is detected as missing, releng-tool will use the package's site to automatically clone/checkout sources. Supported types are as follows:

  • CVS

  • Git

  • Mercurial

  • SVN

Once a local package has been prepared, releng-tool will no longer try to manage the repository. Responsibility moves back to the user in the same manner as if the user manually prepared the repository.

Introducing the punch action

For a releng-tool run, packages will go through various stages (fetching, configuration, building, etc.) followed by any post-stage scripts. Once a package has been processed, it will not repeat a stage until the output is cleaned. Users do have means to perform rebuilds, although users need to explicitly request reconfigurations, rebuilds, etc. on specific packages based on what they may be working on. If a developer is updating several packages, which may be common in a local-sources mode, the developer may need to explicitly request a re-action on multiple packages which can be time-consuming.

This release introduces a new action punch:

releng-tool punch

It allows a user to hint to releng-tool to force processing each package, even if a package has already completed stages before. Specifically, when running with a punch action, a releng-tool run will operate very similar as if the action was not set. However, if a package has already be configured, built or installed; these actions will be performed again in the same manner as if a user invoked <package>-reconfigure, <package>-rebuild or <package>-reinstall; respectively. This may be time-consuming for a run to repeat these stages, but helps a user avoid needing to run multiple commands for a desired rebuild.

Note that this is similar to what the --force argument already provides. Having an action dedicated for this capability should make it a bit more straightforward to users what they are performing. The use of the --force argument may change in the future. Introducing this action should help support a possible deprecation/repurpose, if needed.