New Base for symbols in Qt5.6

Lisandro Damián Nicanor Pérez Meyer perezmeyer at gmail.com
Sun Dec 27 18:41:39 UTC 2015


On Sunday 27 December 2015 15:43:59 Dmitry Shachnev wrote:
> Hi Lisandro,
[snip]
> My script (debian/scripts/migrate-symbols.py in qt56-symbols branch) is
> *much* smarter than plain sed -i 's/@Base/@Qt_5/g'.

I have no doubt in that. My intention wasn't to check your branch but to check 
if the change in the version node [0] from Base to Qt_5 would make apps 
compiled against Qt 5.5 fail to be linked against Qt 5.6. Good news is that 
everything still works.

[0] <http://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_node/ld_25.html>

On a side note this feature is analogous to what our symbols files do [1]. But 
that doesn't means we should drop symbols files ;)

[1] <https://www.gnu.org/software/gnulib/manual/html_node/LD-Version-Scripts.html>

> Its algorithm is:
> 
> 1. Get the list of symbols in new libraries based on the build log.
> 
> 2. For each symbol in the symbols file, check if that symbol exists in the
>    new libraries.
> 
>    - If it exists, changes the version part of the symbol to Qt_5 or
>      Qt_5_PRIVATE_API, depending on what's found in the new library.
> 
>    - If it doesn't exist, leaves it unchanged (maybe the symbol is for
>      another architecture) so that we can process it the usual
> symbolshelper- based way.
> 
> 3. For each old symbol that has disappeared, and is not optional or private,
> warns that it is removed. For qtbase its output is:
>    http://paste.debian.net/355955/
> 
> And yes, changing the version part of the symbols does not break the ABI,
> however removing the old symbols does (so we need to be careful).
> 
> > So I think it's safe to go ahead with the changes.
> 
> So are you OK with merging my branch? :)

I was talking about the upstream change in symbols' nodes :)

But let me check the branch (done, see below).

> I have just updated it based on i386 build log.
> 
> > Dmitry: we still need to look for private symbols as we used to, IIRC
> > there
> > where some cases of upstream not marking private symbols as such. having
> > both methods at hand will surely catch those cases.
> 
> However I also know that our current algorithm has some false positives —
> i.e. it marks functions using *pointers* to private objects as private, even
> if they are part of public API. I thought that by fully switching to
> upstream algorithms, we will get rid of that bug.

Do you have an example of such a case? The script was being run over private 
headers only, so even pointers to private functions should be private.

> Do you have any examples of "upstream not marking private symbols as such"?

Forget that, I mixed stuff. The symbols are marked as private by using a list 
created by syncqt.pl, so things should be fine.

> In any case I think we should keep the logic in pkg-kde-tools package, i.e.
> replace the existing script with mine or extend its logic. I hope Python
> dependency is not a problem, is it?

I'm totally for it. If it becomes a problem for someone we can consider 
generating a new binary package from the same source and adding the python 
dependency there. We might even do that from the beginning.

> P.S. I will be offline most of today, will be able to look at anything only
> tomorrow (MSK time).

And of course I'll be AFK tomorrow, maybe come back online late on ARST's 
night. Gah, timezone are hard for us :)

OK, I've checked the branch and I merged it to experimental. Please do not 
forget to add the proper copyright headers to the scripts.

Should we keep the merging script? I think having it on git's story should be 
enough. I also don't mind shipping it once in the packages.

-- 
15: Que es el "Correo Electronico"
    * El correo que te llega por la corriente
    Damian Nadales
    http://mx.grulic.org.ar/lurker/message/20080307.141449.a70fb2fc.es.html

Lisandro Damián Nicanor Pérez Meyer
http://perezmeyer.com.ar/
http://perezmeyer.blogspot.com/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.alioth.debian.org/pipermail/pkg-kde-talk/attachments/20151227/91bd9974/attachment.sig>


More information about the pkg-kde-talk mailing list