[MacPorts] #64228: pangox-compat @0.0.2: error: implicit declaration of function 'pango_config_key_get' is invalid in C99
MacPorts
noreply at macports.org
Sat May 14 05:37:24 UTC 2022
#64228: pangox-compat @0.0.2: error: implicit declaration of function
'pango_config_key_get' is invalid in C99
----------------------------+------------------------
Reporter: evan814378 | Owner: ryandesign
Type: defect | Status: accepted
Priority: Normal | Milestone:
Component: ports | Version:
Resolution: | Keywords:
Port: pangox-compat |
----------------------------+------------------------
Changes (by ryandesign):
* cc: Steph152309 (added)
Comment:
Has duplicate #65171.
Replying to [comment:11 ramadugu]:
> is there a way to install the gtkglext without pangox like the
libbonoboui?
The situation is not the same.
In 2012, the developers of pango decided to remove the pangox
functionality from pango. It was moved to a separate project called
pangox-compat (which has now bitrotted and doesn't build when using a
recent enough version of pango, which is the situation we now find
ourselves in in MacPorts).
The most recent version of gtkglext was released in 2006 while the most
recent version of libbonoboui was released in 2011. So the situation is
similar in that both of those projects were written at a time when having
pango meant automatically also having pangox.
The difference is that libbonoboui doesn't actually use pangox. It
references the pangox pkg-config file in its configure script, as well as
the pangoxft pkg-config file if it exists. pangoxft is still a part of
pango today so its pkg-config file does exist (at least when pango is
compiled with the +x11 variant, and the libbonoboui port basically
requires that to be the case). libbonoboui's configure script uses the
combined output from both of the pango pkg-config files to determine
whether pango was linked with X11. If it was, libbonoboui doesn't link
itself with X11. (This will be the case if pangox-compat is installed.) If
it wasn't, libbonoboui does. (This will be the case if pangox-compat is
not installed.)
gtkglext on the other hand does use pangox, which can be easily
demonstrated: If the pangox-compat dependency is simply removed from the
gtkglext port as was done with libbonoboui, gtkglext will then fail at the
configure step when it can't find pangox:
{{{
checking for BASE_DEPENDENCIES... configure: error: Package requirements
(gtk+-2.0 >= 2.0.0 gdk-2.0 >= 2.0.0 pango >= 1.0.0 pangox >= 1.0.0
gmodule-2.0 >= 2.0.0 ) were not met:
No package 'pangox' found
}}}
If the configure check for the existence of pangox is deleted, then the
build fails when it tries to include the nonexistent pangox header:
{{{
gdkglfont-x11.c:21:10: fatal error: 'pango/pangox.h' file not found
#include <pango/pangox.h>
^~~~~~~~~~~~~~~~
1 error generated.
}}}
If the inclusion of the pangox header is replaced with an inclusion of the
pango header, then the build fails when it tries to use the nonexistent
pangox features:
{{{
gdkglfont-x11.c:80:3: error: use of undeclared identifier 'PangoXSubfont'
PangoXSubfont subfont_id;
^
}}}
So the only solutions are to rewrite pangox-compat so that it regains
compatibility with the latest pango (which the developers of pangox-compat
have shown no interest in doing) or to rewrite gtkglext so that it does
not use pangox.
The developer of pango reported to the developers of gtkglext in 2009 that
they are [https://sourceforge.net/p/gtkglext/bugs/23/ linking with pangox
without using it], and he requested that they stop doing that, but there
was no reply to that ticket, and I'm not sure what to make of it given
what I showed above which seems to show that gtkglext really does use
pangox. He also [https://bugzilla.redhat.com/show_bug.cgi?id=516588
reported the same to redhat]; the issue was closed due to inactivity.
Development of gtkglext [https://gitlab.gnome.org/Archive/gtkglext
continued on gnome's gitlab], including commits that removed the pangox
requirement, however they never released a new stable version including
those changes and the project is now archived so there won't be any
further releases.
Some other distributions like
[https://bugzilla.redhat.com/show_bug.cgi?id=850813#c7 redhat were asked
to update to that newer unreleased version of gtkglext], however it was
pointed out that it is incompatible with the last released version of
gtkglext in that it simply removes the gtkglext functionality that relied
upon pangox, which could be a problem for other programs that relied on
that gtkglext functionality. Redhat decided to instead rely on pangox-
compat, but that was back in 2013 when pangox-compat could still be used.
I'm not certain what they've done about it since then.
Some other distributions like [https://bugs.gentoo.org/698950 gentoo were
asked to remove gtkglext] since it is thought that its functionality has
been superseded by gtk, however there is disagreement on that point in the
bug report.
We could investigate each port that uses gtkglext and see if there is a
newer version or another way to make it not use gtkglext anymore.
If that's not possible, we could try to update gtkglext to the unreleased
version and see if all of the ports that declare dependencies on gtkglext
still build and work after that.
Or we could try to fix the pangox-compat build problem. As I understand
it, pangox-compat, having been a part of pango, uses internal pango APIs
which have changed.
--
Ticket URL: <https://trac.macports.org/ticket/64228#comment:12>
MacPorts <https://www.macports.org/>
Ports system for macOS
More information about the macports-tickets
mailing list