cpio uses extern inline in a couple headers, which causes the linker to complain about duplicate symbol definitions in GCC 4.3 when -std={c,gnu}99 is used. attached patch should fix it. upstream: http://lists.gnu.org/archive/html/bug-cpio/2007-09/msg00002.html
Created attachment 135748 [details, diff] cpio-2.9_gcc43-inline.patch
x86_64-pc-linux-gnu-gcc -std=gnu99 -O2 -g -march=native -fomit-frame-pointer -pipe -Wl,-O1,--hash-style=gnu -o cpio copyin.o copyout.o copypass.o defer.o dstring.o global.o main.o tar.o util.o filemode.o idcache.o makepath.o userspec.o ../lib/libcpio.a ../lib/libcpio.a(argp-help.o): In function `_option_is_end': /var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/lib/argp.h:607: multiple definition of `_option_is_end' main.o:/var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/src/../lib/argp.h:607: first defined here ../lib/libcpio.a(argp-help.o): In function `_option_is_short': /var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/lib/argp.h:594: multiple definition of `_option_is_short' main.o:/var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/src/../lib/argp.h:594: first defined here ../lib/libcpio.a(argp-help.o): In function `argp_usage': /var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/lib/argp.h:589: multiple definition of `argp_usage' main.o:/var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/src/../lib/argp.h:589: first defined here ../lib/libcpio.a(argp-parse.o): In function `_option_is_end': /var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/lib/argp.h:607: multiple definition of `_option_is_end' main.o:/var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/src/../lib/argp.h:607: first defined here ../lib/libcpio.a(argp-parse.o): In function `argp_usage': /var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/lib/argp.h:589: multiple definition of `argp_usage' main.o:/var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/src/../lib/argp.h:589: first defined here ../lib/libcpio.a(argp-parse.o): In function `_option_is_short': /var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/lib/argp.h:594: multiple definition of `_option_is_short' main.o:/var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/src/../lib/argp.h:594: first defined here ../lib/libcpio.a(argp-pvh.o): In function `_option_is_end': /var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/lib/argp.h:607: multiple definition of `_option_is_end' main.o:/var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/src/../lib/argp.h:607: first defined here ../lib/libcpio.a(argp-pvh.o): In function `_option_is_short': /var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/lib/argp.h:594: multiple definition of `_option_is_short' main.o:/var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/src/../lib/argp.h:594: first defined here ../lib/libcpio.a(argp-pvh.o): In function `argp_usage': /var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/lib/argp.h:589: multiple definition of `argp_usage' main.o:/var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/src/../lib/argp.h:589: first defined here ../lib/libcpio.a(argp-eexst.o): In function `_option_is_end': /var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/lib/argp.h:607: multiple definition of `_option_is_end' main.o:/var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/src/../lib/argp.h:607: first defined here ../lib/libcpio.a(argp-eexst.o): In function `_option_is_short': /var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/lib/argp.h:594: multiple definition of `_option_is_short' main.o:/var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/src/../lib/argp.h:594: first defined here ../lib/libcpio.a(argp-eexst.o): In function `argp_usage': /var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/lib/argp.h:589: multiple definition of `argp_usage' main.o:/var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/src/../lib/argp.h:589: first defined here ../lib/libcpio.a(argp-fmtstream.o): In function `argp_fmtstream_putc': /var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/lib/argp-fmtstream.h:233: multiple definition of `argp_fmtstream_putc' ../lib/libcpio.a(argp-help.o):/var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/lib/argp-fmtstream.h:233: first defined here ../lib/libcpio.a(argp-fmtstream.o): In function `argp_fmtstream_point': /var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/lib/argp-fmtstream.h:279: multiple definition of `argp_fmtstream_point' ../lib/libcpio.a(argp-help.o):/var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/lib/argp-fmtstream.h:279: first defined here ../lib/libcpio.a(argp-fmtstream.o): In function `argp_fmtstream_set_wmargin': /var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/lib/argp-fmtstream.h:267: multiple definition of `argp_fmtstream_set_wmargin' ../lib/libcpio.a(argp-help.o):/var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/lib/argp-fmtstream.h:267: first defined here ../lib/libcpio.a(argp-fmtstream.o): In function `argp_fmtstream_set_rmargin': /var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/lib/argp-fmtstream.h:255: multiple definition of `argp_fmtstream_set_rmargin' ../lib/libcpio.a(argp-help.o):/var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/lib/argp-fmtstream.h:255: first defined here ../lib/libcpio.a(argp-fmtstream.o): In function `argp_fmtstream_set_lmargin': /var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/lib/argp-fmtstream.h:243: multiple definition of `argp_fmtstream_set_lmargin' ../lib/libcpio.a(argp-help.o):/var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/lib/argp-fmtstream.h:243: first defined here ../lib/libcpio.a(argp-fmtstream.o): In function `argp_fmtstream_write': /var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/lib/argp-fmtstream.h:207: multiple definition of `argp_fmtstream_write' ../lib/libcpio.a(argp-help.o):/var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/lib/argp-fmtstream.h:207: first defined here ../lib/libcpio.a(argp-fmtstream.o): In function `argp_fmtstream_puts': /var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/lib/argp-fmtstream.h:220: multiple definition of `argp_fmtstream_puts' ../lib/libcpio.a(argp-help.o):/var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/lib/argp-fmtstream.h:220: first defined here collect2: ld returned 1 exit status make[2]: *** [cpio] Error 1 make[2]: Leaving directory `/var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/var/tmp/portage/app-arch/cpio-2.9-r1/work/cpio-2.9' make: *** [all] Error 2 * * ERROR: app-arch/cpio-2.9-r1 failed.
and of course this also applies to tar-1.19.
patches that actually get merged are highly preferred over what gets posted to $random-mailing-list i grabbed the commits from the gnulib git repo and tossed it into latest cpio/tar ebuilds, cheers
*** Bug 202815 has been marked as a duplicate of this bug. ***
*** Bug 214227 has been marked as a duplicate of this bug. ***