Hi, I've stumbled accross 4 issues when building gnu tar 1.27 or 1.27.1 on IRIX that haven't existed with 1.26. I'm using IRIX 6.5.30, the MIPSPro 7.4.4 compiler and GNU Make 3.82.
One is that rmt (and probably tar itself) uses libintl_gettext even if no libintl is detected. This is easily worked around by specifying include and library paths so that a libintl can be found and used by configure: configure (without parameters) said: checking for GNU gettext in libintl... no but the build fails at: cc -c99 -g -o rmt rmt.o ../gnu/libgnu.a [...] ld32: ERROR 33 : Unresolved text symbol "libintl_gettext" -- 1st referenced by ../gnu/libgnu.a(error.o). Use linker option -v to see when and which objects, archives and dsos are loaded. ld32: ERROR 33 : Unresolved text symbol "libintl_dgettext" -- 1st referenced by ../gnu/libgnu.a(argp-parse.o). Use linker option -v to see when and which objects, archives and dsos are loaded. ld32: INFO 152: Output file removed because of error. The next issue is that the generated .Po files are invalid. I'm not sure how they're supposed to look, but the complaint is always: .deps/areadlinkat.Po:2: *** missing separator. Stop. All .Po files have 2 lines and look basically like: acl-errno-valid.o : /usr/include/sys/timespec.h ../config.h /usr/include/internal/sgimacros.h /usr/include/stddef.h /usr/include/internal/string_core.h /usr/include/sys/bsd_types.h /usr/include/sys/select.h /usr/include/sys/errno.h /usr/include/sys/stat.h /usr/include/sys/pthread.h ./sys/time.h /usr/include/sys/types.h ./sys/stat.h /usr/include/sys/ptimers.h /usr/include/errno.h /usr/include/standards.h /usr/include/sgidefs.h ./time.h /usr/include/stdbool.h /usr/include/internal/stddef_core.h /usr/include/string.h /usr/include/internal/errno_core.h /usr/include/internal/time_core.h ./string.h /usr/include/time.h ./acl.h /usr/include/sys/time.h ./errno.h ./sys/types.h #:fec /usr/include/sys/timespec.h ../config.h /usr/include/internal/sgimacros.h /usr/include/stddef.h /usr/include/internal/string_core.h /usr/include/sys/bsd_types.h /usr/include/sys/select.h /usr/include/sys/errno.h /usr/include/sys/stat.h /usr/include/sys/pthread.h ./sys/time.h /usr/include/sys/types.h ./sys/stat.h /usr/include/sys/ptimers.h /usr/include/errno.h /usr/include/standards.h /usr/include/sgidefs.h ./time.h /usr/include/stdbool.h /usr/include/internal/stddef_core.h /usr/include/string.h /usr/include/internal/errno_core.h /usr/include/internal/time_core.h ./string.h /usr/include/time.h ./acl.h /usr/include/sys/time.h ./errno.h ./sys/types.h #:fec : The last issue is that wordlist uses __attribute__, which as far as I know, is a gcc extension. The at the end of this mail fixes this. gmake[4]: Entering directory `/usr/people/canavan/src/tar/tar-1.27/lib' CC wordsplit.o cc-1065 c99: ERROR File = ./wordsplit.h, Line = 37 A semicolon is expected at this point. __attribute__ ((__format__ (__printf__, 1, 2))); ^ cc-1065 c99: ERROR File = ./wordsplit.h, Line = 39 A semicolon is expected at this point. __attribute__ ((__format__ (__printf__, 1, 2))); ^ cc-1079 c99: ERROR File = wordsplit.c, Line = 64 A type specifier is expected. static void __attribute__ ((__format__ (__printf__, 1, 2))) ^ cc-1137 c99: ERROR File = wordsplit.c, Line = 64 Unnamed prototyped parameters not allowed when body is present. static void __attribute__ ((__format__ (__printf__, 1, 2))) ^ cc-1129 c99: ERROR File = wordsplit.c, Line = 65 A left brace ("{") is expected at this point. _wsplt_error (const char *fmt, ...) ^ cc-1020 c99: ERROR File = wordsplit.c, Line = 69 The identifier "fmt" is undefined. va_start (ap, fmt); ^ Additionally, I get the same failures in the testsuite as reported for Solaris 10 in the thread "testsuite: 63 85 failed", but instead of segfaults, I get the two "permission denied" errors shown below. regrads, rainer 063/testsuite.log --- /dev/null 2013-12-22 17:59:19.000000000 +0100 +++ /usr/people/canavan/src/tar/tar-1.27.1/tests/testsuite.dir/at-groups/63/stderr 2013-12-22 17:59:19.544009230 +0100 @@ -0,0 +1,2 @@ +tar: unable to record current working directory: Permission denied +cmp: extract/f: No such file or directory ./extrac09.at:27: exit code was 2, expected 0 63. extrac09.at:24: 63. no need to save dir with unreadable . and .. (extrac09.at:24): FAILED (extrac09.at:27) 085/testsuite.log --- - 2013-12-22 18:00:21.092479000 +0100 +++ /usr/people/canavan/src/tar/tar-1.27.1/tests/testsuite.dir/at-groups/85/stderr 2013-12-22 18:00:21.086106117 +0100 @@ -1,2 +1,3 @@ -tar: a: Directory is new +tar: .: Cannot getcwd: Permission denied +tar: Error is not recoverable: exiting now --- - 2013-12-22 18:00:21.099059000 +0100 +++ /usr/people/canavan/src/tar/tar-1.27.1/tests/testsuite.dir/at-groups/85/stdout 2013-12-22 18:00:21.093834208 +0100 @@ -1,3 +1 @@ -a/ -a/file ./listed03.at:27: exit code was 2, expected 0 diff -ur ./lib/wordsplit.c ../../tar-1.27.1/lib/wordsplit.c --- ./lib/wordsplit.c Thu Mar 14 21:18:10 CET 2013 +++ ../../tar-1.27.1/lib/wordsplit.c Sun Dec 22 16:22:23 CET 2013 @@ -61,7 +61,10 @@ abort (); } -static void __attribute__ ((__format__ (__printf__, 1, 2))) +static void +#ifdef __GNUC__ +__attribute__ ((__format__ (__printf__, 1, 2))) +#endif _wsplt_error (const char *fmt, ...) { va_list ap; diff -ur ./lib/wordsplit.h ../../tar-1.27//lib/wordsplit.h --- ./lib/wordsplit.h Thu Mar 14 21:18:10 CET 2013 +++ ../../tar-1.27//lib/wordsplit.h Sun Dec 22 16:19:25 CET 2013 @@ -34,9 +34,15 @@ const char *ws_escape; void (*ws_alloc_die) (struct wordsplit * wsp); void (*ws_error) (const char *, ...) - __attribute__ ((__format__ (__printf__, 1, 2))); +#ifdef __GNUC__ + __attribute__ ((__format__ (__printf__, 1, 2))) +#endif +; void (*ws_debug) (const char *, ...) - __attribute__ ((__format__ (__printf__, 1, 2))); +#ifdef __GNUC__ + __attribute__ ((__format__ (__printf__, 1, 2))) +#endif +; const char **ws_env; const char *(*ws_getvar) (const char *, size_t, void *);