From 9eafdb18fba89748be2db6cc39468cc993e06b8ca37234975571d22c5a12fc26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Schr=C3=B6ter?= Date: Fri, 3 May 2024 14:20:14 +0200 Subject: [PATCH] Sync from SUSE:SLFO:Main leveldb revision 3ab39b09a65daa617282e91d03b9e497 --- .gitattributes | 23 ++++ baselibs.conf | 1 + detect-system-gtest.patch | 65 ++++++++++ enable-rtti.patch | 17 +++ leveldb-1.23.tar.gz | 3 + leveldb.changes | 252 ++++++++++++++++++++++++++++++++++++++ leveldb.spec | 128 +++++++++++++++++++ 7 files changed, 489 insertions(+) create mode 100644 .gitattributes create mode 100644 baselibs.conf create mode 100644 detect-system-gtest.patch create mode 100644 enable-rtti.patch create mode 100644 leveldb-1.23.tar.gz create mode 100644 leveldb.changes create mode 100644 leveldb.spec diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/baselibs.conf b/baselibs.conf new file mode 100644 index 0000000..31ad56a --- /dev/null +++ b/baselibs.conf @@ -0,0 +1 @@ +libleveldb1 diff --git a/detect-system-gtest.patch b/detect-system-gtest.patch new file mode 100644 index 0000000..1cf0895 --- /dev/null +++ b/detect-system-gtest.patch @@ -0,0 +1,65 @@ +diff -Nur leveldb-1.23/CMakeLists.txt new/CMakeLists.txt +--- leveldb-1.23/CMakeLists.txt 2021-02-23 21:54:37.000000000 +0100 ++++ new/CMakeLists.txt 2021-05-03 12:17:15.280336224 +0200 +@@ -289,27 +289,25 @@ + if(LEVELDB_BUILD_TESTS) + enable_testing() + +- # Prevent overriding the parent project's compiler/linker settings on Windows. +- set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) +- set(install_gtest OFF) +- set(install_gmock OFF) +- set(build_gmock ON) +- +- # This project is tested using GoogleTest. +- add_subdirectory("third_party/googletest") +- +- # This project uses Google benchmark for benchmarking. +- set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "" FORCE) +- set(BENCHMARK_ENABLE_EXCEPTIONS OFF CACHE BOOL "" FORCE) +- add_subdirectory("third_party/benchmark") +- +- # GoogleTest triggers a missing field initializers warning. +- if(LEVELDB_HAVE_NO_MISSING_FIELD_INITIALIZERS) +- set_property(TARGET gtest +- APPEND PROPERTY COMPILE_OPTIONS -Wno-missing-field-initializers) +- set_property(TARGET gmock +- APPEND PROPERTY COMPILE_OPTIONS -Wno-missing-field-initializers) +- endif(LEVELDB_HAVE_NO_MISSING_FIELD_INITIALIZERS) ++ find_package(GTest) ++ if(NOT GTest_FOUND) ++ # Prevent overriding the parent project's compiler/linker settings on Windows. ++ set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) ++ set(install_gtest OFF) ++ set(install_gmock OFF) ++ set(build_gmock ON) ++ ++ # This project is tested using GoogleTest. ++ add_subdirectory("third_party/googletest") ++ ++ # GoogleTest triggers a missing field initializers warning. ++ if(LEVELDB_HAVE_NO_MISSING_FIELD_INITIALIZERS) ++ set_property(TARGET gtest ++ APPEND PROPERTY COMPILE_OPTIONS -Wno-missing-field-initializers) ++ set_property(TARGET gmock ++ APPEND PROPERTY COMPILE_OPTIONS -Wno-missing-field-initializers) ++ endif(LEVELDB_HAVE_NO_MISSING_FIELD_INITIALIZERS) ++ endif() + + function(leveldb_test test_file) + get_filename_component(test_target_name "${test_file}" NAME_WE) +@@ -386,6 +384,14 @@ + endif(LEVELDB_BUILD_TESTS) + + if(LEVELDB_BUILD_BENCHMARKS) ++ find_package(benchmark) ++ if (NOT benchmark_FOUND) ++ # This project uses Google benchmark for benchmarking. ++ set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "" FORCE) ++ set(BENCHMARK_ENABLE_EXCEPTIONS OFF CACHE BOOL "" FORCE) ++ add_subdirectory("third_party/benchmark") ++ endif() ++ + function(leveldb_benchmark bench_file) + get_filename_component(bench_target_name "${bench_file}" NAME_WE) + diff --git a/enable-rtti.patch b/enable-rtti.patch new file mode 100644 index 0000000..3b88627 --- /dev/null +++ b/enable-rtti.patch @@ -0,0 +1,17 @@ +diff -Nur leveldb-1.23/CMakeLists.txt new/CMakeLists.txt +--- leveldb-1.23/CMakeLists.txt 2021-02-23 21:54:37.000000000 +0100 ++++ new/CMakeLists.txt 2021-06-09 14:06:15.129760255 +0200 +@@ -71,9 +71,10 @@ + string(REGEX REPLACE "-fexceptions" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions") + ++ ++ # We need RTTI support if code that uses leveldb uses typeid (e.g. ceph). +- # Disable RTTI. +- string(REGEX REPLACE "-frtti" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti") ++ # string(REGEX REPLACE "-frtti" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") ++ # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti") + endif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + + # Test whether -Wthread-safety is available. See diff --git a/leveldb-1.23.tar.gz b/leveldb-1.23.tar.gz new file mode 100644 index 0000000..c371c3d --- /dev/null +++ b/leveldb-1.23.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a37f8a6174f09bd622bc723b55881dc541cd50747cbd08831c2a82d620f6d76 +size 242925 diff --git a/leveldb.changes b/leveldb.changes new file mode 100644 index 0000000..3933411 --- /dev/null +++ b/leveldb.changes @@ -0,0 +1,252 @@ +------------------------------------------------------------------- +Thu Jan 11 18:08:20 UTC 2024 - pgajdos@suse.com + +- disable autocompact_test [bsc#1218597] + +------------------------------------------------------------------- +Wed Mar 8 12:47:35 UTC 2023 - Martin Pluskal + +- Build AVX2 enabled hwcaps library for x86_64-v3 + +------------------------------------------------------------------- +Wed Jun 9 12:08:18 UTC 2021 - Ferdinand Thiessen + +- Add enable-rtti.patch, enable rtti support again to fix build + issue of ceph + +------------------------------------------------------------------- +Mon May 3 09:46:47 UTC 2021 - Ferdinand Thiessen + +- Update to version 1.23: + * Switch from C headers to C++ headers. + * Remove leveldb::port::kLittleEndian. + * Add Env::Remove{File,Dir} which obsolete Env::Delete{File,Dir}. + * Sync MANIFEST before closing in db_impl when creating a new DB. + * Optimize leveldb block seeks to utilize the current iterator + location. + * broken db: fix assertion in leveldb::InternalKey::Encode, + mark base as corrupt + * fix bug(uninitialized options pointer in State) + * Fix accidental double std:: qualifiers. + * Fix tsan problem in env_test. + * Don't check current key in DBIter::Next() + * block_builder header file dependency fixed + * Add O_CLOEXEC to open calls. + * Memory optimization + * Documentation improvements +- Add detect-system-gtest.patch to use googletest and benchmark + from system, add those libraries as dependencies +- Build in second build directory to prevent cmake files generated + for the static library (prefer shared one) + +------------------------------------------------------------------- +Wed Apr 29 12:33:36 UTC 2020 - David Disseldorp + +- Remove 0001-debian-ports.patch + * std::atomic now used instead of internal AtomicPointer asm +- Update to version 1.22: + * Corrected formatting to be compliant with the Google C++ Style Guide. + * Restore soname versioning with CMake build. + * Other miscellaneous cleanups, fixes, and improvements. +- Update to version 1.21: + * Add tests for empty keys and values. + * Switch corruption_test to use InMemEnv. + * Replace AtomicPointer with std::atomic. + * Make InMemoryEnv more consistent with filesystem based Env's. + * Align windows_logger with posix_logger. + * Added native support for Windows. + * Make WriteBatch::ApproximateSize() const. + * Fix fdatasync() feature detection in opensource build. + * C++11 cleanup for util/mutexlock.h. + * Rework threading in env_posix.cc. + * Remove InitOnce from the port API. + * Expose WriteBatch::Append(). + * Fix documentation for log file growth. + * Add move constructor to Status. + * Replace port_posix with port_stdcxx. + * Reimplement ConsumeDecimalNumber. + * Replace NULL with nullptr in C++ files. + * Remove PLATFORM_IS_LITTLE_ENDIAN from port/posix.h. + * Add more thread safety annotations. + * Require C++11. + * Replace SIZE_MAX with std::numeric_limits. + * Add CMake build support. + * Enable thread safety annotations. + * leveldb::DestroyDB will now delete empty directories. + * Replace SSE-optimized CRC32C in POSIX port with external library. + * Fix file writing bug in CL 170738066. + * Fix use of uninitialized value in LRUHandle. + * Fix issue #474: a race between the f*_unlocked() STDIO calls in + env_posix.cc and concurrent application calls to fflush(NULL). + * Report missing CURRENT manifest file as database corruption. + * LevelDB: Add WriteBatch::ApproximateSize(). + * Other minor fixes, code cleanup, and documentation improvements. +- Perform a two-pass build, once for static and once for shared libs + +------------------------------------------------------------------- +Fri Aug 2 07:04:04 UTC 2019 - Martin Liška + +- Use FAT LTO objects in order to provide proper static library. + +------------------------------------------------------------------- +Fri Aug 11 10:44:05 UTC 2017 - ncutler@suse.com + +- added 0001-debian-ports.patch + * obtained by rebasing https://github.com/google/leveldb/pull/291 + on top of 1.20 (one non-trivial conflict involving aarch64, + consulted with ARM experts - NOTE: this patch has not been + accepted upstream, but it's needed to support s390x) + +------------------------------------------------------------------- +Thu Aug 10 11:52:35 UTC 2017 - ncutler@suse.com + +- FATE#319443 (aarch64 enablement) changes were backported by + https://build.opensuse.org/request/show/294636 and are part + of this release. Factory version builds on aarch64. + (bsc#1041611) + +------------------------------------------------------------------- +Sun Jun 11 17:07:36 UTC 2017 - mpluskal@suse.com + +- Update to version 1.20: + * Convert documentation to markdown. + * Implement support for Intel crc32 instruction (SSE 4.2). + * Limit the number of read-only files the POSIX Env will have + open. + * Add option for maximum file size. +- Changes for version 1.19: + * A snappy change broke test assumptions about the size of + compressed output. + * Fix problems in LevelDB's caching code. + * Fix LevelDB build when asserts are enabled in release builds. + * Change std::uint64_t to uint64_t (#354). + * Fixes a bug encountered when reading records from leveldb + files that have + * been split, as in a [] input task split. + * Deleted redundant null ptr check prior to delete. (#338). + * Fix signed/unsigned mismatch on VC++ builds. + * Putting build artifacts in subdirectory. + * Added continuous build integration via Travis CI. + * log compaction output file's level along with number. + * Misc. improvements to README file. + * Fix Android/MIPS build (#115). + * Only compiling TrimSpace on linux (#310). + * Use xcrun to determine Xcode.app path instead of using a + hardcoded path. + * Add "approximate-memory-usage" property to + leveldb::DB::GetProperty. + * Addleveldb::Cache::Prune. + * Fix size_t/int comparison/conversion issues. + * Added leveldb::Status::IsInvalidArgument() method. + * Suppress error reporting after seeking but before a valid First + or Full record is encountered. + * #include -> (#280). + * Now attempts to reuse the preceding MANIFEST and log file when + re-opened. + * Add benchmark that measures cost of repeatedly opening the + database. + * Added a new fault injection test. + * Add arm64 support to leveldb. +- Drop no longer needed 0001-debian-ports.patch +- Package command line utils as well + +------------------------------------------------------------------- +Sun Apr 5 13:29:58 UTC 2015 - mpluskal@suse.com + +- Update project url +- Use url for source +- Enable tests + +------------------------------------------------------------------- +Mon Oct 20 12:13:47 UTC 2014 - dmueller@suse.com + +- update to 1.18: + + Replace the basic fprintf call with a call to fwrite + + Fix ALL the header guards. + + A new CONTRIBUTING file. + + leveldb: Remove unused function 'ConsumeChar'. + + leveldbutil: Remove unused member variables from WriteBatchItemPrinter. + + Verify checksums of index/meta/filter blocks when paranoid_checks set. + + Invoke all tools for iOS with xcrun. (This was causing problems with the new XCode 5.1.1 image on pulse.) + + include only once, and fix the following linter warning: "Found C system header after C++ system header" + + When encountering a corrupted table file, return Status::Corruption instead of Status::InvalidArgument. + + Support cygwin as build platform, patch is from https://code.google.com/p/leveldb/issues/detail?id=188 + + Fix typo, merge patch from https://code.google.com/p/leveldb/issues/detail?id=159 + + Fix typos and comments, and address the following two issues: + + Add missing db synchronize after "fillseq" in the benchmark. + + Removed unused variable in SeekRandom: value (issue #201) + +------------------------------------------------------------------- +Mon Apr 7 15:33:22 UTC 2014 - ddiss@suse.com + +- updated to 1.16.0 + + Make Log::Reader not report a corruption when the last record in a + log file is truncated. + + Fix issue 224: variable created but not utilized. + + Remove comment that referenced a removed feature. + +------------------------------------------------------------------- +Wed Feb 5 16:14:12 UTC 2014 - ddiss@suse.com + +- updated to 1.15.0 + + switched from mmap based writing to simpler stdio based writing. Has + a minor impact (0.5 microseconds) on microbenchmarks for asynchronous + writes. Synchronous writes speed up from 30ms to 10ms on linux/ext4. + Should be much more reliable on diverse platforms. + + compaction errors now immediately put the database into a read-only + mode (until it is re-opened). As a downside, a disk going out of + space and then space being created will require a re-open to recover + from, whereas previously that would happen automatically. On the + plus side, many corruption possibilities go away. + + force the DB to enter an error-state so that all future writes fail + when a synchronous log write succeeds but the sync fails. + + repair now regenerates sstables that exhibit problems + + fix issue 218 - Use native memory barriers on OSX + + fix issue 212 - QNX build is broken + + fix build on iOS with xcode 5 + + make tests compile and pass on windows + +- refreshed 0001-debian-ports.patch + + moved OS_MACOSX hunk + +------------------------------------------------------------------- +Wed Dec 18 17:49:35 CET 2013 - ro@suse.de + +- add support for other archs (taken from debian, 0001-debian-ports.patch) + +------------------------------------------------------------------- +Sun Nov 3 22:51:28 UTC 2013 - ddiss@suse.com + +- Changed shared libs group to System/Libraries. + +------------------------------------------------------------------- +Sun Oct 13 07:59:03 UTC 2013 - i@marguerite.su + +- ran spec-cleaner. too casual the specfile was. +- make check/make clean is no more for OBS. +- add Provides/Obsoletes to libleveldb1. + * no one know that name, provide leveldb itself + * required by python-leveldb and python3-leveldb + +------------------------------------------------------------------- +Tue Oct 8 10:42:43 UTC 2013 - ddiss@suse.com + +- Updated to 1.14.0 + +------------------------------------------------------------------- +Tue Jul 16 11:13:01 UTC 2013 - ddiss@suse.com + +- Updated to 1.12.0 + + removed shared_library.patch, now upstream. + +------------------------------------------------------------------- +Wed Feb 8 17:29:24 UTC 2012 - mrueckert@suse.de + +- added shared library patch +- update to shared/static library packaging policy + +------------------------------------------------------------------- +Wed Feb 8 16:55:02 UTC 2012 - mrueckert@suse.de + +- initial package + diff --git a/leveldb.spec b/leveldb.spec new file mode 100644 index 0000000..146de30 --- /dev/null +++ b/leveldb.spec @@ -0,0 +1,128 @@ +# +# spec file for package leveldb +# +# Copyright (c) 2024 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +Name: leveldb +Version: 1.23 +Release: 0 +Summary: A key/value-store +License: BSD-3-Clause +Group: Development/Libraries/C and C++ +URL: https://github.com/google/leveldb +Source0: %{url}/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz +Source99: baselibs.conf +# PATCH-FEATURE-OPENSUSE detect-system-gtest.patch -- https://github.com/google/leveldb/pull/912 +Patch0: detect-system-gtest.patch +# PATCH-FIX-OPENSUSE enable-rtti.patch -- Enable rtti support again, needed for ceph +Patch1: enable-rtti.patch +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: pkgconfig +BuildRequires: snappy-devel +BuildRequires: cmake(GTest) +BuildRequires: cmake(benchmark) +BuildRequires: pkgconfig(sqlite3) +%{?suse_build_hwcaps_libs} + +%description +leveldb implements a system for maintaining a persistent key/value store. + +%define lib_name libleveldb1 + +%package -n %{lib_name} +Summary: Shared library from leveldb +Group: System/Libraries +Provides: %{name} = %{version} +Obsoletes: %{name} < %{version} + +%description -n %{lib_name} +leveldb implements a system for maintaining a persistent key/value store. + +This package holds the shared library of leveldb. + +%package devel +Summary: Development files for leveldb +Group: Development/Libraries/C and C++ +Requires: %{lib_name} = %{version} + +%description devel +leveldb implements a system for maintaining a persistent key/value store. + +This package holds the development files for leveldb. + +%package devel-static +Summary: Development files for statically link leveldb +Group: Development/Libraries/C and C++ +Requires: %{name}-devel = %{version} + +%description devel-static +leveldb implements a system for maintaining a persistent key/value store. + +This package holds the development files for statically linking leveldb. + +%prep +%autosetup -p1 + +%build +# unfortunately a two-pass build is needed for shared and static libs +%global _lto_cflags %{_lto_cflags} -ffat-lto-objects +%cmake -DBUILD_SHARED_LIBS=ON +%cmake_build +cd .. +%define __builddir build_static +%cmake -DBUILD_SHARED_LIBS=OFF +%cmake_build + +%install +# Install shared libraries +%define __builddir build +%cmake_install +# collect static libs built in the second pass +cp -a build_static/libleveldb.a %{buildroot}%{_libdir} +# cmake_install omits db_bench +install -d -m 0755 %{buildroot}%{_bindir} +cp -a build_static/db_bench %{buildroot}%{_bindir} + +%check +%define __builddir build_static +%ifarch s390x +# bsc#1218597 +exclude_regex='--exclude-regex autocompact_test' +%endif +eclude_regex='--exclude-regex "(autocompact_test|db_test)"' +%ctest $exclude_regex + +%post -n %{lib_name} -p /sbin/ldconfig +%postun -n %{lib_name} -p /sbin/ldconfig + +%files +%{_bindir}/db_bench + +%files -n %{lib_name} +%license LICENSE +%{_libdir}/libleveldb.so.* + +%files devel +%doc AUTHORS NEWS README.md TODO doc/* +%{_includedir}/leveldb/ +%{_libdir}/libleveldb.so +%{_libdir}/cmake/leveldb + +%files devel-static +%{_libdir}/libleveldb.a + +%changelog