On Wed, Oct 02, 2013 at 10:02:32PM -0400, Carlos O'Donell wrote:
Siddhesh,
I see that rawhide glibc is FTBS while building the build-locale-archive tool.
You mentioned this to me earlier but I forget about it.
Do you have a fix for this yet?
Yes I do.
I'm seeing:
+ gcc -Os -g -o build-locale-archive /builddir/build/SOURCES/build-locale-archive.c
../build-x86_64-redhat-linux/locale/locarchive.o ../build-x86_64-redhat-linux/locale/md5.o
-I. '-DDATADIR="/usr/share"' '-DPREFIX="/usr"'
-L../build-x86_64-redhat-linux -Wl,--allow-shlib-undefined
-B../build-x86_64-redhat-linux/csu/ -lc -lc_nonshared
../build-x86_64-redhat-linux/locale/locarchive.o: In function `oldlocrecentcmp':
/builddir/build/BUILD/glibc-2.18-186-gfd96752/locale/programs/locarchive.c:245: undefined
reference to `swap_endianness_p'
../build-x86_64-redhat-linux/locale/locarchive.o: In function `create_archive':
/builddir/build/BUILD/glibc-2.18-186-gfd96752/locale/programs/locarchive.c:136: undefined
reference to `swap_endianness_p'
/builddir/build/BUILD/glibc-2.18-186-gfd96752/locale/programs/locarchive.c:136: undefined
reference to `swap_endianness_p'
../build-x86_64-redhat-linux/locale/locarchive.o: In function `maybe_swap_uint32':
/builddir/build/BUILD/glibc-2.18-186-gfd96752/locale/programs/locfile.h:87: undefined
reference to `swap_endianness_p'
/builddir/build/BUILD/glibc-2.18-186-gfd96752/locale/programs/locfile.h:87: undefined
reference to `swap_endianness_p'
../build-x86_64-redhat-linux/locale/locarchive.o:/builddir/build/BUILD/glibc-2.18-186-gfd96752/locale/programs/locfile.h:87:
more undefined references to `swap_endianness_p' follow
collect2: error: ld returned 1 exit status
RPM build errors:
We are missing the global swap_endianness_p in locfile.o, we should be able
to include it like this:
@@ -1201,6 +1201,7 @@ touch -r sunrpc/etc.rpc $RPM_BUILD_ROOT/etc/rpc
# transition from ld-linux.so.3 to ld-linux-armhf.so.3.
pushd build-%{target}
$GCC -Os -g -o build-locale-archive %{SOURCE1} \
+ ../build-%{target}/locale/locfile.o \
../build-%{target}/locale/locarchive.o \
../build-%{target}/locale/md5.o \
-I. -DDATADIR=\"%{_datadir}\" -DPREFIX=\"%{_prefix}\" \
Testing that now.
That won't work - I already tried it. The following is what I got
working:
diff --git a/build-locale-archive.c b/build-locale-archive.c
index 474f666..3818485 100644
--- a/build-locale-archive.c
+++ b/build-locale-archive.c
@@ -26,6 +26,12 @@ int verbose = 0;
int max_locarchive_open_retry = 10;
const char *output_prefix;
+/* Endianness should have been taken care of by localedef. We don't need to do
+ additional swapping. We need this variable exported however, since
+ locarchive.c uses it to determine if it needs to swap endianness of a value
+ before writing to or reading from the archive. */
+bool swap_endianness_p = false;
+
static const char *locnames[] =
{
#define DEFINE_CATEGORY(category, category_name, items, a) \