summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichel Alexandre Salim <salimma@fedoraproject.org>2021-12-22 14:29:33 -0800
committerMichel Alexandre Salim <salimma@fedoraproject.org>2021-12-22 14:31:14 -0800
commit22cc9a1d988b35808404aaf26032d7e329fc9279 (patch)
tree6d5850dc475285d79a3ddfb0b1a110f9d759b2a6
parentab34d079796c664baaf23817a3ffb224bc091cad (diff)
downloadspecs-22cc9a1d988b35808404aaf26032d7e329fc9279.tar.gz
specs-22cc9a1d988b35808404aaf26032d7e329fc9279.tar.xz
specs-22cc9a1d988b35808404aaf26032d7e329fc9279.zip
submitting cachelib for review
Signed-off-by: Michel Alexandre Salim <salimma@fedoraproject.org>
-rw-r--r--meta/cachelib.spec100
1 files changed, 77 insertions, 23 deletions
diff --git a/meta/cachelib.spec b/meta/cachelib.spec
index ab0e82a..b08710e 100644
--- a/meta/cachelib.spec
+++ b/meta/cachelib.spec
@@ -1,67 +1,121 @@
-# CacheLib doesn't reliably build with gcc at the moment
-%global toolchain clang
-
-# Likely incompatible with gtest 1.11
+# Tests currently fail with
+# /builddir/build/BUILD/CacheLib-e3703aade03d359d290936b334ab81ca4a856b41/cachelib/compact_cache/tests/CCacheTests.cpp:159:1: required from here
+# /builddir/build/BUILD/CacheLib-e3703aade03d359d290936b334ab81ca4a856b41/cachelib/../cachelib/compact_cache/CCacheFixedLruBucket.h:277:11: internal compiler error: Floating point exception
+# 277 | memcpy(destPtr, srcPtr, sizeof(T));
+# | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
%bcond_with tests
%global forgeurl https://github.com/facebook/CacheLib
-%global commit c9edf4fae2d10b274e082557c4e70523b42be567
-%global date 20211216
+%global commit e3703aade03d359d290936b334ab81ca4a856b41
+%global date 20211129
%forgemeta
+# see cachelib/allocator/CacheVersion.h's kCachelibVersion
+%global major_ver 16
+
+
Name: cachelib
-Version: 0.1
+Version: %{major_ver}
Release: %autorelease
Summary: Pluggable caching engine for scale high performance cache services
License: ASL 2.0
URL: %forgeurl
Source0: %forgesource
-# require atomic when building against clang
-# will upstream
-Patch0: %{name}-req_atomic_for_clang.patch
+# move TestUtils from cachelib_common to common_test_support to avoid ld issues
+Patch0: %{name}-ld_gtest.patch
+# need to install cachelib_cachebench when building shared libs
+Patch1: %{name}-install_cachebench_so.patch
+# and version them
+Patch2: %{name}-versioned_so.patch
+
+# Folly is known not to work on big-endian CPUs
+# https://bugzilla.redhat.com/show_bug.cgi?id=1892151
+ExcludeArch: s390x
-BuildRequires: clang
BuildRequires: cmake
+BuildRequires: gcc-c++
BuildRequires: fbthrift-devel
-BuildRequires: wangle-devel
-BuildRequires: folly-devel
BuildRequires: fizz-devel
+BuildRequires: folly-devel
+%if %{with tests}
+BuildRequires: gmock-devel
+%endif
+# this is actually needed, because of
+# cachelib/navy/admission_policy/DynamicRandomAP.h
+BuildRequires: gtest-devel
BuildRequires: libdwarf-devel
BuildRequires: libzstd-devel
+BuildRequires: wangle-devel
BuildRequires: zlib-devel
BuildRequires: tsl-sparse-map-devel
-BuildRequires: libatomic
+# BuildRequires: libatomic
+
-%description
+%global _description %{expand:
CacheLib is a C++ library providing in-process high performance caching
mechanism. CacheLib provides a thread safe API to build high throughput, low
overhead caching services, with built-in ability to leverage DRAM and SSD
-caching transparently.
+caching transparently.}
+
+%description %{_description}
+
+%package devel
+Summary: %{summary}
+Requires: %{name}%{?_isa} = %{version}-%{release}
+Requires: cmake
+
+%description devel %{_description}
+
+The %{name}-devel package contains libraries and header files for developing
+applications that use %{name}.
+
%prep
%forgeautosetup -p1
+
%build
-pushd cachelib
+pushd %{name}
+%cmake \
%if %{with tests}
-%cmake
+ -DBUILD_TESTS:BOOL=ON \
%else
-%cmake -DBUILD_TESTS:BOOL=OFF
+ -DBUILD_TESTS:BOOL=OFF \
%endif
+ -DCMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=FALSE \
+ -DCMAKE_INSTALL_DIR:PATH=%{_libdir}/cmake/%{name} \
+ -DCONFIGS_INSTALL_DIR:STRING=%{_datadir}/%{name}/test_configs \
+ -DINCLUDE_INSTALL_DIR:PATH=%{_includedir}/%{name} \
+ -DCACHELIB_MAJOR_VERSION:STRING=%{major_ver} \
+ -DPACKAGE_VERSION:STRING=%{major_ver}.%{date}
%cmake_build
-%check
-pushd cachelib
-%ctest
%install
-pushd cachelib
+pushd %{name}
%cmake_install
+
+%if %{with tests}
+%check
+pushd %{name}
+%ctest
+%endif
+
+
%files
%license LICENSE
%doc BENCHMARKS.md CHANGELOG.md README.md examples
+%{_bindir}/cachebench
+%{_datadir}/%{name}
+%{_libdir}/*.so.*
+
+%files devel
+%{_includedir}/%{name}
+%{_libdir}/*.so
+%{_libdir}/cmake/%{name}
+
%changelog
%autochangelog