- Renamed patches
0002-Add-extra-tools-and-CFEngine-modifications-for-LMDB.patch -> 0001-Add-extra-tools-and-CFEngine-modifications-for-LMDB.patch automake.diff -> 0002-Autoconf-files.patch 0003-Optimization-Define-correct-cacheline-size-on-HPUX.patch - Dropped patch (upstream) 0001-Patch-for-LMDB-to-use-robust-mutexes.patch - Update to 0.9.17 Fix ITS#7377 catch calloc failure Fix ITS#8237 regression from ITS#7589 Fix ITS#8238 page_split for DUPFIXED pages Fix ITS#8221 MDB_PAGE_FULL on delete/rebalance Fix ITS#8258 rebalance/split assert Fix ITS#8263 cursor_put cursor tracking Fix ITS#8264 cursor_del cursor tracking Fix ITS#8310 cursor_del cursor tracking Fix ITS#8299 mdb_del cursor tracking Fix ITS#8300 mdb_del cursor tracking Fix ITS#8304 mdb_del cursor tracking Fix ITS#7771 fakepage cursor tracking Fix ITS#7789 ensure mapsize >= pages in use Fix ITS#7971 mdb_txn_renew0() new reader slots Fix ITS#7969 use __sync_synchronize on non-x86 Fix ITS#8311 page_split from update_key Fix ITS#8312 loose pages in nested txn Fix ITS#8313 mdb_rebalance dummy cursor Fix ITS#8315 dirty_room in nested txn Fix ITS#8323 dirty_list in nested txn Fix ITS#8316 page_merge cursor tracking OBS-URL: https://build.opensuse.org/package/show/systemsmanagement/lmdb?expand=0&rev=20
This commit is contained in:
parent
b86b130388
commit
f85c7e053c
@ -1,5 +1,21 @@
|
|||||||
|
From 1701892d066c626bbd82c9340d6b442f733c33a1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kristian Amlie <kristian.amlie@cfengine.com>
|
||||||
|
Date: Mon, 28 Jul 2014 11:28:38 +0200
|
||||||
|
Subject: [PATCH 1/4] Add extra tools and CFEngine modifications for LMDB.
|
||||||
|
|
||||||
|
---
|
||||||
|
libraries/liblmdb/lmdump.c | 128 +++++++++++++++++++++++++++
|
||||||
|
libraries/liblmdb/lmmgr.c | 201 +++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
libraries/liblmdb/mdb_copy.c | 2 +-
|
||||||
|
3 files changed, 330 insertions(+), 1 deletion(-)
|
||||||
|
create mode 100644 libraries/liblmdb/lmdump.c
|
||||||
|
create mode 100644 libraries/liblmdb/lmmgr.c
|
||||||
|
|
||||||
|
diff --git a/libraries/liblmdb/lmdump.c b/libraries/liblmdb/lmdump.c
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..0e3ee4bb61c2
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ liblmdb/lmdump.c
|
+++ b/libraries/liblmdb/lmdump.c
|
||||||
@@ -0,0 +1,128 @@
|
@@ -0,0 +1,128 @@
|
||||||
+/* lmdump.c - Lmdb database dumper
|
+/* lmdump.c - Lmdb database dumper
|
||||||
+ Has three modes :
|
+ Has three modes :
|
||||||
@ -129,8 +145,11 @@
|
|||||||
+
|
+
|
||||||
+ return 0;
|
+ return 0;
|
||||||
+}
|
+}
|
||||||
|
diff --git a/libraries/liblmdb/lmmgr.c b/libraries/liblmdb/lmmgr.c
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..1137d8dc388a
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ liblmdb/lmmgr.c
|
+++ b/libraries/liblmdb/lmmgr.c
|
||||||
@@ -0,0 +1,201 @@
|
@@ -0,0 +1,201 @@
|
||||||
+/*
|
+/*
|
||||||
+lmmgr.c : Add, remove or manage the maxreaders value of a given database file
|
+lmmgr.c : Add, remove or manage the maxreaders value of a given database file
|
||||||
@ -333,14 +352,19 @@
|
|||||||
+
|
+
|
||||||
+ return 1;
|
+ return 1;
|
||||||
+}
|
+}
|
||||||
--- liblmdb.orig/Makefile.am
|
diff --git a/libraries/liblmdb/mdb_copy.c b/libraries/liblmdb/mdb_copy.c
|
||||||
+++ liblmdb/Makefile.am
|
index f37ccbcc213e..bbe43bf601ae 100644
|
||||||
@@ -5,7 +5,7 @@ AM_CFLAGS = -W -Wall -Wno-unused-paramet
|
--- a/libraries/liblmdb/mdb_copy.c
|
||||||
AM_CPPFLAGS = -include config.h
|
+++ b/libraries/liblmdb/mdb_copy.c
|
||||||
LDADD = liblmdb.la
|
@@ -32,7 +32,7 @@ int main(int argc,char * argv[])
|
||||||
|
int rc;
|
||||||
|
MDB_env *env;
|
||||||
|
const char *progname = argv[0], *act;
|
||||||
|
- unsigned flags = MDB_RDONLY;
|
||||||
|
+ unsigned flags = MDB_NOSUBDIR|MDB_RDONLY;
|
||||||
|
unsigned cpflags = 0;
|
||||||
|
|
||||||
-bin_PROGRAMS = mdb_copy mdb_stat
|
for (; argc > 1 && argv[1][0] == '-'; argc--, argv++) {
|
||||||
+bin_PROGRAMS = mdb_copy mdb_stat lmdump lmmgr
|
--
|
||||||
check_PROGRAMS = mtest mtest2 mtest3 mtest4 mtest5
|
2.7.0
|
||||||
man_MANS = mdb_copy.1 mdb_stat.1
|
|
||||||
include_HEADERS = lmdb.h
|
|
@ -1,93 +0,0 @@
|
|||||||
diff -wruN -x '*~' -x '*.o' -x '*.a' -x '*.so' -x '*.so.[0-9]' -x autom4te.cache -x .deps -x .libs ../orig-liblmdb/configure.ac ./configure.ac
|
|
||||||
--- ../orig-liblmdb/configure.ac 2014-07-28 17:44:41.873398363 +0200
|
|
||||||
+++ ./configure.ac 2014-07-28 17:47:06.143497590 +0200
|
|
||||||
@@ -11,5 +11,12 @@ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
|
||||||
m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
|
|
||||||
LT_INIT
|
|
||||||
AC_CHECK_HEADERS([sys/file.h])
|
|
||||||
+AC_CHECK_LIB([pthread], [pthread_mutex_lock])
|
|
||||||
+AC_CHECK_LIB([pthreadGC2], [pthread_mutex_lock])
|
|
||||||
+AS_IF([test "$ac_cv_lib_pthread" = "no" && test "$ac_cv_lib_pthreadGC2" = "no"],
|
|
||||||
+[
|
|
||||||
+ AC_MSG_ERROR([Could not find pthreads library])
|
|
||||||
+])
|
|
||||||
+AC_CHECK_FUNCS([pthread_mutexattr_settype pthread_mutexattr_setrobust])
|
|
||||||
AC_CONFIG_FILES([Makefile])
|
|
||||||
AC_OUTPUT
|
|
||||||
diff -wruN -x '*~' -x '*.o' -x '*.a' -x '*.so' -x '*.so.[0-9]' -x autom4te.cache -x .deps -x .libs ../orig-liblmdb/mdb.c ./mdb.c
|
|
||||||
--- ../orig-liblmdb/mdb.c 2014-01-31 09:23:13.341427766 +0100
|
|
||||||
+++ ./mdb.c 2014-07-28 17:44:55.145959267 +0200
|
|
||||||
@@ -215,6 +215,7 @@ extern int cacheflush(char *addr, int nbytes, int cache);
|
|
||||||
#define MDB_USE_HASH 1
|
|
||||||
#define MDB_PIDLOCK 0
|
|
||||||
#define THREAD_RET DWORD
|
|
||||||
+#define EOWNERDEAD 130
|
|
||||||
#define pthread_t HANDLE
|
|
||||||
#define pthread_mutex_t HANDLE
|
|
||||||
#define pthread_cond_t HANDLE
|
|
||||||
@@ -226,7 +227,7 @@ extern int cacheflush(char *addr, int nbytes, int cache);
|
|
||||||
#define pthread_getspecific(x) TlsGetValue(x)
|
|
||||||
#define pthread_setspecific(x,y) (TlsSetValue(x,y) ? 0 : ErrCode())
|
|
||||||
#define pthread_mutex_unlock(x) ReleaseMutex(*x)
|
|
||||||
-#define pthread_mutex_lock(x) WaitForSingleObject(*x, INFINITE)
|
|
||||||
+#define pthread_mutex_lock(x) (WaitForSingleObject(x, INFINITE) == WAIT_ABANDONED ? EOWNERDEAD : 0) // masks FAIL and TIMEOUT error, but acceptable
|
|
||||||
#define pthread_cond_signal(x) SetEvent(*x)
|
|
||||||
#define pthread_cond_wait(cond,mutex) do{SignalObjectAndWait(*mutex, *cond, INFINITE, FALSE); WaitForSingleObject(*mutex, INFINITE);}while(0)
|
|
||||||
#define THREAD_CREATE(thr,start,arg) thr=CreateThread(NULL,0,start,arg,0,NULL)
|
|
||||||
@@ -2529,7 +2530,20 @@ mdb_txn_renew0(MDB_txn *txn)
|
|
||||||
env->me_live_reader = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
- LOCK_MUTEX_R(env);
|
|
||||||
+ rc = LOCK_MUTEX_R(env);
|
|
||||||
+ switch (rc)
|
|
||||||
+ {
|
|
||||||
+ case 0:
|
|
||||||
+ break;
|
|
||||||
+#ifdef HAVE_PTHREAD_MUTEXATTR_SETROBUST
|
|
||||||
+ case EOWNERDEAD:
|
|
||||||
+ // we cannot recover the state, so mark mutex as unusable
|
|
||||||
+ UNLOCK_MUTEX_R(env);
|
|
||||||
+ // FALLTHROUGH
|
|
||||||
+#endif
|
|
||||||
+ default:
|
|
||||||
+ return MDB_PANIC;
|
|
||||||
+ }
|
|
||||||
nr = ti->mti_numreaders;
|
|
||||||
for (i=0; i<nr; i++)
|
|
||||||
if (ti->mti_readers[i].mr_pid == 0)
|
|
||||||
@@ -2563,7 +2577,20 @@ mdb_txn_renew0(MDB_txn *txn)
|
|
||||||
txn->mt_dbxs = env->me_dbxs; /* mostly static anyway */
|
|
||||||
} else {
|
|
||||||
if (ti) {
|
|
||||||
- LOCK_MUTEX_W(env);
|
|
||||||
+ rc = LOCK_MUTEX_W(env);
|
|
||||||
+ switch (rc)
|
|
||||||
+ {
|
|
||||||
+ case 0:
|
|
||||||
+ break;
|
|
||||||
+#ifdef HAVE_PTHREAD_MUTEXATTR_SETROBUST
|
|
||||||
+ case EOWNERDEAD:
|
|
||||||
+ // we cannot recover the state, so mark mutex as unusable
|
|
||||||
+ UNLOCK_MUTEX_W(env);
|
|
||||||
+ // FALLTHROUGH
|
|
||||||
+#endif
|
|
||||||
+ default:
|
|
||||||
+ return MDB_PANIC;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
txn->mt_txnid = ti->mti_txnid;
|
|
||||||
meta = env->me_metas[txn->mt_txnid & 1];
|
|
||||||
@@ -4458,6 +4485,12 @@ mdb_env_setup_locks(MDB_env *env, char *lpath, int mode, int *excl)
|
|
||||||
pthread_mutexattr_t mattr;
|
|
||||||
|
|
||||||
if ((rc = pthread_mutexattr_init(&mattr))
|
|
||||||
+#ifdef HAVE_PTHREAD_MUTEXATTR_SETTYPE
|
|
||||||
+ || (rc = pthread_mutexattr_settype(&mattr, PTHREAD_MUTEX_ERRORCHECK))
|
|
||||||
+#endif
|
|
||||||
+#ifdef HAVE_PTHREAD_MUTEXATTR_SETROBUST
|
|
||||||
+ || (rc = pthread_mutexattr_setrobust(&mattr, PTHREAD_MUTEX_ROBUST))
|
|
||||||
+#endif
|
|
||||||
|| (rc = pthread_mutexattr_setpshared(&mattr, PTHREAD_PROCESS_SHARED))
|
|
||||||
|| (rc = pthread_mutex_init(&env->me_txns->mti_mutex, &mattr))
|
|
||||||
|| (rc = pthread_mutex_init(&env->me_txns->mti_wmutex, &mattr)))
|
|
217
0002-Autoconf-files.patch
Normal file
217
0002-Autoconf-files.patch
Normal file
@ -0,0 +1,217 @@
|
|||||||
|
From 8e9182f6252eeb8e2390de814f4d1e9db2485edc Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kristian Amlie <kristian.amlie@cfengine.com>
|
||||||
|
Date: Wed, 18 Feb 2015 09:40:20 +0100
|
||||||
|
Subject: [PATCH 2/4] Autoconf files.
|
||||||
|
|
||||||
|
---
|
||||||
|
libraries/liblmdb/Makefile | 111 -----------------------------------------
|
||||||
|
libraries/liblmdb/Makefile.am | 11 ++++
|
||||||
|
libraries/liblmdb/configure.ac | 42 ++++++++++++++++
|
||||||
|
libraries/liblmdb/mdb.c | 6 +++
|
||||||
|
4 files changed, 59 insertions(+), 111 deletions(-)
|
||||||
|
delete mode 100644 libraries/liblmdb/Makefile
|
||||||
|
create mode 100644 libraries/liblmdb/Makefile.am
|
||||||
|
create mode 100644 libraries/liblmdb/configure.ac
|
||||||
|
|
||||||
|
diff --git a/libraries/liblmdb/Makefile b/libraries/liblmdb/Makefile
|
||||||
|
deleted file mode 100644
|
||||||
|
index dbb5d698fee7..000000000000
|
||||||
|
--- a/libraries/liblmdb/Makefile
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -1,111 +0,0 @@
|
||||||
|
-# Makefile for liblmdb (Lightning memory-mapped database library).
|
||||||
|
-
|
||||||
|
-########################################################################
|
||||||
|
-# Configuration. The compiler options must enable threaded compilation.
|
||||||
|
-#
|
||||||
|
-# Preprocessor macros (for CPPFLAGS) of interest...
|
||||||
|
-# Note that the defaults should already be correct for most
|
||||||
|
-# platforms; you should not need to change any of these.
|
||||||
|
-# Read their descriptions in mdb.c if you do:
|
||||||
|
-#
|
||||||
|
-# - MDB_USE_POSIX_SEM
|
||||||
|
-# - MDB_DSYNC
|
||||||
|
-# - MDB_FDATASYNC
|
||||||
|
-# - MDB_FDATASYNC_WORKS
|
||||||
|
-# - MDB_USE_PWRITEV
|
||||||
|
-# - MDB_USE_ROBUST
|
||||||
|
-#
|
||||||
|
-# There may be other macros in mdb.c of interest. You should
|
||||||
|
-# read mdb.c before changing any of them.
|
||||||
|
-#
|
||||||
|
-CC = gcc
|
||||||
|
-AR = ar
|
||||||
|
-W = -W -Wall -Wno-unused-parameter -Wbad-function-cast -Wuninitialized
|
||||||
|
-THREADS = -pthread
|
||||||
|
-OPT = -O2 -g
|
||||||
|
-CFLAGS = $(THREADS) $(OPT) $(W) $(XCFLAGS)
|
||||||
|
-LDLIBS =
|
||||||
|
-SOLIBS =
|
||||||
|
-prefix = /usr/local
|
||||||
|
-mandir = $(prefix)/man
|
||||||
|
-
|
||||||
|
-########################################################################
|
||||||
|
-
|
||||||
|
-IHDRS = lmdb.h
|
||||||
|
-ILIBS = liblmdb.a liblmdb.so
|
||||||
|
-IPROGS = mdb_stat mdb_copy mdb_dump mdb_load
|
||||||
|
-IDOCS = mdb_stat.1 mdb_copy.1 mdb_dump.1 mdb_load.1
|
||||||
|
-PROGS = $(IPROGS) mtest mtest2 mtest3 mtest4 mtest5
|
||||||
|
-all: $(ILIBS) $(PROGS)
|
||||||
|
-
|
||||||
|
-install: $(ILIBS) $(IPROGS) $(IHDRS)
|
||||||
|
- mkdir -p $(DESTDIR)$(prefix)/bin
|
||||||
|
- mkdir -p $(DESTDIR)$(prefix)/lib
|
||||||
|
- mkdir -p $(DESTDIR)$(prefix)/include
|
||||||
|
- mkdir -p $(DESTDIR)$(prefix)/man/man1
|
||||||
|
- for f in $(IPROGS); do cp $$f $(DESTDIR)$(prefix)/bin; done
|
||||||
|
- for f in $(ILIBS); do cp $$f $(DESTDIR)$(prefix)/lib; done
|
||||||
|
- for f in $(IHDRS); do cp $$f $(DESTDIR)$(prefix)/include; done
|
||||||
|
- for f in $(IDOCS); do cp $$f $(DESTDIR)$(mandir)/man1; done
|
||||||
|
-
|
||||||
|
-clean:
|
||||||
|
- rm -rf $(PROGS) *.[ao] *.[ls]o *~ testdb
|
||||||
|
-
|
||||||
|
-test: all
|
||||||
|
- rm -rf testdb && mkdir testdb
|
||||||
|
- ./mtest && ./mdb_stat testdb
|
||||||
|
-
|
||||||
|
-liblmdb.a: mdb.o midl.o
|
||||||
|
- $(AR) rs $@ mdb.o midl.o
|
||||||
|
-
|
||||||
|
-liblmdb.so: mdb.lo midl.lo
|
||||||
|
-# $(CC) $(LDFLAGS) -pthread -shared -Wl,-Bsymbolic -o $@ mdb.o midl.o $(SOLIBS)
|
||||||
|
- $(CC) $(LDFLAGS) -pthread -shared -o $@ mdb.lo midl.lo $(SOLIBS)
|
||||||
|
-
|
||||||
|
-mdb_stat: mdb_stat.o liblmdb.a
|
||||||
|
-mdb_copy: mdb_copy.o liblmdb.a
|
||||||
|
-mdb_dump: mdb_dump.o liblmdb.a
|
||||||
|
-mdb_load: mdb_load.o liblmdb.a
|
||||||
|
-mtest: mtest.o liblmdb.a
|
||||||
|
-mtest2: mtest2.o liblmdb.a
|
||||||
|
-mtest3: mtest3.o liblmdb.a
|
||||||
|
-mtest4: mtest4.o liblmdb.a
|
||||||
|
-mtest5: mtest5.o liblmdb.a
|
||||||
|
-mtest6: mtest6.o liblmdb.a
|
||||||
|
-
|
||||||
|
-mdb.o: mdb.c lmdb.h midl.h
|
||||||
|
- $(CC) $(CFLAGS) $(CPPFLAGS) -c mdb.c
|
||||||
|
-
|
||||||
|
-midl.o: midl.c midl.h
|
||||||
|
- $(CC) $(CFLAGS) $(CPPFLAGS) -c midl.c
|
||||||
|
-
|
||||||
|
-mdb.lo: mdb.c lmdb.h midl.h
|
||||||
|
- $(CC) $(CFLAGS) -fPIC $(CPPFLAGS) -c mdb.c -o $@
|
||||||
|
-
|
||||||
|
-midl.lo: midl.c midl.h
|
||||||
|
- $(CC) $(CFLAGS) -fPIC $(CPPFLAGS) -c midl.c -o $@
|
||||||
|
-
|
||||||
|
-%: %.o
|
||||||
|
- $(CC) $(CFLAGS) $(LDFLAGS) $^ $(LDLIBS) -o $@
|
||||||
|
-
|
||||||
|
-%.o: %.c lmdb.h
|
||||||
|
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $<
|
||||||
|
-
|
||||||
|
-COV_FLAGS=-fprofile-arcs -ftest-coverage
|
||||||
|
-COV_OBJS=xmdb.o xmidl.o
|
||||||
|
-
|
||||||
|
-coverage: xmtest
|
||||||
|
- for i in mtest*.c [0-9]*.c; do j=`basename \$$i .c`; $(MAKE) $$j.o; \
|
||||||
|
- gcc -o x$$j $$j.o $(COV_OBJS) -pthread $(COV_FLAGS); \
|
||||||
|
- rm -rf testdb; mkdir testdb; ./x$$j; done
|
||||||
|
- gcov xmdb.c
|
||||||
|
- gcov xmidl.c
|
||||||
|
-
|
||||||
|
-xmtest: mtest.o xmdb.o xmidl.o
|
||||||
|
- gcc -o xmtest mtest.o xmdb.o xmidl.o -pthread $(COV_FLAGS)
|
||||||
|
-
|
||||||
|
-xmdb.o: mdb.c lmdb.h midl.h
|
||||||
|
- $(CC) $(CFLAGS) -fPIC $(CPPFLAGS) -O0 $(COV_FLAGS) -c mdb.c -o $@
|
||||||
|
-
|
||||||
|
-xmidl.o: midl.c midl.h
|
||||||
|
- $(CC) $(CFLAGS) -fPIC $(CPPFLAGS) -O0 $(COV_FLAGS) -c midl.c -o $@
|
||||||
|
diff --git a/libraries/liblmdb/Makefile.am b/libraries/liblmdb/Makefile.am
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..d3a4a4c99c5d
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/libraries/liblmdb/Makefile.am
|
||||||
|
@@ -0,0 +1,11 @@
|
||||||
|
+lib_LTLIBRARIES = liblmdb.la
|
||||||
|
+liblmdb_la_SOURCES = mdb.c midl.c
|
||||||
|
+liblmdb_la_LDFLAGS=-no-undefined -avoid-version
|
||||||
|
+
|
||||||
|
+bin_PROGRAMS = mdb_stat mdb_copy lmdump lmmgr
|
||||||
|
+mdb_stat_LDADD = liblmdb.la
|
||||||
|
+mdb_copy_LDADD = liblmdb.la
|
||||||
|
+lmdump_LDADD = liblmdb.la
|
||||||
|
+lmmgr_LDADD = liblmdb.la
|
||||||
|
+
|
||||||
|
+include_HEADERS = lmdb.h
|
||||||
|
diff --git a/libraries/liblmdb/configure.ac b/libraries/liblmdb/configure.ac
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..3db22516634b
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/libraries/liblmdb/configure.ac
|
||||||
|
@@ -0,0 +1,42 @@
|
||||||
|
+AC_INIT([hello], [1.0]) # good
|
||||||
|
+AC_CANONICAL_TARGET
|
||||||
|
+AM_INIT_AUTOMAKE([foreign])
|
||||||
|
+
|
||||||
|
+AC_PROG_CC
|
||||||
|
+
|
||||||
|
+# Use either new LT_INIT or old AC_DISABLE_STATIC/AC_PROG_LIBTOOL macros
|
||||||
|
+m4_ifdef([LT_INIT],
|
||||||
|
+ [LT_INIT([disable-static])],
|
||||||
|
+ [AC_DISABLE_STATIC
|
||||||
|
+ AC_PROG_LIBTOOL])
|
||||||
|
+
|
||||||
|
+AC_ARG_WITH([pthread], [Path to pthread])
|
||||||
|
+AS_IF([test -n "$with_pthread"],
|
||||||
|
+ [LDFLAGS+=" -L$with_pthread/lib"]
|
||||||
|
+)
|
||||||
|
+AC_CHECK_LIB([pthread], [pthread_mutex_lock])
|
||||||
|
+AC_CHECK_LIB([pthreadGC2], [pthread_mutex_lock])
|
||||||
|
+AS_IF([test "$ac_cv_lib_pthread" = "no" && test "$ac_cv_lib_pthreadGC2" = "no"],
|
||||||
|
+[
|
||||||
|
+ AC_MSG_ERROR([Could not find pthreads library])
|
||||||
|
+])
|
||||||
|
+AC_CHECK_FUNCS([pthread_mutexattr_settype])
|
||||||
|
+AC_CHECK_FUNC([pthread_mutexattr_setrobust],
|
||||||
|
+[
|
||||||
|
+ AC_MSG_CHECKING([whether pthread_mutexattr_setrobust can be used on this platform])
|
||||||
|
+ AS_CASE([$target_os],
|
||||||
|
+ [*solaris*],
|
||||||
|
+ [
|
||||||
|
+ # Disable pthread_mutexattr_setrobust on Solaris, it is reported as
|
||||||
|
+ # existing on Solaris 11, but known to be broken.
|
||||||
|
+ AC_MSG_RESULT([no])
|
||||||
|
+ ],
|
||||||
|
+ [
|
||||||
|
+ AC_DEFINE([HAVE_PTHREAD_MUTEXATTR_SETROBUST])
|
||||||
|
+ AC_MSG_RESULT([yes])
|
||||||
|
+ ])
|
||||||
|
+])
|
||||||
|
+
|
||||||
|
+AC_CONFIG_SRCDIR([mdb.c])
|
||||||
|
+AC_CONFIG_FILES([Makefile])
|
||||||
|
+AC_OUTPUT
|
||||||
|
diff --git a/libraries/liblmdb/mdb.c b/libraries/liblmdb/mdb.c
|
||||||
|
index 96c859efd9bd..695d11602a13 100644
|
||||||
|
--- a/libraries/liblmdb/mdb.c
|
||||||
|
+++ b/libraries/liblmdb/mdb.c
|
||||||
|
@@ -220,6 +220,12 @@ typedef SSIZE_T ssize_t;
|
||||||
|
#define MDB_DEVEL 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#ifdef HAVE_PTHREAD_MUTEXATTR_SETROBUST
|
||||||
|
+#define MDB_USE_ROBUST 1
|
||||||
|
+#else
|
||||||
|
+#define MDB_USE_ROBUST 0
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
/** Wrapper around __func__, which is a C99 feature */
|
||||||
|
#if __STDC_VERSION__ >= 199901L
|
||||||
|
# define mdb_func_ __func__
|
||||||
|
--
|
||||||
|
2.7.0
|
||||||
|
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:49d7b40949f2ced9bc8b23ea6a89e75471a1c9126537a8b268c318a00b84322b
|
|
||||||
size 130343
|
|
3
LMDB_0.9.17.tar.gz
Normal file
3
LMDB_0.9.17.tar.gz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:80a08218e40f76a0485ec18c42de6f1e020b1ed0268f7cb34c69746e8d98c72c
|
||||||
|
size 135816
|
@ -1,67 +0,0 @@
|
|||||||
From: Jan Engelhardt <jengelh@inai.de>
|
|
||||||
Date: 2014-05-16 21:40:05.570658956 +0200
|
|
||||||
Upstream: Submitted and rejected
|
|
||||||
|
|
||||||
build: use automake for building
|
|
||||||
|
|
||||||
The upstream Makefile suffers from some shortcomings, such as:
|
|
||||||
- Provides no way to set bindir, libdir, docdir/mandir.
|
|
||||||
- Fails to mkdir the DESTDIR tree on make install.
|
|
||||||
- Uses the wrong shared library extension on MinGW/Cygwin.
|
|
||||||
- No way of turning off static library generation at build time.
|
|
||||||
- There is no shared library versioning of any kind, which does not line up
|
|
||||||
with the guidelines for openSUSE and other distributions.
|
|
||||||
Upstream believes it will never change anything in an incompatible way.
|
|
||||||
While I, the patch author, concur with that expectation, it does not solve
|
|
||||||
the issue with compatible changes (such as adding functions), for which
|
|
||||||
symbol version maps would come into play. As I do not want to also maintain
|
|
||||||
a symvers patch, I will apply the naming guidelines of section
|
|
||||||
http://en.opensuse.org/openSUSE:Shared_library_packaging_policy#When_there_is_no_versioning
|
|
||||||
meaning the use of -release ${PACKAGE_VERSION}.
|
|
||||||
|
|
||||||
LMDB is a very simple project without many source files or compile-time flag
|
|
||||||
combinations; working with the original Makefile does not need all that many
|
|
||||||
hoops. But it is a tie IMO, and so, the casting vote shall be the AM route.
|
|
||||||
---
|
|
||||||
Makefile.am | 16 ++++++++++++++++
|
|
||||||
configure.ac | 13 +++++++++++++
|
|
||||||
2 files changed, 29 insertions(+)
|
|
||||||
|
|
||||||
--- /dev/null
|
|
||||||
+++ liblmdb/Makefile.am
|
|
||||||
@@ -0,0 +1,17 @@
|
|
||||||
+# -*- Makefile -*-
|
|
||||||
+
|
|
||||||
+ACLOCAL_AMFLAGS = -I m4
|
|
||||||
+AM_CFLAGS = -W -Wall -Wno-unused-parameter -Wbad-function-cast -pthread
|
|
||||||
+AM_CPPFLAGS = -include config.h
|
|
||||||
+LDADD = liblmdb.la
|
|
||||||
+
|
|
||||||
+bin_PROGRAMS = mdb_copy mdb_stat
|
|
||||||
+check_PROGRAMS = mtest mtest2 mtest3 mtest4 mtest5
|
|
||||||
+man_MANS = mdb_copy.1 mdb_stat.1
|
|
||||||
+include_HEADERS = lmdb.h
|
|
||||||
+lib_LTLIBRARIES = liblmdb.la
|
|
||||||
+liblmdb_la_SOURCES = mdb.c midl.c
|
|
||||||
+liblmdb_la_LDFLAGS = -release ${PACKAGE_VERSION}
|
|
||||||
+
|
|
||||||
+clean-local:
|
|
||||||
+ rm -Rf testdb
|
|
||||||
--- /dev/null
|
|
||||||
+++ liblmdb/configure.ac
|
|
||||||
@@ -0,0 +1,15 @@
|
|
||||||
+AC_INIT([liblmdb], [0.9.16], [http://symas.com/mdb/])
|
|
||||||
+AC_CONFIG_AUX_DIR([build-aux])
|
|
||||||
+AC_CONFIG_HEADERS([config.h])
|
|
||||||
+AC_CONFIG_MACRO_DIR([m4])
|
|
||||||
+AM_INIT_AUTOMAKE([-Wall foreign subdir-objects tar-pax])
|
|
||||||
+AC_USE_SYSTEM_EXTENSIONS
|
|
||||||
+AC_SYS_LARGEFILE
|
|
||||||
+AC_PROG_CC_STDC
|
|
||||||
+AM_PROG_CC_C_O
|
|
||||||
+m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
|
||||||
+m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
|
|
||||||
+LT_INIT
|
|
||||||
+AC_CHECK_HEADERS([sys/file.h])
|
|
||||||
+AC_CONFIG_FILES([Makefile])
|
|
||||||
+AC_OUTPUT
|
|
@ -1 +1 @@
|
|||||||
liblmdb-0_9_16
|
liblmdb-0_9_17
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
--- liblmdb.orig/lmmgr.c
|
--- a/libraries/liblmdb.orig/lmmgr.c
|
||||||
+++ liblmdb/lmmgr.c
|
+++ b/libraries/liblmdb/lmmgr.c
|
||||||
@@ -3,6 +3,7 @@ lmmgr.c : Add, remove or manage the maxr
|
@@ -3,6 +3,7 @@ lmmgr.c : Add, remove or manage the maxr
|
||||||
*/
|
*/
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
51
lmdb.changes
51
lmdb.changes
@ -1,3 +1,54 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Feb 1 13:01:34 UTC 2016 - kkaempf@suse.com
|
||||||
|
|
||||||
|
- Renamed patches
|
||||||
|
0002-Add-extra-tools-and-CFEngine-modifications-for-LMDB.patch
|
||||||
|
-> 0001-Add-extra-tools-and-CFEngine-modifications-for-LMDB.patch
|
||||||
|
automake.diff
|
||||||
|
-> 0002-Autoconf-files.patch
|
||||||
|
|
||||||
|
0003-Optimization-Define-correct-cacheline-size-on-HPUX.patch
|
||||||
|
|
||||||
|
- Dropped patch (upstream)
|
||||||
|
0001-Patch-for-LMDB-to-use-robust-mutexes.patch
|
||||||
|
|
||||||
|
- Update to 0.9.17
|
||||||
|
Fix ITS#7377 catch calloc failure
|
||||||
|
Fix ITS#8237 regression from ITS#7589
|
||||||
|
Fix ITS#8238 page_split for DUPFIXED pages
|
||||||
|
Fix ITS#8221 MDB_PAGE_FULL on delete/rebalance
|
||||||
|
Fix ITS#8258 rebalance/split assert
|
||||||
|
Fix ITS#8263 cursor_put cursor tracking
|
||||||
|
Fix ITS#8264 cursor_del cursor tracking
|
||||||
|
Fix ITS#8310 cursor_del cursor tracking
|
||||||
|
Fix ITS#8299 mdb_del cursor tracking
|
||||||
|
Fix ITS#8300 mdb_del cursor tracking
|
||||||
|
Fix ITS#8304 mdb_del cursor tracking
|
||||||
|
Fix ITS#7771 fakepage cursor tracking
|
||||||
|
Fix ITS#7789 ensure mapsize >= pages in use
|
||||||
|
Fix ITS#7971 mdb_txn_renew0() new reader slots
|
||||||
|
Fix ITS#7969 use __sync_synchronize on non-x86
|
||||||
|
Fix ITS#8311 page_split from update_key
|
||||||
|
Fix ITS#8312 loose pages in nested txn
|
||||||
|
Fix ITS#8313 mdb_rebalance dummy cursor
|
||||||
|
Fix ITS#8315 dirty_room in nested txn
|
||||||
|
Fix ITS#8323 dirty_list in nested txn
|
||||||
|
Fix ITS#8316 page_merge cursor tracking
|
||||||
|
Fix ITS#8321 cursor tracking
|
||||||
|
Fix ITS#8319 mdb_load error messages
|
||||||
|
Fix ITS#8320 mdb_load plaintext input
|
||||||
|
Added mdb_txn_id() (ITS#7994)
|
||||||
|
Added robust mutex support
|
||||||
|
Miscellaneous cleanup/simplification
|
||||||
|
Build
|
||||||
|
Create install dirs if needed (ITS#8256)
|
||||||
|
Fix ThreadProc decl on Win32/MSVC (ITS#8270)
|
||||||
|
Added ssize_t typedef for MSVC (ITS#8067)
|
||||||
|
Use ANSI apis on Windows (ITS#8069)
|
||||||
|
Use O_SYNC if O_DSYNC,MDB_DSYNC are not defined (ITS#7209)
|
||||||
|
Allow passing AR to make (ITS#8168)
|
||||||
|
Allow passing mandir to make install (ITS#8169)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Sun Nov 15 10:04:11 UTC 2015 - jengelh@inai.de
|
Sun Nov 15 10:04:11 UTC 2015 - jengelh@inai.de
|
||||||
|
|
||||||
|
35
lmdb.spec
35
lmdb.spec
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package lmdb
|
# spec file for package lmdb
|
||||||
#
|
#
|
||||||
# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
|
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||||
#
|
#
|
||||||
# All modifications and additions to the file contributed by third parties
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@ -20,18 +20,22 @@ Name: lmdb
|
|||||||
Summary: Lightning Memory-Mapped Database Manager
|
Summary: Lightning Memory-Mapped Database Manager
|
||||||
License: OLDAP-2.8
|
License: OLDAP-2.8
|
||||||
Group: Productivity/Databases/Tools
|
Group: Productivity/Databases/Tools
|
||||||
%define lname liblmdb-0_9_16
|
%define lname liblmdb-0_9_17
|
||||||
Version: 0.9.16
|
Version: 0.9.17
|
||||||
Release: 0
|
Release: 0
|
||||||
Url: http://symas.com/mdb/
|
Url: http://symas.com/mdb/
|
||||||
|
|
||||||
#Git-Clone: git://git.openldap.org/openldap mdb.master
|
#Git-Clone: git://git.openldap.org/openldap mdb.master
|
||||||
Source: https://github.com/LMDB/lmdb/archive/LMDB_%version.tar.gz
|
Source: https://github.com/LMDB/lmdb/archive/LMDB_%version.tar.gz
|
||||||
Source99: baselibs.conf
|
Source99: baselibs.conf
|
||||||
Patch1: automake.diff
|
|
||||||
Patch2: 0001-Patch-for-LMDB-to-use-robust-mutexes.patch
|
# PATCH-FIX-UPSTREAM - debugging tools (https://github.com/kacfengine/lmdb)
|
||||||
Patch3: 0002-Add-extra-tools-and-CFEngine-modifications-for-LMDB.patch
|
Patch1: 0001-Add-extra-tools-and-CFEngine-modifications-for-LMDB.patch
|
||||||
Patch4: liblmdb-implicit-decl.patch
|
# PATCH-FIX-UPSTREAM - configure.ac, Makefile.am, etc.
|
||||||
|
Patch2: 0002-Autoconf-files.patch
|
||||||
|
# PATCH-FIX-OPENSUSE - Implicit declaration of atol()
|
||||||
|
Patch3: liblmdb-implicit-decl.patch
|
||||||
|
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
BuildRequires: autoconf
|
BuildRequires: autoconf
|
||||||
BuildRequires: automake >= 1.10
|
BuildRequires: automake >= 1.10
|
||||||
@ -79,36 +83,33 @@ This package contains the files needed to compile programs that use
|
|||||||
the liblmdb library.
|
the liblmdb library.
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -qn lmdb-LMDB_%version/libraries/liblmdb
|
%setup -qn lmdb-LMDB_%version
|
||||||
# PATCH-FIX-OPENSUSE - autotools files, jengelh@inai.de
|
|
||||||
%patch1 -p1
|
%patch1 -p1
|
||||||
# PATCH-FIX-UPSTREAM - prevent deadlock when process holding db lock dies, kkaempf@suse.de
|
|
||||||
%patch2 -p1
|
%patch2 -p1
|
||||||
# PATCH-FIX-OPENSUSE - debugging tools (https://github.com/kacfengine/lmdb)
|
|
||||||
%patch3 -p1
|
%patch3 -p1
|
||||||
# PATCH-FIX-OPENSUSE - Implicit declaration of atol()
|
|
||||||
%patch4 -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
|
cd libraries/liblmdb
|
||||||
mkdir -p m4
|
mkdir -p m4
|
||||||
autoreconf -fi
|
autoreconf -fi
|
||||||
%configure --disable-static
|
%configure --disable-static
|
||||||
make %{?_smp_mflags} V=1
|
make %{?_smp_mflags} V=1
|
||||||
|
|
||||||
%install
|
%install
|
||||||
|
cd libraries/liblmdb
|
||||||
make install DESTDIR="%buildroot"
|
make install DESTDIR="%buildroot"
|
||||||
rm -f "%buildroot/%_libdir"/*.la
|
rm -f "%buildroot/%_libdir"/*.la
|
||||||
|
(cd %buildroot/%_libdir; mv liblmdb.so liblmdb-%version.so; ln -s liblmdb-%version.so liblmdb.so)
|
||||||
|
|
||||||
%post -n %lname -p /sbin/ldconfig
|
%post -n %lname -p /sbin/ldconfig
|
||||||
%postun -n %lname -p /sbin/ldconfig
|
%postun -n %lname -p /sbin/ldconfig
|
||||||
|
|
||||||
%files
|
%files
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root)
|
||||||
%doc CHANGES
|
%doc libraries/liblmdb/CHANGES
|
||||||
%doc COPYRIGHT
|
%doc libraries/liblmdb/COPYRIGHT
|
||||||
%doc LICENSE
|
%doc libraries/liblmdb/LICENSE
|
||||||
%{_bindir}/*
|
%{_bindir}/*
|
||||||
%doc %{_mandir}/man1/*
|
|
||||||
|
|
||||||
%files -n %lname
|
%files -n %lname
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user