I discovered that bridge-utils compiled with linux-headers-3.8 doesn't produce binaries but doesn't appear to fail either. See the compile log here: >>> Emerging (2 of 2) net-misc/bridge-utils-1.5 * bridge-utils-1.5.tar.gz RMD160 SHA1 SHA256 size ;-) ... [ ok ] * Determining the location of the kernel source code * Found kernel source directory: * /usr/src/linux * Found kernel object directory: * /lib/modules/3.8.2-gentoo/build * Found sources for kernel version: * 3.8.2-gentoo * Checking for suitable kernel configuration options... [ ok ] >>> Unpacking source... >>> Unpacking bridge-utils-1.5.tar.gz to /var/tmp/portage/net-misc/bridge-utils-1.5/work >>> Source unpacked in /var/tmp/portage/net-misc/bridge-utils-1.5/work >>> Preparing source in /var/tmp/portage/net-misc/bridge-utils-1.5/work/bridge-utils-1.5 ... * Running eautoreconf in '/var/tmp/portage/net-misc/bridge-utils-1.5/work/bridge-utils-1.5' ... * Running aclocal ... [ ok ] * Running autoconf ... [ ok ] * Running autoheader ... [ ok ] >>> Source prepared. >>> Configuring source in /var/tmp/portage/net-misc/bridge-utils-1.5/work/bridge-utils-1.5 ... ./configure --prefix=/usr --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib --prefix=/ --libdir=/usr/lib64 --includedir=/usr/include --with-linux-headers=/usr/include checking for x86_64-pc-linux-gnu-gcc... x86_64-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 x86_64-pc-linux-gnu-gcc accepts -g... yes checking for x86_64-pc-linux-gnu-gcc option to accept ISO C89... none needed checking for a BSD-compatible install... /usr/bin/install -c checking for x86_64-pc-linux-gnu-ranlib... x86_64-pc-linux-gnu-ranlib checking how to run the C preprocessor... x86_64-pc-linux-gnu-gcc -E checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ANSI C header files... yes 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 sys/ioctl.h usability... yes checking sys/ioctl.h presence... yes checking for sys/ioctl.h... yes checking sys/time.h usability... yes checking sys/time.h presence... yes checking for sys/time.h... yes checking for an ANSI C-conforming const... yes checking whether time.h and sys/time.h may both be included... yes checking for gethostname... yes checking for socket... yes checking for strdup... yes checking for uname... yes checking for if_nametoindex... yes checking for if_indextoname... yes configure: creating ./config.status config.status: creating doc/Makefile config.status: WARNING: 'doc/Makefile.in' seems to ignore the --datarootdir setting config.status: creating libbridge/Makefile config.status: creating brctl/Makefile config.status: WARNING: 'brctl/Makefile.in' seems to ignore the --datarootdir setting config.status: creating Makefile config.status: WARNING: 'Makefile.in' seems to ignore the --datarootdir setting config.status: creating bridge-utils.spec config.status: creating libbridge/config.h >>> Source configured. >>> Compiling source in /var/tmp/portage/net-misc/bridge-utils-1.5/work/bridge-utils-1.5 ... make -j3 for x in libbridge brctl doc; do make - --jobserver-fds=3,4 -j -C $x ; done make[1] : on entre dans le répertoire « /var/tmp/portage/net-misc/bridge-utils-1.5/work/bridge-utils-1.5/libbridge » x86_64-pc-linux-gnu-gcc -Wall -g -I/usr/include -c libbridge_devif.c x86_64-pc-linux-gnu-gcc -Wall -g -I/usr/include -c libbridge_if.c x86_64-pc-linux-gnu-gcc -Wall -g -I/usr/include -c libbridge_init.c In file included from libbridge.h:24:0, from libbridge_if.c:26: /usr/include/linux/if_bridge.h:172:20: erreur: field ‘ip6’ has incomplete type make[1]: *** [libbridge_if.o] Erreur 1 make[1]: *** Attente des tâches non terminées.... In file included from libbridge.h:24:0, from libbridge_devif.c:28: /usr/include/linux/if_bridge.h:172:20: erreur: field ‘ip6’ has incomplete type make[1]: *** [libbridge_devif.o] Erreur 1 In file included from libbridge.h:24:0, from libbridge_init.c:28: /usr/include/linux/if_bridge.h:172:20: erreur: field ‘ip6’ has incomplete type make[1]: *** [libbridge_init.o] Erreur 1 make[1] : on quitte le répertoire « /var/tmp/portage/net-misc/bridge-utils-1.5/work/bridge-utils-1.5/libbridge » make[1] : on entre dans le répertoire « /var/tmp/portage/net-misc/bridge-utils-1.5/work/bridge-utils-1.5/brctl » x86_64-pc-linux-gnu-gcc -Wall -O2 -march=nocona -pipe -I../libbridge -I/usr/include -c brctl.c x86_64-pc-linux-gnu-gcc -Wall -O2 -march=nocona -pipe -I../libbridge -I/usr/include -c brctl_cmd.c x86_64-pc-linux-gnu-gcc -Wall -O2 -march=nocona -pipe -I../libbridge -I/usr/include -c brctl_disp.c make[1]: *** Aucune règle pour fabriquer la cible « ../libbridge/libbridge.a », nécessaire pour « brctl ». Arrêt. make[1]: *** Attente des tâches non terminées.... In file included from ../libbridge/libbridge.h:24:0, from brctl_disp.c:24: /usr/include/linux/if_bridge.h:172:20: erreur: field ‘ip6’ has incomplete type make[1]: *** [brctl_disp.o] Erreur 1 In file included from ../libbridge/libbridge.h:24:0, from brctl.c:25: /usr/include/linux/if_bridge.h:172:20: erreur: field ‘ip6’ has incomplete type make[1]: *** [brctl.o] Erreur 1 In file included from ../libbridge/libbridge.h:24:0, from brctl_cmd.c:25: /usr/include/linux/if_bridge.h:172:20: erreur: field ‘ip6’ has incomplete type make[1]: *** [brctl_cmd.o] Erreur 1 make[1] : on quitte le répertoire « /var/tmp/portage/net-misc/bridge-utils-1.5/work/bridge-utils-1.5/brctl » make[1] : on entre dans le répertoire « /var/tmp/portage/net-misc/bridge-utils-1.5/work/bridge-utils-1.5/doc » make[1]: Rien à faire pour « all ». make[1] : on quitte le répertoire « /var/tmp/portage/net-misc/bridge-utils-1.5/work/bridge-utils-1.5/doc » >>> Source compiled. >>> Test phase [not enabled]: net-misc/bridge-utils-1.5 >>> Install bridge-utils-1.5 into /var/tmp/portage/net-misc/bridge-utils-1.5/image/ category net-misc make -j3 install DESTDIR=/var/tmp/portage/net-misc/bridge-utils-1.5/image/ for x in libbridge brctl doc; do make - --jobserver-fds=3,4 -j -C $x install; done make[1] : on entre dans le répertoire « /var/tmp/portage/net-misc/bridge-utils-1.5/work/bridge-utils-1.5/libbridge » make[1]: Rien à faire pour « install ». make[1] : on quitte le répertoire « /var/tmp/portage/net-misc/bridge-utils-1.5/work/bridge-utils-1.5/libbridge » make[1] : on entre dans le répertoire « /var/tmp/portage/net-misc/bridge-utils-1.5/work/bridge-utils-1.5/brctl » x86_64-pc-linux-gnu-gcc -Wall -O2 -march=nocona -pipe -I../libbridge -I/usr/include -c brctl.c x86_64-pc-linux-gnu-gcc -Wall -O2 -march=nocona -pipe -I../libbridge -I/usr/include -c brctl_cmd.c x86_64-pc-linux-gnu-gcc -Wall -O2 -march=nocona -pipe -I../libbridge -I/usr/include -c brctl_disp.c make[1]: *** Aucune règle pour fabriquer la cible « ../libbridge/libbridge.a », nécessaire pour « brctl ». Arrêt. make[1]: *** Attente des tâches non terminées.... In file included from ../libbridge/libbridge.h:24:0, from brctl_disp.c:24: /usr/include/linux/if_bridge.h:172:20: erreur: field ‘ip6’ has incomplete type make[1]: *** [brctl_disp.o] Erreur 1 In file included from ../libbridge/libbridge.h:24:0, from brctl.c:25: /usr/include/linux/if_bridge.h:172:20: erreur: field ‘ip6’ has incomplete type make[1]: *** [brctl.o] Erreur 1 In file included from ../libbridge/libbridge.h:24:0, from brctl_cmd.c:25: /usr/include/linux/if_bridge.h:172:20: erreur: field ‘ip6’ has incomplete type make[1]: *** [brctl_cmd.o] Erreur 1 make[1] : on quitte le répertoire « /var/tmp/portage/net-misc/bridge-utils-1.5/work/bridge-utils-1.5/brctl » make[1] : on entre dans le répertoire « /var/tmp/portage/net-misc/bridge-utils-1.5/work/bridge-utils-1.5/doc » mkdir -p /var/tmp/portage/net-misc/bridge-utils-1.5/image//usr/share/man/man8 /usr/bin/install -c -m 644 brctl.8 /var/tmp/portage/net-misc/bridge-utils-1.5/image//usr/share/man/man8 make[1] : on quitte le répertoire « /var/tmp/portage/net-misc/bridge-utils-1.5/work/bridge-utils-1.5/doc » >>> Completed installing bridge-utils-1.5 into /var/tmp/portage/net-misc/bridge-utils-1.5/image/ ecompressdir: bzip2 -9 /usr/share/man >>> Installing (2 of 2) net-misc/bridge-utils-1.5 * checking 13 files for package collisions >>> Merging net-misc/bridge-utils-1.5 to / --- /usr/ --- /usr/share/ --- /usr/share/man/ --- /usr/share/man/man8/ >>> /usr/share/man/man8/brctl.8.bz2 --- /usr/share/doc/ --- /usr/share/doc/bridge-utils-1.5/ >>> /usr/share/doc/bridge-utils-1.5/THANKS.bz2 >>> /usr/share/doc/bridge-utils-1.5/HOWTO.bz2 >>> /usr/share/doc/bridge-utils-1.5/FIREWALL.bz2 >>> /usr/share/doc/bridge-utils-1.5/AUTHORS.bz2 >>> /usr/share/doc/bridge-utils-1.5/WISHLIST.bz2 >>> /usr/share/doc/bridge-utils-1.5/SMPNOTES.bz2 >>> /usr/share/doc/bridge-utils-1.5/TODO.bz2 >>> /usr/share/doc/bridge-utils-1.5/PROJECTS.bz2 >>> /usr/share/doc/bridge-utils-1.5/FAQ.bz2 >>> /usr/share/doc/bridge-utils-1.5/README.bz2 >>> /usr/share/doc/bridge-utils-1.5/ChangeLog.bz2 >>> /usr/share/doc/bridge-utils-1.5/RPM-GPG-KEY.bz2 >>> Safely unmerging already-installed instance... No package files given... Grabbing a set. --- replaced obj /usr/share/man/man8/brctl.8.bz2 --- replaced dir /usr/share/man/man8 --- replaced dir /usr/share/man --- replaced obj /usr/share/doc/bridge-utils-1.5/WISHLIST.bz2 --- replaced obj /usr/share/doc/bridge-utils-1.5/TODO.bz2 --- replaced obj /usr/share/doc/bridge-utils-1.5/THANKS.bz2 --- replaced obj /usr/share/doc/bridge-utils-1.5/SMPNOTES.bz2 --- replaced obj /usr/share/doc/bridge-utils-1.5/RPM-GPG-KEY.bz2 --- replaced obj /usr/share/doc/bridge-utils-1.5/README.bz2 --- replaced obj /usr/share/doc/bridge-utils-1.5/PROJECTS.bz2 --- replaced obj /usr/share/doc/bridge-utils-1.5/HOWTO.bz2 --- replaced obj /usr/share/doc/bridge-utils-1.5/FIREWALL.bz2 --- replaced obj /usr/share/doc/bridge-utils-1.5/FAQ.bz2 --- replaced obj /usr/share/doc/bridge-utils-1.5/ChangeLog.bz2 --- replaced obj /usr/share/doc/bridge-utils-1.5/AUTHORS.bz2 --- replaced dir /usr/share/doc/bridge-utils-1.5 --- replaced dir /usr/share/doc --- replaced dir /usr/share --- replaced dir /usr <<< obj /sbin/brctl --- !empty dir /sbin >>> Regenerating /etc/ld.so.cache... >>> Original instance of package unmerged safely. >>> net-misc/bridge-utils-1.5 merged. >>> Auto-cleaning packages... >>> No outdated packages were found on your system. The expected behaviour is to have bridge-utils produce the brctl binary or at least have the compilation fail.
The current workaround to have it running is simply to mask linux-headers-3.8.
*** This bug has been marked as a duplicate of bug 460262 ***
I would note that the destructive install of the bridge utils after compilation fail is problematic for its own cause. E.g. I did a rebuild of bridge-utils and brctl disappeared from my system entirely. This hosed my system rather a lot. Masking an recompiling is a work around of sorts, but the package system needs to detect the make failure and abort the install/overwrite instead of nuking the existing elements off of the system.