Bug 759 - Sysstat build broken without libintl
Summary: Sysstat build broken without libintl
Status: VERIFIED FIXED
Alias: None
Product: buildroot
Classification: Unclassified
Component: Other (show other bugs)
Version: 2009.11
Hardware: PC Linux
: P5 trivial
Target Milestone: ---
Assignee: Gustavo Zacarias
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-12-02 14:28 UTC by Lionel Landwerlin
Modified: 2010-11-20 05:29 UTC (History)
2 users (show)

See Also:
Host: x86_64
Target: i686
Build:


Attachments
sysstat fix compilation without libintl (922 bytes, patch)
2009-12-02 14:29 UTC, Lionel Landwerlin
Details
make sysstat >& sysstat.log (24.63 KB, text/plain)
2010-11-18 02:35 UTC, Sérgio
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Lionel Landwerlin 2009-12-02 14:28:00 UTC
>>> sysstat 9.0.5 Building
/usr/bin/make -j1  -C /home/djdeath/src/buildroot/buildroot_rebase/output/build/sysstat-9.0.5/
make[1]: entrant dans le répertoire « /home/djdeath/src/buildroot/buildroot_rebase/output/build/sysstat-9.0.5 »
/opt/intelcm_nds//bin/i686-cm-linux-gnu-gcc -Os -pipe -O3  --sysroot /home/djdeath/src/buildroot/buildroot_rebase/output/staging/ -o sadc.o -c -Os -pipe -O3  --sysroot /home/djdeath/src/buildroot/buildroot_rebase/output/staging/ -Wall -Wstrict-prototypes -pipe -O2  -DSA_DIR=\"/var/log/sa\" -DSADC_PATH=\"/usr/lib/sa/sadc\" -DUSE_NLS -DPACKAGE=\"sysstat\" -DLOCALEDIR=\"/usr/share/locale\" sadc.c
/opt/intelcm_nds//bin/i686-cm-linux-gnu-gcc -Os -pipe -O3  --sysroot /home/djdeath/src/buildroot/buildroot_rebase/output/staging/ -o act_sadc.o -c -Os -pipe -O3  --sysroot /home/djdeath/src/buildroot/buildroot_rebase/output/staging/ -Wall -Wstrict-prototypes -pipe -O2 -DSOURCE_SADC  -DSA_DIR=\"/var/log/sa\" -DSADC_PATH=\"/usr/lib/sa/sadc\" -DUSE_NLS -DPACKAGE=\"sysstat\" -DLOCALEDIR=\"/usr/share/locale\" activity.c
/opt/intelcm_nds//bin/i686-cm-linux-gnu-gcc -Os -pipe -O3  --sysroot /home/djdeath/src/buildroot/buildroot_rebase/output/staging/ -o sa_wrap.o -c -Os -pipe -O3  --sysroot /home/djdeath/src/buildroot/buildroot_rebase/output/staging/ -Wall -Wstrict-prototypes -pipe -O2  -DSA_DIR=\"/var/log/sa\" -DSADC_PATH=\"/usr/lib/sa/sadc\" -DUSE_NLS -DPACKAGE=\"sysstat\" -DLOCALEDIR=\"/usr/share/locale\" sa_wrap.c
/opt/intelcm_nds//bin/i686-cm-linux-gnu-gcc -Os -pipe -O3  --sysroot /home/djdeath/src/buildroot/buildroot_rebase/output/staging/ -o sa_common.o -c -Os -pipe -O3  --sysroot /home/djdeath/src/buildroot/buildroot_rebase/output/staging/ -Wall -Wstrict-prototypes -pipe -O2  -DSA_DIR=\"/var/log/sa\" -DSADC_PATH=\"/usr/lib/sa/sadc\" -DUSE_NLS -DPACKAGE=\"sysstat\" -DLOCALEDIR=\"/usr/share/locale\" sa_common.c
/opt/intelcm_nds//bin/i686-cm-linux-gnu-gcc -Os -pipe -O3  --sysroot /home/djdeath/src/buildroot/buildroot_rebase/output/staging/ -o rd_stats.o -c -Os -pipe -O3  --sysroot /home/djdeath/src/buildroot/buildroot_rebase/output/staging/ -Wall -Wstrict-prototypes -pipe -O2  -DSA_DIR=\"/var/log/sa\" -DSADC_PATH=\"/usr/lib/sa/sadc\" -DUSE_NLS -DPACKAGE=\"sysstat\" -DLOCALEDIR=\"/usr/share/locale\" rd_stats.c
/opt/intelcm_nds//bin/i686-cm-linux-gnu-ar rv librdstats.a rd_stats.o
/home/djdeath/taff/toolchain/intelcm_nds/bin/.i686-cm-linux-gnu-ar: creating librdstats.a
a - rd_stats.o
/opt/intelcm_nds//bin/i686-cm-linux-gnu-gcc -Os -pipe -O3  --sysroot /home/djdeath/src/buildroot/buildroot_rebase/output/staging/ -o common.o -c -Os -pipe -O3  --sysroot /home/djdeath/src/buildroot/buildroot_rebase/output/staging/ -Wall -Wstrict-prototypes -pipe -O2  -DSA_DIR=\"/var/log/sa\" -DSADC_PATH=\"/usr/lib/sa/sadc\" -DUSE_NLS -DPACKAGE=\"sysstat\" -DLOCALEDIR=\"/usr/share/locale\" common.c
/opt/intelcm_nds//bin/i686-cm-linux-gnu-gcc -Os -pipe -O3  --sysroot /home/djdeath/src/buildroot/buildroot_rebase/output/staging/ -o ioconf.o -c -Os -pipe -O3  --sysroot /home/djdeath/src/buildroot/buildroot_rebase/output/staging/ -Wall -Wstrict-prototypes -pipe -O2  -DSA_DIR=\"/var/log/sa\" -DSADC_PATH=\"/usr/lib/sa/sadc\" -DUSE_NLS -DPACKAGE=\"sysstat\" -DLOCALEDIR=\"/usr/share/locale\" ioconf.c
/opt/intelcm_nds//bin/i686-cm-linux-gnu-ar rvs libsyscom.a common.o ioconf.o
/home/djdeath/taff/toolchain/intelcm_nds/bin/.i686-cm-linux-gnu-ar: creating libsyscom.a
a - common.o
a - ioconf.o
/opt/intelcm_nds//bin/i686-cm-linux-gnu-gcc -Os -pipe -O3  --sysroot /home/djdeath/src/buildroot/buildroot_rebase/output/staging/ -o sadc -Os -pipe -O3  --sysroot /home/djdeath/src/buildroot/buildroot_rebase/output/staging/ -Wall -Wstrict-prototypes -pipe -O2 sadc.o act_sadc.o sa_wrap.o sa_common.o librdstats.a libsyscom.a -s
sadc.o: In function `p_write_error':
sadc.c:(.text+0xd0): undefined reference to `libintl_gettext'
sadc.o: In function `usage':
sadc.c:(.text+0x10e): undefined reference to `libintl_gettext'
sadc.c:(.text+0x132): undefined reference to `libintl_gettext'
sadc.o: In function `setup_file_hdr':
sadc.c:(.text+0xc59): undefined reference to `libintl_gettext'
sadc.o: In function `create_sa_file':
sadc.c:(.text+0xde1): undefined reference to `libintl_gettext'
sadc.o:sadc.c:(.text+0x10be): more undefined references to `libintl_gettext' follow
libsyscom.a(common.o): In function `init_nls':
common.c:(.text+0x686): undefined reference to `libintl_bindtextdomain'
common.c:(.text+0x692): undefined reference to `libintl_textdomain'
libsyscom.a(common.o): In function `print_version':
common.c:(.text+0xc3e): undefined reference to `libintl_gettext'
libsyscom.a(ioconf.o): In function `transform_devmapname':
ioconf.c:(.text+0x19d): undefined reference to `libintl_gettext'
collect2: ld returned 1 exit status
make[1]: *** [sadc] Erreur 1
Comment 1 Lionel Landwerlin 2009-12-02 14:29:03 UTC
Created attachment 791 [details]
sysstat fix compilation without libintl
Comment 2 Peter Korsgaard 2009-12-06 15:35:10 UTC
Hmm, with what config is this? I don't seem to be able to reproduce it here (no libintl, no locale support in toolchain). Notice that we're already automatically adding --disable-nls if the toolchain doesn't have locale support.
Comment 3 Lionel Landwerlin 2009-12-06 19:48:34 UTC
(In reply to comment #2)
> Hmm, with what config is this? I don't seem to be able to reproduce it here (no
> libintl, no locale support in toolchain). Notice that we're already
> automatically adding --disable-nls if the toolchain doesn't have locale
> support.
> 

Thx for responding, you made me look deeper in the problem...

I built an external toolchain using crosstool-ng for x86 with the default options. The toolchain has been built with --disable-nls but when buildroot is configured to use an external toolchain, it seems to assume the toolchain to be built with nls support and so asks the user to set the BR2_ENABLE_LOCALE option.

So I guess I can close the bug and then push some patches to the mailing list for a better external toolchain support (at least with glibc).

Comment 4 Peter Korsgaard 2009-12-06 20:12:16 UTC
> Thx for responding, you made me look deeper in the problem...
> 
> I built an external toolchain using crosstool-ng for x86 with the default
> options. The toolchain has been built with --disable-nls but when buildroot is
> configured to use an external toolchain, it seems to assume the toolchain to be
> built with nls support and so asks the user to set the BR2_ENABLE_LOCALE
> option.

I don't normally use an external toolchain, but from a quick look it seems to me like you still have the 'Enable toolchain locale/i18n support?' option when you use an external toolchain. If your crosstool-ng toolchain doesn't have locale support, then don't enable that option.
Comment 5 Lionel Landwerlin 2009-12-06 20:19:40 UTC
(In reply to comment #4)
> 
> I don't normally use an external toolchain, but from a quick look it seems to
> me like you still have the 'Enable toolchain locale/i18n support?' option when
> you use an external toolchain. If your crosstool-ng toolchain doesn't have
> locale support, then don't enable that option.
> 

Yes, buildroot forces to set this option.
Comment 6 Sérgio 2010-10-05 04:11:24 UTC
If I may reopen this bug, I mean serious, if you don't approve this reopen , please close it and please left a note on what I should do.  

I have a similar compile error but I have intl enabled, my Makefile misses a "-lintl" . I use builroot from git on fedora13.x86_64 and try build to mipsel arch. 

>>> sysstat 9.0.5 Building
PATH="/home/sergio/hardware/moviecube/buildroot/output/host/bin:/home/sergio/hardware/moviecube/buildroot/output/host/usr/bin:/home/sergio/hardware/moviecube/buildroot/output/host/usr/sbin/:/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/local/sbin:/usr/sbin:/sbin:/home/sergio/bin" PERLLIB="/home/sergio/hardware/moviecube/buildroot/output/host/usr/lib/perl"  /usr/bin/make -j2  -C /home/sergio/hardware/moviecube/buildroot/output/build/sysstat-9.0.5/
make[1]: Entering directory `/home/sergio/hardware/moviecube/buildroot/output/build/sysstat-9.0.5'
/home/sergio/hardware/moviecube/buildroot/output/staging/usr/bin/mipsel-unknown-linux-uclibc-gcc --sysroot=/home/sergio/hardware/moviecube/buildroot/output/staging -o sadc -Os -pipe -Os  -mtune=mips32r2 -mabi=32 -msoft-float -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -I/home/sergio/hardware/moviecube/buildroot/output/staging/usr/include -I/home/sergio/hardware/moviecube/buildroot/output/staging/include -Wall -Wstrict-prototypes -pipe -O2 sadc.o act_sadc.o sa_wrap.o sa_common.o librdstats.a libsyscom.a -s
/home/sergio/hardware/moviecube/buildroot/output/staging/usr/bin/mipsel-unknown-linux-uclibc-gcc --sysroot=/home/sergio/hardware/moviecube/buildroot/output/staging -o sar -Os -pipe -Os  -mtune=mips32r2 -mabi=32 -msoft-float -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -I/home/sergio/hardware/moviecube/buildroot/output/staging/usr/include -I/home/sergio/hardware/moviecube/buildroot/output/staging/include -Wall -Wstrict-prototypes -pipe -O2 sar.o act_sar.o sa_common.o pr_stats.o libsyscom.a -s
sadc.o: In function `p_write_error':
sadc.c:(.text+0x13c): undefined reference to `libintl_gettext'
sadc.o: In function `usage':
sadc.c:(.text+0x1dc): undefined reference to `libintl_gettext'
sadc.c:(.text+0x218): undefined reference to `libintl_gettext'
sadc.o: In function `setup_file_hdr':
sadc.c:(.text+0x1184): undefined reference to `libintl_gettext'
sadc.o: In function `create_sa_file':
sadc.c:(.text+0x13f4): undefined reference to `libintl_gettext'
sadc.o:sadc.c:(.text+0x17e8): more undefined references to `libintl_gettext' follow
libsyscom.a(common.o): In function `init_nls':
common.c:(.text+0xabc): undefined reference to `libintl_bindtextdomain'
common.c:(.text+0xad8): undefined reference to `libintl_textdomain'
libsyscom.a(common.o): In function `print_version':
common.c:(.text+0x139c): undefined reference to `libintl_gettext'
libsyscom.a(ioconf.o): In function `transform_devmapname':
ioconf.c:(.text+0x214): undefined reference to `libintl_gettext'
collect2: ld returned 1 exit status
make[1]: *** [sadc] Error 1
make[1]: *** Waiting for unfinished jobs....
sar.o: In function `print_usage_title':
sar.c:(.text+0xc8): undefined reference to `libintl_gettext'
sar.o: In function `print_read_error':
sar.c:(.text+0x124): undefined reference to `libintl_gettext'
sar.o: In function `display_help':
sar.c:(.text+0x19c): undefined reference to `libintl_gettext'
sar.c:(.text+0x1cc): undefined reference to `libintl_gettext'
sar.c:(.text+0x1fc): undefined reference to `libintl_gettext'
sar.o:sar.c:(.text+0x22c): more undefined references to `libintl_gettext' follow
libsyscom.a(common.o): In function `init_nls':
common.c:(.text+0xabc): undefined reference to `libintl_bindtextdomain'
common.c:(.text+0xad8): undefined reference to `libintl_textdomain'
libsyscom.a(common.o): In function `print_version':
common.c:(.text+0x139c): undefined reference to `libintl_gettext'
libsyscom.a(ioconf.o): In function `transform_devmapname':
ioconf.c:(.text+0x214): undefined reference to `libintl_gettext'
collect2: ld returned 1 exit status
make[1]: *** [sar] Error 1
make[1]: Leaving directory `/home/sergio/hardware/moviecube/buildroot/output/build/sysstat-9.0.5'
make: *** [/home/sergio/hardware/moviecube/buildroot/output/build/sysstat-9.0.5/.stamp_built] Error 2
Comment 7 Lionel Landwerlin 2010-10-05 06:07:52 UTC
I'm still having this problem too.
To reproduce this bug you have to use an internal toolchain without locale support. Sysstat always try to use intl symbols, but never adds -lintl link flag.

So basicly sysstat's makefile/configure is broken. It should be able to detect whether or not -lintl is required.


(In reply to comment #6)

> libsyscom.a -s
> sadc.o: In function `p_write_error':
> sadc.c:(.text+0x13c): undefined reference to `libintl_gettext'
> sadc.o: In function `usage':
> sadc.c:(.text+0x1dc): undefined reference to `libintl_gettext'
> sadc.c:(.text+0x218): undefined reference to `libintl_gettext'
> sadc.o: In function `setup_file_hdr':
> sadc.c:(.text+0x1184): undefined reference to `libintl_gettext'
> sadc.o: In function `create_sa_file':
> sadc.c:(.text+0x13f4): undefined reference to `libintl_gettext'
> sadc.o:sadc.c:(.text+0x17e8): more undefined references to `libintl_gettext'
> follow
> libsyscom.a(common.o): In function `init_nls':
> common.c:(.text+0xabc): undefined reference to `libintl_bindtextdomain'
> common.c:(.text+0xad8): undefined reference to `libintl_textdomain'
> libsyscom.a(common.o): In function `print_version':
> common.c:(.text+0x139c): undefined reference to `libintl_gettext'
> libsyscom.a(ioconf.o): In function `transform_devmapname':
> ioconf.c:(.text+0x214): undefined reference to `libintl_gettext'
> collect2: ld returned 1 exit status
> make[1]: *** [sadc] Error 1
> make[1]: *** Waiting for unfinished jobs....
> sar.o: In function `print_usage_title':
> sar.c:(.text+0xc8): undefined reference to `libintl_gettext'
> sar.o: In function `print_read_error':
> sar.c:(.text+0x124): undefined reference to `libintl_gettext'
> sar.o: In function `display_help':
> sar.c:(.text+0x19c): undefined reference to `libintl_gettext'
> sar.c:(.text+0x1cc): undefined reference to `libintl_gettext'
> sar.c:(.text+0x1fc): undefined reference to `libintl_gettext'
> sar.o:sar.c:(.text+0x22c): more undefined references to `libintl_gettext'
> follow
> libsyscom.a(common.o): In function `init_nls':
> common.c:(.text+0xabc): undefined reference to `libintl_bindtextdomain'
> common.c:(.text+0xad8): undefined reference to `libintl_textdomain'
> libsyscom.a(common.o): In function `print_version':
> common.c:(.text+0x139c): undefined reference to `libintl_gettext'
> libsyscom.a(ioconf.o): In function `transform_devmapname':
> ioconf.c:(.text+0x214): undefined reference to `libintl_gettext'
> collect2: ld returned 1 exit status
> make[1]: *** [sar] Error 1
> make[1]: Leaving directory
> `/home/sergio/hardware/moviecube/buildroot/output/build/sysstat-9.0.5'
> make: ***
> [/home/sergio/hardware/moviecube/buildroot/output/build/sysstat-9.0.5/.stamp_built]
> Error 2
Comment 8 Gustavo Zacarias 2010-11-15 20:41:40 UTC
This seems to be fixed when you bumped to sysstat 9.1.5 according to my tests.
Is this true for you too so we can close the bug?
Thanks.
Comment 9 Lionel Landwerlin 2010-11-15 21:40:55 UTC
Last time I checked, it wasn't the case.
How did you build your libc ?
Comment 10 Gustavo Zacarias 2010-11-16 13:16:01 UTC
Tried the following combinations:

internal, mipsel target, no toolchain locale: pass
internal, arm target, no toolchain locale: pass
internal, mipsel target, toolchain locale: pass
internal, mipsel target, toolchain locale + libintl enabled: fail

So it fails WITH libintl (package) enabled.

Try this patch: http://repo.or.cz/w/buildroot-gz.git/commitdiff/f15bee3f223921f670581bc43486e2957ed712cf
Comment 11 Sérgio 2010-11-18 02:35:48 UTC
Created attachment 2695 [details]
make sysstat >& sysstat.log

I try the patch in previous comment, but I got others errors ...

my .config is in https://bugs.busybox.net/attachment.cgi?id=2683 ,
I use Fedora 14
Comment 12 Gustavo Zacarias 2010-11-18 12:23:57 UTC
Try changing...
SYSSTAT_CONF_OPT = --disable-man-group
to
SYSSTAT_CONF_OPT = --disable-man-group --disable-sensors
and rebuild, does it work now?
Comment 13 Sérgio 2010-11-18 21:11:38 UTC
(In reply to comment #12)
> Try changing...
> SYSSTAT_CONF_OPT = --disable-man-group
> to
> SYSSTAT_CONF_OPT = --disable-man-group --disable-sensors
> and rebuild, does it work now?

--disable-sensors (In reply to comment #12)
> Try changing...
> SYSSTAT_CONF_OPT = --disable-man-group
> to
> SYSSTAT_CONF_OPT = --disable-man-group --disable-sensors
> and rebuild, does it work now?

yes it worked thanks
Comment 14 Peter Korsgaard 2010-11-19 14:45:07 UTC
Fixed in git, thanks
Comment 15 Sérgio 2010-11-20 05:29:11 UTC
using gcc-4.3 for toolchain , I verified that is fixed for me .
Thanks,