From d3ac34722160d09d22a1d8c97b94b5da8de5eee0 Mon Sep 17 00:00:00 2001 From: Sergei Zimmerman Date: Fri, 18 Apr 2025 21:22:49 +0000 Subject: [PATCH 1/9] otf2: enableParallelBuilding and enableParallelChecking --- pkgs/by-name/ot/otf2/package.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkgs/by-name/ot/otf2/package.nix b/pkgs/by-name/ot/otf2/package.nix index 385501c529f5..7477a1c5f49d 100644 --- a/pkgs/by-name/ot/otf2/package.nix +++ b/pkgs/by-name/ot/otf2/package.nix @@ -18,9 +18,12 @@ stdenv.mkDerivation (finalAttrs: { "--enable-backend-test-runs" ]; + enableParallelBuilding = true; + nativeInstallCheckInputs = [ versionCheckHook ]; doCheck = true; + enableParallelChecking = true; doInstallCheck = true; versionCheckProgram = [ "${placeholder "out"}/bin/otf2-config" ]; From 995e33e89330bf3c5081e32ad9190a6dd35dcffd Mon Sep 17 00:00:00 2001 From: Sergei Zimmerman Date: Fri, 18 Apr 2025 21:22:50 +0000 Subject: [PATCH 2/9] otf2: fix cross --- pkgs/by-name/ot/otf2/package.nix | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/ot/otf2/package.nix b/pkgs/by-name/ot/otf2/package.nix index 7477a1c5f49d..63da6998cb16 100644 --- a/pkgs/by-name/ot/otf2/package.nix +++ b/pkgs/by-name/ot/otf2/package.nix @@ -2,6 +2,8 @@ lib, stdenv, fetchurl, + buildPackages, + which, versionCheckHook, }: @@ -14,8 +16,29 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-Wk4BOlGsTteU/jXFW3AM1yA0b9p/M+yEx2uGpfuICm4="; }; - configureFlags = [ - "--enable-backend-test-runs" + postPatch = '' + substituteInPlace build-config/common/platforms/platform-backend-user-provided \ + --replace-fail 'CC=' 'CC=${stdenv.cc.targetPrefix}cc' \ + --replace-fail 'CXX=' 'CXX=${stdenv.cc.targetPrefix}c++' + substituteInPlace build-config/common/platforms/platform-frontend-user-provided \ + --replace-fail 'CC_FOR_BUILD=' 'CC_FOR_BUILD=${buildPackages.stdenv.cc.targetPrefix}cc' \ + --replace-fail 'CXX_FOR_BUILD=' 'CXX_FOR_BUILD=${buildPackages.stdenv.cc.targetPrefix}c++' + ''; + + strictDeps = true; + depsBuildBuild = [ buildPackages.stdenv.cc ]; + + configureFlags = + [ + (lib.enableFeature finalAttrs.finalPackage.doCheck "backend-test-runs") + (lib.withFeature true "custom-compilers") + ] + ++ lib.optionals (!lib.systems.equals stdenv.buildPlatform stdenv.hostPlatform) [ + "ac_scorep_cross_compiling=yes" + ]; + + nativeBuildInputs = [ + which # used in configure script ]; enableParallelBuilding = true; From 1e4c23f581d3fcbfcd4afae996caa4a49912e9a3 Mon Sep 17 00:00:00 2001 From: Sergei Zimmerman Date: Fri, 18 Apr 2025 21:22:52 +0000 Subject: [PATCH 3/9] otf2: split out and lib --- pkgs/by-name/ot/otf2/package.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkgs/by-name/ot/otf2/package.nix b/pkgs/by-name/ot/otf2/package.nix index 63da6998cb16..ce73099f4015 100644 --- a/pkgs/by-name/ot/otf2/package.nix +++ b/pkgs/by-name/ot/otf2/package.nix @@ -11,6 +11,11 @@ stdenv.mkDerivation (finalAttrs: { pname = "otf2"; version = "3.1.1"; + outputs = [ + "out" + "lib" + ]; + src = fetchurl { url = "http://perftools.pages.jsc.fz-juelich.de/cicd/otf2/tags/otf2-${finalAttrs.version}/otf2-${finalAttrs.version}.tar.gz"; hash = "sha256-Wk4BOlGsTteU/jXFW3AM1yA0b9p/M+yEx2uGpfuICm4="; From 21fcca99aa45775d927b579aedb8a50ac8370c2d Mon Sep 17 00:00:00 2001 From: Sergei Zimmerman Date: Sat, 19 Apr 2025 11:19:36 +0000 Subject: [PATCH 4/9] 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 + ]; }; -} +}) From 66a1d99b3faa64459a9de4461ebd539ac6a6965e Mon Sep 17 00:00:00 2001 From: Sergei Zimmerman Date: Sat, 19 Apr 2025 11:19:37 +0000 Subject: [PATCH 5/9] eztrace: add meta.homepage --- pkgs/by-name/ez/eztrace/package.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/by-name/ez/eztrace/package.nix b/pkgs/by-name/ez/eztrace/package.nix index a541c3b85792..8ccebfc8396c 100644 --- a/pkgs/by-name/ez/eztrace/package.nix +++ b/pkgs/by-name/ez/eztrace/package.nix @@ -71,6 +71,7 @@ stdenv.mkDerivation (finalAttrs: { meta = { description = "Tool that aims at generating automatically execution trace from HPC programs"; + homepage = "https://eztrace.gitlab.io/eztrace/index.html"; license = lib.licenses.cecill-b; maintainers = [ lib.maintainers.xokdvium ]; mainProgram = "eztrace"; From 0d3583dbf0f6129d2f39524d3587c877ee5790ae Mon Sep 17 00:00:00 2001 From: Sergei Zimmerman Date: Sat, 19 Apr 2025 11:22:36 +0000 Subject: [PATCH 6/9] eztrace: split dev output and fix .pc files --- .../0002-absolute-cmake-install-paths.patch | 23 +++++++++++++++++++ pkgs/by-name/ez/eztrace/package.nix | 7 ++++++ 2 files changed, 30 insertions(+) create mode 100644 pkgs/by-name/ez/eztrace/0002-absolute-cmake-install-paths.patch diff --git a/pkgs/by-name/ez/eztrace/0002-absolute-cmake-install-paths.patch b/pkgs/by-name/ez/eztrace/0002-absolute-cmake-install-paths.patch new file mode 100644 index 000000000000..67e3ec25b71b --- /dev/null +++ b/pkgs/by-name/ez/eztrace/0002-absolute-cmake-install-paths.patch @@ -0,0 +1,23 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index b36a8a94..74c6de2e 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -195,8 +195,16 @@ set(EZTRACE_LIB_DIR ${CMAKE_INSTALL_FULL_LIBDIR}) + #set(__PPTRACE_BINARY_TYPE "PPTRACE_BINARY_TYPE_BFD") + #set(abs_top_builddir ${CMAKE_BINARY_DIR}) + +-set(INSTALL_INCLUDEDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}") +-set(INSTALL_LIBDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}") ++if(IS_ABSOLUTE ${CMAKE_INSTALL_INCLUDEDIR}) ++ set(INSTALL_INCLUDEDIR "${CMAKE_INSTALL_INCLUDEDIR}") ++else() ++ set(INSTALL_INCLUDEDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}") ++endif() ++if(IS_ABSOLUTE ${CMAKE_INSTALL_LIBDIR}) ++ set(INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR}") ++else() ++ set(INSTALL_LIBDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}") ++endif() + set(INSTALL_PKGCONFIG_DIR "${CMAKE_INSTALL_LIBDIR}/pkgconfig") + + # Subdirectory diff --git a/pkgs/by-name/ez/eztrace/package.nix b/pkgs/by-name/ez/eztrace/package.nix index 8ccebfc8396c..3f5ddb0a8125 100644 --- a/pkgs/by-name/ez/eztrace/package.nix +++ b/pkgs/by-name/ez/eztrace/package.nix @@ -17,6 +17,7 @@ stdenv.mkDerivation (finalAttrs: { outputs = [ "out" + "dev" "lib" "man" ]; @@ -28,8 +29,10 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-ccW4YjEf++tkdIJLze2x8B/SWbBBXnYt8UV9OH8+KGU="; }; + # Possibly upstream these patches. patches = [ ./0001-otf2-backend-cross.patch # To fix cross. + ./0002-absolute-cmake-install-paths.patch # To fix generated .pc file ]; postPatch = '' @@ -69,6 +72,10 @@ stdenv.mkDerivation (finalAttrs: { otf2 # `otf2-print` needed by compiler_instrumentation_tests,pthread_tests,posixio_tests ]; + postInstall = '' + moveToOutput bin/eztrace_create_plugin "$dev" + ''; + meta = { description = "Tool that aims at generating automatically execution trace from HPC programs"; homepage = "https://eztrace.gitlab.io/eztrace/index.html"; From a7230f64b370d91fa972e9c8c41a5acca37c9167 Mon Sep 17 00:00:00 2001 From: Sergei Zimmerman Date: Sat, 19 Apr 2025 11:48:37 +0000 Subject: [PATCH 7/9] otf2: split doc output --- pkgs/by-name/ot/otf2/package.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/by-name/ot/otf2/package.nix b/pkgs/by-name/ot/otf2/package.nix index ce73099f4015..12593de5b110 100644 --- a/pkgs/by-name/ot/otf2/package.nix +++ b/pkgs/by-name/ot/otf2/package.nix @@ -14,6 +14,7 @@ stdenv.mkDerivation (finalAttrs: { outputs = [ "out" "lib" + "doc" ]; src = fetchurl { From bf1a4caeccacb744f49508119b63db5b255a2f59 Mon Sep 17 00:00:00 2001 From: Sergei Zimmerman Date: Mon, 21 Apr 2025 20:34:52 +0000 Subject: [PATCH 8/9] eztrace: add meta.downloadPage --- pkgs/by-name/ez/eztrace/package.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/by-name/ez/eztrace/package.nix b/pkgs/by-name/ez/eztrace/package.nix index 3f5ddb0a8125..9b95c11d6737 100644 --- a/pkgs/by-name/ez/eztrace/package.nix +++ b/pkgs/by-name/ez/eztrace/package.nix @@ -79,6 +79,7 @@ stdenv.mkDerivation (finalAttrs: { meta = { description = "Tool that aims at generating automatically execution trace from HPC programs"; homepage = "https://eztrace.gitlab.io/eztrace/index.html"; + downloadPage = "https://gitlab.com/eztrace/eztrace/"; license = lib.licenses.cecill-b; maintainers = [ lib.maintainers.xokdvium ]; mainProgram = "eztrace"; From 6a640f04c995c31ab2425700516a1731357a83f5 Mon Sep 17 00:00:00 2001 From: Sergei Zimmerman Date: Mon, 21 Apr 2025 20:57:53 +0000 Subject: [PATCH 9/9] eztrace: fix reported version and use versionCheckHook Upstream seemingly forgot to bump their patch version for 2.1.1 and do a gitlab release as well. Use `versionCheckHook` as a smoke test for installation completeness. --- pkgs/by-name/ez/eztrace/package.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkgs/by-name/ez/eztrace/package.nix b/pkgs/by-name/ez/eztrace/package.nix index 9b95c11d6737..a55d917bfde2 100644 --- a/pkgs/by-name/ez/eztrace/package.nix +++ b/pkgs/by-name/ez/eztrace/package.nix @@ -9,6 +9,7 @@ libbfd, libopcodes, otf2, + versionCheckHook, }: stdenv.mkDerivation (finalAttrs: { @@ -43,6 +44,9 @@ stdenv.mkDerivation (finalAttrs: { "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)" + # 2.1.1 incorrectly reports 2.1.0. TODO: Remove after next release + substituteInPlace CMakeLists.txt \ + --replace-fail "2.1.0" "${finalAttrs.version}" patchShebangs test ''; @@ -76,6 +80,9 @@ stdenv.mkDerivation (finalAttrs: { moveToOutput bin/eztrace_create_plugin "$dev" ''; + doInstallCheck = true; + nativeInstallCheckInputs = [ versionCheckHook ]; + meta = { description = "Tool that aims at generating automatically execution trace from HPC programs"; homepage = "https://eztrace.gitlab.io/eztrace/index.html";