>Synopsis: Same as: misc/133957: /usr/ports/security/gnome-keyring fails to build
>Arrival-Date: Tue Dec 29 23:30:05 UTC 2009
>Originator: Ronald F. Guilmette
>Release: FreeBSD 7.0-RELEASE i386
Infinite Monkeys & Co.
System: FreeBSD segfault.tristatelogic.com 7.0-RELEASE FreeBSD 7.0-RELEASE #0: Tue Aug 5 02:38:40 PDT 2008 email@example.com:/usr/src/sys/i386/compile/rfg20080805 i386
This is essentially the exact same bug as misc/133957.
I also got the exact same errors as shown in that bugreport when
trying to build gnome-keyring-2.28.2 using portupgrade.
Please note that misc/133957 was closed by request of the original
submitter, however that was only because he managed to get
gnome-keyring to build by using portmaster rather than portupgrade.
However this is most definitely NOT a solution, and it only shows
that the original submitter didn't really understand the problem.
(Neither do I, entirely, but I _am_ quite completely sure that it
_is_ (still) a problem.)
Evidently, the file gcr/gcr-importer.h contains a number of function
declarations that have parameters whose types are defined _only_
when one first includes the <gio/gio.h> file (which is a part of
the "glib" package). I have the (current) port for glib-2.22.3
installed on my system, but apparently that is not enough to insure
that <gio/gio.h> will be properly #included prior to the function
declarations within the gcr/gcr-importer.h file.
I have no idea why other people aren't seeing this exact same problem,
but I put it down to some sort of version skew relating to the exact
set of packages I have installed. Still, this problem _should_ be
fixed so that other people similarly situated will not also come to
grief when trying to build gnome-keyring-2.28.2 (or subsequent).
cd /usr/ports/security/gnome-keyring; make
Note: Obviously, for a lot of people with different sets of ports
installed, the above commands will not reproduce the problem. However,
if you cannot reproduce this bug on your own system, then please DO
(1) make a "make" log of _your_ build of gnome-keyring-2.28.2 and
(2) chop out just the command that compiles gcr-certificate.c, and
(3) put that in a file preceded by #!/bin/sh and with "-c" changed
to "-E" (to generate preprocessor output) and then (4) execute the
resulting shell script and save the stdout output to a file. When
you have that file, please e-mail it to me so that I can maybe see
why/how YOU are getting <gio/gio.h> into the compilation stream
prior to gcr/gcr-importer.h (whereas I am definitely NOT getting it...
unless I use the patch provided below).
The following trivial patch worked for me. After applying this,
gnome-keyring-2.28.2 built and installed without any significant
NOTE: I _do not_ claim that this is in any sense either the "best"
or the "most correct" fix for this bug. I suspect that only the
primary gnome-keyring developer/maintainer can make a determination
of how best to resolve this bug. All I do know is that this works,
and it is an utterly benign workaround (i.e. causes no harm) and can
be useful until such time as a proper fix is developed.
*** gnome-keyring-2.28.2/gcr/gcr.h- Mon Nov 9 18:01:21 2009
--- gnome-keyring-2.28.2/gcr/gcr.h Tue Dec 29 14:44:11 2009
*** 24,27 ****
--- 24,28 ----
+ #include <gio/gio.h>