Experimental gnome runtime



So, i now have a set of changes to gnome-continuous and friends that
lets me build a runtime and a corresponding sdk. I also have a tool that
lets you play with these.

If you want to build the runtimes, you need the wip/platfrom branch of
gnome-continuous:
https://git.gnome.org/browse/gnome-continuous/log/?h=wip/platform
Which is modified to also build the two new "platform" and "sdk"
targets[1]. It is also modified to use a branch of the poky base that
has a new minimal base for the platform. This is at:
https://github.com/alexlarsson/poky/tree/gnomeostree-3.10-dylan-platform

However, I don't recommend building these yourself, as it takes forever
to do a build from scratch (and I had to hand hold it a bit). So instead
I have a local build (git from a week ago or suchlike) that I've put up
at:
https://people.gnome.org/~alexl/runtimes/gnome-runtime-platform-2014-09-12.tar.xz
https://people.gnome.org/~alexl/runtimes/gnome-runtime-sdk-2014-09-12.tar.xz

If you download these and untar them in ~/.local/share/gnome-sdk/sdk and
~/.local/share/gnome-sdk/platform you can then easily play with this.

Then you need to build the gnome-sdk tool from:
https://github.com/alexlarsson/gnome-sdk

Just check it out and build. It has no real dependencies. I used:

  make
  sudo make install PREFIX=~/.local

This installs it in ~/.local/bin which i have in the path. However,
anywhere works as long as its in the path. (Note that you have to sudo
install it, because the helper needs to be setuid root.)

You're now ready to play with this. To run things, just start the
gnome-sdk command with a second command after it. This will create a new
mount namespace with the sdk runtime as /usr, a tmpfs for /, and most
other directories from / bind-mounted in. It also has current "app"
mounted in "/self". This is not a "sandboxed" environment, but it does
limit your view of the filesystem a bit.

The sdk has most of the tools you expect to build stuff with, as well as
the headers and whatnot for all the libraries in the platform. So you
can e.g. do:

  $ gnome-sdk bash
  bash-4.2$ pkg-config --modversion gtk+-3.0
  3.13.7
  bash-4.2$ gcc --version
  gcc (GCC) 4.8.2

You can also run things in the platform if you specify -p:

  $ gnome-sdk -p bash
  bash-4.2$ gcc --version
  bash: gcc: command not found

You can also try to run X apps:
  gnome-sdk gtk3-demo
  gnome-sdk -p gtk3-demo

So, how do you go about building apps with this?
Well, basically you run your build inside the sdk, and install things
in /self. This is then automatically put in the "current app" which is
by default "defaultapp" but can be changed with the GNOME_SDK_APP env
var, or the -a argument to gnome-sdk.

Here is a sample script that creates a gedit app:
https://github.com/alexlarsson/gnome-sdk/blob/master/sample-build.sh

Its pretty simple, you can read it through and then test it. It will in
the end create a directory in ~/.local/share/gnome-sdk/gedit, which you
can run with e.g. "gnome-sdk -a gedit -p gedit".

Obviously this is not in any way "done", i have lots of stuff on the
TODO list. But it shows promise, and gives us a start to experiment with
this stuff.

I'd love it if people start looking at the runtimes and see how hard it
is to build apps, what else need to be in the runtime, or what we should
remove/clean up.

[1] Really gnome-continuous/buildmaster/x86_64-sdk and
gnome-continuous/buildmaster/x86_64-platform



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]