gnu: snappy: Update to 1.1.9.
* gnu/packages/compression.scm (snappy): Update to 1.1.9. [source]: Add another patch. [arguments]: Add new #:configure-flags and an 'unpack-third_party-subprojects phase. [native-inputs]: Add the sources for benchmark and googletests. * gnu/packages/patches/snappy-add-inline-for-GCC.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it.master
parent
c9c274172b
commit
bd1c5fe46b
|
@ -1694,6 +1694,7 @@ dist_patch_DATA = \
|
||||||
%D%/packages/patches/slim-login.patch \
|
%D%/packages/patches/slim-login.patch \
|
||||||
%D%/packages/patches/slim-display.patch \
|
%D%/packages/patches/slim-display.patch \
|
||||||
%D%/packages/patches/snappy-add-O2-flag-in-CmakeLists.txt.patch \
|
%D%/packages/patches/snappy-add-O2-flag-in-CmakeLists.txt.patch \
|
||||||
|
%D%/packages/patches/snappy-add-inline-for-GCC.patch \
|
||||||
%D%/packages/patches/sphinxbase-fix-doxygen.patch \
|
%D%/packages/patches/sphinxbase-fix-doxygen.patch \
|
||||||
%D%/packages/patches/sssd-fix-samba.patch \
|
%D%/packages/patches/sssd-fix-samba.patch \
|
||||||
%D%/packages/patches/sssd-system-directories.patch \
|
%D%/packages/patches/sssd-system-directories.patch \
|
||||||
|
|
|
@ -66,6 +66,7 @@
|
||||||
#:use-module (gnu packages autotools)
|
#:use-module (gnu packages autotools)
|
||||||
#:use-module (gnu packages backup)
|
#:use-module (gnu packages backup)
|
||||||
#:use-module (gnu packages base)
|
#:use-module (gnu packages base)
|
||||||
|
#:use-module (gnu packages benchmark)
|
||||||
#:use-module (gnu packages boost)
|
#:use-module (gnu packages boost)
|
||||||
#:use-module (gnu packages check)
|
#:use-module (gnu packages check)
|
||||||
#:use-module (gnu packages curl)
|
#:use-module (gnu packages curl)
|
||||||
|
@ -1108,7 +1109,7 @@ well as bzip2.")
|
||||||
(define-public snappy
|
(define-public snappy
|
||||||
(package
|
(package
|
||||||
(name "snappy")
|
(name "snappy")
|
||||||
(version "1.1.8")
|
(version "1.1.9")
|
||||||
(source
|
(source
|
||||||
(origin
|
(origin
|
||||||
(method git-fetch)
|
(method git-fetch)
|
||||||
|
@ -1117,11 +1118,35 @@ well as bzip2.")
|
||||||
(commit version)))
|
(commit version)))
|
||||||
(file-name (git-file-name name version))
|
(file-name (git-file-name name version))
|
||||||
(sha256
|
(sha256
|
||||||
(base32 "1j0kslq2dvxgkcxl1gakhvsa731yrcvcaipcp5k8k7ayicvkv9jv"))
|
(base32 "03zz56h79z0sgvi5sangjqn9dahhzvf645v26n1y0gwmfbmsax95"))
|
||||||
(patches (search-patches "snappy-add-O2-flag-in-CmakeLists.txt.patch"))))
|
(patches
|
||||||
|
(search-patches "snappy-add-O2-flag-in-CmakeLists.txt.patch"
|
||||||
|
"snappy-add-inline-for-GCC.patch"))))
|
||||||
(build-system cmake-build-system)
|
(build-system cmake-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
`(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")))
|
`(#:configure-flags
|
||||||
|
(list "-DBUILD_SHARED_LIBS=ON"
|
||||||
|
;; These would be installed alongside Snappy otherwise.
|
||||||
|
"-DBENCHMARK_ENABLE_INSTALL=OFF"
|
||||||
|
"-DINSTALL_GTEST=OFF")
|
||||||
|
#:phases
|
||||||
|
(modify-phases %standard-phases
|
||||||
|
(add-after 'unpack 'unpack-third_party-subprojects
|
||||||
|
(lambda* (#:key inputs #:allow-other-keys)
|
||||||
|
(with-directory-excursion "third_party"
|
||||||
|
(for-each (lambda (subproject)
|
||||||
|
(let* ((input (string-append subproject "-source"))
|
||||||
|
(source (assoc-ref inputs input)))
|
||||||
|
(with-directory-excursion subproject
|
||||||
|
;; Take advantage of the coincidence that both
|
||||||
|
;; use GIT-FETCH, which creates a directory.
|
||||||
|
(copy-recursively source "."))))
|
||||||
|
(list "benchmark"
|
||||||
|
"googletest"))
|
||||||
|
#;punt))))))
|
||||||
|
(native-inputs
|
||||||
|
`(("benchmark-source" ,(package-source benchmark))
|
||||||
|
("googletest-source" ,(package-source googletest))))
|
||||||
(home-page "https://github.com/google/snappy")
|
(home-page "https://github.com/google/snappy")
|
||||||
(synopsis "Fast compressor/decompressor")
|
(synopsis "Fast compressor/decompressor")
|
||||||
(description "Snappy is a compression/decompression library. It does not
|
(description "Snappy is a compression/decompression library. It does not
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
From 0c716d435abe65250100c2caea0e5126ac4e14bd Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Georgi D. Sotirov" <gdsotirov@gmail.com>
|
||||||
|
Date: Wed, 5 May 2021 14:16:46 +0300
|
||||||
|
Subject: [PATCH] Add inline with SNAPPY_ATTRIBUTE_ALWAYS_INLINE
|
||||||
|
|
||||||
|
Add inline with SNAPPY_ATTRIBUTE_ALWAYS_INLINE on AdvanceToNextTag to
|
||||||
|
fix the following compilation errors and a warning with GCC:
|
||||||
|
|
||||||
|
[ 2%] Building CXX object CMakeFiles/snappy.dir/snappy.cc.o
|
||||||
|
/usr/bin/c++ -DHAVE_CONFIG_H -Dsnappy_EXPORTS
|
||||||
|
-I/tmp/snappy-1.1.9/build -I/tmp/snappy-1.1.9 -O3
|
||||||
|
-march=i586 -mtune=i686 -Wall -Wextra -fno-exceptions -fno-rtti -O3
|
||||||
|
-DNDEBUG -fPIC -std=c++11 -o CMakeFiles/snappy.dir/snappy.cc.o -c
|
||||||
|
/tmp/snappy-1.1.9/snappy.cc
|
||||||
|
/tmp/snappy-1.1.9/snappy.cc:1017:8: warning: always_inline
|
||||||
|
function might not be inlinable [-Wattributes]
|
||||||
|
size_t AdvanceToNextTag(const uint8_t** ip_p, size_t* tag) {
|
||||||
|
^
|
||||||
|
/tmp/snappy-1.1.9/snappy.cc: In function 'std::pair<const
|
||||||
|
unsigned char*, int> snappy::DecompressBranchless(const uint8_t*, const
|
||||||
|
uint8_t*, ptrdiff_t, T, ptrdiff_t) [with T = char*; uint8_t = unsigned
|
||||||
|
char; ptrdiff_t = int]':
|
||||||
|
/tmp/snappy-1.1.9/snappy.cc:1017:8: error: inlining failed in
|
||||||
|
call to always_inline 'size_t snappy::AdvanceToNextTag(const uint8_t**,
|
||||||
|
size_t*)': function body can be overwritten at link time
|
||||||
|
/tmp/snappy-1.1.9/snappy.cc:1097:53: error: called from here
|
||||||
|
size_t tag_type = AdvanceToNextTag(&ip, &tag);
|
||||||
|
^
|
||||||
|
/tmp/snappy-1.1.9/snappy.cc:1017:8: error: inlining failed in
|
||||||
|
call to always_inline 'size_t snappy::AdvanceToNextTag(const uint8_t**,
|
||||||
|
size_t*)': function body can be overwritten at link time
|
||||||
|
size_t AdvanceToNextTag(const uint8_t** ip_p, size_t* tag) {
|
||||||
|
^
|
||||||
|
/tmp/snappy-1.1.9/snappy.cc:1097:53: error: called from here
|
||||||
|
size_t tag_type = AdvanceToNextTag(&ip, &tag);
|
||||||
|
^
|
||||||
|
/tmp/snappy-1.1.9/snappy.cc:1017:8: error: inlining failed in
|
||||||
|
call to always_inline 'size_t snappy::AdvanceToNextTag(const uint8_t**,
|
||||||
|
size_t*)': function body can be overwritten at link time
|
||||||
|
size_t AdvanceToNextTag(const uint8_t** ip_p, size_t* tag) {
|
||||||
|
^
|
||||||
|
/tmp/snappy-1.1.9/snappy.cc:1097:53: error: called from here
|
||||||
|
size_t tag_type = AdvanceToNextTag(&ip, &tag);
|
||||||
|
^
|
||||||
|
CMakeFiles/snappy.dir/build.make:137: recipe for target
|
||||||
|
'CMakeFiles/snappy.dir/snappy.cc.o' failed
|
||||||
|
|
||||||
|
Just like with other functions using SNAPPY_ATTRIBUTE_ALWAYS_INLINE
|
||||||
|
macro (i.e. __attribute__((always_inline)) ) it is necessary to use C++
|
||||||
|
inline specifier.
|
||||||
|
---
|
||||||
|
snappy.cc | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/snappy.cc b/snappy.cc
|
||||||
|
index 79dc0e8..51157be 100644
|
||||||
|
--- a/snappy.cc
|
||||||
|
+++ b/snappy.cc
|
||||||
|
@@ -1014,7 +1014,7 @@ void MemMove(ptrdiff_t dst, const void* src, size_t size) {
|
||||||
|
}
|
||||||
|
|
||||||
|
SNAPPY_ATTRIBUTE_ALWAYS_INLINE
|
||||||
|
-size_t AdvanceToNextTag(const uint8_t** ip_p, size_t* tag) {
|
||||||
|
+inline size_t AdvanceToNextTag(const uint8_t** ip_p, size_t* tag) {
|
||||||
|
const uint8_t*& ip = *ip_p;
|
||||||
|
// This section is crucial for the throughput of the decompression loop.
|
||||||
|
// The latency of an iteration is fundamentally constrained by the
|
Reference in New Issue