Experimental gnome runtime

From: Alexander Larsson <alexl redhat com>

To: gnome-os-list <gnome-os-list gnome org>

Subject: Experimental gnome runtime

Date: Fri, 12 Sep 2014 16:20:12 +0200

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