← Back to team overview

elementary-dev-community team mailing list archive

Re: Bake Build System


Bake should output something like this:

$ sudo bake install
  install-directory - / (default)
  system-config-directory - /etc (default)
  system-binary-directory - /sbin (default)
  system-library-directory - /lib (default)
  resource-directory - /usr (default)
  binary-directory - $(options.resource-directory)/bin (default)
  library-directory - $(options.resource-directory)/lib (default)
  data-directory - $(options.resource-directory)/share (default)
  include-directory - $(options.resource-directory)/include (default)
  project-data-directory - $(options.data-directory)/cable (default)

[Entering directory data]
MKDIR /usr/share/glib-2.0/schemas
CP org.pantheon.cable.gschema.xml /usr/share/glib-2.0/schemas/org.pantheon.cable.gschema.xml
MKDIR /usr/share/applications
CP cable.desktop /usr/share/applications/cable.desktop

On Sun, Sep 15, 2013 at 12:49 PM, Julien <spautz.julien@xxxxxxxxx> wrote:
Bake installs the gsettings schema automatically.

Did you install cable like I described?

On Sun, Sep 15, 2013 at 12:43 PM, Albert Palacios <optimisme@xxxxxxxxx> wrote:

I am trying to compile it, I want to begin a new application and I will use your bake structure as an example. But I get:

albert@albert-MacBookPro:~/Projects/bake$ cable 
[_LOG_LEVEL_INFO 12:41:55.318429] Application.vala:77: Cable version: 0.1 [_LOG_LEVEL_INFO 12:41:55.318495] Application.vala:79: Kernel version: 3.2.0-53-generic [_LOG_LEVEL_WARN 12:41:55.322681] [GLib-GIO] Settings schema 'org.pantheon.cable' is not installed
Trace/breakpoint trap

Maybe a line on how to install the schema is missing?

On Sun, Sep 15, 2013 at 1:08 AM, Julien <spautz.julien@xxxxxxxxx> wrote:
Hey guys,

I've lately been toying with a relatively recent build system called bake. It was created and is maintained by Robert Ancell and you can find the source code here: https://launchpad.net/bake.

There isn't much documentation out there, but the manual will teach you most important things: https://answers.launchpad.net/bake/+faq/2172

$ bzr branch lp:bake
$ cd bake
$ yelp help

So if you're like me and have no idea about cmake, bake might be the perfect alternative. It is very simple and requires practically no boiler code (unlike cmake). It would also be easier for new developers to set up their own projects.

I'm pretty sure you want to see some actual implementation, so here it is:


If you look at the diffs  (http://bazaar.launchpad.net/~julien-spautz/cable/bake/revision/137) you'll see that I added a few Recipe files, containing all the information bake needs, and at the same time got rid of all that cmake ugliness. Since Cable uses the same cmake template as the official elementary apps, this should work just as well with any other elementary app.

If you want to try it yourself, here are some instructions:

First install bake:

$ sudo add-apt-repository ppa:bake-team/releases
$ sudo apt-get update
$ sudo apt-get install bake

Now get my branch:

$ bzr branch lp:~julien-spautz/cable/bake
$ cd bake

So far so good. Now let's build (make sure you have all the deps, you'll find them in /src/Recipe):

$ bake

There should now be an executable in src/ and one in tests/.
How about cleaning up again?

$ bake clean


$ sudo bake install

Running unit tests? (I know you all enjoy those TDD threads)

$ bake test

Creating a .deb package?

$ bake release-deb (might take a while)

If you're not in love yet I really don't know...

I'll try to convert some other elementary apps to bake in the future, but I don't think it'll be very difficult. The biggest downside of bake is of course that it is still relatively new and therefore lacks complete documentation and tutorials and probably still has some important bugs. Otherwise I see no reason not to switch at some point in the future, be it for Isis, or Isis + 1 (but not later, srsly).

What are your opinions? Has anyone else had any experience with it?

Julien Spautz

Mailing list: https://launchpad.net/~elementary-dev-community
Post to     : elementary-dev-community@xxxxxxxxxxxxxxxxxxx
Unsubscribe : https://launchpad.net/~elementary-dev-community
More help   : https://help.launchpad.net/ListHelp

Follow ups