abicheck.sh portability

Adam Miller maxamillion at fedoraproject.org
Wed Mar 23 17:56:59 CET 2011

On Wed, Mar 23, 2011 at 05:07:13PM +0100, Guido Berhoerster wrote:
> Hello,
> the abicheck.sh script included with libxfce4ui, exo, thunar,
> xfce4-panel, xfconf, libxfce4util, and thunar-vfs which verifies
> the symbol table uses non-portable constructs which currently
> cause buildbot builds to fail on the Solaris platform.
> With the common build environment Solaris nm is in a $PATH ahead
> of GNU nm and the "nm -D" output format differs. IMO the best
> solution is using the -P option which produces a POSIX-specified
> output format on both nm implementations, hence I'd suggest:
> nm -D -g -P libfoo.so | awk '$2~/^[DRT]$/&&$1~/^[^_]/{print $1}' >actual-abi
> (The alternative would be to add a Solaris-specific section and
> either specify the full path /usr/gnu/bin/nm or use gnm instead
> of nm, or use "elfdump -T SHT_DYNSYM libfoo.so | awk
> '$8~/^\.(text|rodata)$/{print $9}' | sort >actual-abi".)
> While on OpenIndiana/Solaris Express both the gcc preprocessor
> (/usr/gnu/bin/cpp) and a separate preprocessor (not in $PATH but
> in /usr/lib/cpp) are available, SunStudio uses its own built-in
> preprocessor. IMHO it might be a good idea to use the same
> preprocessor used by the compiler and this can be achieved in a
> portable way by invoking it with "$CC -E" (line markers can be
> stripped with sed). How about:
> ${CC:-cc} -E -DINCLUDE_INTERNAL_SYMBOLS -DINCLUDE_VARIABLES -DALL_FILES ${srcdir:-.}/libfoo.symbols | sed 's/ G_GNUC.*$//;s/ PRIVATE//;/^[# ]*$/d' | sort >expected-abi

I know I'm generally quiet on the mailing list and my code contributions
are non existent thus far in life (heavily due to my lack of time and
somewhat because of personal failures) so my opinion might not be looked
at in high regard but I think remaining POSIX compliant where possible in 
shell scripting is likely the best route to go, so +1.


More information about the Xfce4-dev mailing list