[136259] trunk/dports/gnome/gnome-keyring/Portfile

David Evans devans at macports.org
Sat May 23 09:30:56 PDT 2015


On 5/19/15 10:31 PM, Joshua Root wrote:
> On 2015-5-20 13:24 , Joshua Root wrote:
>>> Revision: 136259
>>>            https://trac.macports.org/changeset/136259
>>> Author:   devans at macports.org
>>> Date:     2015-05-13 12:49:19 -0700 (Wed, 13 May 2015)
>>> Log Message:
>>> -----------
>>> gnome-keyring: blacklist compilers that do not support C11 (redefinition of typedefs).
>> Do you have a log of this failure I can look at? It seems more likely
>> that this is a bug, not a deliberate use of C11 features.
> There's definitely a bug in one of the headers. Try this.
>
> - Josh
Thanks for the suggestion, Josh.

While this is definitely a header typo, it appears to be unrelated to 
the issue I was addressing.

The failure when building with gcc-4.2 (including your patch) is as follows:

:info:build     /bin/sh ./libtool  --tag=CC   --mode=compile 
/opt/local/bin/gcc-apple-4.2 -DHAVE_CONFIG_H -I. 
-DPREFIX=\""/opt/local"\" -DBINDIR=\""/opt/local/bin"\" 
-DLIBEXECDIR=\""/opt/local/libexec"\" 
-DGNOMELOCALEDIR=\""/opt/local/share/locale"\" 
-DSRCDIR="\"/opt/local/var/macports/build/_opt_macports_users_devans_GNOME-3_stable_dports_gnome_gnome-keyring/gnome-keyring/work/gnome-keyring-3.16.0\"" 
-DBUILDDIR="\"/opt/local/var/macports/build/_opt_macports_users_devans_GNOME-3_stable_dports_gnome_gnome-keyring/gnome-keyring/work/gnome-keyring-3.16.0\"" 
-I. -I. -I./pkcs11 -I/opt/local/include/glib-2.0 
-I/opt/local/lib/glib-2.0/include -I/opt/local/include 
-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_38 
-DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_38 -I/opt/local/include -Wall 
        -Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes 
-Wnested-externs -Wpointer-arith -Wcast-align -Wsign-compare     -pipe 
-Os -arch x86_64 -g -Wno-strict-aliasing -Wno-sign-compare -MT 
daemon/dbus/test-service.lo -MD -MP -MF $depbase.Tpo -c -o 
daemon/dbus/test-service.lo daemon/dbus/test-service.c &&\
:info:build     mv -f $depbase.Tpo $depbase.Plo
:info:build In file included from daemon/dbus/gkd-secret-unlock.c:37:
:info:build ./daemon/login/gkd-login.h: At top level:
:info:build ./daemon/login/gkd-login.h:26: error: redefinition of 
typedef 'GckSession'
:info:build /opt/local/include/gck-1/gck/gck.h:391: error: previous 
declaration of 'GckSession' was here
:info:build make[2]: *** 
[daemon/dbus/libgkd_dbus_la-gkd-secret-unlock.lo] Error 1

The upstream commit that introduced this error is

https://git.gnome.org/browse/gnome-keyring/commit/daemon/login/gkd-login.h?id=354f9887eef1c2c6144b904739ca0230bc2f2a4e


I think this is a case of lazy programming.  GckSession is defined by 
the gcr port in gck.h but rather than work out the correct include 
sequences throughout
the rest of the code the committer just redefined GckSession to get it 
to build as is, figuring that he could get away with it with most 
(newer) compilers.  The definition here is identical to the one in gck.h 
so there is no harm in ignoring the redefinition.

Newer versions of clang, also catch this redefinition but just issue a 
warning rather than throwing an error.

Full build log is too big to send as email attachment but you can 
reproduce it using by removing the blacklisting and setting
configure.compiler=apple-gcc-4.2

Dave






More information about the macports-dev mailing list