Initial package.
This commit is contained in:
parent
f028e15cee
commit
7469b900fa
|
@ -0,0 +1,6 @@
|
||||||
|
/rapidfuzz-cpp-1.10.4.tar.gz
|
||||||
|
/rapidfuzz-cpp-1.10.4
|
||||||
|
*.rpm
|
||||||
|
*.log
|
||||||
|
/review-rapidfuzz-cpp
|
||||||
|
/x86_64
|
|
@ -0,0 +1,12 @@
|
||||||
|
diff -up rapidfuzz-cpp-1.10.4/fuzzing/fuzzing.hpp.orig rapidfuzz-cpp-1.10.4/fuzzing/fuzzing.hpp
|
||||||
|
--- rapidfuzz-cpp-1.10.4/fuzzing/fuzzing.hpp.orig 2023-01-05 22:01:54.296770654 -0500
|
||||||
|
+++ rapidfuzz-cpp-1.10.4/fuzzing/fuzzing.hpp 2023-01-05 22:02:06.688879926 -0500
|
||||||
|
@@ -11,7 +11,7 @@ static inline bool extract_strings(const
|
||||||
|
}
|
||||||
|
uint32_t len1 = *(uint32_t*)data;
|
||||||
|
|
||||||
|
- if (len1 + sizeof(len1) > size) {
|
||||||
|
+ if (len1 > size - sizeof(len1)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,121 @@
|
||||||
|
# Header only library
|
||||||
|
%global debug_package %{nil}
|
||||||
|
|
||||||
|
# Use clang so that the fuzzers can be built and used as a test until Catch2 v3
|
||||||
|
# is packaged to Fedora. The fuzzers use a unique fuzzing feature of clang which
|
||||||
|
# is not present in GCC.
|
||||||
|
%global toolchain clang
|
||||||
|
|
||||||
|
# The clang fuzzer is not available on ppc64le.
|
||||||
|
%ifarch ppc64le
|
||||||
|
%global build_fuzzers 0
|
||||||
|
%else
|
||||||
|
%global build_fuzzers 1
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%global forgeurl https://github.com/maxbachmann/rapidfuzz-cpp
|
||||||
|
Version: 1.10.4
|
||||||
|
%forgemeta
|
||||||
|
|
||||||
|
Name: rapidfuzz-cpp
|
||||||
|
Release: %{autorelease}
|
||||||
|
License: MIT
|
||||||
|
Summary: A fast string matching header-only library for C++
|
||||||
|
URL: %{forgeurl}
|
||||||
|
Source: %{forgesource}
|
||||||
|
# Upstream PR: https://github.com/maxbachmann/rapidfuzz-cpp/pull/99
|
||||||
|
Patch0: rapidfuzz-cpp-1.10.4-overflow.patch
|
||||||
|
|
||||||
|
BuildRequires: cmake
|
||||||
|
BuildRequires: doxygen
|
||||||
|
BuildRequires: clang
|
||||||
|
%if %build_fuzzers
|
||||||
|
BuildRequires: compiler-rt
|
||||||
|
%endif
|
||||||
|
# For tests once Catch2 v3 lands in Fedora
|
||||||
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1786881
|
||||||
|
#BuildRequires: catch-static
|
||||||
|
|
||||||
|
%global _description %{expand:
|
||||||
|
RapidFuzz is a fast string matching library for Python and C++, which is using
|
||||||
|
the string similarity calculations from FuzzyWuzzy. However there are two
|
||||||
|
aspects that set RapidFuzz apart from FuzzyWuzzy:
|
||||||
|
|
||||||
|
1. It is MIT licensed so it can be used whichever License you might want to
|
||||||
|
choose for your project, while you're forced to adopt the GPL license when
|
||||||
|
using FuzzyWuzzy
|
||||||
|
|
||||||
|
2. It is mostly written in C++ and on top of this comes with a lot of
|
||||||
|
Algorithmic improvements to make string matching even faster, while still
|
||||||
|
providing the same results.
|
||||||
|
|
||||||
|
This is the C++ component of RapidFuzz, the Python library is available in the
|
||||||
|
python-rapidfuzz package.}
|
||||||
|
|
||||||
|
%description %_description
|
||||||
|
|
||||||
|
%package devel
|
||||||
|
Summary: Development files for the RapidFuzz C++ library
|
||||||
|
Provides: %{name}-static = %{version}
|
||||||
|
|
||||||
|
%description devel
|
||||||
|
%_description
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%autosetup -p1
|
||||||
|
# Change the group name, mainly so that the manpage is named meaningfully
|
||||||
|
sed -i 's/defgroup Fuzz Fuzz/defgroup rapidfuzz rapidfuzz/' rapidfuzz/fuzz.hpp
|
||||||
|
# Enable man generation, but don't enable the links since it produces files
|
||||||
|
# which aren't named specifically for rapidfuzz, such as "ratio" and
|
||||||
|
# "partial_ratio".
|
||||||
|
echo "GENERATE_MAN = YES" >> Doxyfile
|
||||||
|
# There doesn't seem to be a reasonable way to comply with bundling guidelines
|
||||||
|
# where there is arbitrary jquery and similar bundled in the HTML generated by
|
||||||
|
# doxygen, so don't use it.
|
||||||
|
echo "GENERATE_HTML = NO" >> Doxyfile
|
||||||
|
|
||||||
|
%build
|
||||||
|
# Testing needs v3 of Catch2
|
||||||
|
# %%cmake -DRAPIDFUZZ_BUILD_TESTING=ON
|
||||||
|
# Use the fuzzers as a test of the code build & execution
|
||||||
|
%if %build_fuzzers
|
||||||
|
%cmake -DRAPIDFUZZ_BUILD_FUZZERS=ON
|
||||||
|
%else
|
||||||
|
%cmake
|
||||||
|
%endif
|
||||||
|
%cmake_build
|
||||||
|
# Build the doxygen man doc
|
||||||
|
doxygen
|
||||||
|
|
||||||
|
%install
|
||||||
|
%cmake_install
|
||||||
|
mkdir -p %{buildroot}%{_mandir}/man3/
|
||||||
|
# Only install rapidfuzz.3, which is named specifically for this package, and
|
||||||
|
# not the generic "citelist.3".
|
||||||
|
cp doxygen/man/man3/rapidfuzz.3 %{buildroot}/%{_mandir}/man3/
|
||||||
|
|
||||||
|
%if %build_fuzzers
|
||||||
|
%check
|
||||||
|
# Unittests need v3 of Catch2
|
||||||
|
# %%ctest
|
||||||
|
# Use the fuzzers as a test of the build & execution
|
||||||
|
cd "%{__cmake_builddir}"
|
||||||
|
for fuzz_exe in fuzzing/fuzz_*
|
||||||
|
do
|
||||||
|
# True fuzz testing would have some known corpus and probably lots more
|
||||||
|
# runs, but here this is used as a simple "smoketest" to confirm things
|
||||||
|
# build and run OK from the library, so limit the runs to something
|
||||||
|
# reasonable.
|
||||||
|
./$fuzz_exe -runs=1000 -max_len=256
|
||||||
|
done
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%files devel
|
||||||
|
%license LICENSE
|
||||||
|
%doc README.md CHANGELOG.md
|
||||||
|
%{_mandir}/man3/rapidfuzz.3*
|
||||||
|
%{_includedir}/rapidfuzz
|
||||||
|
%{_libdir}/cmake/rapidfuzz
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
%autochangelog
|
Loading…
Reference in New Issue