about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/hdf5-blosc
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/hdf5-blosc')
-rw-r--r--nixpkgs/pkgs/development/libraries/hdf5-blosc/blosc_filter.pc.in13
-rw-r--r--nixpkgs/pkgs/development/libraries/hdf5-blosc/default.nix40
-rw-r--r--nixpkgs/pkgs/development/libraries/hdf5-blosc/no-external-blosc.patch26
3 files changed, 79 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/hdf5-blosc/blosc_filter.pc.in b/nixpkgs/pkgs/development/libraries/hdf5-blosc/blosc_filter.pc.in
new file mode 100644
index 000000000000..04e29515d9b1
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/hdf5-blosc/blosc_filter.pc.in
@@ -0,0 +1,13 @@
+prefix=@out@
+includedir=${prefix}/include
+libdir=${prefix}/lib
+
+Name: blosc_filter
+Description: Blosc Filter
+URL: http://blosc.org/
+Version: @version@
+Requires: \
+  blosc \
+  hdf5
+Cflags: -isystem${includedir}
+Libs: -L${libdir} -Wl,-rpath,${libdir} -lblosc_filter
diff --git a/nixpkgs/pkgs/development/libraries/hdf5-blosc/default.nix b/nixpkgs/pkgs/development/libraries/hdf5-blosc/default.nix
new file mode 100644
index 000000000000..985660ff9073
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/hdf5-blosc/default.nix
@@ -0,0 +1,40 @@
+{ lib, stdenv, c-blosc, cmake, hdf5, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "hdf5-blosc";
+  version = "1.0.0";
+
+  src = fetchFromGitHub {
+    owner = "Blosc";
+    repo = pname;
+    rev =  "v${version}";
+    sha256 = "1nj2bm1v6ymm3fmyvhbn6ih5fgdiapavlfghh1pvbmhw71cysyqs";
+  };
+
+  patches = [ ./no-external-blosc.patch ];
+
+  outputs = [ "out" "dev" "plugin" ];
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ c-blosc hdf5 ];
+
+  preConfigure = ''
+    substituteInPlace CMakeLists.txt --replace 'set(BLOSC_INSTALL_DIR "''${CMAKE_CURRENT_BINARY_DIR}/blosc")' 'set(BLOSC_INSTALL_DIR "${c-blosc}")'
+  '';
+
+  cmakeFlags = [
+    "-DPLUGIN_INSTALL_PATH=${placeholder "plugin"}/hdf5/lib/plugin"
+  ];
+
+  postInstall = ''
+    mkdir -p $out/lib/pkgconfig
+    substituteAll ${./blosc_filter.pc.in} $out/lib/pkgconfig/blosc_filter.pc
+  '';
+
+  meta = with lib; {
+    description = "Filter for HDF5 that uses the Blosc compressor";
+    homepage = "https://github.com/Blosc/hdf5-blosc";
+    license = licenses.mit;
+    maintainers = with maintainers; [ bhipple ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/libraries/hdf5-blosc/no-external-blosc.patch b/nixpkgs/pkgs/development/libraries/hdf5-blosc/no-external-blosc.patch
new file mode 100644
index 000000000000..8f2bd8579ed8
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/hdf5-blosc/no-external-blosc.patch
@@ -0,0 +1,26 @@
+--- a/CMakeLists.txt      2019-10-11 12:12:27.445417039 -0400
++++ b/CMakeLists.txt      2019-10-11 12:27:26.630691742 -0400
+@@ -22,14 +22,6 @@
+ message("BLOSC_CMAKE_ARGS='${BLOSC_CMAKE_ARGS}'")
+ message("GIT_EXECUTABLE='${GIT_EXECUTABLE}'")
+
+-ExternalProject_Add(project_blosc
+-  PREFIX ${BLOSC_PREFIX}
+-  GIT_REPOSITORY https://github.com/Blosc/c-blosc.git
+-  INSTALL_DIR ${BLOSC_INSTALL_DIR}
+-  CMAKE_ARGS ${BLOSC_CMAKE_ARGS}
+-)
+-
+-
+ # sources
+ set(SOURCES src/blosc_filter.c)
+ set(PLUGIN_SOURCES src/blosc_filter.c src/blosc_plugin.c )
+@@ -53,7 +45,6 @@
+ # add blosc libraries
+ add_library(blosc_shared SHARED IMPORTED)
+ set_property(TARGET blosc_shared PROPERTY IMPORTED_LOCATION ${BLOSC_INSTALL_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}blosc${CMAKE_SHARED_LIBRARY_SUFFIX})
+-add_dependencies(blosc_shared project_blosc)
+ include_directories(${BLOSC_INSTALL_DIR}/include)
+
+ add_library(blosc_filter_shared SHARED ${SOURCES})
+