From 76810d17760c39f16edf4328679b57754c71eb30 Mon Sep 17 00:00:00 2001 From: Alexis Hildebrandt Date: Thu, 23 May 2024 21:32:22 +0200 Subject: [PATCH] medfile: 4.1.1 -> 5.0.0, fix darwin build and refactoring --- .../development/libraries/medfile/default.nix | 40 ++++++--- .../libraries/medfile/hdf5-1.14.patch | 86 ------------------- 2 files changed, 30 insertions(+), 96 deletions(-) delete mode 100644 pkgs/development/libraries/medfile/hdf5-1.14.patch diff --git a/pkgs/development/libraries/medfile/default.nix b/pkgs/development/libraries/medfile/default.nix index 9593781f2270..8c07b2aad31a 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 294e87c023a7..000000000000 --- 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 ) ) {