GNOME 3.38: How i Build & Use Development Versions of GNOME (Mutter demo)
Mar 19, 2020 19:14 · 761 words · 4 minute read
So, how I’m using the latest GNOME? I get this question a lot, so here’s a quick demo of my workflow! The first thing is I’m using Fedora Rawhide. Rawhide provides development versions of GNOME and.. Wait! Rawhide actually only delivers point releases. For example, it will ship GNOME 3.37.1 and then 3.37.2, but nothing between. That means I need to build from master, and that’s what this video is all about! This video isn’t about recommending using Rawhide, and definitely isn’t a tutorial how to use Rawhide. But if you want to use it? Keep on mind these two actions! First you need to get and use Kernels from Fedora stable repositories, because Rawhide ships kernels with debug flags, so everything will be slower, plus it can cause lots of issues with drivers.
00:52 - And second, you need to disable Security Enhanced Linux, because you really don’t want to mess up with development and untested policies. With all those said, lets move on to the actual video that I’m going to build Mutter from master, and also merge a pull request. Oh, and by the way, that’s the main reason I can’t use Silverblue! Okay, Get Ready. Get set. Let’s ROLL!! So, first thing we want is to copy Mutter Gitlab link. And then open a terminal a clone the source code.
01:27 - I will go into GNOME directory that I keep various GNOME modules, and I’ll clone Mutter inside there. We are done here, just getting inside the repository and get ready for merging a pull request. So we go to merge requests and, hmm, I think I will pull this one, because it is GNOME 3.38, plus it removes code so compiling will be faster :) Gitlab is very kind and it gives us a popup with instructions how we can merge this, so I will simply follow these guidelines. I know most of you guys are familiar with all those, but whatever! So first I will checkout to the WIP branch and fetch the origin, that it isn’t needed because I just pulled, and basically I picked a bad example because that Merge Request happens to be on Mutter mainline, and not on a personal developer repo.
02:21 - But anyway! So next we want to merge it on master. So Git merge, no fast forward, and the name of the branch. Then Git will ask us for a commit message, and I will leave that as it is, because who knows to use VIM anyway :p And now we can seee.. Oh-My-God!! GNOME is removing stuff!? That joke will never get old! ha! So, the next thing I wanna do is to open Meson options file, and configure some build preferences. Meanwhile I’m trying to resize GEdit fonts but I can’t because it needs us to enable a plugin!! My point.
03:03 - Shell has very active development but we really need to start contributing to GNOME apps .. because nobody does! So, one thing I want to do here is to enable the EGL and Wayland support for my NVIDIA! Speaking of which, I can’t screencast demos but the performance is pretty good in 3.36! The other thing I’m going to do is to disable the tests. These are the upstream build options but distributions usually ship with different builds. One reason I prefer Rawhide over Arch Linux for example, is because we also have the development versions of the dependencies, so we don’t always need to build the full stack from master just for using GNOME Shell master.
03:44 - Okay, all done here! So next! Meson _build. That is the directory the build files will go. And prefix to /usr to replace my current Shell. Now we can see the Meson options we’ve passed to compiler, so next we just need to install it, and actually compile it too. So, sudo and ninja install, and the build directory.
04:16 - Obviously to fully enjoy Mutter changes we also need Shell from master, that I obviously have, plus a set of more modules, that I again have! So that was a tiny demo of my workflow, and of course I also use lots of development Flatpaks. I was used to use JHBuild before, but screw that and just install everything system wide! Well, build is done, so all I need to do now is to restart! And now I’m technically in GNOME 3.38, and you’re still commenting for 3.36 release! #News_For_You! 3.36 is DEAD!! Welcome to 3.38 baby GNOME world :p .