[Geany-devel] Build system branch 2.0

Lex Trotman elextr at xxxxx
Sun Feb 14 01:52:42 UTC 2010

Hi Enrico,

2010/2/14 Enrico Tröger <enrico.troeger at uvena.de>

> On Sat, 6 Feb 2010 21:21:03 +1100, Lex wrote:
> Heya guys,
> since we have quite different ideas of the future of the whole build
> systems features and in particular about its configuration using GUI
> dialogs, I got a weird idea:
> Why not moving the build system code into a plugin?
> This isn't completely new, I think to remember we discussed this before
> Lex' first rewrite of the build system and decided to not do this to
> keep it in the core and so always available.

As I said I don't care, so long as it can do what is needed.

> Though having the build system as a plugin has some advantages, IMO.
> First, Lex could realise it as he wants, as complex and flexible as
> necessary giving users all the powers they want to and don't limit them
> with any hardcoded defaults (I completely understand this wish).

Yes, provided that the plugin has sufficient control over the core to do
what it wants, see 4.

> And alternatively, we could implement a very basic, limited and easy to
> use(KISS) build system alternatively, similar to the old one(as in 0.18
> and before) alternatively to the advanced one.
Unless the basic plugin installs and loads fully automatically it might be a
problem for new/beginner users.  However its implemented it must be
automatically available as soon as Geany is installed.

> Then users can choose which build system plugin they want to use and so
> have even more flexibility.
> This would probably make things a bit harder and would require some
> additions to the plugin API, especially to get project support properly
> involved but I think it might be worth in the long term.
I have had a think about it and I'd say it will be a lot of additions to the
plugin API.  Not that thats necessarily bad, just effort someone has to
do... in addition to the implementation of the build system capabilities in
the plugin.

> Any ideas?

As I see it there area couple of ways of implementing your suggestion:

1. a basic build system in the core and the advanced one in the plugin, or
2. the two plugins approach

1. has the advantage that the basic system is always available even if Geany
is started without plugins, but then the build-in system needs to be able to
be completely disabled when the plugin takes over
2. makes the takeover problem simpler,

But both require that everything that the build system needs to do is
available through the plugin API, and thats likely to be a big API, much of
which no one else will want to use.  This includes interface to the
preferences and filetype files for saving and restoring settings.

Now as I understand it, what we are trying to achieve is:

1. By default Geany provides a set of capabilities roughly equivalent to
2. By default Geany provides an easy configuration capability that hides
complex capability
3. An alternative that allows "configure everything" control

Now it seems to me that it doesn't matter how complex the internal operation
of the build system is, so long as a default user sees functionality as at
1. and 2. does not expose that complexity.

So I propose that a build-system with full capability but only a simple
configuration dialog be in core, and the full configure dialog be in a

This makes the plugin interface much narrower, mostly the capability to set
the configuration.  That interface would be the interface to the "operation"
object I defined in the design spec (I'll get you to read it yet ;-)

Also there is no "changeover" of control, just which dialog is opened when
the "Set Build Configuration" menu item is selected.

And the same interface still allows Frank to hook into the process to
control building dependent on file contents irrespective of which configure
dialog is being used..

Any thoughts?


> Regards,
> Enrico
> --
> Get my GPG key from http://www.uvena.de/pub.asc
> _______________________________________________
> Geany-devel mailing list
> Geany-devel at uvena.de
> http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.geany.org/pipermail/devel/attachments/20100214/6b8adee1/attachment.html>

More information about the Devel mailing list