From e91cf9341a9add3688aa0cbbf81816b87a5727ef Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Thu, 19 Oct 2017 15:25:31 +0200 Subject: [PATCH] Initial import after review --- .gitignore | 1 + sources | 1 + xxhash-lib.patch | 178 ++++++++++++++++++++++++++++++++++++++++++++ xxhash-libdir.patch | 24 ++++++ xxhash.spec | 82 ++++++++++++++++++++ 5 files changed, 286 insertions(+) create mode 100644 .gitignore create mode 100644 sources create mode 100644 xxhash-lib.patch create mode 100644 xxhash-libdir.patch create mode 100644 xxhash.spec diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f6a3a77 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/*.tar.gz diff --git a/sources b/sources new file mode 100644 index 0000000..4f37edb --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (xxhash-0.6.3.tar.gz) = 5b11009ecf142725c642be55e9072792709bd40d8674f30afdc13f9b9fd6936ea69e683c7b9df212b5126f9ba3925969fc0b65bb5518506b501bb339d3a29372 diff --git a/xxhash-lib.patch b/xxhash-lib.patch new file mode 100644 index 0000000..8942623 --- /dev/null +++ b/xxhash-lib.patch @@ -0,0 +1,178 @@ +From bc32865a237f15cd4aaaa010b4f6a4f2fae71367 Mon Sep 17 00:00:00 2001 +From: Yann Collet +Date: Thu, 14 Sep 2017 09:44:34 -0700 +Subject: [PATCH] make : added lib target + +make install now also installs static and dynamic libraries +--- + .gitignore | 6 ++++ + Makefile | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++----------- + 2 files changed, 82 insertions(+), 16 deletions(-) + +diff --git a/.gitignore b/.gitignore +index 6e41348..36639c6 100644 +--- a/.gitignore ++++ b/.gitignore +@@ -1,3 +1,9 @@ ++# objects ++*.o ++ ++# libraries ++libxxhash.* ++ + # Executables + xxh32sum + xxh64sum +diff --git a/Makefile b/Makefile +index f1b4238..98f6048 100644 +--- a/Makefile ++++ b/Makefile +@@ -25,9 +25,12 @@ + # ################################################################ + + # Version numbers +-LIBVER_MAJOR:=`sed -n '/define XXH_VERSION_MAJOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < xxhash.h` +-LIBVER_MINOR:=`sed -n '/define XXH_VERSION_MINOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < xxhash.h` +-LIBVER_PATCH:=`sed -n '/define XXH_VERSION_RELEASE/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < xxhash.h` ++LIBVER_MAJOR_SCRIPT:=`sed -n '/define XXH_VERSION_MAJOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < xxhash.h` ++LIBVER_MINOR_SCRIPT:=`sed -n '/define XXH_VERSION_MINOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < xxhash.h` ++LIBVER_PATCH_SCRIPT:=`sed -n '/define XXH_VERSION_RELEASE/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < xxhash.h` ++LIBVER_MAJOR := $(shell echo $(LIBVER_MAJOR_SCRIPT)) ++LIBVER_MINOR := $(shell echo $(LIBVER_MINOR_SCRIPT)) ++LIBVER_PATCH := $(shell echo $(LIBVER_PATCH_SCRIPT)) + LIBVER := $(LIBVER_MAJOR).$(LIBVER_MINOR).$(LIBVER_PATCH) + + CFLAGS ?= -O3 +@@ -46,21 +49,61 @@ else + EXT = + endif + ++# OS X linker doesn't support -soname, and use different extension ++# see : https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/DynamicLibraryDesignGuidelines.html ++ifeq ($(shell uname), Darwin) ++ SHARED_EXT = dylib ++ SHARED_EXT_MAJOR = $(LIBVER_MAJOR).$(SHARED_EXT) ++ SHARED_EXT_VER = $(LIBVER).$(SHARED_EXT) ++ SONAME_FLAGS = -install_name $(LIBDIR)/libxxhash.$(SHARED_EXT_MAJOR) -compatibility_version $(LIBVER_MAJOR) -current_version $(LIBVER) ++else ++ SONAME_FLAGS = -Wl,-soname=libxxhash.$(SHARED_EXT).$(LIBVER_MAJOR) ++ SHARED_EXT = so ++ SHARED_EXT_MAJOR = $(SHARED_EXT).$(LIBVER_MAJOR) ++ SHARED_EXT_VER = $(SHARED_EXT).$(LIBVER) ++endif ++ ++LIBXXH = libxxhash.$(SHARED_EXT_VER) ++ ++ + .PHONY: default +-default: xxhsum ++default: lib xxhsum + + .PHONY: all +-all: xxhsum xxhsum32 xxhsum_inlinedXXH ++all: lib xxhsum xxhsum32 xxhsum_inlinedXXH + + xxhsum32: CFLAGS += -m32 + xxhsum xxhsum32: xxhash.c xxhsum.c +- $(CC) $(FLAGS) $^ -o $@$(EXT) ++ $(CC) $(FLAGS) $^ -o $@$(EXT) + ln -sf $@ xxh32sum + ln -sf $@ xxh64sum + + xxhsum_inlinedXXH: xxhsum.c + $(CC) $(FLAGS) -DXXH_PRIVATE_API $^ -o $@$(EXT) + ++ ++# library ++ ++libxxhash.a: ARFLAGS = rcs ++libxxhash.a: xxhash.o ++ @echo compiling static library ++ @$(AR) $(ARFLAGS) $@ $^ ++ ++$(LIBXXH): LDFLAGS += -shared -fPIC ++$(LIBXXH): xxhash.c ++ @echo compiling dynamic library $(LIBVER) ++ @$(CC) $(FLAGS) $^ $(LDFLAGS) $(SONAME_FLAGS) -o $@ ++ @echo creating versioned links ++ @ln -sf $@ libxxhash.$(SHARED_EXT_MAJOR) ++ @ln -sf $@ libxxhash.$(SHARED_EXT) ++ ++libxxhash : $(LIBXXH) ++ ++lib: libxxhash.a libxxhash ++ ++ ++# tests ++ + .PHONY: test + test: xxhsum + # stdin +@@ -154,7 +197,8 @@ test-all: clean all namespaceTest test test32 test-xxhsum-c clean-xxhsum-c \ + armtest clangtest gpptest c90test test-mem usan staticAnalyze + + clean: clean-xxhsum-c +- @$(RM) -f core *.o xxhsum$(EXT) xxhsum32$(EXT) xxhsum_inlinedXXH$(EXT) xxh32sum xxh64sum ++ @$(RM) core *.o libxxhash.* ++ @$(RM) xxhsum$(EXT) xxhsum32$(EXT) xxhsum_inlinedXXH$(EXT) xxh32sum xxh64sum + @echo cleaning completed + + +@@ -170,6 +214,10 @@ DESTDIR ?= + prefix ?= /usr/local + PREFIX ?= $(prefix) + exec_prefix ?= $(PREFIX) ++libdir ?= $(exec_prefix)/lib ++LIBDIR ?= $(libdir) ++includedir ?= $(PREFIX)/include ++INCLUDEDIR ?= $(includedir) + bindir ?= $(exec_prefix)/bin + BINDIR ?= $(bindir) + datarootdir ?= $(PREFIX)/share +@@ -193,8 +241,15 @@ INSTALL_DATA ?= $(INSTALL) -m 644 + + + .PHONY: install +-install: xxhsum +- @echo Installing binaries ++install: lib xxhsum ++ @echo Installing libxxhash ++ @$(INSTALL_DATA) libxxhash.a $(DESTDIR)$(LIBDIR) ++ @$(INSTALL_PROGRAM) $(LIBXXH) $(DESTDIR)$(LIBDIR) ++ @ln -sf $(LIBXXH) $(DESTDIR)$(LIBDIR)/libxxhash.$(SHARED_EXT_MAJOR) ++ @ln -sf $(LIBXXH) $(DESTDIR)$(LIBDIR)/libxxhash.$(SHARED_EXT) ++ @$(INSTALL) -d -m 755 $(DESTDIR)$(INCLUDEDIR) # includes ++ @$(INSTALL_DATA) xxhash.h $(DESTDIR)$(INCLUDEDIR) ++ @echo Installing xxhsum + @$(INSTALL) -d -m 755 $(DESTDIR)$(BINDIR)/ $(DESTDIR)$(MANDIR)/ + @$(INSTALL_PROGRAM) xxhsum $(DESTDIR)$(BINDIR)/xxhsum + @ln -sf xxhsum $(DESTDIR)$(BINDIR)/xxh32sum +@@ -203,16 +258,21 @@ install: xxhsum + @$(INSTALL_DATA) xxhsum.1 $(DESTDIR)$(MANDIR)/xxhsum.1 + @ln -sf xxhsum.1 $(DESTDIR)$(MANDIR)/xxh32sum.1 + @ln -sf xxhsum.1 $(DESTDIR)$(MANDIR)/xxh64sum.1 +- @echo xxhsum installation completed ++ @echo xxhash installation completed + + .PHONY: uninstall + uninstall: +- $(RM) $(DESTDIR)$(BINDIR)/xxh32sum +- $(RM) $(DESTDIR)$(BINDIR)/xxh64sum +- $(RM) $(DESTDIR)$(BINDIR)/xxhsum +- $(RM) $(DESTDIR)$(MANDIR)/xxh32sum.1 +- $(RM) $(DESTDIR)$(MANDIR)/xxh64sum.1 +- $(RM) $(DESTDIR)$(MANDIR)/xxhsum.1 ++ @$(RM) $(DESTDIR)$(LIBDIR)/libxxhash.a ++ @$(RM) $(DESTDIR)$(LIBDIR)/libxxhash.$(SHARED_EXT) ++ @$(RM) $(DESTDIR)$(LIBDIR)/libxxhash.$(SHARED_EXT_MAJOR) ++ @$(RM) $(DESTDIR)$(LIBDIR)/$(LIBXXH) ++ @$(RM) $(DESTDIR)$(INCLUDEDIR)/xxhash.h ++ @$(RM) $(DESTDIR)$(BINDIR)/xxh32sum ++ @$(RM) $(DESTDIR)$(BINDIR)/xxh64sum ++ @$(RM) $(DESTDIR)$(BINDIR)/xxhsum ++ @$(RM) $(DESTDIR)$(MANDIR)/xxh32sum.1 ++ @$(RM) $(DESTDIR)$(MANDIR)/xxh64sum.1 ++ @$(RM) $(DESTDIR)$(MANDIR)/xxhsum.1 + @echo xxhsum successfully uninstalled + + endif diff --git a/xxhash-libdir.patch b/xxhash-libdir.patch new file mode 100644 index 0000000..ed0bc12 --- /dev/null +++ b/xxhash-libdir.patch @@ -0,0 +1,24 @@ +From 7080470ed35aa1450c2b3b52320778e41bc7d3a3 Mon Sep 17 00:00:00 2001 +From: Mattias Ellert +Date: Wed, 18 Oct 2017 10:25:54 +0200 +Subject: [PATCH] Create library directory before installing files in it + +--- + Makefile | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Makefile b/Makefile +index 845e892..c352b51 100644 +--- a/Makefile ++++ b/Makefile +@@ -248,6 +248,7 @@ INSTALL_DATA ?= $(INSTALL) -m 644 + .PHONY: install + install: lib xxhsum + @echo Installing libxxhash ++ @$(INSTALL) -d -m 755 $(DESTDIR)$(LIBDIR) + @$(INSTALL_DATA) libxxhash.a $(DESTDIR)$(LIBDIR) + @$(INSTALL_PROGRAM) $(LIBXXH) $(DESTDIR)$(LIBDIR) + @ln -sf $(LIBXXH) $(DESTDIR)$(LIBDIR)/libxxhash.$(SHARED_EXT_MAJOR) +-- +2.13.6 + diff --git a/xxhash.spec b/xxhash.spec new file mode 100644 index 0000000..417d68d --- /dev/null +++ b/xxhash.spec @@ -0,0 +1,82 @@ +Name: xxhash +Version: 0.6.3 +Release: 2%{?dist} +Summary: Extremely fast hash algorithm + +# The source for the library (xxhash.c and xxhash.h) is BSD +# The source for the command line tool (xxhsum.c) is GPLv2+ +License: BSD and GPLv2+ +URL: http://www.xxhash.com/ +Source0: https://github.com/Cyan4973/xxHash/archive/v%{version}/%{name}-%{version}.tar.gz +# Build library - backport from upstream git (commit bc32865) +Patch0: %{name}-lib.patch +# Create libdir - backport from upstream git (commit 7080470) +Patch1: %{name}-libdir.patch + +%description +xxHash is an Extremely fast Hash algorithm, running at RAM speed +limits. It successfully completes the SMHasher test suite which +evaluates collision, dispersion and randomness qualities of hash +functions. Code is highly portable, and hashes are identical on all +platforms (little / big endian). + +%package libs +Summary: Extremely fast hash algorithm - library +License: BSD + +%description libs +xxHash is an Extremely fast Hash algorithm, running at RAM speed +limits. It successfully completes the SMHasher test suite which +evaluates collision, dispersion and randomness qualities of hash +functions. Code is highly portable, and hashes are identical on all +platforms (little / big endian). + +%package devel +Summary: Extremely fast hash algorithm - development files +License: BSD +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description devel +Development files for the xxhash library + +%prep +%setup -q -n xxHash-%{version} +%patch0 -p1 +%patch1 -p1 + +%build +make %{?_smp_mflags} CFLAGS="%{optflags}" MOREFLAGS="%{?__global_ldflags}" + +%install +make install DESTDIR=%{buildroot} PREFIX=%{_prefix} LIBDIR=%{_libdir} +rm %{buildroot}/%{_libdir}/libxxhash.a + +%check +make test +make test-xxhsum-c + +%post libs -p /sbin/ldconfig +%postun libs -p /sbin/ldconfig + +%files +%{_bindir}/xxh*sum +%{_mandir}/man1/xxh*sum.1* +%license LICENSE +%doc README.md + +%files libs +%{_libdir}/libxxhash.so.* +%license LICENSE +%doc README.md + +%files devel +%{_includedir}/xxhash.h +%{_libdir}/libxxhash.so + +%changelog +* Thu Oct 19 2017 Mattias Ellert - 0.6.3-2 +- Correct License tag (command line tool is GPLv2+) +- Adjust Source tag to get a more descriptive tarfile name + +* Wed Oct 18 2017 Mattias Ellert - 0.6.3-1 +- Initial packaging