flypig.co.uk

List items

Items from the current list are shown below.

Gecko

22 Aug 2023 : Day 6 #
Before I get into the building of things, I want to first shout out to a few people who've taken an interest in this stuff.

First off to attah, direc85 and mal on IRC. I don't know how, but attah managed to discover my GitHub changes before I'd even starting posting anything about them and yesterday managed to announce the Day 5 blog post before I'd even posted it. Thanks to you all for your encouragement and generous offers of help.

Nephros has been building an updated NSPR and NSS, amongst other things, which I hope we'll see in the Jolla repositories in due course.

Thigg has provided really useful feedback via the Sailfish Forum on the particular issue I hit yesterday. We're actually taking a bit of a detour around it today, but I'll talk more about it in future posts.

On Mastodon I'm grateful to Thaodan for his always-useful discussion and feedback.

Thanks to Peter for featuring this work in the LINux on MOBile weekly news update. I'm chuffed to have been included and recommend LINMOB's updates as a great way to stay informed about all things mobile Linux related.

Thanks to throwaway69 for posting about this on the Sailfish Forum and to the lovely community there for all the nice comments!

Last but definitely not least thanks to Raine for suggesting this in the first place, but also to him and the IRC posse for the nice discussion at the most recent Community Meeting.

I hope I didn't miss anyone and apologies if I did. It's always encouraging to get feedback and I appreciate all of the help and offers that everyone's been giving.

Let's talk now about where things are at. Yesterday we hit a "stack overflow" error. It's not quite clear where this is coming from. Thigg pointed out that this could be similar to an issue he's experienced using GraalVM to build using the Sailfish SDK.

That's definitely a possibility, but it's also the case that we're still using a version of the tooling (libclang and cbindgen) that are technically too old for the code we're building. I'd like to eliminate this as a possibility first.

Upgrading the various dependencies is something I'm going to have to do sooner or later. So updating NSPR, cbindgen, libclang and icu-i18n are going to be my next steps. This feels like a bit of a side quest, but it might turn out to be an essential achievement for progressing in the game.

If you recall I previously hacked around these requirements, so it's already clear that we'll need the following:
  1. nspr >= 4.32
  2. cbindgen >= 0.19.0
  3. libclang >= 5.0
  4. icu-i18n >= 69.1
First up is NSPR. As mentioned above Nephos has already done the hard work here and posted the changes needed to GitHub.

Nephros took the Sailfish OS specific patches from version 4.29 and re-worked them to apply to 4.35. The package then builds nicely with these changes, and I'm able to use it in my build using the nice task-oriented capabilities of the Sailfish SDK.

Next up is libicu. This was a bit tricky, mostly because the build (and the unit tests in particular) take so long to run. But eventually I got it to build some packages by disabling only a few of the unit tests. The related pull request is still in draft because I've not had a chance to test it with anything other than aarch64. Previous versions required different unit tests to be masked out for different architectures, so this is one of those times when it needs testing for all available targets.

Now on to cbindgen. This was distressingly straightforward. No patches, no changes to the spec file, just update the submodule to the appropriate tag and rebuild. Maybe I did something wrong?

Finally (hopefully finally) libclang. Finding the correct package for this was a little trickier than I'd expected, but eventually I dug out the clang.spec file hiding inside the LLVM repository.

Having found it, looking through the spec file and code gave me pause for thought. What's there is clearly clang version 14, whereas the gecko build script was complaining (before I hacked it) about needing clang greater than 5. My maths may be a bit rusty, but I'm pretty sure 14 is greater than five.

For full disclosure I must admit that I do know the answer to the mystery of what's going wrong here. These posts are lagging a little behind reality as I've not yet had the chance to write everything up. But as I write this it's late, so the mystery will have to wait until tomorrow.

If you want to catch up on any previous entries, check out the full Gecko-dev Diary page.

Comments

Uncover Disqus comments