Skip to content

PasBuild v1.1.0 release - Multi-Module Build Support

Choose a tag to compare

@graemeg graemeg released this 15 Feb 17:29
· 93 commits to master since this release

PASBUILD v1.1.0 IS NOW AVAILABLE

GitHub: https://github.com/graemeg/PasBuild

I am pleased to announce the release of PasBuild v1.1.0, featuring
comprehensive multi-module build support for organising related
projects within a single build tree.

Multi-module build support

The major feature in this release enables you to structure complex
projects as a collection of coordinated modules:

  • Aggregator projects that declare and coordinate child modules
  • Three packaging types: 'pom' (aggregator), 'library' (shared code),
    and 'application' (executables)
  • Automatic dependency-based build ordering with cycle detection
  • Simplified module references that replace brittle relative path
    hacks
  • Automatic bootstrap program generation for library modules

What this solves

Previously, building related projects required manual orchestration.
With v1.1.0:

  • No more manual build ordering - the system handles it automatically
  • No more hardcoding relative paths to framework artifacts in your
    projects
  • No more separate repositories for buildable units that should be
    coordinated
  • Missing or circular dependencies are caught at configuration time,
    not compile time

Common use cases

Multi-module support excels for:

  • Framework + Example Applications: Build a GUI toolkit and its demos
    together
  • Shared Libraries + Applications: Create common utilities used by
    multiple executables
  • Layered Frameworks: Foundation → Graphics → Widgets → Applications
  • Plugin Architectures: Core application with separately-built
    extension modules

Single command builds

Run a single pasbuild compile command from your aggregator root
directory, and the system:

  1. Discovers all modules
  2. Calculates correct build order from your declared dependencies
  3. Builds each module in sequence
  4. Stops on first failure with clear error messages

Build only a specific module and its dependencies using the -m flag,
or run from a child module directory for selective builds.

Migration path

Existing single-project builds are completely unchanged. Multi-module
is opt-in. If you have related projects today, you can migrate at your
own pace using the new project structure and packaging types.

Getting started

Documentation includes:

  • Updated quick-start guide with multi-module examples
  • Sample projects demonstrating simple and complex scenarios
  • Multi-module project creation via 'pasbuild init'
  • Full design specification with architecture details

The pasbuild init command now guides you through creating either
single-project or multi-module structures.

Testing and stability

The multi-module implementation underwent a structured and phased
development with comprehensive testing at each stage, covering module
discovery, dependency resolution, build ordering, and error handling.

Download PasBuild v1.1.0 and start organising your related projects as
a unified build system.

Your feedback and contributions are welcome! Please kindly use the
GitHub Issue Tracker. More features to come soon. :)