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

Reply via email to