Merge pull request #113349 from astro/hdfview

This commit is contained in:
Sandro 2021-02-17 23:32:28 +01:00 committed by GitHub
commit 0c2cdb13d0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 59 additions and 60 deletions

View File

@ -4,11 +4,15 @@
, fixDarwinDylibNames
, cmake
, libjpeg
, uselibtirpc ? stdenv.isLinux
, libtirpc
, zlib
, szip ? null
, javaSupport ? false
, jdk
}:
let uselibtirpc = stdenv.isLinux;
let
javabase = "${jdk}/jre/lib/${jdk.architecture}";
in
stdenv.mkDerivation rec {
pname = "hdf";
@ -52,9 +56,9 @@ stdenv.mkDerivation rec {
libjpeg
szip
zlib
] ++ lib.optionals uselibtirpc [
libtirpc
];
]
++ lib.optional javaSupport jdk
++ lib.optional uselibtirpc libtirpc;
preConfigure = lib.optionalString uselibtirpc ''
# Make tirpc discovery work with CMAKE_PREFIX_PATH
@ -75,6 +79,11 @@ stdenv.mkDerivation rec {
"-DHDF4_ENABLE_Z_LIB_SUPPORT=ON"
"-DHDF4_BUILD_FORTRAN=OFF"
"-DJPEG_DIR=${libjpeg}"
] ++ lib.optionals javaSupport [
"-DHDF4_BUILD_JAVA=ON"
"-DJAVA_HOME=${jdk}"
"-DJAVA_AWT_LIBRARY=${javabase}/libawt.so"
"-DJAVA_JVM_LIBRARY=${javabase}/server/libjvm.so"
] ++ lib.optionals (szip != null) [
"-DHDF4_ENABLE_SZIP_ENCODING=ON"
"-DHDF4_ENABLE_SZIP_SUPPORT=ON"

View File

@ -8,6 +8,8 @@
, mpiSupport ? false
, mpi
, enableShared ? !stdenv.hostPlatform.isStatic
, javaSupport ? false
, jdk
}:
# cpp and mpi options are mutually exclusive
@ -17,11 +19,11 @@ assert !cpp || !mpiSupport;
let inherit (lib) optional optionals; in
stdenv.mkDerivation rec {
version = "1.10.6";
version = "1.10.7";
pname = "hdf5";
src = fetchurl {
url = "https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/${pname}-${version}/src/${pname}-${version}.tar.bz2";
sha256 = "1gf38x51128hn00744358w27xgzjk0ff4wra4yxh2lk804ck1mh9";
sha256 = "0pm5xxry55i0h7wmvc7svzdaa90rnk7h78rrjmnlkz2ygsn8y082";
};
passthru = {
@ -35,7 +37,8 @@ stdenv.mkDerivation rec {
buildInputs = []
++ optional (gfortran != null) gfortran
++ optional (szip != null) szip;
++ optional (szip != null) szip
++ optional javaSupport jdk;
propagatedBuildInputs = []
++ optional (zlib != null) zlib
@ -46,7 +49,8 @@ stdenv.mkDerivation rec {
++ optional (gfortran != null) "--enable-fortran"
++ optional (szip != null) "--with-szlib=${szip}"
++ optionals mpiSupport ["--enable-parallel" "CC=${mpi}/bin/mpicc"]
++ optional enableShared "--enable-shared";
++ optional enableShared "--enable-shared"
++ optional javaSupport "--enable-java";
patches = [
./bin-mv.patch

View File

@ -1,27 +0,0 @@
{ lib, stdenv, fetchurl, cmake, javac }:
stdenv.mkDerivation rec {
pname = "hdf-java";
version = "3.3.2";
src = fetchurl {
url = "http://www.hdfgroup.org/ftp/HDF5/releases/HDF-JAVA/hdfjni-${version}/src/CMake-hdfjava-${version}.tar.gz";
sha256 = "0m1gp2aspcblqzmpqbdpfp6giskws85ds6p5gz8sx7asyp7wznpr";
};
nativeBuildInputs = [ cmake javac ];
dontConfigure = true;
buildPhase = "./build-hdfjava-unix.sh";
installPhase = ''
mkdir -p $out
cp -r build/_CPack_Packages/Linux/TGZ/HDFJava-3.3.2-Linux/HDF_Group/HDFJava/${version}/* $out/
'';
meta = {
description = "A Java package that implements HDF4 and HDF5 data objects in an object-oriented form";
license = lib.licenses.free; # BSD-like
homepage = "https://support.hdfgroup.org/products/java/index.html";
platforms = lib.platforms.linux;
};
}

View File

@ -1,39 +1,58 @@
{ lib, stdenv, fetchurl, ant, javac, hdf_java }:
{ lib, stdenv, fetchurl, ant, jdk, nettools, hdf4, hdf5, makeDesktopItem, copyDesktopItems }:
stdenv.mkDerivation rec {
pname = "hdfview";
version = "2.14";
version = "3.1.2";
src = fetchurl {
url = "https://support.hdfgroup.org/ftp/HDF5/hdf-java/current/src/${pname}-${version}.tar.gz";
sha256 = "0lv9djfm7hnp14mcyzbiax3xjb8vkbzhh7bdl6cvgy53pc08784p";
url = "https://support.hdfgroup.org/ftp/HDF5/releases/HDF-JAVA/${pname}-${version}/src/${pname}-${version}.tar.gz";
sha256 = "0kyw9i3f817z71l0ak7shl0wqxasz9h5fl05mklyapa7cj27637c";
};
nativeBuildInputs = [ ant javac ];
nativeBuildInputs = [
ant jdk
nettools # "hostname" required
copyDesktopItems
];
HDFLIBS = hdf_java;
HDFLIBS = (hdf4.override { javaSupport = true; }).out;
HDF5LIBS = (hdf5.override { javaSupport = true; }).out;
buildPhase = ''
ant run
ant package
runHook preBuild
ant createJPackage
runHook postBuild
'';
desktopItem = makeDesktopItem rec {
name = "HDFView";
desktopName = name;
exec = name;
icon = name;
comment = meta.description;
categories = "Science;DataVisualization;";
};
installPhase = ''
mkdir $out
# exclude jre
cp -r build/HDF_Group/HDFView/*/{lib,share} $out/
mkdir $out/bin
cp -r build/HDF_Group/HDFView/*/hdfview.sh $out/bin/hdfview
chmod +x $out/bin/hdfview
substituteInPlace $out/bin/hdfview \
--replace "@JAVABIN@" "${javac}/bin/" \
--replace "@INSTALLDIR@" "$out"
runHook preInstall
mkdir -p $out/bin $out/lib
cp -a build/dist/HDFView/bin/HDFView $out/bin/
cp -a build/dist/HDFView/lib/app $out/lib/
ln -s ${jdk}/lib/openjdk $out/lib/runtime
mkdir -p $out/share/applications $out/share/icons/hicolor/32x32/apps
cp src/HDFView.png $out/share/icons/hicolor/32x32/apps/
runHook postInstall
'';
meta = {
description = "A visual tool for browsing and editing HDF4 and HDF5 files";
license = lib.licenses.free; # BSD-like
homepage = "https://support.hdfgroup.org/products/java/index.html";
homepage = "https://portal.hdfgroup.org/display/HDFVIEW/HDFView";
platforms = lib.platforms.linux;
};
}

View File

@ -5109,13 +5109,7 @@ in
hdf5-blosc = callPackage ../development/libraries/hdf5-blosc { };
hdfview = callPackage ../tools/misc/hdfview {
javac = jdk8; # TODO: https://github.com/NixOS/nixpkgs/pull/89731
};
hdf_java = callPackage ../tools/misc/hdfjava {
javac = jdk8; # TODO: https://github.com/NixOS/nixpkgs/pull/89731
};
hdfview = callPackage ../tools/misc/hdfview { };
hecate = callPackage ../applications/editors/hecate { };