Recent

Author Topic: [ANN] PasBuild 1.3.0 released: External Dependency Management  (Read 733 times)

Graeme

  • Hero Member
  • *****
  • Posts: 1496
    • Graeme on the web
[ANN] PasBuild 1.3.0 released: External Dependency Management
« on: February 14, 2026, 01:27:09 pm »
Hi everyone,

PasBuild 1.3.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


What's New in 1.3.0

PasBuild now supports cross-project dependency management. Projects
can declare external dependencies in project.xml, install compiled
artifacts to a local repository, and have them automatically
resolved at compile time — including transitive dependencies.


Quick Overview

Install a library to the local repository (~/.pasbuild/repository/):

    cd my-library
    pasbuild install

Declare the dependency in the consumer’s project.xml:

    <dependencies>
      <dependency>
        <name>my-library</name>
        <version>1.0.0</version>
      </dependency>
    </dependencies>

Compile — dependencies are resolved automatically:

    cd my-application
    pasbuild compile


Highlights

* Local repository at ~/.pasbuild/repository/ stores .ppu and .o files
  per name, version, and FPC target triplet (e.g.: x86_64-linux-3.2.2)

* Transitive resolution — if A depends on B, and you depend on A, both
  are resolved automatically

* Multi-module support — the reactor installs each module in dependency
  order

* Metadata tracking — each artifact includes metadata.xml for version
  and target validation

* Path quoting — compiler arguments now handle paths with spaces

* Fully backward compatible — projects without <dependencies> work
  exactly as before

A sample project is included under samples/dependency-management/. For
full details, see the Quick Start Guide[1] and the Design Document[2].

Feedback and contributions are welcome on the project’s issue tracker.


Upgrade Instructions

Replace your existing pasbuild binary with the new 1.3.0 build. You can
use your existing pasbuild binary to build the new version. No project
configuration changes are required, as the external dependency
management is 100% optional.


Getting started

Documentation includes:

- Updated quick-start guide with dependency management examples
- Sample projects demonstrating simple and complex scenarios
- Project creation via 'pasbuild init'
- Full design specification with architecture details


Links

1. Quick Start Guide:
   https://github.com/graemeg/PasBuild/blob/master/docs/quick-start-guide.adoc
2. Design Document:
   https://github.com/graemeg/PasBuild/blob/master/docs/dependency-management-design.adoc


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

Regards,
  - Graeme -

« Last Edit: February 14, 2026, 04:28:05 pm by Graeme »
--
fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal
http://fpgui.sourceforge.net/

nouzi

  • Sr. Member
  • ****
  • Posts: 328
Re: [ANN] PasBuild 1.3.0 released: External Dependency Management
« Reply #1 on: February 14, 2026, 03:10:03 pm »
Error in linke
My English is  bad
Lazarus last version free pascal last version
Lazarus trunk  free pascal trunk 
System : Linux mint  64bit  Windows 7 64bit

Graeme

  • Hero Member
  • *****
  • Posts: 1496
    • Graeme on the web
Re: [ANN] PasBuild 1.3.0 released: External Dependency Management
« Reply #2 on: February 14, 2026, 04:29:46 pm »
<face-palm> Thanks Nouzi. I'm so used to using `main` branches at work, but `master` branches for personal and open source projects. That will teach me to copy-and-paste links, rather than type them out by hand.

I've fixed the paths in the original message.
--
fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal
http://fpgui.sourceforge.net/

cdbc

  • Hero Member
  • *****
  • Posts: 2687
    • http://www.cdbc.dk
Re: [ANN] PasBuild 1.3.0 released: External Dependency Management
« Reply #3 on: February 14, 2026, 04:36:12 pm »
Hi Graeme
Nice :)
I pulled the new version and built it with its older sibling --> Smooth as a baby's behind  :D
Btw, I think it's safe for you to update the copyright notice to "2025-2026" instead of just "2025"  :-X
1)
This 'pasbuild install' business, does that mean, that I can e.g.: build the fpGUI and install that in ~/.pasbuild/* and then reference it when I want to build a 'fpGUI-App' ?!? ...no more fiddling with 'extrafpc.cfg'?
2)
When I build a project with 'pasbuild compile -p unix,agg', pasbuild /warns/ me that it doen't know about 'unix' & 'agg'  ...or am I only supposed to build the fpGUI this way?!?

Regards Benny
If it ain't broke, don't fix it ;)
PCLinuxOS(rolling release) 64bit -> KDE6/QT6 -> FPC Release -> Lazarus Release &  FPC Main -> Lazarus Main

Graeme

  • Hero Member
  • *****
  • Posts: 1496
    • Graeme on the web
Re: [ANN] PasBuild 1.3.0 released: External Dependency Management
« Reply #4 on: February 14, 2026, 05:02:32 pm »
I pulled the new version and built it with its older sibling --> Smooth as a baby's behind  :D
LOL

Quote
Btw, I think it's safe for you to update the copyright notice to "2025-2026" instead of just "2025"  :-X
It's not an oversight, but thanks for mentioning it. I did Google this some months ago. Apparently you don't need to keep updating the copyright date. It still applies from the initial date. I was mainly querying that, because fpGUI's source code headers mention the copyright year. And it seemed pointless to every year update those date ranges - without any actual code changes. <shrug>  So I stopped doing that, after some internet search results told me it's not stictly needed.

Maybe I can add something cooler like 'Born on <date>' to show when it was build.  8-)

Quote
This 'pasbuild install' business, does that mean, that I can e.g.: build the fpGUI and install that in ~/.pasbuild/* and then reference it when I want to build a 'fpGUI-App' ?!? ...no more fiddling with 'extrafpc.cfg'?
Exactly!  It's all about convenience! :-D

Once you've built a release version, why should we keep rebuilding it for other projects using the same units. Now you don't have to any more. And in your projects, you have one dedicated path, not some fragile path that could change from system to system.

ps: I haven't updated fpGUI's included examples yet. They still use 'extrafpc.cfg' files - but they have the benefit that they live inside the fpGUI repo, so they know where to find the compiled units. I'll improve this though, real soon.

Quote
When I build a project with 'pasbuild compile -p unix,agg', pasbuild /warns/ me that it doen't know about 'unix' & 'agg'  ...or am I only supposed to build the fpGUI this way?!?
Ah, there is some slight confusion. 'unix', 'windows', 'macos', 'agg' mentioned there are build profiles specific to fpGUI. Your project doesn't need them and you can define your own if you need.

eg: You can define a custom 'debug' profile that includes certain compiler defines and compiler arguments. You could define a 'release' profile to strip debug info from binaries etc.

So for that fpgui-mig-demo of yours. You simply need to run 'pasbuild compile' to compile the demo application.  I also went ahead and defined a optional 'debug' profile, because I saw your code comments about building with dbg to see the mig debug output.

In PasBuild, profiles are totally optional, and as you discovered, if you specify non-existant ones, it doesn't break the compilation.
« Last Edit: February 14, 2026, 05:08:08 pm by Graeme »
--
fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal
http://fpgui.sourceforge.net/

nouzi

  • Sr. Member
  • ****
  • Posts: 328
Re: [ANN] PasBuild 1.3.0 released: External Dependency Management
« Reply #5 on: February 15, 2026, 02:11:34 pm »
@Graeme Thanks for you

It is best to compile the copies together in one publication?.
My English is  bad
Lazarus last version free pascal last version
Lazarus trunk  free pascal trunk 
System : Linux mint  64bit  Windows 7 64bit

cdbc

  • Hero Member
  • *****
  • Posts: 2687
    • http://www.cdbc.dk
Re: [ANN] PasBuild 1.3.0 released: External Dependency Management
« Reply #6 on: February 15, 2026, 02:34:04 pm »
Hi
Good question.
I did and it worked nicely =^
Regards Benny
If it ain't broke, don't fix it ;)
PCLinuxOS(rolling release) 64bit -> KDE6/QT6 -> FPC Release -> Lazarus Release &  FPC Main -> Lazarus Main

 

TinyPortal © 2005-2018