Blame 0001-Unbundle-blosc.patch

19806e2
From d85a11d259d1fbc466d7a783b094856a08c1f0a4 Mon Sep 17 00:00:00 2001
9aff3ad
From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
9aff3ad
Date: Sat, 16 Mar 2019 00:17:41 -0400
ed06920
Subject: [PATCH 1/5] Unbundle blosc
9aff3ad
9aff3ad
Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
9aff3ad
---
ed06920
 MANIFEST.in |  1 -
ed06920
 setup.py    | 61 ++++++++++++++---------------------------------------
ed06920
 2 files changed, 16 insertions(+), 46 deletions(-)
9aff3ad
ed06920
diff --git a/MANIFEST.in b/MANIFEST.in
ed06920
index 41513ec..ef51486 100644
ed06920
--- a/MANIFEST.in
ed06920
+++ b/MANIFEST.in
ed06920
@@ -1,4 +1,3 @@
ed06920
-recursive-include c-blosc *
ed06920
 recursive-include numcodecs *.pyx
ed06920
 recursive-include numcodecs *.pxd
ed06920
 include numcodecs/tests/package_with_entrypoint-0.1.dist-info/entry_points.txt
9aff3ad
diff --git a/setup.py b/setup.py
ba5d626
index f07cf8d..e173950 100644
9aff3ad
--- a/setup.py
9aff3ad
+++ b/setup.py
ed06920
@@ -1,5 +1,8 @@
9aff3ad
 import os
ed06920
+import shlex
9aff3ad
+import subprocess
9aff3ad
 import sys
ed06920
+from collections import namedtuple
ed06920
 from glob import glob
ed06920
 
ed06920
 import cpuinfo
ed06920
@@ -46,6 +49,15 @@ def error(*msg):
9aff3ad
     print('[numcodecs]', *msg, **kwargs)
9aff3ad
 
9aff3ad
 
ed06920
+Package = namedtuple('Package', 'cflags libs')
ed06920
+
ed06920
+
9aff3ad
+def pkgconfig(name):
9aff3ad
+    cflags = os.fsdecode(subprocess.check_output(['pkg-config', '--cflags', name]))
9aff3ad
+    libs = os.fsdecode(subprocess.check_output(['pkg-config', '--libs', name]))
ed06920
+    return Package(shlex.split(cflags), shlex.split(libs))
9aff3ad
+
9aff3ad
+
9aff3ad
 def blosc_extension():
9aff3ad
     info('setting up Blosc extension')
9aff3ad
 
ed06920
@@ -53,59 +65,18 @@ def blosc_extension():
9aff3ad
     define_macros = []
9aff3ad
 
9aff3ad
     # setup blosc sources
9aff3ad
-    blosc_sources = [f for f in glob('c-blosc/blosc/*.c')
9aff3ad
-                     if 'avx2' not in f and 'sse2' not in f]
9aff3ad
-    include_dirs = [os.path.join('c-blosc', 'blosc')]
9aff3ad
-
9aff3ad
-    # add internal complibs
9aff3ad
-    blosc_sources += glob('c-blosc/internal-complibs/lz4*/*.c')
9aff3ad
-    blosc_sources += glob('c-blosc/internal-complibs/snappy*/*.cc')
9aff3ad
-    blosc_sources += glob('c-blosc/internal-complibs/zlib*/*.c')
9aff3ad
-    blosc_sources += glob('c-blosc/internal-complibs/zstd*/common/*.c')
9aff3ad
-    blosc_sources += glob('c-blosc/internal-complibs/zstd*/compress/*.c')
9aff3ad
-    blosc_sources += glob('c-blosc/internal-complibs/zstd*/decompress/*.c')
9aff3ad
-    blosc_sources += glob('c-blosc/internal-complibs/zstd*/dictBuilder/*.c')
9aff3ad
-    include_dirs += [d for d in glob('c-blosc/internal-complibs/*')
9aff3ad
-                     if os.path.isdir(d)]
9aff3ad
-    include_dirs += [d for d in glob('c-blosc/internal-complibs/*/*')
9aff3ad
-                     if os.path.isdir(d)]
8186ce8
-    include_dirs += [d for d in glob('c-blosc/internal-complibs/*/*/*')
8186ce8
-                     if os.path.isdir(d)]
9aff3ad
-    define_macros += [('HAVE_LZ4', 1),
16b8ac9
-                      # ('HAVE_SNAPPY', 1),
9aff3ad
-                      ('HAVE_ZLIB', 1),
9aff3ad
-                      ('HAVE_ZSTD', 1)]
9aff3ad
-    # define_macros += [('CYTHON_TRACE', '1')]
9aff3ad
-
9aff3ad
-    # SSE2
9aff3ad
-    if have_sse2 and not disable_sse2:
9aff3ad
-        info('compiling Blosc extension with SSE2 support')
9aff3ad
-        extra_compile_args.append('-DSHUFFLE_SSE2_ENABLED')
9aff3ad
-        blosc_sources += [f for f in glob('c-blosc/blosc/*.c') if 'sse2' in f]
9aff3ad
-        if os.name == 'nt':
9aff3ad
-            define_macros += [('__SSE2__', 1)]
9aff3ad
-    else:
9aff3ad
-        info('compiling Blosc extension without SSE2 support')
9aff3ad
-
9aff3ad
-    # AVX2
9aff3ad
-    if have_avx2 and not disable_avx2:
9aff3ad
-        info('compiling Blosc extension with AVX2 support')
9aff3ad
-        extra_compile_args.append('-DSHUFFLE_AVX2_ENABLED')
9aff3ad
-        blosc_sources += [f for f in glob('c-blosc/blosc/*.c') if 'avx2' in f]
9aff3ad
-        if os.name == 'nt':
9aff3ad
-            define_macros += [('__AVX2__', 1)]
9aff3ad
-    else:
9aff3ad
-        info('compiling Blosc extension without AVX2 support')
9aff3ad
+    blosc = pkgconfig('blosc')
ed06920
+    extra_compile_args += blosc.cflags
ed06920
 
ed06920
     sources = ['numcodecs/blosc.pyx']
9aff3ad
 
9aff3ad
     # define extension module
9aff3ad
     extensions = [
9aff3ad
         Extension('numcodecs.blosc',
9aff3ad
-                  sources=sources + blosc_sources,
9aff3ad
-                  include_dirs=include_dirs,
9aff3ad
+                  sources=sources,
9aff3ad
                   define_macros=define_macros,
9aff3ad
                   extra_compile_args=extra_compile_args,
ed06920
+                  extra_link_args=blosc.libs,
9aff3ad
                   ),
9aff3ad
     ]
9aff3ad
 
9aff3ad
-- 
19806e2
2.42.0
9aff3ad