File blosc.spec of Package blosc

#
# spec file for package blosc
#
# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via http://bugs.opensuse.org/
#


Name:           blosc
Version:        1.6.1
Release:        0
%define major   1
%define libname lib%{name}%{major}
Summary:        A blocking, shuffling and lossless compression library
License:        MIT and BSD-3-Clause and BSD-2-Clause
Group:          System/Libraries
Url:            http://www.blosc.org/
# NOTE: you MUST rename the source to "v%{version}.tar.gz" or the source validator won't work
# github is weird because it renames files when you try to download them
Source:         https://github.com/Blosc/c-blosc/archive/v%{version}.tar.gz 
BuildRequires:  cmake
BuildRequires:  gcc-c++
BuildRequires:  snappy-devel
BuildRequires:  zlib-devel
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
Patch1:         0001-Fix-cmake-system-check.patch
Patch2:         0002-Fix-compilation-on-unknown-archs.patch

%description
Blosc is a high performance compressor optimized for binary data.
It has been designed to transmit data to the processor cache faster 
than the traditional, non-compressed, direct memory fetch approach via
a memcpy() OS call. Blosc is the first compressor (that I'm aware of) 
that is meant not only to reduce the size of large datasets on-disk or
in-memory, but also to accelerate memory-bound computations.

It uses the blocking technique to reduce activity on the memory bus as
much as possible. In short, this technique works by dividing datasets 
in blocks that are small enough to fit in caches  of modern processors
and perform compression / decompression there. It also leverages, if
available, SIMD instructions (SSE2) and  ulti-threading capabilities 
of CPUs, in order to accelerate the  compression / decompression 
process to a maximum.

Blosc is actually a metacompressor, that meaning that it can use a 
range of compression libraries for performing the actual 
compression/decompression. Right now, it comes with integrated support 
for BloscLZ (the original one), LZ4, LZ4HC, Snappy and Zlib. Blosc
comes with full sources for all compressors, so in case it does not 
find the libraries installed in your system, it will compile from 
the included sources and they will be integrated into the Blosc 
library anyway. That means that you can trust in having all supported 
compressors integrated in Blosc in all supported platforms.

%package -n %{libname}
Summary:        A blocking, shuffling and lossless compression library
Group:          System/Libraries

%description -n %{libname}
Blosc is a high performance compressor optimized for binary data.
It has been designed to transmit data to the processor cache faster 
than the traditional, non-compressed, direct memory fetch approach via
a memcpy() OS call. Blosc is the first compressor (that I'm aware of) 
that is meant not only to reduce the size of large datasets on-disk or
in-memory, but also to accelerate memory-bound computations.

It uses the blocking technique to reduce activity on the memory bus as
much as possible. In short, this technique works by dividing datasets 
in blocks that are small enough to fit in caches  of modern processors
and perform compression / decompression there. It also leverages, if
available, SIMD instructions (SSE2) and  ulti-threading capabilities 
of CPUs, in order to accelerate the  compression / decompression 
process to a maximum.

Blosc is actually a metacompressor, that meaning that it can use a 
range of compression libraries for performing the actual 
compression/decompression. Right now, it comes with integrated support 
for BloscLZ (the original one), LZ4, LZ4HC, Snappy and Zlib. Blosc
comes with full sources for all compressors, so in case it does not 
find the libraries installed in your system, it will compile from 
the included sources and they will be integrated into the Blosc 
library anyway. That means that you can trust in having all supported 
compressors integrated in Blosc in all supported platforms.

%package devel
Summary:        Development libraries for %{libname}
Group:          Development/Libraries/C and C++
Requires:       %{libname} = %{version}

%description devel
This package provides development libraries and headers 
for %{libname}

%prep
%setup -q -n c-blosc-%{version}
%patch1	-p1
%patch2	-p1

%build
mkdir -p build
pushd build
cmake -DCMAKE_INSTALL_PREFIX=%{_prefix} \
%if "%{_lib}" == "lib64"
      -DLIB_SUFFIX=64 \
%endif
      -DCMAKE_C_FLAGS="%{optflags}" \
      -DCMAKE_CXX_FLAGS="%{optflags}" \
	  -DCMAKE_BUILD_TYPE=RelWithDebInfo \
      ..
make %{?_smp_mflags}
popd

%install
pushd build
%makeinstall
rm -rf %{buildroot}%{_libdir}/libblosc.a

%check
pushd build
make test
popd

%post -n %{libname} -p /sbin/ldconfig

%postun -n %{libname} -p /sbin/ldconfig

%files -n %{libname}
%defattr(-,root,root,-)
%doc ANNOUNCE.rst README.rst README_HEADER.rst README_THREADED.rst LICENSES/*.txt RELEASE_NOTES.rst
%{_libdir}/libblosc.so.%{major}
%{_libdir}/libblosc.so.%{version}

%files devel
%defattr(-,root,root,-)
%{_includedir}/blosc.h
%{_libdir}/libblosc.so

%changelog
openSUSE Build Service is sponsored by