[leveldb] Initial build (see rhbz #823170)

Peter Lemenkov peter at fedoraproject.org
Sat Jul 14 04:06:46 UTC 2012


commit ce9f2c44000679dd38b4b1f1616b30baf41d22c0
Author: Peter Lemenkov <lemenkov at gmail.com>
Date:   Sat Jul 14 08:06:35 2012 +0400

    Initial build (see rhbz #823170)
    
    Signed-off-by: Peter Lemenkov <lemenkov at gmail.com>

 .gitignore                                         |    1 +
 ...001-Initial-commit-of-the-autotools-stuff.patch |  618 ++++++++++++++++++++
 ...-0002-Add-memory-barrier-on-a-more-arches.patch |   28 +
 leveldb.spec                                       |   89 +++
 sources                                            |    1 +
 5 files changed, 737 insertions(+), 0 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index e69de29..616fa28 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/leveldb-1.5.0.tar.gz
diff --git a/leveldb-0001-Initial-commit-of-the-autotools-stuff.patch b/leveldb-0001-Initial-commit-of-the-autotools-stuff.patch
new file mode 100644
index 0000000..86013ae
--- /dev/null
+++ b/leveldb-0001-Initial-commit-of-the-autotools-stuff.patch
@@ -0,0 +1,618 @@
+From 0bfe5692de28ae1c7dde5f80d3c8591d5ed57df2 Mon Sep 17 00:00:00 2001
+From: Peter Lemenkov <lemenkov at gmail.com>
+Date: Sat, 19 May 2012 09:27:13 +0400
+Subject: [PATCH 1/2] Initial commit of the autotools stuff
+
+Signed-off-by: Peter Lemenkov <lemenkov at gmail.com>
+---
+ Makefile                   |  200 --------------------------------------------
+ Makefile.am                |  134 +++++++++++++++++++++++++++++
+ configure.ac               |   93 ++++++++++++++++++++
+ db/Makefile.am             |   33 ++++++++
+ helpers/memenv/Makefile.am |    6 ++
+ leveldb.pc.in              |    9 ++
+ port/Makefile.am           |    8 ++
+ table/Makefile.am          |   20 +++++
+ util/Makefile.am           |   31 +++++++
+ 9 files changed, 334 insertions(+), 200 deletions(-)
+ delete mode 100644 Makefile
+ create mode 100644 Makefile.am
+ create mode 100644 configure.ac
+ create mode 100644 db/Makefile.am
+ create mode 100644 helpers/memenv/Makefile.am
+ create mode 100644 leveldb.pc.in
+ create mode 100644 port/Makefile.am
+ create mode 100644 table/Makefile.am
+ create mode 100644 util/Makefile.am
+
+diff --git a/Makefile b/Makefile
+deleted file mode 100644
+index c648a28..0000000
+--- a/Makefile
++++ /dev/null
+@@ -1,200 +0,0 @@
+-# Copyright (c) 2011 The LevelDB Authors. All rights reserved.
+-# Use of this source code is governed by a BSD-style license that can be
+-# found in the LICENSE file. See the AUTHORS file for names of contributors.
+-
+-# Inherit some settings from environment variables, if available
+-INSTALL_PATH ?= $(CURDIR)
+-
+-#-----------------------------------------------
+-# Uncomment exactly one of the lines labelled (A), (B), and (C) below
+-# to switch between compilation modes.
+-
+-OPT ?= -O2 -DNDEBUG       # (A) Production use (optimized mode)
+-# OPT ?= -g2              # (B) Debug mode, w/ full line-level debugging symbols
+-# OPT ?= -O2 -g2 -DNDEBUG # (C) Profiling mode: opt, but w/debugging symbols
+-#-----------------------------------------------
+-
+-# detect what platform we're building on
+-$(shell ./build_detect_platform build_config.mk)
+-# this file is generated by the previous line to set build flags and sources
+-include build_config.mk
+-
+-CFLAGS += -I. -I./include $(PLATFORM_CCFLAGS) $(OPT)
+-CXXFLAGS += -I. -I./include $(PLATFORM_CXXFLAGS) $(OPT)
+-
+-LDFLAGS += $(PLATFORM_LDFLAGS)
+-
+-LIBOBJECTS = $(SOURCES:.cc=.o)
+-MEMENVOBJECTS = $(MEMENV_SOURCES:.cc=.o)
+-
+-TESTUTIL = ./util/testutil.o
+-TESTHARNESS = ./util/testharness.o $(TESTUTIL)
+-
+-TESTS = \
+-	arena_test \
+-	bloom_test \
+-	c_test \
+-	cache_test \
+-	coding_test \
+-	corruption_test \
+-	crc32c_test \
+-	db_test \
+-	dbformat_test \
+-	env_test \
+-	filename_test \
+-	filter_block_test \
+-	log_test \
+-	memenv_test \
+-	skiplist_test \
+-	table_test \
+-	version_edit_test \
+-	version_set_test \
+-	write_batch_test
+-
+-PROGRAMS = db_bench $(TESTS)
+-BENCHMARKS = db_bench_sqlite3 db_bench_tree_db
+-
+-LIBRARY = libleveldb.a
+-MEMENVLIBRARY = libmemenv.a
+-
+-default: all
+-
+-# Should we build shared libraries?
+-ifneq ($(PLATFORM_SHARED_EXT),)
+-
+-ifneq ($(PLATFORM_SHARED_VERSIONED),true)
+-SHARED1 = libleveldb.$(PLATFORM_SHARED_EXT)
+-SHARED2 = $(SHARED1)
+-SHARED3 = $(SHARED1)
+-SHARED = $(SHARED1)
+-else
+-# Update db.h if you change these.
+-SHARED_MAJOR = 1
+-SHARED_MINOR = 5
+-SHARED1 = libleveldb.$(PLATFORM_SHARED_EXT)
+-SHARED2 = $(SHARED1).$(SHARED_MAJOR)
+-SHARED3 = $(SHARED1).$(SHARED_MAJOR).$(SHARED_MINOR)
+-SHARED = $(SHARED1) $(SHARED2) $(SHARED3)
+-$(SHARED1): $(SHARED3)
+-	ln -fs $(SHARED3) $(SHARED1)
+-$(SHARED2): $(SHARED3)
+-	ln -fs $(SHARED3) $(SHARED2)
+-endif
+-
+-$(SHARED3):
+-	$(CXX) $(LDFLAGS) $(PLATFORM_SHARED_LDFLAGS)$(SHARED2) $(CXXFLAGS) $(PLATFORM_SHARED_CFLAGS) $(SOURCES) -o $(SHARED3)
+-
+-endif  # PLATFORM_SHARED_EXT
+-
+-all: $(SHARED) $(LIBRARY)
+-
+-check: all $(PROGRAMS) $(TESTS)
+-	for t in $(TESTS); do echo "***** Running $$t"; ./$$t || exit 1; done
+-
+-clean:
+-	-rm -f $(PROGRAMS) $(BENCHMARKS) $(LIBRARY) $(SHARED) $(MEMENVLIBRARY) */*.o */*/*.o ios-x86/*/*.o ios-arm/*/*.o build_config.mk
+-	-rm -rf ios-x86/* ios-arm/*
+-
+-$(LIBRARY): $(LIBOBJECTS)
+-	rm -f $@
+-	$(AR) -rs $@ $(LIBOBJECTS)
+-
+-db_bench: db/db_bench.o $(LIBOBJECTS) $(TESTUTIL)
+-	$(CXX) db/db_bench.o $(LIBOBJECTS) $(TESTUTIL) -o $@  $(LDFLAGS)
+-
+-db_bench_sqlite3: doc/bench/db_bench_sqlite3.o $(LIBOBJECTS) $(TESTUTIL)
+-	$(CXX) doc/bench/db_bench_sqlite3.o $(LIBOBJECTS) $(TESTUTIL) -o $@ $(LDFLAGS) -lsqlite3
+-
+-db_bench_tree_db: doc/bench/db_bench_tree_db.o $(LIBOBJECTS) $(TESTUTIL)
+-	$(CXX) doc/bench/db_bench_tree_db.o $(LIBOBJECTS) $(TESTUTIL) -o $@ $(LDFLAGS) -lkyotocabinet
+-
+-arena_test: util/arena_test.o $(LIBOBJECTS) $(TESTHARNESS)
+-	$(CXX) util/arena_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LDFLAGS)
+-
+-bloom_test: util/bloom_test.o $(LIBOBJECTS) $(TESTHARNESS)
+-	$(CXX) util/bloom_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LDFLAGS)
+-
+-c_test: db/c_test.o $(LIBOBJECTS) $(TESTHARNESS)
+-	$(CXX) db/c_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LDFLAGS)
+-
+-cache_test: util/cache_test.o $(LIBOBJECTS) $(TESTHARNESS)
+-	$(CXX) util/cache_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LDFLAGS)
+-
+-coding_test: util/coding_test.o $(LIBOBJECTS) $(TESTHARNESS)
+-	$(CXX) util/coding_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LDFLAGS)
+-
+-corruption_test: db/corruption_test.o $(LIBOBJECTS) $(TESTHARNESS)
+-	$(CXX) db/corruption_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LDFLAGS)
+-
+-crc32c_test: util/crc32c_test.o $(LIBOBJECTS) $(TESTHARNESS)
+-	$(CXX) util/crc32c_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LDFLAGS)
+-
+-db_test: db/db_test.o $(LIBOBJECTS) $(TESTHARNESS)
+-	$(CXX) db/db_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LDFLAGS)
+-
+-dbformat_test: db/dbformat_test.o $(LIBOBJECTS) $(TESTHARNESS)
+-	$(CXX) db/dbformat_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LDFLAGS)
+-
+-env_test: util/env_test.o $(LIBOBJECTS) $(TESTHARNESS)
+-	$(CXX) util/env_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LDFLAGS)
+-
+-filename_test: db/filename_test.o $(LIBOBJECTS) $(TESTHARNESS)
+-	$(CXX) db/filename_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LDFLAGS)
+-
+-filter_block_test: table/filter_block_test.o $(LIBOBJECTS) $(TESTHARNESS)
+-	$(CXX) table/filter_block_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LDFLAGS)
+-
+-log_test: db/log_test.o $(LIBOBJECTS) $(TESTHARNESS)
+-	$(CXX) db/log_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LDFLAGS)
+-
+-table_test: table/table_test.o $(LIBOBJECTS) $(TESTHARNESS)
+-	$(CXX) table/table_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LDFLAGS)
+-
+-skiplist_test: db/skiplist_test.o $(LIBOBJECTS) $(TESTHARNESS)
+-	$(CXX) db/skiplist_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LDFLAGS)
+-
+-version_edit_test: db/version_edit_test.o $(LIBOBJECTS) $(TESTHARNESS)
+-	$(CXX) db/version_edit_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LDFLAGS)
+-
+-version_set_test: db/version_set_test.o $(LIBOBJECTS) $(TESTHARNESS)
+-	$(CXX) db/version_set_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LDFLAGS)
+-
+-write_batch_test: db/write_batch_test.o $(LIBOBJECTS) $(TESTHARNESS)
+-	$(CXX) db/write_batch_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LDFLAGS)
+-
+-$(MEMENVLIBRARY) : $(MEMENVOBJECTS)
+-	rm -f $@
+-	$(AR) -rs $@ $(MEMENVOBJECTS)
+-
+-memenv_test : helpers/memenv/memenv_test.o $(MEMENVLIBRARY) $(LIBRARY) $(TESTHARNESS)
+-	$(CXX) helpers/memenv/memenv_test.o $(MEMENVLIBRARY) $(LIBRARY) $(TESTHARNESS) -o $@ $(LDFLAGS)
+-
+-ifeq ($(PLATFORM), IOS)
+-# For iOS, create universal object files to be used on both the simulator and
+-# a device.
+-PLATFORMSROOT=/Applications/Xcode.app/Contents/Developer/Platforms
+-SIMULATORROOT=$(PLATFORMSROOT)/iPhoneSimulator.platform/Developer
+-DEVICEROOT=$(PLATFORMSROOT)/iPhoneOS.platform/Developer
+-IOSVERSION=$(shell defaults read $(PLATFORMSROOT)/iPhoneOS.platform/version CFBundleShortVersionString)
+-
+-.cc.o:
+-	mkdir -p ios-x86/$(dir $@)
+-	$(SIMULATORROOT)/usr/bin/$(CXX) $(CXXFLAGS) -isysroot $(SIMULATORROOT)/SDKs/iPhoneSimulator$(IOSVERSION).sdk -arch i686 -c $< -o ios-x86/$@
+-	mkdir -p ios-arm/$(dir $@)
+-	$(DEVICEROOT)/usr/bin/$(CXX) $(CXXFLAGS) -isysroot $(DEVICEROOT)/SDKs/iPhoneOS$(IOSVERSION).sdk -arch armv6 -arch armv7 -c $< -o ios-arm/$@
+-	lipo ios-x86/$@ ios-arm/$@ -create -output $@
+-
+-.c.o:
+-	mkdir -p ios-x86/$(dir $@)
+-	$(SIMULATORROOT)/usr/bin/$(CC) $(CFLAGS) -isysroot $(SIMULATORROOT)/SDKs/iPhoneSimulator$(IOSVERSION).sdk -arch i686 -c $< -o ios-x86/$@
+-	mkdir -p ios-arm/$(dir $@)
+-	$(DEVICEROOT)/usr/bin/$(CC) $(CFLAGS) -isysroot $(DEVICEROOT)/SDKs/iPhoneOS$(IOSVERSION).sdk -arch armv6 -arch armv7 -c $< -o ios-arm/$@
+-	lipo ios-x86/$@ ios-arm/$@ -create -output $@
+-
+-else
+-.cc.o:
+-	$(CXX) $(CXXFLAGS) -c $< -o $@
+-
+-.c.o:
+-	$(CC) $(CFLAGS) -c $< -o $@
+-endif
+diff --git a/Makefile.am b/Makefile.am
+new file mode 100644
+index 0000000..18da42d
+--- /dev/null
++++ b/Makefile.am
+@@ -0,0 +1,134 @@
++SUBDIRS = db helpers/memenv port table util
++
++lib_LTLIBRARIES = libleveldb.la
++
++libleveldbnobase_includedir = $(includedir)/leveldb
++libleveldbnobase_include_HEADERS = ./include/leveldb/c.h \
++				   ./include/leveldb/cache.h \
++				   ./include/leveldb/comparator.h \
++				   ./include/leveldb/db.h \
++				   ./include/leveldb/env.h \
++				   ./include/leveldb/filter_policy.h \
++				   ./include/leveldb/iterator.h \
++				   ./include/leveldb/options.h \
++				   ./include/leveldb/slice.h \
++				   ./include/leveldb/status.h \
++				   ./include/leveldb/table.h \
++				   ./include/leveldb/table_builder.h \
++				   ./include/leveldb/write_batch.h
++
++libleveldb_la_SOURCES =
++
++libleveldb_la_LIBADD = @SNAPPY_LIBS@ \
++		      $(top_builddir)/db/libdb.la \
++		      $(top_builddir)/port/libport.la \
++		      $(top_builddir)/table/libtable.la \
++		      $(top_builddir)/util/libutil.la
++
++libleveldb_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(LEVELDB_VERSION_INFO)
++
++pkgconfigdir = $(libdir)/pkgconfig
++pkgconfig_DATA = leveldb.pc
++
++EXTRA_DIST = doc AUTHORS LICENSE NEWS README TODO
++
++TESTS = c_test \
++	corruption_test  \
++	db_test \
++	dbformat_test \
++	filename_test \
++	log_test \
++	skiplist_test \
++	version_edit_test \
++	version_set_test \
++	write_batch_test \
++	\
++	memenv_test \
++	\
++	filter_block_test \
++	table_test \
++	\
++	arena_test \
++	bloom_test \
++	cache_test \
++	coding_test \
++	crc32c_test \
++	env_test
++
++noinst_PROGRAMS = $(TESTS)
++
++c_test_SOURCES = ./db/c_test.c
++c_test_CFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include
++c_test_LDADD = libleveldb.la util/libtest.la
++
++corruption_test_SOURCES = ./db/corruption_test.cc
++corruption_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include
++corruption_test_LDADD = libleveldb.la util/libtest.la
++
++db_test_SOURCES = ./db/db_test.cc
++db_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include
++db_test_LDADD = libleveldb.la util/libtest.la
++
++dbformat_test_SOURCES = ./db/dbformat_test.cc
++dbformat_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include
++dbformat_test_LDADD = libleveldb.la util/libtest.la
++
++filename_test_SOURCES = ./db/filename_test.cc
++filename_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include
++filename_test_LDADD = libleveldb.la util/libtest.la
++
++log_test_SOURCES = ./db/log_test.cc
++log_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include
++log_test_LDADD = libleveldb.la util/libtest.la
++
++skiplist_test_SOURCES = ./db/skiplist_test.cc
++skiplist_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include
++skiplist_test_LDADD = libleveldb.la util/libtest.la
++
++version_edit_test_SOURCES = ./db/version_edit_test.cc
++version_edit_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include
++version_edit_test_LDADD = libleveldb.la util/libtest.la
++
++version_set_test_SOURCES = ./db/version_set_test.cc
++version_set_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include
++version_set_test_LDADD = libleveldb.la util/libtest.la
++
++write_batch_test_SOURCES = ./db/write_batch_test.cc
++write_batch_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include
++write_batch_test_LDADD = libleveldb.la util/libtest.la
++
++memenv_test_SOURCES = ./helpers/memenv/memenv_test.cc
++memenv_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include
++memenv_test_LDADD = libleveldb.la helpers/memenv/libmemenv.la util/libtest.la
++
++filter_block_test_SOURCES = ./table/filter_block_test.cc
++filter_block_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include
++filter_block_test_LDADD = libleveldb.la util/libtest.la
++
++table_test_SOURCES = ./table/table_test.cc
++table_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include
++table_test_LDADD = libleveldb.la util/libtest.la
++
++arena_test_SOURCES = ./util/arena_test.cc
++arena_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include
++arena_test_LDADD = libleveldb.la util/libtest.la
++
++bloom_test_SOURCES = ./util/bloom_test.cc
++bloom_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include
++bloom_test_LDADD = libleveldb.la util/libtest.la
++
++cache_test_SOURCES = ./util/cache_test.cc
++cache_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include
++cache_test_LDADD = libleveldb.la util/libtest.la
++
++coding_test_SOURCES = ./util/coding_test.cc
++coding_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include
++coding_test_LDADD = libleveldb.la util/libtest.la
++
++crc32c_test_SOURCES = ./util/crc32c_test.cc
++crc32c_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include
++crc32c_test_LDADD = libleveldb.la util/libtest.la
++
++env_test_SOURCES = ./util/env_test.cc
++env_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include
++env_test_LDADD = libleveldb.la util/libtest.la
+diff --git a/configure.ac b/configure.ac
+new file mode 100644
+index 0000000..166fc39
+--- /dev/null
++++ b/configure.ac
+@@ -0,0 +1,93 @@
++AC_INIT([leveldb], [1.5.0], [http://groups.google.com/group/leveldb])
++
++AC_CANONICAL_TARGET
++
++AM_INIT_AUTOMAKE([dist-bzip2 no-dist-gzip tar-ustar foreign])
++
++AC_SUBST(LEVELDB_VERSION_INFO, [1:5:0])
++
++# Checks for programs.
++AC_PROG_CXX
++#AC_PROG_CC
++AC_PROG_LIBTOOL
++AC_PROG_INSTALL
++
++AC_LANG_CPLUSPLUS
++
++# Checks for libraries.
++# FIXME: Replace `main' with a function in `-lkyotocabinet':
++#AC_CHECK_LIB([kyotocabinet], [main])
++# FIXME: Replace `main' with a function in `-lsqlite3':
++#AC_CHECK_LIB([sqlite3], [main])
++
++AC_CHECK_LIB(
++	     [snappy],
++	     [snappy_compress],
++	     [
++	      CXXFLAGS="$CXXFLAGS -DSNAPPY"
++	      SNAPPY_LIBS="-lsnappy"
++	      AC_SUBST([SNAPPY_LIBS])
++	     ],
++	     [AC_MSG_ERROR([snappy library not found])],
++	     []
++	    )
++
++# Checks for header files.
++AC_CHECK_HEADERS([fcntl.h stddef.h stdint.h stdlib.h string.h sys/time.h unistd.h])
++
++case "$target_os" in
++	linux*)
++		CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX"
++		;;
++	darwin*)
++		CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX"
++		;;
++	freebsd*)
++		CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp -D_REENTRANT -DOS_FREEBSD -DLEVELDB_PLATFORM_POSIX"
++		;;
++	openbsd*)
++		CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp -D_REENTRANT -DOS_OPENBSD -DLEVELDB_PLATFORM_POSIX"
++		;;
++	netbsd*)
++		CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp -D_REENTRANT -DOS_NETBSD -DLEVELDB_PLATFORM_POSIX"
++		;;
++	*solaris*)
++		CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp -D_REENTRANT -DOS_SOLARIS -DLEVELDB_PLATFORM_POSIX"
++		;;
++	*)
++		AC_MSG_ERROR([No support for this OS ($target_os) yet])
++		;;
++esac
++
++# Checks for typedefs, structures, and compiler characteristics.
++#AC_CHECK_HEADER_STDBOOL
++AC_C_INLINE
++AC_TYPE_INT16_T
++AC_TYPE_INT32_T
++AC_TYPE_INT64_T
++AC_TYPE_INT8_T
++AC_TYPE_OFF_T
++AC_TYPE_SIZE_T
++AC_TYPE_SSIZE_T
++AC_TYPE_UINT16_T
++AC_TYPE_UINT32_T
++AC_TYPE_UINT64_T
++AC_TYPE_UINT8_T
++
++# Checks for library functions.
++AC_FUNC_ERROR_AT_LINE
++AC_FUNC_MALLOC
++AC_FUNC_MMAP
++AC_CHECK_FUNCS([fdatasync ftruncate getpagesize gettimeofday localtime_r memset mkdir munmap rmdir sqrt strchr strdup strerror strrchr strstr strtoull])
++
++AC_CONFIG_FILES([
++Makefile
++db/Makefile
++helpers/memenv/Makefile
++port/Makefile
++table/Makefile
++util/Makefile
++leveldb.pc
++])
++
++AC_OUTPUT
+diff --git a/db/Makefile.am b/db/Makefile.am
+new file mode 100644
+index 0000000..0efdc03
+--- /dev/null
++++ b/db/Makefile.am
+@@ -0,0 +1,33 @@
++noinst_LTLIBRARIES = libdb.la
++
++libdb_la_SOURCES = builder.cc \
++		   builder.h \
++		   c.cc \
++		   db_impl.cc \
++		   db_impl.h \
++		   db_iter.cc \
++		   db_iter.h \
++		   dbformat.cc \
++		   dbformat.h \
++		   filename.cc \
++		   filename.h \
++		   log_format.h \
++		   log_reader.cc \
++		   log_reader.h \
++		   log_writer.cc \
++		   log_writer.h \
++		   memtable.cc \
++		   memtable.h \
++		   repair.cc \
++		   skiplist.h \
++		   snapshot.h \
++		   table_cache.cc \
++		   table_cache.h \
++		   version_edit.cc \
++		   version_edit.h \
++		   version_set.cc \
++		   version_set.h \
++		   write_batch.cc \
++		   write_batch_internal.h
++
++libdb_la_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir) -I$(top_srcdir)/include
+diff --git a/helpers/memenv/Makefile.am b/helpers/memenv/Makefile.am
+new file mode 100644
+index 0000000..cd52bfe
+--- /dev/null
++++ b/helpers/memenv/Makefile.am
+@@ -0,0 +1,6 @@
++noinst_LTLIBRARIES = libmemenv.la
++
++libmemenv_la_SOURCES = memenv.cc
++
++
++libmemenv_la_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir) -I$(top_srcdir)/include
+diff --git a/leveldb.pc.in b/leveldb.pc.in
+new file mode 100644
+index 0000000..1511011
+--- /dev/null
++++ b/leveldb.pc.in
+@@ -0,0 +1,9 @@
++prefix=@prefix@
++exec_prefix=@exec_prefix@
++libdir=@libdir@
++includedir=@includedir@
++
++Name: leveldb
++Description: a fast key-value storage library
++Version: @PACKAGE_VERSION@
++Libs: -lleveldb
+diff --git a/port/Makefile.am b/port/Makefile.am
+new file mode 100644
+index 0000000..8a0b980
+--- /dev/null
++++ b/port/Makefile.am
+@@ -0,0 +1,8 @@
++noinst_LTLIBRARIES = libport.la
++
++libport_la_SOURCES = atomic_pointer.h \
++		   port.h \
++		   port_posix.h \
++		   port_posix.cc
++
++libport_la_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir) -I$(top_srcdir)/include
+diff --git a/table/Makefile.am b/table/Makefile.am
+new file mode 100644
+index 0000000..239e7ba
+--- /dev/null
++++ b/table/Makefile.am
+@@ -0,0 +1,20 @@
++noinst_LTLIBRARIES = libtable.la
++
++libtable_la_SOURCES = block.h \
++		      block_builder.h \
++		      filter_block.h \
++		      format.h \
++		      iterator_wrapper.h \
++		      merger.h \
++		      two_level_iterator.h \
++		      block.cc \
++		      block_builder.cc \
++		      filter_block.cc \
++		      format.cc \
++		      iterator.cc \
++		      merger.cc \
++		      table.cc \
++		      table_builder.cc \
++		      two_level_iterator.cc
++
++libtable_la_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir) -I$(top_srcdir)/include
+diff --git a/util/Makefile.am b/util/Makefile.am
+new file mode 100644
+index 0000000..bb953e5
+--- /dev/null
++++ b/util/Makefile.am
+@@ -0,0 +1,31 @@
++noinst_LTLIBRARIES = libutil.la libtest.la
++
++libutil_la_SOURCES = arena.h \
++		     coding.h \
++		     crc32c.h \
++		     hash.h \
++		     histogram.h \
++		     logging.h \
++		     mutexlock.h \
++		     posix_logger.h \
++		     random.h \
++		     arena.cc \
++		     bloom.cc \
++		     cache.cc \
++		     coding.cc \
++		     comparator.cc \
++		     crc32c.cc \
++		     env.cc \
++		     env_posix.cc \
++		     filter_policy.cc \
++		     hash.cc \
++		     histogram.cc \
++		     logging.cc \
++		     options.cc \
++		     status.cc
++
++libtest_la_SOURCES = testharness.cc \
++		     testutil.cc
++
++libutil_la_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir) -I$(top_srcdir)/include
++libtest_la_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir) -I$(top_srcdir)/include
+-- 
+1.7.10.4
+
diff --git a/leveldb-0002-Add-memory-barrier-on-a-more-arches.patch b/leveldb-0002-Add-memory-barrier-on-a-more-arches.patch
new file mode 100644
index 0000000..00db46c
--- /dev/null
+++ b/leveldb-0002-Add-memory-barrier-on-a-more-arches.patch
@@ -0,0 +1,28 @@
+From d024d7fdb808dd4d3e8ad57b83aa3441129c8276 Mon Sep 17 00:00:00 2001
+From: Peter Lemenkov <lemenkov at gmail.com>
+Date: Sat, 19 May 2012 11:33:43 +0400
+Subject: [PATCH 2/2] Add memory barrier on a more arches
+
+Signed-off-by: Peter Lemenkov <lemenkov at gmail.com>
+---
+ port/atomic_pointer.h |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/port/atomic_pointer.h b/port/atomic_pointer.h
+index c58bffb..ed9cee3 100644
+--- a/port/atomic_pointer.h
++++ b/port/atomic_pointer.h
+@@ -48,8 +48,8 @@ namespace port {
+ // http://msdn.microsoft.com/en-us/library/ms684208(v=vs.85).aspx
+ #define LEVELDB_HAVE_MEMORY_BARRIER
+ 
+-// Gcc on x86
+-#elif defined(ARCH_CPU_X86_FAMILY) && defined(__GNUC__)
++// GCC on x86, PPC, PPC64, MIPS, MIPS64, s390, S390x, ARM
++#elif defined(__GNUC__)
+ inline void MemoryBarrier() {
+   // See http://gcc.gnu.org/ml/gcc/2003-04/msg01180.html for a discussion on
+   // this idiom. Also see http://en.wikipedia.org/wiki/Memory_ordering.
+-- 
+1.7.10.4
+
diff --git a/leveldb.spec b/leveldb.spec
new file mode 100644
index 0000000..efef208
--- /dev/null
+++ b/leveldb.spec
@@ -0,0 +1,89 @@
+Name:		leveldb
+Version:	1.5.0
+Release:	2%{?dist}
+Summary:	A fast and lightweight key/value database library by Google
+Group:		Applications/Databases
+License:	BSD
+URL:		http://code.google.com/p/leveldb/
+Source0:	http://leveldb.googlecode.com/files/%{name}-%{version}.tar.gz
+# Sent upstream - https://code.google.com/p/leveldb/issues/detail?id=101
+Patch1:		leveldb-0001-Initial-commit-of-the-autotools-stuff.patch
+# Sent upstream - https://code.google.com/p/leveldb/issues/detail?id=102
+Patch2:		leveldb-0002-Add-memory-barrier-on-a-more-arches.patch
+BuildRequires:	snappy-devel
+BuildRequires:	autoconf
+BuildRequires:	automake
+BuildRequires:	libtool
+
+
+%description
+LevelDB is a fast key-value storage library written at Google that provides an
+ordered mapping from string keys to string values.
+
+
+%package devel
+Summary: The development files for %{name}
+Group: Development/Libraries
+Requires: pkgconfig
+Requires: %{name}%{?_isa} = %{version}-%{release}
+Requires: pkgconfig
+
+
+%description devel
+Additional header files for development with %{name}.
+
+
+%prep
+%setup -q
+%patch1 -p1
+%patch2 -p1
+
+
+%build
+autoreconf -ivf
+%configure --disable-static --with-pic
+make %{?_smp_mflags}
+
+
+%install
+make install DESTDIR=%{buildroot}
+rm -f %{buildroot}%{_libdir}/*.la
+
+
+%check
+%ifarch armv7hl ppc ppc64
+# FIXME a couple of tests are failing on these secondary arches
+make check || true
+%else
+# x86, x86_64, armv5tel, s390, and s390x are fine
+make check
+%endif
+
+
+%post -p /sbin/ldconfig
+
+
+%postun -p /sbin/ldconfig
+
+
+%files
+%doc doc/ AUTHORS LICENSE README
+%{_libdir}/lib%{name}.so.*
+
+
+%files devel
+%{_includedir}/%{name}/
+%{_libdir}/lib%{name}.so
+%{_libdir}/pkgconfig/%{name}.pc
+
+
+%changelog
+* Wed Jul 11 2012 Peter Lemenkov <lemenkov at gmail.com> - 1.5.0-2
+- Cleaned up spec by removing EL5-related stuff
+- Added notes about the patches
+
+* Fri Jun 15 2012 Peter Lemenkov <lemenkov at gmail.com> - 1.5.0-1
+- Ver. 1.5.0
+
+* Thu May 17 2012 Peter Lemenkov <lemenkov at gmail.com> - 1.4.0-1
+- Initial package
diff --git a/sources b/sources
index e69de29..25acfcd 100644
--- a/sources
+++ b/sources
@@ -0,0 +1 @@
+6797e19a0a9f9bb1c1ba356bf89227f0  leveldb-1.5.0.tar.gz


More information about the scm-commits mailing list