WebKit weekly report #2

Blog post by PulkoMandy on Fri, 2013-10-04 06:26

It's Friday again !

So, in my last blog post I told you I was converting our WebKit build files to CMake. This week I managed to get a working HaikuLauncher (the test browser that comes in the WebKit tree) and surf the web a bit with it.

Getting an executable generated wasn't too hard, but then I noticed that it wouldn't run. Investigation showed that CMake had linked some gcc2 libraries with the gcc4-built WebKit, and, as you know, this can't work. The main issue had already be fixed with the package manager branch. In Package Managed Haiku, the libs nad headers for each architecture are better separated, and CMake is aware of the 2 compiler versions. So, I upgraded my computer to run the Package Managed Haiku.

I quickly found out some of the libs we provided as optional packages before were not yet converted into packages for the new system. So I headed over at Haikuports and started working on the recipe files for these. I also updated the recipe for my most needed tool, the vim text editor (Pe is unusable with my AZERTY keyboard because of the position-mapped keyboard shortcuts).

I updated the recipes for sqlite and libxslt which were the one I missed to build WebKit. I also updated the one for distcc so I can keep distributing my builds. Urias kindly offered to share some CPU cores from one of his servers, which I added to my distcc hosts. Now Ican build WebKit even faster.

There were some failures as well. I tried to build most (a replacement for the less pager) and ninja (a make replacement that should be even faster, and is handled by CMake), but I didn't manage to get these going. Help welcome :)

With this all set I restarted my WebKit build. I merged the work done by aldeck on updating WebKit, which wasn't in the “service kit” version of our port yet. I had to do some fixes in my CMake build files, but basically I got that working fairly easily. And, when I finally got HaikuLauncher built again… it still referenced some gcc2 libs.

With the help from the CMake community and IRC channel, I investigated and located the issue in some pkg-config files. pkg-config is a command line tool that reads from file provided by libraries to know which compiler and linker flags must be used to use said libs. These files are generated by each library build system, but our filesystem hierarchy is a bit unusual, so we must filter these files in our HaikuPorts recipes to point the compiler to the right place. It turned out the code to do that in haikuporter didn't properly handle hybrid packages (in my case, gcc4 packages on an usual gcc2hybrid install). I fixed the pkg-config script, and finally I got a running HaikuLauncher executable.

So, the crash I was trying to fix last week is gone. You can now safely browse the Google Play Store. There are other things that started working, for example the font rendering is now done directly using Freetype, instead of going through app_server. The font rendering is a bit different (looks more blurry) because it lacks our custom filters and agg magic, but on the plus side it gets web fonts working. All these pictograms on github for example are showing properly. This would have made github a lot more usable if I could login to it, but I didn't manage to. It seems there is a double encoding of POST data so instead of my email address “pulkomandy@pulkomandy.tk” the site sees pulkomandy%30pulkomandy.tk, which obviously doesn't work. So, most places where POST data is used wont work.

I'll try to fix this issue next week, as this is really blocking the new version from being useful. I will also have a look at building a package for the updated WebKit and update WebPositive to make use of it. I also want to spend some time cleaning up the patches to CMake as the devs there are willing to upstream them (and some of them even started to play with Haiku a bit). They requested we set up a machine running Haiku and testing nightly builds of CMake so they can work on the port themselves.

Extra time

I did work on some completely unrelated things as well (not during my paid time for Haiku, of course). If you looked carefully at the haikuports commit log, you noticed that I worked on some packages that weren't needed for this. I did some small fixes to the SDL packages so I could run GrafX2 (a pixelart editor) again. I will update it to package format soon, but I needed to do some drawings.

I also helped Muzer, over IRC, to get the BeOS version of Worms Armageddon running on Haiku. The code has some bugs that prevent it from running properly, but he patched the binary to work around them. The game is playable but the sound is broken and will frequently crash it. We hope to find a solution and release a patcher that will allow you to finally play that very cool game!

I'm taking some notes on the tricks we used, as similar strategies could be applied to other non-working BeOS software.