Bug 67278

Summary: Does not build with gtk+ master (3.10) when deprecated symbols are disabled
Product: poppler Reporter: Germán Poo-Caamaño <gpoo+bfdo>
Component: glib frontendAssignee: poppler-bugs <poppler-bugs>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: medium CC: nbenitezl
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments: glib: fix deprecation symbols for gtk+ 3.10
Changes to /modulesets/gnome-suites-core-deps-3.10.modules

Description Germán Poo-Caamaño 2013-07-24 21:25:13 UTC
Created attachment 82964 [details]
glib: fix deprecation symbols for gtk+ 3.10

In gtk 3.10 there some symbols removed and poppler fails to build without disabling deprecated symbols.

The patch attached fix the deprecated symbols.  The symbols are available since 3.0, so this should be safe.
Comment 1 Carlos Garcia Campos 2013-07-25 07:13:06 UTC
why does it fail to build? it should give just compile warnings, that we should silence, but I don't think we need to change the code for symbols deprecated in a gtk+ version higher than the required one
Comment 2 Germán Poo-Caamaño 2013-07-25 16:02:01 UTC
(In reply to comment #1)
> why does it fail to build? it should give just compile warnings, that we
> should silence, but I don't think we need to change the code for symbols
> deprecated in a gtk+ version higher than the required one

At least in GNOME, jhbuild disables deprecated symbols by default.

I saw 2 options:
1. Add an option in jhbuild to not check deprecated symbols.
2. Migrate the old API to the new one.

In the long term, (2) is better IMVHO.

The changes I applied are the ones suggested in the migration guide from gtk+2 to Gtk+3:
https://developer.gnome.org/gtk3/stable/checklist-named-icons.html

They did not bite before, but it is supposed to be part of the migration.
Comment 3 Carlos Garcia Campos 2013-07-25 16:26:59 UTC
(In reply to comment #2)
> (In reply to comment #1)
> > why does it fail to build? it should give just compile warnings, that we
> > should silence, but I don't think we need to change the code for symbols
> > deprecated in a gtk+ version higher than the required one
> 
> At least in GNOME, jhbuild disables deprecated symbols by default.
> 
> I saw 2 options:
> 1. Add an option in jhbuild to not check deprecated symbols.
> 2. Migrate the old API to the new one.
> 
> In the long term, (2) is better IMVHO.
> 
> The changes I applied are the ones suggested in the migration guide from
> gtk+2 to Gtk+3:
> https://developer.gnome.org/gtk3/stable/checklist-named-icons.html
> 
> They did not bite before, but it is supposed to be part of the migration.

We depend on 3.0 and fortunately stock icons are present in 3.0. It's very unfortunate that stock icons are deprecated in 3.10, but I don't think we should migrate our code for an unstable gtk version that hasn't even been released yet. I will keep using stock icons while they are available because they fail at compile time, not like the string you used, where a typo will not be caught by the compiler. Given the amount of gtk symbols that are being deprecated lately I don't think jhbuild should disable deprecated api by default, and I recommend you to change that configuration in your .jhbuildrc if possible.
Comment 4 Alejandro Piñeiro (freenode IRC: apinheiro) 2013-08-15 10:59:37 UTC
(In reply to comment #2)
> (In reply to comment #1)
> > why does it fail to build? it should give just compile warnings, that we
> > should silence, but I don't think we need to change the code for symbols
> > deprecated in a gtk+ version higher than the required one
> 
> At least in GNOME, jhbuild disables deprecated symbols by default.

Sorry, but that is not accurate. jhbuild doesn't do that by default. FWIW, just in case, I made a sanity check:

<API> fredp, ping
<API> although probably jjardon also knows that
<fredp> pong
<API> fredp, here:
<API> https://bugs.freedesktop.org/show_bug.cgi?id=67278#c2
<API> it says that "jhbuild disables deprecated symbols by default"
<API> that sounds really wrong to me
<fredp> well, we don't
<fredp> I thought maybe the jhbuildrc we publish along tarballs does, but not even.


> I saw 2 options:
> 1. Add an option in jhbuild to not check deprecated symbols.

Well, as I said, the problem is not at jhbuild. After doing some searching I found that poppler is hardcoding GTK_DISABLE_DEPRECATED at glib/demo/Makefile.am. More about the previous chat, that include some suggestions:

<API> fredp, ok, thanks, just wanted a sanity check
<fredp> so perhaps there is a wiki page that hints at --disable-deprecated
<fredp> I'll check
<API> fredp, well, I think that this poppler fault
<API> from his Makefile.am, have just found this:
<API> INCLUDES =      \
<API>  -I$(top_srcdir)/glib   \
<API>  -I$(top_builddir)/glib   \
<API>  $(GTK_TEST_CFLAGS)   \
<API>  $(POPPLER_GLIB_DISABLE_DEPRECATED) \
<API>  -DGTK_DISABLE_DEPRECATED  \
<API>  $(POPPLER_GLIB_DISABLE_SINGLE_INCLUDES)
<API> they are hardcoding -DGTK_DISABLE_DEPRECATED
<API> imho, that should be added(or not) at POPPLER_GLIB_DISABLE_DEPRECATED, that is the one that is filled on the configure.ac
<walters> IMO all of those things should just be deleted
<walters> the new way of handing deprecations is just better in every way
<API> walters, perhaps a new gnome goal?
* API checking, just in case that goal already exists
<walters> sure, though there's not that many projects using them still i don't think
<API> walters, well, at least poppler is ;)
<API> and they blame jhbuild
<API> in any case, thanks for the feedback, I will comment on the bug
* walters did https://git.gnome.org/browse/libbonobo/commit/?id=fef13a371fc91f6d9b42518126c2a8b459fdf0e8 a while ago for example
Comment 5 Germán Poo-Caamaño 2013-08-15 16:29:58 UTC
(In reply to comment #4)
> [...]
> Well, as I said, the problem is not at jhbuild. After doing some searching I
> found that poppler is hardcoding GTK_DISABLE_DEPRECATED at
> glib/demo/Makefile.am. More about the previous chat, that include some
> suggestions:

This was already fixed on July 30:

http://cgit.freedesktop.org/poppler/poppler/commit/?id=ef9d861486d54fb3dcf7b8bca01bd44c3b3361a9

However, it seems it came just after the 2.24.0 release.  That might explain why people are still having problems with this.
Comment 6 Nelson Benitez 2013-08-17 18:06:19 UTC
> This was already fixed on July 30:
> 
> http://cgit.freedesktop.org/poppler/poppler/commit/
> ?id=ef9d861486d54fb3dcf7b8bca01bd44c3b3361a9
> 
> However, it seems it came just after the 2.24.0 release.  That might explain
> why people are still having problems with this.

I hit this bug while using jhbuild today, I'm new to jhbuild, but given the fix it's already in master, shouldn't be picked up by jhbuild? or does jhbuild build the last tag revision on master? .. any know a quick workaround fix for jhbuild for this bug?

Regards,
Comment 7 Germán Poo-Caamaño 2013-08-17 19:03:00 UTC
(In reply to comment #6)
> > This was already fixed on July 30:
> > 
> > http://cgit.freedesktop.org/poppler/poppler/commit/
> > ?id=ef9d861486d54fb3dcf7b8bca01bd44c3b3361a9
> > 
> > However, it seems it came just after the 2.24.0 release.  That might explain
> > why people are still having problems with this.
> 
> I hit this bug while using jhbuild today, I'm new to jhbuild, but given the
> fix it's already in master, shouldn't be picked up by jhbuild? or does
> jhbuild build the last tag revision on master? .. any know a quick
> workaround fix for jhbuild for this bug?

jhbuild in gnome modulesets uses poppler from tarball, not from the master.  It is needed a new poppler release and bump the version in the modulesets.
Comment 8 Nelson Benitez 2013-08-17 19:41:21 UTC
(In reply to comment #7)
> (In reply to comment #6)
> > I hit this bug while using jhbuild today, I'm new to jhbuild, but given the
> > fix it's already in master, shouldn't be picked up by jhbuild? or does
> > jhbuild build the last tag revision on master? .. any know a quick
> > workaround fix for jhbuild for this bug?
> 
> jhbuild in gnome modulesets uses poppler from tarball, not from the master. 
> It is needed a new poppler release and bump the version in the modulesets.

Ok, thanks for the quick response, that is indeed the clean fix, but for anyone that don't want to wait, this is what I've just done to build from poppler master:

- Convert the poppler repo from tarball to git in /modulesets/gnome-suites-core-deps-3.10.modules inside the jhbuild checkout. Will attach a diff showing what changed.

- Make jhbuild obey the aforementioned local file by putting the following line into your ~/.config/jhbuildrc file:

use_local_modulesets = True

With above my jhbuild progresses and builds poppler from master.
Comment 9 Nelson Benitez 2013-08-17 19:43:13 UTC
Created attachment 84184 [details] [review]
Changes to /modulesets/gnome-suites-core-deps-3.10.modules

Convert poppler from tarball repo to git repo, so it builds from master.
Comment 10 Carlos Garcia Campos 2013-08-18 08:07:19 UTC
I think the right solution is to add a patch for the current poppler tarball to jhbuild.
Comment 11 Nelson Benitez 2013-08-18 16:48:00 UTC
It seems a fix has already been commited to jhbuild to fix this issue, see:

https://git.gnome.org/browse/jhbuild/commit/?id=63788a02879b5a8d41ae9eda882b009323aa5b55

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.