From: Dan HorĂ¡k Date: Thu, 19 Jan 2012 11:42:53 +0000 (+0100) Subject: journal: systemd v38 fails to build on big-endians X-Git-Tag: v39~18 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=ce3fd7e72a1b101002617bd410031e65d290f56f journal: systemd v38 fails to build on big-endians Hi, during the builds for Fedora/s390x I've found that systemd v38 fails to build on big-endian platforms. ... make[2]: Entering directory `/root/systemd' CC src/journal/libsystemd_journal_la-sd-journal.lo src/journal/sd-journal.c: In function 'init_location': src/journal/sd-journal.c:69:22: error: incompatible types when initializing type 'long unsigned int' using type 'sd_id128_t' src/journal/sd-journal.c:69:20: error: incompatible types when assigning to type 'sd_id128_t' from type 'long unsigned int' make[2]: *** [src/journal/libsystemd_journal_la-sd-journal.lo] Error 1 I see the problem in using le64toh() on the 16 bytes boot_id structure in init_location() Please see http://s390.koji.fedoraproject.org/koji/taskinfo?taskID=544375 for a full build log and attachment for a proposed fix. With regards Dan --- diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c index 5e1fd4773..baf51db1a 100644 --- a/src/journal/sd-journal.c +++ b/src/journal/sd-journal.c @@ -66,7 +66,7 @@ static void init_location(Location *l, JournalFile *f, Object *o) { l->seqnum_id = f->header->seqnum_id; l->realtime = le64toh(o->entry.realtime); l->monotonic = le64toh(o->entry.monotonic); - l->boot_id = le64toh(o->entry.boot_id); + l->boot_id = o->entry.boot_id; l->xor_hash = le64toh(o->entry.xor_hash); l->seqnum_set = l->realtime_set = l->monotonic_set = l->xor_hash_set = true;