The gnome-terminal ebuilds in Gnome overlay were recently modified (see http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commitdiff;h=7cc742ccfd38af1b093634631e831e34eae6c959) to pass --with-smclient=xsmp to configure. As a result, gnome-terminal fails to link: # emerge gnome-terminal [...] Merging translations into gnome-terminal.schemas. CCLD gnome-terminal Wrote profile-preferences.ui gnome_terminal-eggsmclient-xsmp.o: In function `set_properties': eggsmclient-xsmp.c:(.text+0x40b): undefined reference to `SmcSetProperties' gnome_terminal-eggsmclient-xsmp.o: In function `xsmp_shutdown_cancelled': eggsmclient-xsmp.c:(.text+0x84d): undefined reference to `SmcSaveYourselfDone' gnome_terminal-eggsmclient-xsmp.o: In function `delete_properties': eggsmclient-xsmp.c:(.text+0x926): undefined reference to `SmcDeleteProperties' gnome_terminal-eggsmclient-xsmp.o: In function `do_save_yourself': eggsmclient-xsmp.c:(.text+0xe73): undefined reference to `SmcSaveYourselfDone' gnome_terminal-eggsmclient-xsmp.o: In function `fix_broken_state': eggsmclient-xsmp.c:(.text+0xfe7): undefined reference to `SmcInteractDone' eggsmclient-xsmp.c:(.text+0xffb): undefined reference to `SmcSaveYourselfDone' gnome_terminal-eggsmclient-xsmp.o: In function `sm_client_xsmp_disconnect': eggsmclient-xsmp.c:(.text+0x10df): undefined reference to `SmcCloseConnection' gnome_terminal-eggsmclient-xsmp.o: In function `process_ice_messages': eggsmclient-xsmp.c:(.text+0x112e): undefined reference to `IceProcessMessages' eggsmclient-xsmp.c:(.text+0x1184): undefined reference to `IceGetConnectionContext' gnome_terminal-eggsmclient-xsmp.o: In function `sm_client_xsmp_end_session': eggsmclient-xsmp.c:(.text+0x11f5): undefined reference to `SmcGetIceConnection' eggsmclient-xsmp.c:(.text+0x1227): undefined reference to `SmcSaveYourselfDone' eggsmclient-xsmp.c:(.text+0x1275): undefined reference to `SmcVendor' eggsmclient-xsmp.c:(.text+0x12e1): undefined reference to `SmcRequestSaveYourself' gnome_terminal-eggsmclient-xsmp.o: In function `sm_client_xsmp_will_quit': eggsmclient-xsmp.c:(.text+0x13a3): undefined reference to `SmcInteractDone' eggsmclient-xsmp.c:(.text+0x13da): undefined reference to `SmcInteractDone' eggsmclient-xsmp.c:(.text+0x13fd): undefined reference to `SmcSaveYourselfDone' gnome_terminal-eggsmclient-xsmp.o: In function `sm_client_xsmp_startup': eggsmclient-xsmp.c:(.text+0x15a3): undefined reference to `IceSetIOErrorHandler' eggsmclient-xsmp.c:(.text+0x15ad): undefined reference to `IceSetErrorHandler' eggsmclient-xsmp.c:(.text+0x15b9): undefined reference to `IceAddConnectionWatch' eggsmclient-xsmp.c:(.text+0x15c3): undefined reference to `SmcSetErrorHandler' eggsmclient-xsmp.c:(.text+0x1659): undefined reference to `SmcOpenConnection' gnome_terminal-eggsmclient-xsmp.o: In function `ice_connection_watch': eggsmclient-xsmp.c:(.text+0x17b1): undefined reference to `IceConnectionNumber' gnome_terminal-eggsmclient-xsmp.o: In function `xsmp_save_yourself': eggsmclient-xsmp.c:(.text+0x1a25): undefined reference to `SmcSaveYourselfDone' gnome_terminal-eggsmclient-xsmp.o: In function `do_save_yourself': eggsmclient-xsmp.c:(.text+0xec2): undefined reference to `SmcInteractRequest' collect2: ld returned 1 exit status make[3]: *** [gnome-terminal] Error 1 make[3]: Leaving directory `/var/tmp/portage/x11-terms/gnome-terminal-3.0.0/work/gnome-terminal-3.0.0/src' make[2]: *** [all] Error 2 make[2]: Leaving directory `/var/tmp/portage/x11-terms/gnome-terminal-3.0.0/work/gnome-terminal-3.0.0/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/var/tmp/portage/x11-terms/gnome-terminal-3.0.0/work/gnome-terminal-3.0.0' make: *** [all] Error 2 emake failed To see why this is happening, have a look at configure.ac: AC_ARG_WITH([smclient], [AS_HELP_STRING([--with-smclient-backend],[which smclient backend to use (xsmp/win32/quartz)])], [], [case "$GDK_TARGET" in x11) with_smclient=xsmp SMCLIENT_PKGS="sm ice" ;; win32|quartz) with_smclient=$GDK_TARGET ;; *) with_smclient=no ;; esac]) AC_MSG_RESULT([$with_smclient]) if test "$with_smclient" != "no"; then AC_DEFINE([WITH_SMCLIENT],[1],[Define if smclient is enabled]) fi if test -n "$SMCLIENT_PKGS"; then PKG_CHECK_MODULES([SMCLIENT],[$SMCLIENT_PKGS]) AC_SUBST([SMCLIENT_CFLAGS]) AC_SUBST([SMCLIENT_LIBS]) fi When --with-smclient=xsmp is passed to configure, SMCLIENT_PKGS does not get set, so PKG_CHECK_MODULES([SMCLIENT],[$SMCLIENT_PKGS]) does not get run and SMCLIENT_LIBS never gets defined. As a result, -lSM is not passed to the linker and linking fails. The simplest solution is to remove the "--with-smclient=xsmp" line from the ebuild entirely; it should not be needed on x11-based systems, since if the x11 gdk backend is detected, configure will automatically select the xsmp smclient). Alternatively, if there really is some good reason for manually choosing xsmp (OSX compatibility?), the ebuild needs to define SMCLIENT_LIBS=`pkg-config --libs sm ice` in src_configure.
Fixed in overlay. Thanks for reporting.