Subject: pkg/37444: devel/gettext-0.14.6 fails building gettext-tools, whist devel/gettext-tools suceeds!
To: None <pkg-manager@netbsd.org, gnats-admin@netbsd.org,>
From: None <srcshelton@gmail.com>
List: pkgsrc-bugs
Date: 11/28/2007 09:40:00
>Number:         37444
>Category:       pkg
>Synopsis:       devel/gettext-0.14.6 fails building gettext-tools, whist devel/gettext-tools suceeds!
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Nov 28 09:40:00 +0000 2007
>Originator:     Stuart Shelton
>Release:        n/a - pkgsrc latest from CVS
>Organization:
>Environment:
IRIX64 octane 6.5 07202013 IP30; MIPSpro 7.4.4m
>Description:

devel/gettext-0.14.6 fails to build in two ways, one of which is fixable.

gettext's gettext-tools/src/po-lex.h also requires a patch (as has been added to po-lex.c and indeed partially implemented in po-lex.h) to exclude the C99 codepath if '__sgi' is defined, following the check for DECC:

devel/gettext/work/gettext-0.14.6/gettext-tools/src/po-lex.h
@76
-#if __STDC__ && (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L && !defined __DECC)
+#if __STDC__ && (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L && !defined __DECC && !defined __sgi)

This has been solved in gettext-tools by simply "#ifdef 0"'ing out the entire section(!)

However, even with that change gettext's gettext-tools compiles but fails to link, stating that "po_gram_error_at_line" isn't defined - which is correct, because as-stands, the header defines it as extern, and it isn't defined elsewhere.

In gettext-tools' po-lex.c, the varargs functions are built as the condition has been changed to '#if 1' - but making the similar change to gettext itself again results in errors and a build failure.
>How-To-Repeat:

(Also, as of now, gettext-tools is at 0.14.6nb1 and gettext is at 0.14.6.  Building gettext-tools causes a fatal error stating that there is a circular dependency between gettext and gettext-tools, whereas building gettext goes and builds gettext-tools-0.14.6nb1, then returns to build gettext at which point it says that a package named gettext-tools should be installed but isn't.

I fixed this by changing the DEPENDS line in gettext's Makefile to 'gettext-tools-0.14.6nb1')
>Fix:

However, having said all of this, if I copy po-lex.* from gettext-tools to gettext, then it compiles cleanly and passes its test-suite, except for:

/usr/bsd/var/tmp/devel/gettext/work/.wrapper/bin/shlibtool[59]: ../../gettext-runtime/libasprintf/libasprintf.la:  not found
libtool: link: cannot find the library `../../gettext-runtime/libasprintf/libasprintf.la' or unhandled argument `../../gettext-runtime/libasprintf/libasprintf.la'
FAIL: lang-c++

(which may an issue with the build-environment rather than the code itself)

I can't see any difference in the (corrected) source between the two trees, so I imagine that I also copied over the pre-compiled object file, and that was used.