Gecko esr91 work (former "Flypig's gecko dev diary")

Yeah, I might’ve not thought that through, in portrait this could extend all code blocks by quite a bit if it ends up applying to each row (or most)… I’ll try to find a way to test some options on-device
Edit: maybe keeping the previous option as was and just adding: overflow-x: auto, overflow-y: hidden; will do the trick, this generates scrollbar for boxes that have long lines without extending them unnecessarily

3 Likes

@flypig Congratulations! I’ll celebrate with you today!
please think about if there is anything we can help you with on the next stages :slight_smile:

8 Likes

To illustrate the process:

(created with bing&dall-e with “A pig with wings dressed as a doctor fixing the limb of a gecko with a bandage on a surgery table. Comic style”)
… Did i specify pig without legs…?

31 Likes

One heart is not enugh!

:heart: :orange_heart: :yellow_heart: :green_heart: :blue_heart: :purple_heart:

I hope the mascot inspires @flypig to even higher and loftier achievements!

4 Likes

Oh wow, I agree with @ohnonot, this deserves waaay more than just the one heart I’m allowed to give! I think I’m going to have to print this out to put on my wall :grin: Thank you @thigg, this is so great!

As for the offer to help, Stage 2 has some parallel pieces so I’m going to put some issues up on the sailfish-browser git repo this week. It would be wonderful if others are able to get involved with them.

22 Likes

I jumped out of my chair from excitement when I saw you got the browser to run and load pages! Keep up the good work, I love reading through your daily posts (but make sure you don’t overdo it please!)

6 Likes

While the shorthand to enable C++17 doesn’t seem to work, you can still use QMAKE_CXXFLAGS += -std=c++17.

3 Likes

And I love the feedback; thank you! I appreciate the advice too, which I really buy into. It’s just been small steps every day, no pressure, keeping it manageable.

Is this in relation to the moc being unhappy about non-nested namespaces from C++17? Does using QMAKE_CXXFLAGS += -std=c++17 work around (fix) this particular issue? Either way you make a good point (if I’m understanding correctly) that most C++17 code seems to be just fine.

1 Like

Yes. Sorry for mobile-initiated brevity.
Well, i just trusted and agreed with your judgement in it looking like C++17-related. No further digging was done. (And this works for me to ebable it).

1 Like

You could also try to hide this header from moc by something like

#ifndef Q_MOC_RUN
#include <mozilla/modern stuff>
#endif

https://doc.qt.io/qt-5/moc.html

This could save you one patch against gecko

3 Likes

I just read the day five-oh of the gecko blog. Congratulations for reaching one more milestone for the project - and a big one! (As as developer, I recently managed to finally push some parts of my project to production, so I know the amount of excitement first hand!)

But now it’s late Friday, so let’s just enjoy the weekend! :grin:

2 Likes

I find myself hoping for some build instructions (or at least an outline thereof) so i can try to take a stab at some of the issues. Blind chickens, enough eyeballs and all that.

So i’m guessing it goes something like this:

  • Set a sfdk task and build some dependency packages
  • VooDoo
  • Just build it™
1 Like

Wow time really does fly. I haven’t posted in this topic before, but I have been following the updates. Thank you @flypig for taking on this massive task. It’s great to see you finally getting past all of the compiler errors and getting something running! Let’s hope there will be a beta to try soon :smiley:

I think the goal has been (as of diary entry 52) to get all the tickets in github cleaned up, set up a milestone and get the obs builds running. That way the systematic approach is also one that documents in the tag / task queue: Issues · sailfishos/sailfish-browser · GitHub milestones: esr91 Milestone · GitHub

I think once obs is there, it becomes a lot less guessing. Or one just carefully reads all 52 blog entries :slight_smile:

1 Like

True… OBS for the dependencies should be helpful - and eventually we’ll want it for everything.
But i don’t see it as a substitute for building Gecko itself locally while developing.

True, if I wasn’t such a coward I’d distill the last 52 diary entries to a neat how-to including the rust tool chain. Or, I’ll go drink bleach to see if it cures disease :slight_smile:

@flypig do you know if you’re using some kind of build cache to speed up things?

1 Like

That’s a really good question @thigg. I’m pretty sure there is no build cache (there was a sailor looking into it at one point, but I don’t think any changes were made to the public build).

The build is incremental, so will use previous outputs, but presumably there are situations in which a cache would improve things.

If anyone knows how to configure a cache for gecko, or fancies figuring it out, that would be superb! I’ve created ticket #1036 on GitHub for this.

2 Likes

@flypig just read your diary and noticing that you seem to be in the render engine swamp (Note: i dont have experience with firefox per se, but made my bones whilst wrestling with alot of game engines in the past); my bet is the change from back buffer to swap chain on the opengl side is what has broken the rendering (swap chain set up differs from.“normal” double buffering), also readback for the offscreen / headless rendering might differ (not sure about that); btw I havent paid attention so just adding this here in case: env var LIBGL_DEBUG (on mesa at least, see here for more https://docs.mesa3d.org/envvars.html ) can add precious hints to the output…

EDIT : also and now we might have a real bone here, the Wayland integration on OpenGL might need some love too…but this is just speculation…

bottom line, I’d say if you can trace the OpenGL Error first, it will be a good lead where to look next, as the code that you are merging is “a child between worlds” and hence has no real reference / is a new path (code)…

10 Likes

I have a naive question - Firefox has a ‘reader view’ mode.
Do you know if the feature could be enabled for SFOS gecko builds? I mean, do you know if it is it ‘simply’ about enabling something?

1 Like