When compiling epdfview, compilation fails with the error /usr/include/glib-2.0/glib/gmacros.h:32:2: error: #error "Only <glib.h> can be included directly." Reproducible: Always Steps to Reproduce: 1. try to build app-text/epdfview-0.1.8 2. config stage runs 3. compilation starts 4. compilation stops with error mentioned above Actual Results: Compilation fails Expected Results: I believe there are many different packages exhibiting this problem. >>> Emerging (1 of 7) app-text/epdfview-0.1.8 * epdfview-0.1.8.tar.bz2 RMD160 SHA1 SHA256 size ;-) ... [ ok ] >>> Unpacking source... >>> Unpacking epdfview-0.1.8.tar.bz2 to /var/tmp/portage/app-text/epdfview-0.1.8/work >>> Source unpacked in /var/tmp/portage/app-text/epdfview-0.1.8/work >>> Preparing source in /var/tmp/portage/app-text/epdfview-0.1.8/work/epdfview-0.1.8 ... >>> Source prepared. >>> Configuring source in /var/tmp/portage/app-text/epdfview-0.1.8/work/epdfview-0.1.8 ... * econf: updating epdfview-0.1.8/config.guess with /usr/share/gnuconfig/config.guess * econf: updating epdfview-0.1.8/config.sub with /usr/share/gnuconfig/config.sub ./configure --prefix=/usr --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib --disable-dependency-tracking --with-cups --enable-nls configure: loading site script /usr/share/config.site configure: loading site script /usr/share/crossdev/include/site/linux configure: loading site script /usr/share/crossdev/include/site/i686-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether to enable maintainer-specific portions of Makefiles... no checking build system type... i686-pc-linux-gnu checking host system type... i686-pc-linux-gnu checking for i686-pc-linux-gnu-gcc... i686-pc-linux-gnu-gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether i686-pc-linux-gnu-gcc accepts -g... yes checking for i686-pc-linux-gnu-gcc option to accept ISO C89... none needed checking for style of include used by make... GNU checking dependency style of i686-pc-linux-gnu-gcc... none checking for i686-pc-linux-gnu-g++... i686-pc-linux-gnu-g++ checking whether we are using the GNU C++ compiler... yes checking whether i686-pc-linux-gnu-g++ accepts -g... yes checking dependency style of i686-pc-linux-gnu-g++... none checking for doxygen... no checking whether NLS is requested... yes checking for msgfmt... /usr/bin/msgfmt checking for gmsgfmt... /usr/bin/gmsgfmt checking for xgettext... /usr/bin/xgettext checking for msgmerge... /usr/bin/msgmerge checking how to run the C preprocessor... i686-pc-linux-gnu-gcc -E checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking whether we are using the GNU C Library 2 or newer... yes checking for i686-pc-linux-gnu-ranlib... i686-pc-linux-gnu-ranlib checking for strerror in -lcposix... no checking for ANSI C header files... yes checking for an ANSI C-conforming const... yes checking for signed... yes checking for inline... inline checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for off_t... yes checking for size_t... yes checking for long long... yes checking for long double... yes checking for wchar_t... yes checking for wint_t... yes checking for inttypes.h... yes checking for stdint.h... yes checking for intmax_t... yes checking whether printf() supports POSIX/XSI format strings... yes checking for working alloca.h... yes checking for alloca... yes checking for stdlib.h... (cached) yes checking for unistd.h... (cached) yes checking for sys/param.h... yes checking for getpagesize... yes checking for working mmap... yes checking whether we are using the GNU C Library 2.1 or newer... yes checking whether integer division by zero raises SIGFPE... yes checking for unsigned long long... yes checking for inttypes.h... yes checking whether the inttypes.h PRIxNN macros are broken... no checking for stdint.h... (cached) yes checking for SIZE_MAX... yes checking for stdint.h... (cached) yes checking for CFPreferencesCopyAppValue... no checking for CFLocaleCopyCurrent... no checking for ld used by GCC... /usr/i686-pc-linux-gnu/bin/ld checking if the linker (/usr/i686-pc-linux-gnu/bin/ld) is GNU ld... yes checking for shared library run path origin... done checking for ptrdiff_t... yes checking argz.h usability... yes checking argz.h presence... yes checking for argz.h... yes checking limits.h usability... yes checking limits.h presence... yes checking for limits.h... yes checking locale.h usability... yes checking locale.h presence... yes checking for locale.h... yes checking nl_types.h usability... yes checking nl_types.h presence... yes checking for nl_types.h... yes checking malloc.h usability... yes checking malloc.h presence... yes checking for malloc.h... yes checking stddef.h usability... yes checking stddef.h presence... yes checking for stddef.h... yes checking for stdlib.h... (cached) yes checking for string.h... (cached) yes checking for unistd.h... (cached) yes checking for sys/param.h... (cached) yes checking for asprintf... yes checking for fwprintf... yes checking for getcwd... yes checking for getegid... yes checking for geteuid... yes checking for getgid... yes checking for getuid... yes checking for mempcpy... yes checking for munmap... yes checking for putenv... yes checking for setenv... yes checking for setlocale... yes checking for snprintf... yes checking for stpcpy... yes checking for strcasecmp... yes checking for strdup... yes checking for strtoul... yes checking for tsearch... yes checking for wcslen... yes checking for __argz_count... yes checking for __argz_stringify... yes checking for __argz_next... yes checking for __fsetlocking... yes checking whether _snprintf is declared... no checking whether _snwprintf is declared... no checking whether feof_unlocked is declared... yes checking whether fgets_unlocked is declared... no checking whether getc_unlocked is declared... yes checking for iconv... yes checking for iconv declaration... install-shextern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); checking for nl_langinfo and CODESET... yes checking for LC_MESSAGES... yes checking for bison... bison checking version of bison... 2.4.3, ok checking for CFPreferencesCopyAppValue... (cached) no checking for CFLocaleCopyCurrent... (cached) no checking whether NLS is requested... yes checking whether included gettext is requested... no checking for GNU gettext in libc... yes checking whether to use NLS... yes checking where the gettext function comes from... libc checking for i686-pc-linux-gnu-pkg-config... no checking for pkg-config... /usr/bin/pkg-config checking pkg-config is at least version 0.9.0... yes checking for GLIB... yes checking for GTK2... yes checking for POPPLER... yes checking for native Win32... no checking for cups-config... /usr/bin/cups-config checking for CUPS... yes checking for cppunit-config... no checking for Cppunit - version >= 1.10.2... configure: creating ./config.status config.status: creating Makefile config.status: creating data/Makefile config.status: creating m4/Makefile config.status: creating intl/Makefile config.status: WARNING: 'intl/Makefile.in' seems to ignore the --datarootdir setting config.status: creating po/Makefile.in config.status: WARNING: 'po/Makefile.in.in' seems to ignore the --datarootdir setting config.status: creating src/Makefile config.status: creating src/gtk/Makefile config.status: creating tests/Makefile config.status: creating doc/Makefile config.status: creating doc/Doxyfile config.status: creating config.h config.status: executing depfiles commands config.status: executing default-1 commands config.status: creating po/POTFILES config.status: creating po/Makefile >>> Source configured. >>> Compiling source in /var/tmp/portage/app-text/epdfview-0.1.8/work/epdfview-0.1.8 ... make -j9 make all-recursive make[1]: Entering directory `/var/tmp/portage/app-text/epdfview-0.1.8/work/epdfview-0.1.8' Making all in data make[2]: Entering directory `/var/tmp/portage/app-text/epdfview-0.1.8/work/epdfview-0.1.8/data' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/var/tmp/portage/app-text/epdfview-0.1.8/work/epdfview-0.1.8/data' Making all in intl make[2]: Entering directory `/var/tmp/portage/app-text/epdfview-0.1.8/work/epdfview-0.1.8/intl' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/var/tmp/portage/app-text/epdfview-0.1.8/work/epdfview-0.1.8/intl' Making all in po make[2]: Entering directory `/var/tmp/portage/app-text/epdfview-0.1.8/work/epdfview-0.1.8/po' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/var/tmp/portage/app-text/epdfview-0.1.8/work/epdfview-0.1.8/po' Making all in m4 make[2]: Entering directory `/var/tmp/portage/app-text/epdfview-0.1.8/work/epdfview-0.1.8/m4' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/var/tmp/portage/app-text/epdfview-0.1.8/work/epdfview-0.1.8/m4' Making all in src make[2]: Entering directory `/var/tmp/portage/app-text/epdfview-0.1.8/work/epdfview-0.1.8/src' Making all in gtk make[3]: Entering directory `/var/tmp/portage/app-text/epdfview-0.1.8/work/epdfview-0.1.8/src/gtk' i686-pc-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I../.. -DDATADIR='"/usr/share/epdfview"' -I../../src -pthread -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng15 -I/usr/include/libdrm -Os -march=core2 -pipe -Wall -Wno-long-long -DNDEBUG -DG_DISABLE_ASSERT -c -o libshell_gtk_a-FindView.o `test -f 'FindView.cxx' || echo './'`FindView.cxx i686-pc-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I../.. -DDATADIR='"/usr/share/epdfview"' -I../../src -pthread -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng15 -I/usr/include/libdrm -Os -march=core2 -pipe -Wall -Wno-long-long -DNDEBUG -DG_DISABLE_ASSERT -c -o libshell_gtk_a-MainView.o `test -f 'MainView.cxx' || echo './'`MainView.cxx i686-pc-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I../.. -DDATADIR='"/usr/share/epdfview"' -I../../src -pthread -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng15 -I/usr/include/libdrm -Os -march=core2 -pipe -Wall -Wno-long-long -DNDEBUG -DG_DISABLE_ASSERT -c -o libshell_gtk_a-PageView.o `test -f 'PageView.cxx' || echo './'`PageView.cxx i686-pc-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I../.. -DDATADIR='"/usr/share/epdfview"' -I../../src -pthread -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng15 -I/usr/include/libdrm -Os -march=core2 -pipe -Wall -Wno-long-long -DNDEBUG -DG_DISABLE_ASSERT -c -o libshell_gtk_a-PreferencesView.o `test -f 'PreferencesView.cxx' || echo './'`PreferencesView.cxx i686-pc-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I../.. -DDATADIR='"/usr/share/epdfview"' -I../../src -pthread -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng15 -I/usr/include/libdrm -Os -march=core2 -pipe -Wall -Wno-long-long -DNDEBUG -DG_DISABLE_ASSERT -c -o libshell_gtk_a-StockIcons.o `test -f 'StockIcons.cxx' || echo './'`StockIcons.cxx i686-pc-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I../.. -DDATADIR='"/usr/share/epdfview"' -I../../src -pthread -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng15 -I/usr/include/libdrm -Os -march=core2 -pipe -Wall -Wno-long-long -DNDEBUG -DG_DISABLE_ASSERT -c -o libshell_gtk_a-PrintView.o `test -f 'PrintView.cxx' || echo './'`PrintView.cxx In file included from StockIcons.h:21:0, from StockIcons.cxx:23: /usr/include/glib-2.0/glib/gmacros.h:32:2: error: #error "Only <glib.h> can be included directly." StockIcons.cxx:45:1: warning: deprecated conversion from string constant to 'gchar*' StockIcons.cxx:45:1: warning: deprecated conversion from string constant to 'gchar*' StockIcons.cxx:45:1: warning: deprecated conversion from string constant to 'gchar*' StockIcons.cxx:45:1: warning: deprecated conversion from string constant to 'gchar*' StockIcons.cxx:45:1: warning: deprecated conversion from string constant to 'gchar*' StockIcons.cxx:45:1: warning: deprecated conversion from string constant to 'gchar*' StockIcons.cxx:45:1: warning: deprecated conversion from string constant to 'gchar*' StockIcons.cxx:45:1: warning: deprecated conversion from string constant to 'gchar*' StockIcons.cxx:45:1: warning: deprecated conversion from string constant to 'gchar*' StockIcons.cxx:45:1: warning: deprecated conversion from string constant to 'gchar*' StockIcons.cxx:45:1: warning: deprecated conversion from string constant to 'gchar*' StockIcons.cxx:45:1: warning: deprecated conversion from string constant to 'gchar*' StockIcons.cxx:45:1: warning: deprecated conversion from string constant to 'gchar*' StockIcons.cxx:45:1: warning: deprecated conversion from string constant to 'gchar*' StockIcons.cxx:45:1: warning: deprecated conversion from string constant to 'gchar*' make[3]: *** [libshell_gtk_a-StockIcons.o] Error 1 make[3]: *** Waiting for unfinished jobs.... In file included from StockIcons.h:21:0, from MainView.cxx:24: /usr/include/glib-2.0/glib/gmacros.h:32:2: error: #error "Only <glib.h> can be included directly." In file included from StockIcons.h:21:0, from FindView.cxx:23: /usr/include/glib-2.0/glib/gmacros.h:32:2: error: #error "Only <glib.h> can be included directly." MainView.cxx: In member function 'virtual void ePDFView::MainView::showErrorMessage(const gchar*, const gchar*)': MainView.cxx:648:18: warning: format not a string literal and no format arguments MainView.cxx:650:51: warning: format not a string literal and no format arguments make[3]: *** [libshell_gtk_a-MainView.o] Error 1 make[3]: *** [libshell_gtk_a-FindView.o] Error 1 make[3]: Leaving directory `/var/tmp/portage/app-text/epdfview-0.1.8/work/epdfview-0.1.8/src/gtk' make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory `/var/tmp/portage/app-text/epdfview-0.1.8/work/epdfview-0.1.8/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/var/tmp/portage/app-text/epdfview-0.1.8/work/epdfview-0.1.8' make: *** [all] Error 2 * ERROR: app-text/epdfview-0.1.8 failed (compile phase): * emake failed
I believe I understand what happened: I ran emerge --sync and attempted to perform an emerge -vDu world but this failed because a shared-library (sorry, I don't remember which one) could not be linked. I reasoned that it was probably a case of something being broken, so I ran revdep-rebuild -i and this resulted in the error reported above after rebuilding a few modules. So after all this I ran emerge -vDu world which proceeded to install a new glib. I expect this was the problem, at first I could not update because there were too many broken modules, so the new glib (that fixes the compilation error) could not get installed. Running the revdep-rebuild fixed enough breakage to allow the new glib to install and PROBLEM SOLVED I don't believe there is any way around this problem (which appears to have been reported many times) other than the steps I explained above. Thank you for reading.
Scratch that. Turns out since the update was so big I posted my result too early and the bug is still present.
*** This bug has been marked as a duplicate of bug 412105 ***