From 21fcca99aa45775d927b579aedb8a50ac8370c2d Mon Sep 17 00:00:00 2001 From: Sergei Zimmerman Date: Sat, 19 Apr 2025 11:19:36 +0000 Subject: [PATCH] eztrace: 1.1-11 -> 2.1.1, fix build, adopt --- .../ez/eztrace/0001-otf2-backend-cross.patch | 27 +++++++ pkgs/by-name/ez/eztrace/package.nix | 81 ++++++++++++++----- 2 files changed, 87 insertions(+), 21 deletions(-) create mode 100644 pkgs/by-name/ez/eztrace/0001-otf2-backend-cross.patch diff --git a/pkgs/by-name/ez/eztrace/0001-otf2-backend-cross.patch b/pkgs/by-name/ez/eztrace/0001-otf2-backend-cross.patch new file mode 100644 index 000000000000..4b4dfc058204 --- /dev/null +++ b/pkgs/by-name/ez/eztrace/0001-otf2-backend-cross.patch @@ -0,0 +1,27 @@ +diff --git a/cmake_modules/FindOTF2.cmake b/cmake_modules/FindOTF2.cmake +index 2853f92a..af1f3225 100644 +--- a/cmake_modules/FindOTF2.cmake ++++ b/cmake_modules/FindOTF2.cmake +@@ -15,11 +15,11 @@ IF(NOT OTF2_CONFIG OR NOT EXISTS ${OTF2_CONFIG}) + ELSE() + message(STATUS "OTF2 installation found. (using ${OTF2_CONFIG})") + +- execute_process(COMMAND ${OTF2_CONFIG} "--cppflags" OUTPUT_VARIABLE OTF2_INCLUDE_PATH) ++ execute_process(COMMAND ${OTF2_CONFIG} "--cppflags" "--target" "backend" OUTPUT_VARIABLE OTF2_INCLUDE_PATH) + STRING(REPLACE "\n" "" OTF2_INCLUDE_PATH ${OTF2_INCLUDE_PATH}) + STRING(REPLACE "-I" "" OTF2_INCLUDE_PATH ${OTF2_INCLUDE_PATH}) + +- execute_process(COMMAND ${OTF2_CONFIG} "--ldflags" OUTPUT_VARIABLE _LINK_LD_ARGS) ++ execute_process(COMMAND ${OTF2_CONFIG} "--ldflags" "--target" "backend" OUTPUT_VARIABLE _LINK_LD_ARGS) + STRING( REPLACE " " ";" _LINK_LD_ARGS ${_LINK_LD_ARGS} ) + FOREACH( _ARG ${_LINK_LD_ARGS} ) + IF(${_ARG} MATCHES "^-L") +@@ -29,7 +29,7 @@ ELSE() + ENDIF(${_ARG} MATCHES "^-L") + ENDFOREACH(_ARG) + +- execute_process(COMMAND ${OTF2_CONFIG} "--libs" OUTPUT_VARIABLE _LINK_LD_ARGS) ++ execute_process(COMMAND ${OTF2_CONFIG} "--libs" "--target" "backend" OUTPUT_VARIABLE _LINK_LD_ARGS) + STRING( REPLACE " " ";" _LINK_LD_ARGS ${_LINK_LD_ARGS} ) + FOREACH( _ARG ${_LINK_LD_ARGS} ) + IF(${_ARG} MATCHES "^-l") diff --git a/pkgs/by-name/ez/eztrace/package.nix b/pkgs/by-name/ez/eztrace/package.nix index 8a5b3dbeb91c..a541c3b85792 100644 --- a/pkgs/by-name/ez/eztrace/package.nix +++ b/pkgs/by-name/ez/eztrace/package.nix @@ -2,43 +2,82 @@ lib, stdenv, fetchFromGitLab, + cmake, gfortran, libelf, libiberty, - zlib, - # Once https://gitlab.com/eztrace/eztrace/-/issues/41 - # is released we can switch to latest binutils. - libbfd_2_38, - libopcodes_2_38, - autoreconfHook, + libbfd, + libopcodes, + otf2, }: -stdenv.mkDerivation rec { - pname = "EZTrace"; - version = "1.1-11"; +stdenv.mkDerivation (finalAttrs: { + pname = "eztrace"; + version = "2.1.1"; + + outputs = [ + "out" + "lib" + "man" + ]; src = fetchFromGitLab { owner = "eztrace"; repo = "eztrace"; - rev = "eztrace-${version}"; - hash = "sha256-A6HMr4ib5Ka1lTbbTQOdq3kIdCoN/CwAKRdXdv9wpfU="; + tag = "${finalAttrs.version}"; + hash = "sha256-ccW4YjEf++tkdIJLze2x8B/SWbBBXnYt8UV9OH8+KGU="; }; - nativeBuildInputs = [ - gfortran - autoreconfHook + patches = [ + ./0001-otf2-backend-cross.patch # To fix cross. ]; + + postPatch = '' + substituteInPlace src/eztrace-lib/eztrace_otf2.c \ + --replace-fail "/bin/rm" "rm" + substituteInPlace cmake_modules/FindOTF2.cmake \ + --replace-fail "find_program(OTF2_CONFIG otf2-config REQUIRED)" \ + "find_program(OTF2_CONFIG "${lib.getExe' otf2 "otf2-config"}" REQUIRED)" \ + --replace-fail "find_program(OTF2_PRINT otf2-print REQUIRED)" \ + "find_program(OTF2_PRINT "${lib.getExe' otf2 "otf2-print"}" REQUIRED)" + patchShebangs test + ''; + + strictDeps = true; + + cmakeFlags = [ + (lib.cmakeBool "EZTRACE_ENABLE_MEMORY" true) + # This test is somewhat flaky and fails once per several rebuilds. + (lib.cmakeFeature "CMAKE_CTEST_ARGUMENTS" "--exclude-regex;memory_tests") + ]; + + nativeBuildInputs = [ + cmake + gfortran + ]; + buildInputs = [ libelf libiberty - zlib - libbfd_2_38 - libopcodes_2_38 + libbfd + libopcodes + otf2 ]; - meta = with lib; { + doCheck = true; + nativeCheckInputs = [ + otf2 # `otf2-print` needed by compiler_instrumentation_tests,pthread_tests,posixio_tests + ]; + + meta = { description = "Tool that aims at generating automatically execution trace from HPC programs"; - license = licenses.cecill-b; - maintainers = [ ]; + license = lib.licenses.cecill-b; + maintainers = [ lib.maintainers.xokdvium ]; + mainProgram = "eztrace"; + badPlatforms = [ + # Undefined symbols for architecture x86_64: + # > "___cyg_profile_func_enter", referenced from: + lib.systems.inspect.patterns.isDarwin + ]; }; -} +})