| Summary: | Sysstat build broken without libintl | ||
|---|---|---|---|
| Product: | buildroot | Reporter: | Lionel Landwerlin <llandwerlin> |
| Component: | Other | Assignee: | Gustavo Zacarias <gustavo> |
| Status: | VERIFIED FIXED | ||
| Severity: | trivial | CC: | buildroot, sergio |
| Priority: | P5 | ||
| Version: | 2009.11 | ||
| Target Milestone: | --- | ||
| Hardware: | PC | ||
| OS: | Linux | ||
| Host: | x86_64 | Target: | i686 |
| Build: | |||
| Attachments: |
sysstat fix compilation without libintl
make sysstat >& sysstat.log |
||
Created attachment 791 [details]
sysstat fix compilation without libintl
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. (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). > 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.
(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. 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
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 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. Last time I checked, it wasn't the case. How did you build your libc ? 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 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 Try changing... SYSSTAT_CONF_OPT = --disable-man-group to SYSSTAT_CONF_OPT = --disable-man-group --disable-sensors and rebuild, does it work now? (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 Fixed in git, thanks using gcc-4.3 for toolchain , I verified that is fixed for me . Thanks, |
>>> 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