about summary refs log tree commit diff
path: root/pkgs/development/libraries
diff options
context:
space:
mode:
authorSandro <sandro.jaeckel@gmail.com>2024-06-10 01:59:05 +0200
committerGitHub <noreply@github.com>2024-06-10 01:59:05 +0200
commitfaf7b38491253a36737a7c3e0ac4b67e4371bc1a (patch)
treee6e1e5c831d8c1b947910d072044a0ba0ae19541 /pkgs/development/libraries
parent2036ad5f8094dbf92ca1630171d796c6d70c6e93 (diff)
parent76810d17760c39f16edf4328679b57754c71eb30 (diff)
Merge pull request #314081 from afh/update-medfile
medfile: 4.1.1 -> 5.0.0, fix darwin build and refactoring
Diffstat (limited to 'pkgs/development/libraries')
-rw-r--r--pkgs/development/libraries/medfile/default.nix40
-rw-r--r--pkgs/development/libraries/medfile/hdf5-1.14.patch86
2 files changed, 30 insertions, 96 deletions
diff --git a/pkgs/development/libraries/medfile/default.nix b/pkgs/development/libraries/medfile/default.nix
index 9593781f2270e..8c07b2aad31a1 100644
--- a/pkgs/development/libraries/medfile/default.nix
+++ b/pkgs/development/libraries/medfile/default.nix
@@ -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;
   };
-}
+})
diff --git a/pkgs/development/libraries/medfile/hdf5-1.14.patch b/pkgs/development/libraries/medfile/hdf5-1.14.patch
deleted file mode 100644
index 294e87c023a7a..0000000000000
--- a/pkgs/development/libraries/medfile/hdf5-1.14.patch
+++ /dev/null
@@ -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 ) ) {