[fpc-pascal] [ANN] PasBuild v1.8.0 Release Notes

mailinglists at geldenhuys.co.uk mailinglists at geldenhuys.co.uk
Fri Apr 10 18:44:29 CEST 2026


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 -


More information about the fpc-pascal mailing list