medfile: 4.1.1 -> 5.0.0, fix darwin build and refactoring
This commit is contained in:
parent
3f284adcb5
commit
76810d1776
@ -1,19 +1,39 @@
|
||||
{ lib, stdenv, fetchurl, cmake, hdf5 }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "medfile";
|
||||
version = "4.1.1";
|
||||
version = "5.0.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://files.salome-platform.org/Salome/other/med-${version}.tar.gz";
|
||||
sha256 = "sha256-3CtdVOvwZm4/8ul0BB0qsNqQYGEyNTcCOrFl1XM4ndA=";
|
||||
url = "https://files.salome-platform.org/Salome/medfile/med-${finalAttrs.version}.tar.bz2";
|
||||
hash = "sha256-Jn520MZ+xRwQ4xmUhOwVCLqo1e2EXGKK32YFKdzno9Q=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
./hdf5-1.14.patch
|
||||
];
|
||||
outputs = [ "out" "doc" "dev" ];
|
||||
|
||||
postPatch = ''
|
||||
# Patch cmake and source files to work with hdf5
|
||||
substituteInPlace config/cmake_files/medMacros.cmake --replace-fail \
|
||||
"IF (NOT HDF_VERSION_MAJOR_REF EQUAL 1 OR NOT HDF_VERSION_MINOR_REF EQUAL 12 OR NOT HDF_VERSION_RELEASE_REF GREATER 0)" \
|
||||
"IF (HDF5_VERSION VERSION_LESS 1.12.0)"
|
||||
substituteInPlace src/*/*.c --replace-warn \
|
||||
"#if H5_VERS_MINOR > 12" \
|
||||
"#if H5_VERS_MINOR > 14"
|
||||
'' + lib.optionalString stdenv.isDarwin ''
|
||||
# Some medfile test files #define _a, which
|
||||
# breaks system header files that use _a as a function parameter
|
||||
substituteInPlace tests/c/*.c \
|
||||
--replace-warn "_a" "_A" \
|
||||
--replace-warn "_b" "_B"
|
||||
# Fix compiler errors in test files
|
||||
substituteInPlace tests/c/*.c \
|
||||
--replace-warn "med_Bool" "med_bool" \
|
||||
--replace-warn "med_Axis_type" "med_axis_type" \
|
||||
--replace-warn "med_Access_mode" "med_access_mode"
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
buildInputs = [ hdf5 ];
|
||||
|
||||
checkPhase = "make test";
|
||||
@ -22,8 +42,8 @@ stdenv.mkDerivation rec {
|
||||
|
||||
meta = with lib; {
|
||||
description = "Library to read and write MED files";
|
||||
homepage = "http://salome-platform.org/";
|
||||
platforms = platforms.linux;
|
||||
homepage = "https://salome-platform.org/";
|
||||
platforms = platforms.linux ++ platforms.darwin;
|
||||
license = licenses.lgpl3Plus;
|
||||
};
|
||||
}
|
||||
})
|
||||
|
@ -1,86 +0,0 @@
|
||||
--- a/config/cmake_files/medMacros.cmake
|
||||
+++ b/config/cmake_files/medMacros.cmake
|
||||
@@ -447,7 +447,7 @@ MACRO(MED_FIND_HDF5)
|
||||
##
|
||||
## Requires 1.10.x version
|
||||
##
|
||||
- IF (NOT HDF_VERSION_MAJOR_REF EQUAL 1 OR NOT HDF_VERSION_MINOR_REF EQUAL 10 OR NOT HDF_VERSION_RELEASE_REF GREATER 1)
|
||||
+ IF (HDF5_VERSION VERSION_LESS 1.10.2)
|
||||
MESSAGE(FATAL_ERROR "HDF5 version is ${HDF_VERSION_REF}. Only versions >= 1.10.2 are supported.")
|
||||
ENDIF()
|
||||
##
|
||||
--- a/src/ci/MEDfileCompatibility.c
|
||||
+++ b/src/ci/MEDfileCompatibility.c
|
||||
@@ -71,7 +71,7 @@ MEDfileCompatibility(const char* const filename,
|
||||
_hversionMMR=10000*_hmajeur+100*_hmineur+_hrelease;
|
||||
/* ISCRUTE(_hversionMMR); */
|
||||
/* ISCRUTE(HDF_VERSION_NUM_REF); */
|
||||
- if ( (_hversionMMR >= HDF_VERSION_NUM_REF) && (_hmineur == HDF_VERSION_MINOR_REF) ) *hdfok = MED_TRUE;
|
||||
+ if ( ((_hversionMMR >= HDF_VERSION_NUM_REF) && (_hmineur == HDF_VERSION_MINOR_REF)) || _hversionMMR > HDF_VERSION_NUM_REF ) *hdfok = MED_TRUE;
|
||||
|
||||
/* TODO : Vérifier si la version mineure HDF du fichier est supérieure
|
||||
à la version mineure de la bibliothèque HDF utilisée :
|
||||
@@ -113,7 +113,7 @@ MEDfileCompatibility(const char* const filename,
|
||||
#if MED_NUM_MAJEUR != 4
|
||||
#error "Don't forget to update the test version here when you change the major version of the library !"
|
||||
#endif
|
||||
-#if H5_VERS_MINOR > 10
|
||||
+#if H5_VERS_MINOR > 14
|
||||
#error "Don't forget to check the compatibility version of the library, depending on the internal hdf model choice !"
|
||||
#error "Cf. _MEDfileCreate ..."
|
||||
#endif
|
||||
--- a/src/hdfi/_MEDfileCreate.c
|
||||
+++ b/src/hdfi/_MEDfileCreate.c
|
||||
@@ -159,7 +159,7 @@ med_idt _MEDfileCreate(const char * const filename, const med_access_mode access
|
||||
* En HDF5-1.10.0p1 cela n'a aucun effet !
|
||||
* Un test autoconf permet de fixer un intervalle de version HDF à MED.
|
||||
*/
|
||||
-#if H5_VERS_MINOR > 10
|
||||
+#if H5_VERS_MINOR > 14
|
||||
#error "Don't forget to change the compatibility version of the library !"
|
||||
#endif
|
||||
|
||||
--- a/src/hdfi/_MEDfileOpen.c
|
||||
+++ b/src/hdfi/_MEDfileOpen.c
|
||||
@@ -72,7 +72,7 @@ med_idt _MEDfileOpen(const char * const filename,const med_access_mode accessmod
|
||||
|
||||
• The creation order tracking property, H5P_CRT_ORDER_TRACKED, has been set in the group creation property list (see H5Pset_link_creation_order).
|
||||
*/
|
||||
-#if H5_VERS_MINOR > 10
|
||||
+#if H5_VERS_MINOR > 14
|
||||
#error "Don't forget to change the compatibility version of the library !"
|
||||
#endif
|
||||
/* L'avantage de bloquer le modèle interne HDF5
|
||||
--- a/src/hdfi/_MEDmemFileOpen.c
|
||||
+++ b/src/hdfi/_MEDmemFileOpen.c
|
||||
@@ -434,7 +434,7 @@ med_idt _MEDmemFileOpen(const char * const filename, med_memfile * const memfile
|
||||
goto ERROR;
|
||||
}
|
||||
|
||||
-#if H5_VERS_MINOR > 10
|
||||
+#if H5_VERS_MINOR > 14
|
||||
#error "Don't forget to change the compatibility version of the library !"
|
||||
#endif
|
||||
if ( H5Pset_libver_bounds( _fapl, H5F_LIBVER_18, H5F_LIBVER_18) ) {
|
||||
--- a/src/hdfi/_MEDparFileCreate.c
|
||||
+++ b/src/hdfi/_MEDparFileCreate.c
|
||||
@@ -64,7 +64,7 @@ med_idt _MEDparFileCreate(const char * const filename, const med_access_mode acc
|
||||
* En HDF5-1.10.0p1 cela n'a aucun effet !
|
||||
* Un test autoconf permet de fixer un intervalle de version HDF à MED.
|
||||
*/
|
||||
-#if H5_VERS_MINOR > 10
|
||||
+#if H5_VERS_MINOR > 14
|
||||
#error "Don't forget to change the compatibility version of the library !"
|
||||
#endif
|
||||
|
||||
--- a/src/hdfi/_MEDparFileOpen.c
|
||||
+++ b/src/hdfi/_MEDparFileOpen.c
|
||||
@@ -55,7 +55,7 @@ med_idt _MEDparFileOpen(const char * const filename,const med_access_mode access
|
||||
MED_ERR_(_fid,MED_ERR_INIT,MED_ERR_PROPERTY,MED_ERR_PARALLEL_MSG);
|
||||
goto ERROR;
|
||||
}
|
||||
-#if H5_VERS_MINOR > 10
|
||||
+#if H5_VERS_MINOR > 14
|
||||
#error "Don't forget to change the compatibility version of the library !"
|
||||
#endif
|
||||
if ( H5Pset_libver_bounds( _fapl, H5F_LIBVER_18, H5F_LIBVER_18 ) ) {
|
Loading…
Reference in New Issue
Block a user