igprof: new package (#22666)
This commit is contained in:
parent
d528ff6e5a
commit
9f90659aa7
2 changed files with 165 additions and 0 deletions
131
var/spack/repos/builtin/packages/igprof/igprof-5.9.16.patch
Normal file
131
var/spack/repos/builtin/packages/igprof/igprof-5.9.16.patch
Normal file
|
@ -0,0 +1,131 @@
|
||||||
|
--- src/analyse.cc.orig 2016-07-11 14:17:56.000000001 +0200
|
||||||
|
+++ src/analyse.cc 2016-07-11 14:20:55.000000001 +0200
|
||||||
|
@@ -4374,8 +4374,8 @@
|
||||||
|
else
|
||||||
|
puts(",");
|
||||||
|
|
||||||
|
- printf("[%d, %d, %d, %"PRId64", %"PRId64", %"PRId64", %"PRId64", "
|
||||||
|
- "%"PRId64", %"PRId64", %"PRId64", ",
|
||||||
|
+ printf("[%d, %d, %d, %" PRId64 ", %" PRId64 ", %" PRId64 ", %" PRId64 ", "
|
||||||
|
+ "%" PRId64 ", %" PRId64 ", %" PRId64 ", ",
|
||||||
|
mainRow.rank(), symbolIndex, fileIndex,
|
||||||
|
mainRow.SELF, mainRow.CUM, mainRow.KIDS,
|
||||||
|
mainRow.SELF_ALL[1], mainRow.CUM_ALL[1],
|
||||||
|
@@ -4445,7 +4445,7 @@
|
||||||
|
first = false;
|
||||||
|
else
|
||||||
|
puts(",");
|
||||||
|
- printf("[%d, %d, %"PRId64", %"PRId64", %"PRId64", ",
|
||||||
|
+ printf("[%d, %d, %" PRId64 ", %" PRId64 ", %" PRId64 ", ",
|
||||||
|
mainRow.rank(), row.rank(),
|
||||||
|
row.SELF_COUNTS, row.SELF_CALLS, row.SELF_PATHS);
|
||||||
|
|
||||||
|
@@ -4472,7 +4472,7 @@
|
||||||
|
first = false;
|
||||||
|
else
|
||||||
|
puts(",");
|
||||||
|
- printf("[%d, %d, %"PRId64", %"PRId64", %"PRId64", ",
|
||||||
|
+ printf("[%d, %d, %" PRId64 ", %" PRId64 ", %" PRId64 ", ",
|
||||||
|
mainRow.rank(), row.rank(),
|
||||||
|
row.SELF_COUNTS, row.SELF_CALLS, row.SELF_PATHS);
|
||||||
|
|
||||||
|
--- src/buffer.cc.orig 2017-05-31 11:53:55.891358442 +0200
|
||||||
|
+++ src/buffer.cc 2017-05-31 11:55:03.519291624 +0200
|
||||||
|
@@ -62,12 +62,11 @@
|
||||||
|
MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
|
||||||
|
if (data != MAP_FAILED)
|
||||||
|
return data;
|
||||||
|
- else
|
||||||
|
- {
|
||||||
|
- igprof_debug("failed to allocate memory for profile buffer: %s (%d)\n",
|
||||||
|
- strerror(errno), errno);
|
||||||
|
- igprof_abort();
|
||||||
|
- }
|
||||||
|
+
|
||||||
|
+ igprof_debug("failed to allocate memory for profile buffer: %s (%d)\n",
|
||||||
|
+ strerror(errno), errno);
|
||||||
|
+ igprof_abort();
|
||||||
|
+ __builtin_unreachable();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
|
||||||
|
--- src/profile-perf.cc.orig 2018-07-11 15:11:31.000000001 +0200
|
||||||
|
+++ src/profile-perf.cc 2018-07-11 15:13:07.000000001 +0200
|
||||||
|
@@ -98,7 +98,7 @@
|
||||||
|
|
||||||
|
struct sigaction sa;
|
||||||
|
sigemptyset(&sa.sa_mask);
|
||||||
|
- sa.sa_handler = (sighandler_t) &profileSignalHandler;
|
||||||
|
+ sa.sa_sigaction = &profileSignalHandler;
|
||||||
|
sa.sa_flags = SA_RESTART | SA_SIGINFO;
|
||||||
|
sigaction(s_signal, &sa, 0);
|
||||||
|
}
|
||||||
|
@@ -252,13 +252,13 @@
|
||||||
|
struct sigaction sa;
|
||||||
|
if (signum == s_signal
|
||||||
|
&& act
|
||||||
|
- && act->sa_handler != (sighandler_t) &profileSignalHandler)
|
||||||
|
+ && act->sa_sigaction != &profileSignalHandler)
|
||||||
|
{
|
||||||
|
igprof_debug("sigaction(): prevented profiling signal"
|
||||||
|
" %d from being overridden in thread 0x%lx\n",
|
||||||
|
s_signal, (unsigned long) pthread_self());
|
||||||
|
sigemptyset(&sa.sa_mask);
|
||||||
|
- sa.sa_handler = (sighandler_t) &profileSignalHandler;
|
||||||
|
+ sa.sa_sigaction = &profileSignalHandler;
|
||||||
|
sa.sa_flags = SA_RESTART | SA_SIGINFO;
|
||||||
|
act = &sa;
|
||||||
|
}
|
||||||
|
|
||||||
|
--- src/profile-energy.cc.orig 2018-07-11 15:14:32.000000001 +0200
|
||||||
|
+++ src/profile-energy.cc 2018-07-11 15:16:56.000000001 +0200
|
||||||
|
@@ -268,7 +268,7 @@
|
||||||
|
|
||||||
|
struct sigaction sa;
|
||||||
|
sigemptyset(&sa.sa_mask);
|
||||||
|
- sa.sa_handler = (sighandler_t) &profileSignalHandler;
|
||||||
|
+ sa.sa_sigaction = &profileSignalHandler;
|
||||||
|
sa.sa_flags = SA_RESTART | SA_SIGINFO;
|
||||||
|
sigaction(s_signal, &sa, 0);
|
||||||
|
}
|
||||||
|
@@ -415,13 +415,13 @@
|
||||||
|
struct sigaction sa;
|
||||||
|
if (signum == s_signal
|
||||||
|
&& act
|
||||||
|
- && act->sa_handler != (sighandler_t) &profileSignalHandler)
|
||||||
|
+ && act->sa_sigaction != &profileSignalHandler)
|
||||||
|
{
|
||||||
|
igprof_debug("sigaction(): prevented profiling signal"
|
||||||
|
" %d from being overridden in thread 0x%lx\n",
|
||||||
|
s_signal, (unsigned long) pthread_self());
|
||||||
|
sigemptyset(&sa.sa_mask);
|
||||||
|
- sa.sa_handler = (sighandler_t) &profileSignalHandler;
|
||||||
|
+ sa.sa_sigaction = &profileSignalHandler;
|
||||||
|
sa.sa_flags = SA_RESTART | SA_SIGINFO;
|
||||||
|
act = &sa;
|
||||||
|
}
|
||||||
|
|
||||||
|
--- src/profile.cc.orig 2018-07-13 12:03:48.000000001 +0200
|
||||||
|
+++ src/profile.cc 2018-07-11 15:08:49.000000001 +0200
|
||||||
|
@@ -577,7 +577,7 @@
|
||||||
|
igprof_debug("profiler options: %s\n", options);
|
||||||
|
|
||||||
|
// Report override function use.
|
||||||
|
- if (igprof_abort != &abort)
|
||||||
|
+ if ((void (*)())igprof_abort != (void (*)()) &abort)
|
||||||
|
igprof_debug("abort() from system %p, app had %p\n",
|
||||||
|
__extension__ (void *) igprof_abort,
|
||||||
|
__extension__ (void *) &abort);
|
||||||
|
|
||||||
|
--- CMakeLists.txt.orig 2015-10-12 18:36:10.000000000 +0200
|
||||||
|
+++ CMakeLists.txt 2021-03-31 10:06:59.776974100 +0200
|
||||||
|
@@ -80,7 +80,7 @@
|
||||||
|
SET(CMAKE_C_FLAGS "${CMAKE_ANSI_FLAGS} ${CMAKE_C_FLAGS}")
|
||||||
|
SET(CMAKE_REQUIRED_FLAGS ${CMAKE_ANSI_FLAGS})
|
||||||
|
IF(CMAKE_COMPILER_IS_GNUCC)
|
||||||
|
- ADD_DEFINITIONS(-ansi -pedantic -W -Wall -Wno-long-long -Werror)
|
||||||
|
+ ADD_DEFINITIONS(-ansi -pedantic -W -Wall -Wno-long-long)
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
IF(UNIX)
|
34
var/spack/repos/builtin/packages/igprof/package.py
Normal file
34
var/spack/repos/builtin/packages/igprof/package.py
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
# Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
|
||||||
|
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|
||||||
|
from spack import *
|
||||||
|
|
||||||
|
|
||||||
|
class Igprof(CMakePackage):
|
||||||
|
"""IgProf (the Ignominous Profiler) is a simple nice tool for measuring and
|
||||||
|
analysing application memory and performance characteristics.
|
||||||
|
|
||||||
|
IgProf requires no changes to the application or the build process. It
|
||||||
|
currently works on Linux (ia32, x86_64)."""
|
||||||
|
|
||||||
|
homepage = "https://igprof.org/"
|
||||||
|
url = "https://github.com/igprof/igprof/archive/v5.9.16.tar.gz"
|
||||||
|
|
||||||
|
version('5.9.16', sha256='cc977466b310f47bbc2967a0bb6ecd49d7437089598346e3f1d8aaf9a7555d96')
|
||||||
|
|
||||||
|
depends_on('libunwind')
|
||||||
|
|
||||||
|
# Three patches in one: C++11 compatibility (src/analyse.cc),
|
||||||
|
# libunwind "compatibility" (remove -Werror in CMakeLists.txt) -
|
||||||
|
# see also https://github.com/spack/spack/pull/21537,
|
||||||
|
# and gcc 8.x compatibility (the rest of the changes).
|
||||||
|
# Adopted from LCGCMake https://gitlab.cern.ch/sft/lcgcmake
|
||||||
|
patch('igprof-5.9.16.patch', when='@5.9.16', level=0)
|
||||||
|
|
||||||
|
def build_system_flags(pkg, name, flags):
|
||||||
|
if name == 'cxxflags':
|
||||||
|
flags.extend(('-Wno-unused-variable', '-Wno-error=unused-result'))
|
||||||
|
|
||||||
|
return (None, None, flags)
|
Loading…
Reference in a new issue