When I try to emerge groff I get the following error: make[2]: Entering directory `/var/tmp/portage/groff-1.17.2-r2/work/groff-1.17.2/src/preproc/refer' g++ -I. -I/var/tmp/portage/groff-1.17.2-r2/work/groff-1.17.2/src/preproc/refer -I/var/tmp/portage/groff-1.17.2-r2/work/groff-1.17.2/src/include -I/var/tmp/portage/groff-1.17.2-r2/work/groff-1.17.2/src/include -DHAVE_STDLIB_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DIRENT_H=1 -DHAVE_LIMITS_H=1 -DHAVE_SYS_DIR_H=1 -DHAVE_STRING_H=1 -DHAVE_STRINGS_H=1 -DHAVE_MATH_H=1 -DRET_TYPE_SRAND_IS_VOID=1 -DHAVE_SYS_NERR=1 -DHAVE_SYS_ERRLIST=1 -DHAVE_CC_LIMITS_H=1 -DRETSIGTYPE=void -DHAVE_STRUCT_EXCEPTION=1 -DHAVE_STDLIB_H=1 -DHAVE_UNISTD_H=1 -DHAVE_GETPAGESIZE=1 -DHAVE_MMAP=1 -DHAVE_FMOD=1 -DHAVE_STRTOL=1 -DHAVE_GETCWD=1 -DHAVE_STRERROR=1 -DHAVE_PUTENV=1 -DHAVE_RENAME=1 -DHAVE_STRCASECMP=1 -DHAVE_STRNCASECMP=1 -DHAVE_STRSEP=1 -DHAVE_STRDUP=1 -DHAVE_MKSTEMP=1 -DHAVE_MKSTEMP_PROTO=1 -DSYS_SIGLIST_DECLARED=1 -march=pentium4 -fomit-frame-pointer -mmmx -msse -msse2 -mfpmath=sse -O3 -pipe -c command.cc if test -n ""; then \ byacc -v -d label.y; \ else \ byacc -v label.y; \ fi test -f y.tab.h && mv y.tab.h y_tab.h make[2]: [label.cc] Error 1 (ignored) test -f y.tab.c && mv y.tab.c y_tab.c mv y_tab.c label.cc if test -n ""; then \ if test -f /var/tmp/portage/groff-1.17.2-r2/work/groff-1.17.2/src/preproc/refer/; then \ rm -f ; \ mv y_tab.h /var/tmp/portage/groff-1.17.2-r2/work/groff-1.17.2/src/preproc/refer/; \ else \ mv y_tab.h ; \ fi; \ fi g++ -I. -I/var/tmp/portage/groff-1.17.2-r2/work/groff-1.17.2/src/preproc/refer -I/var/tmp/portage/groff-1.17.2-r2/work/groff-1.17.2/src/include -I/var/tmp/portage/groff-1.17.2-r2/work/groff-1.17.2/src/include -DHAVE_STDLIB_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DIRENT_H=1 -DHAVE_LIMITS_H=1 -DHAVE_SYS_DIR_H=1 -DHAVE_STRING_H=1 -DHAVE_STRINGS_H=1 -DHAVE_MATH_H=1 -DRET_TYPE_SRAND_IS_VOID=1 -DHAVE_SYS_NERR=1 -DHAVE_SYS_ERRLIST=1 -DHAVE_CC_LIMITS_H=1 -DRETSIGTYPE=void -DHAVE_STRUCT_EXCEPTION=1 -DHAVE_STDLIB_H=1 -DHAVE_UNISTD_H=1 -DHAVE_GETPAGESIZE=1 -DHAVE_MMAP=1 -DHAVE_FMOD=1 -DHAVE_STRTOL=1 -DHAVE_GETCWD=1 -DHAVE_STRERROR=1 -DHAVE_PUTENV=1 -DHAVE_RENAME=1 -DHAVE_STRCASECMP=1 -DHAVE_STRNCASECMP=1 -DHAVE_STRSEP=1 -DHAVE_STRDUP=1 -DHAVE_MKSTEMP=1 -DHAVE_MKSTEMP_PROTO=1 -DSYS_SIGLIST_DECLARED=1 -march=pentium4 -fomit-frame-pointer -mmmx -msse -msse2 -mfpmath=sse -O3 -pipe -c label.cc y.tab.c:1234: declaration of C function `char* getenv()' conflicts with /usr/include/stdlib.h:587: previous declaration `char* getenv(const char*)' here label.y:410: previous declaration of `int yylex()' with C++ linkage y.tab.c:1235: conflicts with new declaration with C linkage label.y:30: previous declaration of `int yyparse()' with C++ linkage y.tab.c:1236: conflicts with new declaration with C linkage make[2]: *** [label.o] Error 1 make[2]: Leaving directory `/var/tmp/portage/groff-1.17.2-r2/work/groff-1.17.2/src/preproc/refer' make[1]: *** [src/preproc/refer] Error 2 make[1]: Leaving directory `/var/tmp/portage/groff-1.17.2-r2/work/groff-1.17.2' make: *** [all] Error 2 !!! ERROR: The ebuild did not complete successfully. !!! Function src_compile, Line 10, Exitcode 2 !!! (no error message) !!! emerge aborting on /usr/portage/sys-apps/groff/groff-1.17.2-r2.ebuild .
Works fine here, bootstrap or normal system. So not sure why yours define its own getenv() (actually, here it does not). Maybe try to remerge bison ? Or try a different version ?
I found a symlink ,/usr/local/bin/byacc, pointing to /bin/yacc. When I removed that one everything worked well. I made that symlink because I needed it for something at work. Thanks for pointing me in the right direction.