diff --git a/0001-blosc_extenion-constify-char-pointers-for-Py_BuildVa.patch b/0001-blosc_extenion-constify-char-pointers-for-Py_BuildVa.patch deleted file mode 100644 index 987e5ae..0000000 --- a/0001-blosc_extenion-constify-char-pointers-for-Py_BuildVa.patch +++ /dev/null @@ -1,69 +0,0 @@ -From b92e5f1264fb53bbaa975c15682cb2293a16508b Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Fri, 12 Jul 2019 18:40:47 +0200 -Subject: [PATCH 1/2] blosc_extenion: constify char pointers for Py_BuildValue -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This fixes warnings from the compiler: - -blosc/blosc_extension.c: In function ‘PyBlosc_compressor_list’: -blosc/blosc_extension.c:104:8: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers] - 104 | list = blosc_list_compressors(); - | ^ -blosc/blosc_extension.c: In function ‘PyBlosc_code_to_name’: -blosc/blosc_extension.c:123:40: warning: passing argument 2 of ‘blosc_compcode_to_compname’ from incompatible pointer type [-Wincompatible-pointer-types] - 123 | if (blosc_compcode_to_compname(code, &name) < 0) - | ^~~~~ - | | - | char ** -In file included from blosc/blosc_extension.c:13: -/usr/include/blosc.h:389:72: note: expected ‘const char **’ but argument is of type ‘char **’ - 389 | BLOSC_EXPORT int blosc_compcode_to_compname(int compcode, const char **compname); - | ~~~~~~~~~~~~~^~~~~~~~ -blosc/blosc_extension.c: In function ‘PyBlosc_get_clib’: -blosc/blosc_extension.c:345:8: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers] - 345 | clib = blosc_cbuffer_complib(input); - | ^ - -https://docs.python.org/3/c-api/arg.html#c.Py_BuildValue -> When memory buffers are passed as parameters to supply data to build -> objects, as for the s and s# formats, the required data is -> copied. Buffers provided by the caller are never referenced by the -> objects created by Py_BuildValue(). ---- - blosc/blosc_extension.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/blosc/blosc_extension.c b/blosc/blosc_extension.c -index 870581a217..237f2e46a7 100644 ---- a/blosc/blosc_extension.c -+++ b/blosc/blosc_extension.c -@@ -99,7 +99,7 @@ PyDoc_STRVAR(compressor_list__doc__, - static PyObject * - PyBlosc_compressor_list(PyObject *self) - { -- char *list; -+ const char *list; - - list = blosc_list_compressors(); - -@@ -115,7 +115,7 @@ static PyObject * - PyBlosc_code_to_name(PyObject *self, PyObject *args) - { - int code; -- char *name; -+ const char *name; - - if (!PyArg_ParseTuple(args, "i:code_to_name", &code)) - return NULL; -@@ -341,7 +341,7 @@ PyBlosc_get_clib(PyObject *self, PyObject *args) - { - void *input; - size_t cbytes; -- char *clib; -+ const char *clib; - - /* require Python string object, typesize, clevel and shuffle agrs */ - if (!PyArg_ParseTuple(args, "s#:get_clib", &input, &cbytes)) diff --git a/0002-setup.py-unbreak-build-on-architectures-which-don-t-.patch b/0002-setup.py-unbreak-build-on-architectures-which-don-t-.patch deleted file mode 100644 index 2c02bf4..0000000 --- a/0002-setup.py-unbreak-build-on-architectures-which-don-t-.patch +++ /dev/null @@ -1,38 +0,0 @@ -From b4bac67a4ad842c76e4ec10cbee8dac01abcfad0 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Fri, 12 Jul 2019 18:46:44 +0200 -Subject: [PATCH 2/2] setup.py: unbreak build on architectures which don't have - cpu flags - -ppc64le and s390x would fail with: -BUILDSTDERR: Traceback (most recent call last): -BUILDSTDERR: File "setup.py", line 241, in -BUILDSTDERR: if 'DISABLE_BLOSC_SSE2' not in os.environ and (cpu_info != None) and ('sse2' in cpu_info['flags']): -BUILDSTDERR: KeyError: 'flags' -BUILDSTDERR: error: Bad exit status from /var/tmp/rpm-tmp.xbprqV (%install) ---- - setup.py | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/setup.py b/setup.py -index 1d8ebe86eb..468b970588 100644 ---- a/setup.py -+++ b/setup.py -@@ -238,7 +238,7 @@ if __name__ == '__main__': - - # Guess SSE2 or AVX2 capabilities - # SSE2 -- if 'DISABLE_BLOSC_SSE2' not in os.environ and (cpu_info != None) and ('sse2' in cpu_info['flags']): -+ if 'DISABLE_BLOSC_SSE2' not in os.environ and cpu_info != None and 'sse2' in cpu_info.get('flags', {}): - print('SSE2 detected') - CFLAGS.append('-DSHUFFLE_SSE2_ENABLED') - sources += [f for f in glob('c-blosc/blosc/*.c') if 'sse2' in f] -@@ -247,7 +247,7 @@ if __name__ == '__main__': - elif os.name == 'nt': - def_macros += [('__SSE2__', 1)] - # AVX2 -- if 'DISABLE_BLOSC_AVX2' not in os.environ and (cpu_info != None) and ('avx2' in cpu_info['flags']): -+ if 'DISABLE_BLOSC_AVX2' not in os.environ and cpu_info != None and 'sse2' in cpu_info.get('flags', {}): - if os.name == 'posix': - print("AVX2 detected") - avx2_defs = { diff --git a/0003-setup.py-catch-import-error-for-cpuinfo.patch b/0003-setup.py-catch-import-error-for-cpuinfo.patch deleted file mode 100644 index f3026a5..0000000 --- a/0003-setup.py-catch-import-error-for-cpuinfo.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 8c8cf1a2a09ba8b6b02be5a69bb8cbf5ff2a4838 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Fri, 12 Jul 2019 18:54:36 +0200 -Subject: [PATCH] setup.py: catch import error for cpuinfo - -BUILDSTDERR: Traceback (most recent call last): -BUILDSTDERR: File "setup.py", line 112, in -BUILDSTDERR: import cpuinfo -BUILDSTDERR: File "/usr/lib/python3.7/site-packages/cpuinfo/__init__.py", line 7, in -BUILDSTDERR: from cpuinfo.cpuinfo import * -BUILDSTDERR: File "/usr/lib/python3.7/site-packages/cpuinfo/cpuinfo.py", line 2256, in -BUILDSTDERR: _check_arch() -BUILDSTDERR: File "/usr/lib/python3.7/site-packages/cpuinfo/cpuinfo.py", line 231, in _check_arch -BUILDSTDERR: raise Exception("py-cpuinfo currently only works on X86 and some PPC and ARM CPUs.") -BUILDSTDERR: Exception: py-cpuinfo currently only works on X86 and some PPC and ARM CPUs. ---- - setup.py | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/setup.py b/setup.py -index 468b970588..2508a94fbe 100644 ---- a/setup.py -+++ b/setup.py -@@ -109,8 +109,12 @@ if __name__ == '__main__': - with io.open('README.rst', encoding='utf-8') as f: - long_description = f.read() - -- import cpuinfo -- cpu_info = cpuinfo.get_cpu_info() -+ try: -+ import cpuinfo -+ cpu_info = cpuinfo.get_cpu_info() -+ except Exception: -+ # newer cpuinfo versions fail to import on unsupported architectures -+ cpu_info = None - - ########### Check versions ########## - def exit_with_error(message): diff --git a/0004-Read-os-release-instead-of-using-platform.linux_dist.patch b/0004-Read-os-release-instead-of-using-platform.linux_dist.patch deleted file mode 100644 index 7f58bb8..0000000 --- a/0004-Read-os-release-instead-of-using-platform.linux_dist.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 8185dc37e0c03b62268c025e7b59bb4e8644f6a1 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Sat, 13 Jul 2019 00:36:49 +0200 -Subject: [PATCH] Read os-release instead of using - platform.linux_distribution() - -The function was removed in https://bugs.python.org/issue1322 -and cannot be used in python3.8. - -There are replacements outside of the stdlib, but it doesn't seem -worth it it add a dependency on another module. Instead, a simple -parser for os-release is implemented. os-release is present on all -distros from the last few years and PRETTY_NAME gives a reliable -display name of the distro without any heuristics. ---- - blosc/toplevel.py | 18 +++++++++++++++++- - 1 file changed, 17 insertions(+), 1 deletion(-) - -diff --git a/blosc/toplevel.py b/blosc/toplevel.py -index 04ad9f0217..94cf4af910 100644 ---- a/blosc/toplevel.py -+++ b/blosc/toplevel.py -@@ -800,6 +800,20 @@ def load_tests(loader, tests, pattern): - tests.addTests(doctest.DocTestSuite()) - return tests - -+def os_release_pretty_name(): -+ for p in ('/etc/os-release', '/usr/lib/os-release'): -+ try: -+ f = open(p, 'rt') -+ for line in f: -+ name, _, value = line.rstrip().partition('=') -+ if name == 'PRETTY_NAME': -+ if len(value) >= 2 and value[0] in '"\'' and value[0] == value[-1]: -+ value = value[1:-1] -+ return value -+ except IOError: -+ pass -+ else: -+ return None - - def print_versions(): - """Print all the versions of software that python-blosc relies on.""" -@@ -815,7 +829,9 @@ def print_versions(): - (sysname, nodename, release, version, machine, processor) = platform.uname() - print("Platform: %s-%s-%s (%s)" % (sysname, release, machine, version)) - if sysname == "Linux": -- print("Linux dist: %s" % " ".join(platform.linux_distribution()[:-1])) -+ distro = os_release_pretty_name() -+ if distro: -+ print("Linux dist:", distro) - if not processor: - processor = "not recognized" - print("Processor: %s" % processor) diff --git a/0005-fix-python-3.9-compatibility.patch b/0005-fix-python-3.9-compatibility.patch deleted file mode 100644 index 3780816..0000000 --- a/0005-fix-python-3.9-compatibility.patch +++ /dev/null @@ -1,28 +0,0 @@ -diff --git a/blosc/toplevel.py b/blosc/toplevel.py -index 94cf4af..2fa2c49 100644 ---- a/blosc/toplevel.py -+++ b/blosc/toplevel.py -@@ -435,9 +435,9 @@ def compress(bytesobj, typesize=8, clevel=9, shuffle=blosc.SHUFFLE, - Examples - -------- - -- >>> import array -+ >>> import array, sys - >>> a = array.array('i', range(1000*1000)) -- >>> a_bytesobj = a.tostring() -+ >>> a_bytesobj = a.tobytes() if sys.version_info >= (3, 0, 0) else a.tostring() - >>> c_bytesobj = blosc.compress(a_bytesobj, typesize=4) - >>> len(c_bytesobj) < len(a_bytesobj) - True -@@ -574,9 +574,9 @@ def decompress(bytesobj, as_bytearray=False): - Examples - -------- - -- >>> import array -+ >>> import array, sys - >>> a = array.array('i', range(1000*1000)) -- >>> a_bytesobj = a.tostring() -+ >>> a_bytesobj = a.tobytes() if sys.version_info >= (3, 0, 0) else a.tostring() - >>> c_bytesobj = blosc.compress(a_bytesobj, typesize=4) - >>> a_bytesobj2 = blosc.decompress(c_bytesobj) - >>> a_bytesobj == a_bytesobj2 diff --git a/python-blosc.spec b/python-blosc.spec index a8ab35f..a3be367 100644 --- a/python-blosc.spec +++ b/python-blosc.spec @@ -1,20 +1,11 @@ Summary: Python wrapper for the Blosc high performance compressor Name: python-blosc -Version: 1.8.1 -Release: 9%{?dist} +Version: 1.10.2 +Release: 1%{?dist} License: MIT URL: https://github.com/Blosc/python-blosc Source0: https://github.com/Blosc/python-blosc/archive/v%{version}/blosc-%{version}.tar.gz - -# https://github.com/Blosc/python-blosc/pull/200 -Patch1: 0001-blosc_extenion-constify-char-pointers-for-Py_BuildVa.patch -Patch2: 0002-setup.py-unbreak-build-on-architectures-which-don-t-.patch -Patch3: 0003-setup.py-catch-import-error-for-cpuinfo.patch -# https://github.com/Blosc/python-blosc/pull/202 -Patch4: 0004-Read-os-release-instead-of-using-platform.linux_dist.patch -# Fix Python 3.9 compatibility -# https://github.com/Blosc/python-blosc/pull/218 -Patch5: 0005-fix-python-3.9-compatibility.patch +Source1: https://raw.githubusercontent.com/Blosc/python-blosc/f3c5e341a2504a03c225f4f1d9066ccdf4bd31dd/setup.py BuildRequires: gcc BuildRequires: blosc-devel >= 1.16.0 @@ -41,6 +32,9 @@ Requires: blosc%{_isa} >= 1.16.0 # Remove bundled copy rm cpuinfo.py +# Overwrite setup.py with the last version that does not use skbuild and cmake +cp %{SOURCE1} . + %build export BLOSC_DIR=%{_libdir}/blosc CFLAGS="%{optflags}" export DISABLE_BLOSC_AVX2=1 @@ -60,6 +54,9 @@ PYTHONPATH=%{buildroot}%{python3_sitearch} %__python3 -c 'import sys, blosc; sys %doc README.rst RELEASE_NOTES.rst %changelog +* Sat Feb 13 2021 Zbigniew Jędrzejewski-Szmek - 1.10.2-1 +- Latest version (#1783504) + * Wed Jan 27 2021 Fedora Release Engineering - 1.8.1-9 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..2508a94 --- /dev/null +++ b/setup.py @@ -0,0 +1,327 @@ +# -*- coding: utf-8 -*- +######################################################################## +# +# License: BSD 3-clause +# Created: September 22, 2010 +# Author: Francesc Alted - faltet@gmail.com +# +######################################################################## + +# flake8: noqa + +from __future__ import print_function + +import os +import platform +import re +import sys +import io + +from setuptools import Extension +from setuptools import setup +from glob import glob +from distutils.version import LooseVersion +from distutils.command.build_ext import build_ext +from distutils.errors import CompileError +from textwrap import dedent + + +class BloscExtension(Extension): + """Allows extension to carry architecture-capable flag options. + + Attributes: + avx2_def (Dict[str]: List[str]): + AVX2 support dictionary mapping Extension properties to a + list of values. If compiler is AVX2 capable, then these will + be appended onto the end of the Extension properties. + """ + + def __init__(self, *args, **kwargs): + self.avx2_defs = kwargs.pop("avx2_defs", {}) + Extension.__init__(self, *args, **kwargs) + + +class build_ext_posix_avx2(build_ext): + """build_ext customized to test for AVX2 support in posix compiler. + + This is because until distutils has actually started the build + process, we can't be certain what compiler is being used. + + If compiler supports, then the avx2_defs dictionary on any given + Extension will be used to extend the other Extension attributes. + """ + + def _test_compiler_flags(self, name, flags): + # type: (List[str]) -> Bool + """Test that a sample program can compile with given flags. + + Attr: + flags (List[str]): the flags to test + name (str): An identifier-like name to cache the results as + + Returns: + (bool): Whether the compiler accepted the flags(s) + """ + # Look to see if we have a written file to cache the result + success_file = os.path.join(self.build_temp, "_{}_present".format(name)) + fail_file = os.path.join(self.build_temp, "_{}_failed".format(name)) + if os.path.isfile(success_file): + return True + elif os.path.isfile(fail_file): + return False + # No cache file, try to run the compile + try: + # Write an empty test file + test_file = os.path.join(self.build_temp, "test_{}_empty.c".format(name)) + if not os.path.isfile(test_file): + open(test_file, "w").close() + objects = self.compiler.compile( + [test_file], output_dir=self.build_temp, extra_postargs=flags + ) + # Write a success marker so we don't need to compile again + open(success_file, 'w').close() + return True + except CompileError: + # Write a failure marker so we don't need to compile again + open(fail_file, 'w').close() + return False + finally: + pass + + def build_extensions(self): + # Verify that the compiler supports requested extra flags + if self._test_compiler_flags("avx2", ["-mavx2"]): + # Apply the AVX2 properties to each extension + for extension in self.extensions: + if hasattr(extension, "avx2_defs"): + # Extend an existing attribute with the stored values + for attr, defs in extension.avx2_defs.items(): + getattr(extension, attr).extend(defs) + else: + print("AVX2 Unsupported by compiler") + + # Call up to the superclass to do the actual build + build_ext.build_extensions(self) + + +if __name__ == '__main__': + + with io.open('README.rst', encoding='utf-8') as f: + long_description = f.read() + + try: + import cpuinfo + cpu_info = cpuinfo.get_cpu_info() + except Exception: + # newer cpuinfo versions fail to import on unsupported architectures + cpu_info = None + + ########### Check versions ########## + def exit_with_error(message): + print('ERROR: %s' % message) + sys.exit(1) + + # Check for Python + if sys.version_info[0] == 2: + if sys.version_info[1] < 7: + exit_with_error("You need Python 2.7 or greater to install blosc!") + elif sys.version_info[0] == 3: + if sys.version_info[1] < 4: + exit_with_error("You need Python 3.4 or greater to install blosc!") + else: + exit_with_error("You need Python 2.7/3.4 or greater to install blosc!") + + tests_require = ['numpy', 'psutil'] + + ########### End of checks ########## + + # Read the long_description from README.rst + with open('README.rst') as f: + long_description = f.read() + + # Blosc version + VERSION = open('VERSION').read().strip() + # Create the version.py file + open('blosc/version.py', 'w').write('__version__ = "%s"\n' % VERSION) + + # Global variables + CFLAGS = os.environ.get('CFLAGS', '').split() + LFLAGS = os.environ.get('LFLAGS', '').split() + # Allow setting the Blosc dir if installed in the system + BLOSC_DIR = os.environ.get('BLOSC_DIR', '') + + # Check for USE_CODEC environment variables + try: + INCLUDE_LZ4 = os.environ['INCLUDE_LZ4'] == '1' + except KeyError: + INCLUDE_LZ4 = True + try: + INCLUDE_SNAPPY = os.environ['INCLUDE_SNAPPY'] == '1' + except KeyError: + INCLUDE_SNAPPY = False # Snappy is disabled by default + try: + INCLUDE_ZLIB = os.environ['INCLUDE_ZLIB'] == '1' + except KeyError: + INCLUDE_ZLIB = True + try: + INCLUDE_ZSTD = os.environ['INCLUDE_ZSTD'] == '1' + except KeyError: + INCLUDE_ZSTD = True + + + # Handle --blosc=[PATH] --lflags=[FLAGS] --cflags=[FLAGS] + args = sys.argv[:] + for arg in args: + if arg.find('--blosc=') == 0: + BLOSC_DIR = os.path.expanduser(arg.split('=')[1]) + sys.argv.remove(arg) + if arg.find('--lflags=') == 0: + LFLAGS = arg.split('=')[1].split() + sys.argv.remove(arg) + if arg.find('--cflags=') == 0: + CFLAGS = arg.split('=')[1].split() + sys.argv.remove(arg) + + + # Blosc sources and headers + + # To avoid potential namespace collisions use build_clib.py for each codec + # instead of co-compiling all sources files in one setuptools.Extension object. + clibs = [] # for build_clib, libraries TO BE BUILT + + # Below are parameters for the Extension object + sources = ["blosc/blosc_extension.c"] + inc_dirs = [] + lib_dirs = [] + libs = [] # Pre-built libraries ONLY, like python36.so + def_macros = [] + builder_class = build_ext # To swap out if we have AVX capability and posix + avx2_defs = {} # Definitions to build extension with if compiler supports AVX2 + + if BLOSC_DIR != '': + # Using the Blosc library + lib_dirs += [os.path.join(BLOSC_DIR, 'lib')] + inc_dirs += [os.path.join(BLOSC_DIR, 'include')] + libs += ['blosc'] + else: + + # Configure the Extension + # Compiling everything from included C-Blosc sources + sources += [f for f in glob('c-blosc/blosc/*.c') + if 'avx2' not in f and 'sse2' not in f] + + inc_dirs += [os.path.join('c-blosc', 'blosc')] + inc_dirs += glob('c-blosc/internal-complibs/*') + + # Codecs to be built with build_clib + if INCLUDE_LZ4: + clibs.append( ('lz4', {'sources': glob('c-blosc/internal-complibs/lz4*/*.c')} ) ) + inc_dirs += glob('c-blosc/internal-complibs/lz4*') + def_macros += [('HAVE_LZ4',1)] + + # Tried and failed to compile Snappy with gcc using 'cflags' on posix + # setuptools always uses gcc instead of g++, as it only checks for the + # env var 'CC' and not 'CXX'. + if INCLUDE_SNAPPY: + clibs.append( ('snappy', {'sources': glob('c-blosc/internal-complibs/snappy*/*.cc'), + 'cflags': ['-std=c++11', '-lstdc++'] } ) ) + inc_dirs += glob('c-blosc/internal-complibs/snappy*') + def_macros += [('HAVE_SNAPPY',1)] + + if INCLUDE_ZLIB: + clibs.append( ('zlib', {'sources': glob('c-blosc/internal-complibs/zlib*/*.c')} ) ) + def_macros += [('HAVE_ZLIB',1)] + + if INCLUDE_ZSTD: + clibs.append( ('zstd', {'sources': glob('c-blosc/internal-complibs/zstd*/*/*.c'), + 'include_dirs': glob('c-blosc/internal-complibs/zstd*') + glob('c-blosc/internal-complibs/zstd*/common') } ) ) + inc_dirs += glob('c-blosc/internal-complibs/zstd*/common') + inc_dirs += glob('c-blosc/internal-complibs/zstd*') + def_macros += [('HAVE_ZSTD',1)] + + + # Guess SSE2 or AVX2 capabilities + # SSE2 + if 'DISABLE_BLOSC_SSE2' not in os.environ and cpu_info != None and 'sse2' in cpu_info.get('flags', {}): + print('SSE2 detected') + CFLAGS.append('-DSHUFFLE_SSE2_ENABLED') + sources += [f for f in glob('c-blosc/blosc/*.c') if 'sse2' in f] + if os.name == 'posix': + CFLAGS.append('-msse2') + elif os.name == 'nt': + def_macros += [('__SSE2__', 1)] + # AVX2 + if 'DISABLE_BLOSC_AVX2' not in os.environ and cpu_info != None and 'sse2' in cpu_info.get('flags', {}): + if os.name == 'posix': + print("AVX2 detected") + avx2_defs = { + "extra_compile_args": ["-DSHUFFLE_AVX2_ENABLED", "-mavx2"], + "sources": [f for f in glob("c-blosc/blosc/*.c") if "avx2" in f] + } + # The CPU supports it but the compiler might not.. + builder_class = build_ext_posix_avx2 + elif(os.name == 'nt' and + LooseVersion(platform.python_version()) >= LooseVersion('3.5.0')): + # Neither MSVC2008 for Python 2.7 or MSVC2010 for Python 3.4 have + # sufficient AVX2 support + # Since we don't rely on any special compiler capabilities, + # we don't need to rely on testing the compiler + print('AVX2 detected') + CFLAGS.append('-DSHUFFLE_AVX2_ENABLED') + sources += [f for f in glob('c-blosc/blosc/*.c') if 'avx2' in f] + def_macros += [('__AVX2__', 1)] + # TODO: AVX512 + + classifiers = dedent("""\ + Development Status :: 5 - Production/Stable + Intended Audience :: Developers + Intended Audience :: Information Technology + Intended Audience :: Science/Research + License :: OSI Approved :: BSD License + Programming Language :: Python + Programming Language :: Python :: 2.7 + Programming Language :: Python :: 3.4 + Programming Language :: Python :: 3.5 + Programming Language :: Python :: 3.6 + Programming Language :: Python :: 3.7 + Topic :: Software Development :: Libraries :: Python Modules + Topic :: System :: Archiving :: Compression + Operating System :: Microsoft :: Windows + Operating System :: Unix + """) + + setup(name = "blosc", + version = VERSION, + description = 'Blosc data compressor', + long_description = long_description, + classifiers = [c for c in classifiers.split("\n") if c], + author = 'Francesc Alted, Valentin Haenel', + author_email = 'faltet@gmail.com, valentin@haenel.co', + maintainer = 'Francesc Alted, Valentin Haenel', + maintainer_email = 'faltet@gmail.com, valentin@haenel.co', + url = 'http://github.com/blosc/python-blosc', + license = 'https://opensource.org/licenses/BSD-3-Clause', + platforms = ['any'], + libraries = clibs, + ext_modules = [ + BloscExtension( "blosc.blosc_extension", + include_dirs=inc_dirs, + define_macros=def_macros, + sources=sources, + library_dirs=lib_dirs, + libraries=libs, + extra_link_args=LFLAGS, + extra_compile_args=CFLAGS, + avx2_defs=avx2_defs + ), + ], + tests_require=tests_require, + zip_safe=False, + packages = ['blosc'], + cmdclass={'build_ext': builder_class}, + ) +elif __name__ == '__mp_main__': + # This occurs from `cpuinfo 4.0.0` using multiprocessing to interrogate the + # CPUID flags + # https://github.com/workhorsy/py-cpuinfo/issues/108 + pass diff --git a/sources b/sources index 8def156..4cadc09 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (blosc-1.8.1.tar.gz) = f8cc5b38f2bdeac6b173e800313a3b71ba5b22b681e0ca90f3cdbf2fdb2c82826d478279297ffc2c91ce36ce21367c744e12b41e37a912deb4bdf1849e7359fa +SHA512 (blosc-1.10.2.tar.gz) = c1144e5b0f25863f66100ca9cdaa0bc97a89c99dbb8f31023bbd0695d764f9847fab563059191a2c3266a347b7d39b5c156612a97e97fdefc277e1e608da87d8