uftrace: add new package (#25710)
This commit is contained in:
parent
834155fdb8
commit
13c0b0dcb3
1 changed files with 71 additions and 0 deletions
71
var/spack/repos/builtin/packages/uftrace/package.py
Normal file
71
var/spack/repos/builtin/packages/uftrace/package.py
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
# 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)
|
||||||
|
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
|
||||||
|
from spack import *
|
||||||
|
|
||||||
|
|
||||||
|
class Uftrace(AutotoolsPackage):
|
||||||
|
"""Dynamic function graph tracer for Linux which demangles C, C++ and Rust calls"""
|
||||||
|
|
||||||
|
homepage = 'https://uftrace.github.io/slide/'
|
||||||
|
url = 'https://github.com/namhyung/uftrace/archive/v0.10.tar.gz'
|
||||||
|
git = 'https://github.com/namhyung/uftrace.git'
|
||||||
|
executables = ['^uftrace$']
|
||||||
|
maintainers = ['bernhardkaindl']
|
||||||
|
tags = ['trace-tools']
|
||||||
|
|
||||||
|
# The build process uses 'git describe --tags' to get the package version
|
||||||
|
version('master', branch='master', get_full_repo=True)
|
||||||
|
version('0.10', sha256='b8b56d540ea95c3eafe56440d6a998e0a140d53ca2584916b6ca82702795bbd9')
|
||||||
|
variant("doc", default=False, description="Build uftrace's documentation")
|
||||||
|
variant("python2", default=False, description="Build uftrace with python2 support")
|
||||||
|
variant("python3", default=True, description="Build uftrace with python3 support")
|
||||||
|
|
||||||
|
depends_on('pandoc', when="+doc", type='build')
|
||||||
|
depends_on('capstone')
|
||||||
|
depends_on('elfutils')
|
||||||
|
depends_on('lsof', type='test')
|
||||||
|
depends_on('pkg-config', type='build')
|
||||||
|
depends_on('libunwind')
|
||||||
|
depends_on('ncurses')
|
||||||
|
depends_on('python@2.7:', when='+python2')
|
||||||
|
depends_on('python@3.5:', when='+python3')
|
||||||
|
depends_on('lua-luajit')
|
||||||
|
|
||||||
|
def check(self):
|
||||||
|
make('test', *['V=1', '-j{0}'.format(max(int(make_jobs), 20))])
|
||||||
|
# In certain cases, tests using TCP/IP can hang. Ensure that spack can continue:
|
||||||
|
os.system("kill -9 `lsof -t ./uftrace` 2>/dev/null")
|
||||||
|
|
||||||
|
def install(self, spec, prefix):
|
||||||
|
make('install', *['V=1'])
|
||||||
|
|
||||||
|
def installcheck(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test(self):
|
||||||
|
"""Perform stand-alone/smoke tests using the installed package."""
|
||||||
|
uftrace = self.prefix.bin.uftrace
|
||||||
|
self.run_test(uftrace,
|
||||||
|
['-A', '.', '-R', '.', '-P', 'main', uftrace, '-V'],
|
||||||
|
[r'dwarf',
|
||||||
|
r'luajit',
|
||||||
|
r'tui',
|
||||||
|
r'sched',
|
||||||
|
r'dynamic',
|
||||||
|
r'main\(2, ',
|
||||||
|
r' getopt_long\(2, ',
|
||||||
|
r' .*printf.*\(',
|
||||||
|
r'} = 0; /\* main \*/'], installed=True,
|
||||||
|
purpose='test: testing the installation')
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def determine_version(cls, exe):
|
||||||
|
output = Executable(exe)('--version', output=str, error=str)
|
||||||
|
match = re.search(r'uftrace v(\S+)', output)
|
||||||
|
return match.group(1) if match else 'None'
|
Loading…
Reference in a new issue