From 693a4f85a33cbb7d9728aae2da56a913a72c330c Mon Sep 17 00:00:00 2001 From: Philipp Middendorf Date: Fri, 19 Apr 2024 15:10:02 +0200 Subject: crystfel: 0.10.2 -> 0.11.0 --- .../science/physics/crystfel/default.nix | 50 +++++++++++++++------- .../science/physics/crystfel/gui-path-issue.patch | 27 ++++++++++++ .../link-to-argp-standalone-if-needed.patch | 18 ++++---- 3 files changed, 70 insertions(+), 25 deletions(-) create mode 100644 pkgs/applications/science/physics/crystfel/gui-path-issue.patch (limited to 'pkgs/applications/science') diff --git a/pkgs/applications/science/physics/crystfel/default.nix b/pkgs/applications/science/physics/crystfel/default.nix index 92b48ec863091..33f2043603177 100644 --- a/pkgs/applications/science/physics/crystfel/default.nix +++ b/pkgs/applications/science/physics/crystfel/default.nix @@ -6,15 +6,16 @@ , fetchzip , cmake , lz4 +, gfortran , bzip2 -, m4 , hdf5 , gsl , unzip , makeWrapper +, zlib , meson -, git , ninja +, pandoc , eigen , pkg-config , wrapGAppsHook @@ -40,7 +41,7 @@ let pname = "libccp4"; version = "8.0.0"; src = fetchurl { - url = "https://ftp.ccp4.ac.uk/opensource/${pname}-${version}.tar.gz"; + url = "https://ftp.ccp4.ac.uk/opensource/libccp4-${version}.tar.gz"; hash = "sha256-y4E66GYSoIZjKd6rfO6W6sVz2BvlskA0HUD5rVMi/y0="; }; nativeBuildInputs = [ meson ninja ]; @@ -87,7 +88,7 @@ let }; mosflmBinary = if stdenv.isDarwin then "bin/mosflm" else "mosflm-linux-64-noX11"; in - stdenv.mkDerivation rec { + stdenv.mkDerivation { pname = "mosflm"; inherit version src; @@ -111,7 +112,7 @@ let pname = "xgandalf"; version = "c6c5003ff1086e8c0fb5313660b4f02f3a3aab7b"; src = fetchurl { - url = "https://gitlab.desy.de/thomas.white/${pname}/-/archive/${version}/${pname}-${version}.tar.gz"; + url = "https://gitlab.desy.de/thomas.white/xgandalf/-/archive/${version}/xgandalf-${version}.tar.gz"; hash = "sha256-/uZlBwAINSoYqgLQFTMz8rS1Rpadu79JkO6Bu/+Nx9E="; }; @@ -121,10 +122,10 @@ let pinkIndexer = stdenv.mkDerivation rec { pname = "pinkindexer"; - version = "5d4e016941eb2a9e50a10df96ded7ff1e2464503"; + version = "15caa21191e27e989b750b29566e4379bc5cd21a"; src = fetchurl { url = "https://gitlab.desy.de/thomas.white/${pname}/-/archive/${version}/${pname}-${version}.tar.gz"; - hash = "sha256-VnJOJJ247dNoBlos4Fu3GQBlAnTk9el+yZDRiicJtu0="; + hash = "sha256-v/SCJiHAV05Lc905y/dE8uBXlW+lLX9wau4XORYdbQg="; }; nativeBuildInputs = [ meson pkg-config ninja ]; @@ -169,13 +170,27 @@ let "-DENABLE_BZIP2_PLUGIN=yes" ]; }; + + millepede-ii = stdenv.mkDerivation rec { + pname = "millepede-ii"; + version = "04-13-06"; + src = fetchurl { + url = "https://gitlab.desy.de/claus.kleinwort/millepede-ii/-/archive/V${version}/millepede-ii-V${version}.tar.gz"; + hash = "sha256-aFoo8AGBsUEN2u3AmnSpTqJ6JeNV6j9vkAFTZ34I+sI="; + }; + + nativeBuildInputs = [ gfortran ]; + buildInputs = [ zlib ]; + + makeFlags = [ "PREFIX=$(out)" ]; + }; in stdenv.mkDerivation rec { pname = "crystfel"; - version = "0.10.2"; + version = "0.11.0"; src = fetchurl { - url = "https://www.desy.de/~twhite/${pname}/${pname}-${version}.tar.gz"; - sha256 = "sha256-nCO9ndDKS54bVN9IhFBiCVNzqk7BsCljXFrOmlx+sP4="; + url = "https://www.desy.de/~twhite/crystfel/crystfel-${version}.tar.gz"; + sha256 = "sha256-ogNHWYfbxRmB5TdK8K0JpcCnYOOyXapQGSPh8mfp+Tc="; }; nativeBuildInputs = [ meson pkg-config ninja flex bison doxygen opencl-headers makeWrapper ] ++ lib.optionals withGui [ wrapGAppsHook ]; @@ -192,6 +207,7 @@ stdenv.mkDerivation rec { mosflm pinkIndexer xgandalf + pandoc ] ++ lib.optionals withGui [ gtk3 gdk-pixbuf ] ++ lib.optionals stdenv.isDarwin [ argp-standalone @@ -201,12 +217,12 @@ stdenv.mkDerivation rec { ++ lib.optionals withBitshuffle [ hdf5-external-filter-plugins ]; patches = [ + # on darwin at least, we need to link to a separate argp library; + # this patch adds a test for this and the necessary linker options ./link-to-argp-standalone-if-needed.patch - ./disable-fmemopen-on-aarch64-darwin.patch - (fetchpatch { - url = "https://gitlab.desy.de/thomas.white/crystfel/-/commit/3c54d59e1c13aaae716845fed2585770c3ca9d14.diff"; - hash = "sha256-oaJNBQQn0c+z4p1pnW4osRJA2KdKiz4hWu7uzoKY7wc="; - }) + # hotfix for an issue that occurs (at least) on NixOS: + # if the temporary path is too long, we get a segfault + ./gui-path-issue.patch ]; # CrystFEL calls mosflm by searching PATH for it. We could've create a wrapper script that sets the PATH, but @@ -218,7 +234,9 @@ stdenv.mkDerivation rec { postInstall = lib.optionalString withBitshuffle '' for file in $out/bin/*; do - wrapProgram $file --set HDF5_PLUGIN_PATH ${hdf5-external-filter-plugins}/lib/plugins + wrapProgram $file \ + --set HDF5_PLUGIN_PATH ${hdf5-external-filter-plugins}/lib/plugins \ + --prefix PATH ":" ${lib.makeBinPath [ millepede-ii ]} done ''; diff --git a/pkgs/applications/science/physics/crystfel/gui-path-issue.patch b/pkgs/applications/science/physics/crystfel/gui-path-issue.patch new file mode 100644 index 0000000000000..28cd0280e8f67 --- /dev/null +++ b/pkgs/applications/science/physics/crystfel/gui-path-issue.patch @@ -0,0 +1,27 @@ +diff --git a/src/gui_index.c b/src/gui_index.c +index 2cc8e8db..13be77d5 100644 +--- a/src/gui_index.c ++++ b/src/gui_index.c +@@ -540,6 +540,7 @@ static void delete_gui_tempdir(char *tmpdir) + { + char *path; + int i; ++ size_t pathlen; + + /* List of files which it's safe to delete */ + char *files[] = {"gmon.out", "mosflm.lp", "SUMMARY", "XDS.INP", +@@ -552,11 +553,12 @@ static void delete_gui_tempdir(char *tmpdir) + + if ( tmpdir == NULL ) return; + +- path = calloc(strlen(tmpdir)+64, 1); ++ pathlen = strlen(tmpdir)+64; ++ path = calloc(pathlen, 1); + if ( path == NULL ) return; + + for ( i=0; i') +@@ -70,6 +70,12 @@ if cc.has_function('clock_gettime', prefix: '#include ') conf_data.set10('HAVE_CLOCK_GETTIME', true) endif @@ -12,15 +12,15 @@ index 59bbcfb7..dd75d4e2 100644 + argpdep = dependency('', required : false) +endif + - # ************************ libcrystfel (subdir) ************************ - - subdir('libcrystfel') -@@ -180,7 +186,7 @@ endif + if cc.has_function('sched_setaffinity', + prefix: '#include ', + args: '-D_GNU_SOURCE') +@@ -186,7 +192,7 @@ endif indexamajig = executable('indexamajig', indexamajig_sources, dependencies: [mdep, libcrystfeldep, gsldep, -- pthreaddep, zmqdep, asapodep], -+ pthreaddep, zmqdep, asapodep, argpdep], +- pthreaddep, zmqdep, asapodep, asapoproddep], ++ pthreaddep, zmqdep, asapodep, asapoproddep, argpdep], install: true, - install_rpath: '$ORIGIN/../lib64/:$ORIGIN/../lib') + install_rpath: crystfel_rpath) -- cgit 1.4.1