|
|
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 |
|