Unverified Commit faf7b384 authored by Sandro Jäckel's avatar Sandro Jäckel Committed by GitHub
Browse files

Merge pull request #314081 from afh/update-medfile

medfile: 4.1.1 -> 5.0.0, fix darwin build and refactoring
parents 2036ad5f 76810d17
Loading
Loading
Loading
Loading
+30 −10
Original line number Diff line number Diff line
{ 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;
  };
}
})
+0 −86
Original line number Diff line number Diff line
--- 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 ) ) {