Subject: [alpine-devel] fltk upgrades, dillo, other packages...

From: Isaac Dunham <[email-masked]>
Date: Sun, 16 Nov 2014 22:10:26 -0800

Hello,
I'm working on getting WebkitFLTK[1] to build, so as to build Fifth,
which is yet another Webkit browser--this time, it's loosely based on
Opera 9.x and uses FLTK.
WebkitFLTK requires FLTK 1.3.3, while we have 1.3.2.
There are some issues with doing an upgrade:
-1.3.3 has a couple bugs fixed in SVN; this is easily addressed by 
grabbing the patches.
-1.3.3 also is now missing the symbol "fl_oldfocus" (and possibly others),
which will break dillo. It does *not* change the library version.
I have looked through the commit logs and looked online, and there's 
no obvious candidate for what caused the issue.
The dillo developers are guessing that linker magic might have caused it; 
they have a workaround that involves disabling the use of fl_oldfocus, 
at the cost of not restoring focus properly.

I'm not sure what to do with this. Any advice?

Thanks,
Isaac Dunham

[1] https://github.com/clbr/webkitfltk
[2] https://github.com/clbr/fifth

---
Unsubscribe:  [email-masked]
Help:         [email-masked]
---

---

From: Isaac Dunham <[email-masked]>
Date: Sun, 16 Nov 2014 23:46:19 -0800

> at the cost of not restoring focus properly.

-fvisibility=hidden is the culprit; FLTK started using it this summer.
Building with -fvisibility-inlines-hidden instead seems to avoid this.

Although we'll get smaller binaries with -fvisibility=hidden, 
I'm inclined to forcibly switch it to -fvisibility-inlines-hidden.
It would also be possible to do some prodding, by running 
make && rm src/Fl.o && \
sed -e 's/fvisibility=hidden/fvisibility-inlines-hidden/g' -i makeinclude && \
make || return 1

which builds only the one file where it's relevant with less aggressive
visibility settings.

Considering that I'd be using the same sed to disable it globally or for 
the one file, I might as well set it for only the one file.

Thanks,
Isaac Dunham

---

---

From: Natanael Copa <[email-masked]>
Date: Tue, 18 Nov 2014 09:43:44 +0100

On Sun, 16 Nov 2014 23:46:19 -0800

> Building with -fvisibility-inlines-hidden instead seems to avoid this.

This sounds like a bug in FLTK (or dillo).

Either fl_oldfocus symbol should be marked visible for dillo to use, or
the fl_oldfocus is not exported and not supposed to be used outside
FLTK itself - in which case dillo shouldnt use it.

googling around i found this:

https://www.mail-archive.com/[email-masked]/msg68829.html
Index: fltk-1.3.3-visibility.patch
===================================================================
--- a/src/Fl.cxx
+++ b/src/Fl.cxx
@@ -928,7 +928,7 @@
 
 ////////////////////////////////////////////////////////////////
 
-Fl_Widget* fl_oldfocus; // kludge for Fl_Group...
+FL_EXPORT Fl_Widget* fl_oldfocus; // kludge for Fl_Group...
 
 /**
     Sets the widget that will receive FL_KEYBOARD events.

Which seems to make the fl_oldfocus visible. I think this is the way to go...

> sed -e 's/fvisibility=hidden/fvisibility-inlines-hidden/g' -i
> makeinclude && \ make || return 1
> 
> which builds only the one file where it's relevant with less
> aggressive visibility settings.
> 
> Considering that I'd be using the same sed to disable it globally or
> for the one file, I might as well set it for only the one file.
> 
> Thanks,
> Isaac Dunham
> 
> 
> ---

---

---

From: Isaac Dunham <[email-masked]>
Date: Tue, 18 Nov 2014 09:43:13 -0800

> > > which is yet another Webkit browser--this time, it's loosely based on

The source builds now with a local FLTK 1.3.3 upgrade and a few small
changes that have been merged already; the final link doesn't work, 
since it tries to link harfbuzz and ICU statically.
I've hacked it a little so that it doesn't do that, but it's not a 
change fit to push or package (delete -Wl,-Bstatic from one makefile);
a proper fix needs more work.

I need to package physfs (in progress) and liburlmatch (builds fine)
at least before Fifth will build.

> Index: fltk-1.3.3-visibility.patch

I ran across that last night.

But one of the FLTK developers says fl_oldfocus should not be public;
there was a workaround in hg that left dillo in worse shape[1], but
there is now a proper fix[2].

dillo has some other fixes, and I need to find at least one commit 
in FLTK trunk providing a fix for an unrelated issue: some packages 
we don't provide yet had serious bugs caused by FLTK 1.3.3.

Thanks,
Isaac Dunham

[1] http://hg.dillo.org/dillo/rev/a012eab2c057
[2] http://hg.dillo.org/dillo/rev/eb902ac9fc66

---