Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-pascal / 2026-04

[ANN] PasBuild v1.8.0 Release Notes

1 message · 1 person ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Unknown author

Hi everyone,

PasBuild v1.8.0 has been released.

PasBuild is a Maven-inspired build automation tool for Free Pascal projects. It provides convention-based project structure, dependency management, multi-module builds, resource filtering, and packaging.

Homepage:
https://github.com/graemeg/pasbuild

Quick Start Guide:

https://github.com/graemeg/PasBuild/blob/master/docs/quick-start-guide.adoc

Overview For This Release
-------------------------

PasBuild v1.8.0 improves multi-module build correctness, extends configuration flexibility, and adds bash shell completion. Bug fixes address profile inheritance, external dependency resolution, out-of-tree unit path handling, and plugin lifecycle ordering in aggregator projects.

New Features
------------

Configurable Test Source Directory

The test source directory is now overridable in project.xml via <testSourceDirectory> under the <test> section, following the same convention-over-configuration pattern as <sourceDirectory>. The default remains src/test/pascal when not specified.

Example:

<test>
<testSourceDirectory>tests</testSourceDirectory>
</test>

Resolve Command Surfaces Directory Locations

The resolve command JSON output now includes a 'directories' object containing the four conventional project paths: source, testSource, resources, and testResources. Values reflect any project.xml overrides, giving plugins and tooling full project context without needing to know PasBuild's defaults.

Out-of-Tree unitPaths Anchored to Module Root

Paths in <unitPaths> that start with ../ or ./ are now treated as relative to the module root (the directory containing project.xml), not to <sourceDirectory>. Previously, auto-scan mode prepended the source directory, producing broken paths like src/main/pascal/../../... for cross-module references.

Example:

<unitPaths>
<path>../../framework/src/main/pascal/corelib</path> </unitPaths>

Path delimiter normalisation (/ to \ on Windows) is applied as normal, so project.xml can always use forward slashes.

Bash Completion Script

A bash completion script is now included in the repository, enabling tab-completion of PasBuild goals, flags, and options in bash shells.

Contributed by Andrew Haines. Closes #8.

Bug Fixes
---------

Aggregator Profiles Inherited by Child Modules

Profiles defined in an aggregator's project.xml were not being passed down to child modules. When a profile such as "unix" was declared only at the aggregator level, child builds silently ignored it. Parent profiles are now copied to each child module at discovery time, unless the child already defines a profile with the same id.

External Dependencies Resolved in Multi-Module Builds

External <dependencies> from the local repository were never resolved during multi-module reactor builds — only inter-module deps were handled. This caused missing -Fu flags for external libraries, producing compilation failures. External dependencies are now resolved for each module in the same way as single-module builds.

Also fixes relative paths (e.g. ../some-lib) leaking into artifact metadata during install, which broke transitive dependency resolution for consumers of the installed artifact.

Plugin Lifecycle Uses Reactor in Aggregator Projects

When a plugin declared after:compile (or any lifecycle phase) was invoked from a pom aggregator project, it received a bare compile command against the root pom config — which has no source directory and fails immediately. Plugins now receive a TReactorCommand when invoked from an aggregator, ensuring all child modules are built before the plugin runs.

Fixes #10.

Changes
-------

Documentation

The quick-start guide has been updated to document profile inheritance behaviour in multi-module projects, including how parent profiles propagate to child modules and how to define a profile with the same id in a child to override it.

Test Suite
----------

10 new test cases added in this release:
Total test count: 219 (up from 209 in v1.7.0)

PasBuild is free software released under the BSD-3-Clause license.

Regards,
- Graeme -