diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5494e3a --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/wyhash-wyhash_final.tar.gz diff --git a/README.md b/README.md new file mode 100644 index 0000000..bee77e8 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# wyhash + +The wyhash package diff --git a/dead.package b/dead.package deleted file mode 100644 index 5204a84..0000000 --- a/dead.package +++ /dev/null @@ -1 +0,0 @@ -Orphaned for 6+ weeks diff --git a/sources b/sources new file mode 100644 index 0000000..c912fcc --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (wyhash-wyhash_final.tar.gz) = 8f71005a478cbc65fc0c9314620cbbfd42c1fc76d114771f5d8cf82424727116803ff7f8ded2d8abef664f87424676d07f5fe7f6b8084c9e9141dbe96b4af8f4 diff --git a/wyhash.spec b/wyhash.spec new file mode 100644 index 0000000..ca55c87 --- /dev/null +++ b/wyhash.spec @@ -0,0 +1,120 @@ +Name: wyhash +Summary: No hash function is perfect, but some are useful +%global forgeurl https://github.com/wangyi-fudan/%{name} +%global tag %{name}_final +%forgemeta +# Upstream has haphazard versioning: after going through “v1”-“v6”, they +# selected a version “final1”, and are now working on “final2”. They also keep +# all old versions in the git repository. We will package only based on the +# “final” version numbers. When “final2” is released, this package will move +# forward to that version, with “final1” offered in a parallel-installable +# compat package, +Version: final1 +# Note that the forgemeta macro prepends commit information to the dist macro. +Release: 1%{?dist} + +URL: %{forgeurl} +Source0: %{forgesource} +License: Unlicense + +BuildRequires: gcc-c++ +BuildRequires: make + +# We need the delimiter in the “compat” version because the name ends, and the +# version starts, with a letter. See +# https://docs.fedoraproject.org/en-US/packaging-guidelines/Naming/#multiple. +%global compat_name %{name}_%{version} + +# No compiled code is installed, so this would be empty. +%global debug_package %{nil} + +%global common_description %{expand: +No hash function is perfect, but some are useful. + +wyhash and wyrand are the ideal 64-bit hash function and PRNG respectively: + +solid: wyhash passed SMHasher, wyrand passed BigCrush, practrand. + +portable: 64-bit/32-bit system, big/little endian. + +fastest: Efficient on 64-bit machines, especially for short keys. + +simplest: In the sense of code size.} + +%description %{common_description} + + +%package devel +Summary: %{summary} + +# Since this is a header-only library, dependent packages must require one of +# the -static virtual Provides. +Provides: %{name}-static = %{version}-%{release} + +Provides: %{compat_name}-devel = %{version}-%{release} +Provides: %{compat_name}-devel%{?_isa} = %{version}-%{release} +Provides: %{compat_name}-static = %{version}-%{release} + +%description devel %{common_description} + +Dependent packages that require version %{version} in particular should use the +virtual Provides for %{compat_name}-devel/%{compat_name}-static, and should add +-I%{_includedir}/%{compat_name} to their compiler flags. + + +%package doc +Summary: Documentation for %{name} +BuildArch: noarch + +%description doc %{common_description} + + +%prep +%forgeautosetup + +# Build the tests with the distribution’s preferred flags +sed -r -i \ + -e 's/ -O3\b//g' \ + -e 's/ -march=native\b/ \$\(CXXFLAGS\) \$\(LDFLAGS\)/g' \ + makefile + + +%build +%set_build_flags +# We build only the test executable, not the benchmarks. +%make_build test_vector CXX="${CXX-g++}" + + +%install +# We install only the main wyhash header; others, like wyhash32 and o1hash, are +# not yet properly versioned. We put it in a subdirectory of _includedir for +# parallel-installability; dependent packages requiring particular versions +# will have to adjust their CFLAGS. +install -D -p -m 0644 -t %{buildroot}%{_includedir}/%{compat_name} %{name}.h + +# For this package, which tracks the latest version, we also allow the header +# to be used without adding the subdirectory to the CFLAGS. +ln -s %{compat_name}/%{name}.h %{buildroot}%{_includedir}/%{name}.h + + +%check +./test_vector + + +%files devel +%license LICENSE + +%{_includedir}/%{compat_name} +%{_includedir}/%{name}.h + + +%files doc +%license LICENSE +%doc README.md +# An academic paper on the algorithm: +%doc *.docx + + +%changelog +* Sat Mar 06 2021 Benjamin A. Beasley - 1.20210306gitfinal +- Initial package