Package: leveldb
Version: 1.19-1
Severity: serious
Tags: sid + patch
Justification: FTBFS
User: debian-m...@lists.debian.org
Usertags: mips-patch

Hi,

Package leveldb FTBFS on mips* with following error:
> g++ -g -O2 -fdebug-prefix-map=/«PKGBUILDDIR»=. -fstack-protector-strong 
> -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I. 
> -I./include -std=c++0x -fno-builtin-memcmp -pthread -DOS_LINUX 
> -DLEVELDB_PLATFORM_POSIX -DLEVELDB_ATOMIC_PRESENT -DSNAPPY -O2 -g -DNDEBUG 
> -fPIC -c db/builder.cc -o out-shared/db/builder.o
> In file included from ./port/port_posix.h:47:0,
>                  from ./port/port.h:14,
>                  from ./db/filename.h:14,
>                  from db/builder.cc:7:
> ./port/atomic_pointer.h: In member function 'void* 
> leveldb::port::AtomicPointer::Acquire_Load() const':
> ./port/atomic_pointer.h:248:23: error: 'ReadMemoryBarrier' was not declared 
> in this scope
>      ReadMemoryBarrier();
>                        ^
> ./port/atomic_pointer.h: In member function 'void 
> leveldb::port::AtomicPointer::Release_Store(void*)':
> ./port/atomic_pointer.h:252:24: error: 'WriteMemoryBarrier' was not declared 
> in this scope
>      WriteMemoryBarrier();
>                         ^
> In file included from ./port/port_posix.h:47:0,
>                  from ./port/port.h:14,
>                  from ./util/coding.h:17,
>                  from ./db/dbformat.h:14,
>                  from ./db/db_impl.h:10,
>                  from db/db_bench.cc:8:
> ./port/atomic_pointer.h: In member function 'void* 
> leveldb::port::AtomicPointer::Acquire_Load() const':
> ./port/atomic_pointer.h:248:23: error: 'ReadMemoryBarrier' was not declared 
> in this scope
>      ReadMemoryBarrier();
>                        ^
> ./port/atomic_pointer.h: In member function 'void 
> leveldb::port::AtomicPointer::Release_Store(void*)':
> ./port/atomic_pointer.h:252:24: error: 'WriteMemoryBarrier' was not declared 
> in this scope
>      WriteMemoryBarrier();
>                         ^
> Makefile:429: recipe for target 'out-shared/db/builder.o' failed
> make[1]: *** [out-shared/db/builder.o] Error 1

build logs:
https://buildd.debian.org/status/fetch.php?pkg=leveldb&arch=mips&ver=1.19-1&stamp=1472467702
https://buildd.debian.org/status/fetch.php?pkg=leveldb&arch=mips64el&ver=1.19-1&stamp=1472468168
https://buildd.debian.org/status/fetch.php?pkg=leveldb&arch=mipsel&ver=1.19-1&stamp=1472467519

The attached patch adds the missing ReadMemoryBarrier and WriteMemoryBarrier 
functions for mips*.
With this patch I was able to build leveldb successfully on mips, mipsel and 
mips64el.

Regards,
Daniel
--- leveldb-1.19.orig/port/atomic_pointer.h
+++ leveldb-1.19/port/atomic_pointer.h
@@ -226,7 +226,10 @@ inline void WriteMemoryBarrier() {
 
 // MIPS
 #elif defined(ARCH_CPU_MIPS_FAMILY) && defined(__GNUC__)
-inline void MemoryBarrier() {
+inline void ReadMemoryBarrier() {
+  __asm__ __volatile__("sync" : : : "memory");
+}
+inline void WriteMemoryBarrier() {
   __asm__ __volatile__("sync" : : : "memory");
 }
 #define LEVELDB_HAVE_MEMORY_BARRIER
@@ -353,6 +356,7 @@ class AtomicPointer {
 #undef ARCH_CPU_SPARC_FAMILY
 #undef ARCH_CPU_SH_FAMILY
 #undef ARCH_CPU_PARISC_FAMILY
+#undef ARCH_CPU_MIPS_FAMILY
 
 }  // namespace port
 }  // namespace leveldb

Reply via email to