0

I was trying to compile open-vm-toos package (9.0.0-782409) under buildroot env and it fails in one file. Below is log of the error. I narrowed it down on something to do with locale includes. Tried to doff standard locale includes vs those available under buildroot env, and there's no difference. Which include I'm missing (Maybe something to pass explicitly to CFLAGS to configure script of open-vm-tools)?

/bin/sh ../../libtool --tag=CC   --mode=compile /myRepository/repo/cai/buildroot/output/staging/usr/bin/i686-unknown-linux-uclibc-gcc -Os -pipe -Os  -mtune=i686 -march=i686 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -I/myRepository/repo/cai/buildroot/output/staging/usr/include -I/myRepository/repo/cai/buildroot/output/staging/include --sysroot=/myRepository/repo/cai/buildroot/output/staging/ -isysroot /myRepository/repo/cai/buildroot/output/staging -DPACKAGE_NAME=\"open-vm-tools\" -DPACKAGE_TARNAME=\"open-vm-tools\" -DPACKAGE_VERSION=\"8.4.2\" -DPACKAGE_STRING=\"open-vm-tools\ 8.4.2\" -DPACKAGE_BUGREPORT=\"open-vm-tools-devel@lists.sourceforge.net\" -DPACKAGE_URL=\"\" -DPACKAGE=\"open-vm-tools\" -DVERSION=\"8.4.2\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DX_DISPLAY_MISSING=1 -DNO_PROCPS=1 -DNO_DNET=1 -DHAVE_CRYPT_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_WCHAR_H=1 -DHAVE_SYS_IO_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_SYS_SYSINFO_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_USER_H=1 -DHAVE_SYS_VFS_H=1 -DHAVE_UNWIND_H=1 -DHAVE__BOOL=1 -DHAVE_STDBOOL_H=1 -DHAVE_STRUCT_STAT_ST_RDEV=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_LSEEK=1 -DNO_MULTIMON=1 -I.   -I/myRepository/repo/cai/buildroot/output/build/open-vm-tools-8.4.2-261024/lib/include -I/myRepository/repo/cai/buildroot/output/build/open-vm-tools-8.4.2-261024/lib/include  -DUSING_AUTOCONF=1 -DOPEN_VM_TOOLS -DVMX86_TOOLS -DNO_CORE_ICU -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -D_SVID_SOURCE -DGLIBC_VERSION_21 -DGLIBC_VERSION_22 -I/myRepository/repo/cai/buildroot/output/staging/usr/include -I/myRepository/repo/cai/buildroot/output/build/usr/include -liconv -DNO_FLOATING_POINT -Wall -Werror -Wno-pointer-sign -Wno-unused-value -fno-strict-aliasing -Wno-unknown-pragmas -Wno-uninitialized -MT codesetOld.lo -MD -MP -MF .deps/codesetOld.Tpo -c -o codesetOld.lo codesetOld.c

....

codesetOld.c: In function 'CodeSetOldGetCodeSetFromLocale':
codesetOld.c:728: error: '__locale_t' undeclared (first use in this function)
codesetOld.c:728: error: (Each undeclared identifier is reported only once
codesetOld.c:728: error: for each function it appears in.)
codesetOld.c:728: error: expected ';' before 'new'
codesetOld.c:729: error: 'new' undeclared (first use in this function)
cc1: warnings being treated as errors
codesetOld.c:736: error: implicit declaration of function '__newlocale'
codesetOld.c:739: error: implicit declaration of function '__nl_langinfo_l'
codesetOld.c:739: error: passing argument 2 of 'Util_SafeInternalStrdup' makes pointer from integer without a cast
codesetOld.c:740: error: implicit declaration of function '__freelocale'
make[5]: *** [codesetOld.lo] Error 1
make[4]: *** [all-recursive] Error 1
make[3]: *** [all-recursive] Error 1

Here's code snippet of file under error:

 721 static char *
 722 CodeSetOldGetCodeSetFromLocale(void)
 723 {
 724    char *codeset;
 725
 726 #if defined(__linux__)
 727
 728    locale_t new = newlocale(LC_CTYPE_MASK, "", NULL);
 729    if (!new) {
 730       /*
 731        * If the machine is configured incorrectly (no current locale),
 732        * newlocale() could return NULL.  Try to fall back on the "C"
 733        * locale.
 734        */
 735
 736       new = newlocale(LC_CTYPE_MASK, "C", NULL);
 737       ASSERT(new);
 738    }
 739    codeset = Util_SafeStrdup(nl_langinfo_l(CODESET, new));
 740    freelocale(new);
 741
 742 #elif defined(sun)
 743
 744    char *locale = setlocale(LC_CTYPE, NULL);
 745    if (!setlocale(LC_CTYPE, "")) {
Aniket K
  • 1
  • 4

1 Answers1

0

Enable locale support in your toolchain, then do a make clean; make all cycle.

Thomas Petazzoni
  • 5,636
  • 17
  • 25
  • Actually locale support was enabled already in buildroot config. But then I realized one mistake that both, GLIB12 as well as GLIB2 targets were enabled in buildroot config and that was causing this file inclusion issue. So I corrected that with keeping only GLIB2 target and did 'make clean all' but now it fails in some different place for open-vm-tools during linking. Now it is trying to link to system's glib-2.so (/usr/lib/glib-2.so) instead of from buildroot env. How do I correct this LD_LIBRARY_PATH issue? – Aniket K May 01 '13 at 13:07
  • What Buildroot version are you using? glib 1.2 has been removed since a loooooooooong time. Please use the last Buildroot version, and use the mailing list for such questions. – Thomas Petazzoni May 26 '13 at 15:42