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 -
_______________________________________________
fpc-pascal maillist - [email protected]
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal