spack/var/spack/repos/builtin/packages/elfutils/package.py
Mark W. Krentel 27ad0f1269 dyninst: overhaul package.py to CMakePackage (#9871)
Drop versions 8.1.x.  These were > 5 years old, no other spack package
uses them, and they used autotools.  Packages 'stat' and 'mitos' still
use 8.2.1, so we keep that.

Switch class Dyninst to CMakePackage.

Clean up how the versions depend on various packages.  For example,
Dyninst used libelf up to 9.2, and then elfutils starting with 9.3.
This makes things easier going forward.

Add variant 'openmp' (default True) to enable openmp support for
ParseAPI.  This was added in 10.0.0.

Add variant 'static' (default False) to also build static libraries.
This goes back to 9.1.0.

Disable cotire for the 9.3.x versions.  Cotire has no real use in a
one-time build and can break parallel builds with both static and
shared libs.
2018-11-21 10:47:19 -08:00

94 lines
3.1 KiB
Python

# Copyright 2013-2018 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 *
import glob
import os.path
class Elfutils(AutotoolsPackage):
"""elfutils is a collection of various binary tools such as
eu-objdump, eu-readelf, and other utilities that allow you to
inspect and manipulate ELF files. Refer to Table 5.Tools Included
in elfutils for Red Hat Developer for a complete list of binary
tools that are distributed with the Red Hat Developer Toolset
version of elfutils."""
homepage = "https://fedorahosted.org/elfutils/"
url = "https://sourceware.org/elfutils/ftp/0.168/elfutils-0.168.tar.bz2"
list_url = "https://sourceware.org/elfutils/ftp"
list_depth = 1
version('0.174', '48bec24c0c8b2c16820326956dff9378')
version('0.173', '35decb1ebfb90d565e4c411bee4185cc')
version('0.170', '03599aee98c9b726c7a732a2dd0245d5')
version('0.168', '52adfa40758d0d39e5d5c57689bf38d6')
version('0.163', '77ce87f259987d2e54e4d87b86cbee41')
# Libraries for reading compressed DWARF sections.
variant('bzip2', default=False,
description='Support bzip2 compressed sections.')
variant('xz', default=False,
description='Support xz compressed sections.')
# Native language support from libintl.
variant('nls', default=True,
description='Enable Native Language Support.')
depends_on('bzip2', type='link', when='+bzip2')
depends_on('xz', type='link', when='+xz')
depends_on('zlib', type='link')
depends_on('gettext', when='+nls')
conflicts('%gcc@7.2.0:', when='@0.163')
provides('elf@1')
# Elfutils uses nested functions in C code, which is implemented
# in gcc, but not in clang. C code compiled with gcc is
# binary-compatible with clang, so it should be possible to build
# elfutils with gcc, and then link it to clang-built libraries.
conflicts('%clang')
# Elfutils uses -Wall and we don't want to fail the build over a
# stray warning.
def patch(self):
files = glob.glob(os.path.join('*', 'Makefile.in'))
filter_file('-Werror', '', *files)
flag_handler = AutotoolsPackage.build_system_flags
def configure_args(self):
spec = self.spec
args = []
if '+bzip2' in spec:
args.append('--with-bzlib=%s' % spec['bzip2'].prefix)
else:
args.append('--without-bzlib')
if '+xz' in spec:
args.append('--with-lzma=%s' % spec['xz'].prefix)
else:
args.append('--without-lzma')
# zlib is required
args.append('--with-zlib=%s' % spec['zlib'].prefix)
if '+nls' in spec:
# configure doesn't use LIBS correctly
args.append('LDFLAGS=-Wl,--no-as-needed -L%s -lintl' %
spec['gettext'].prefix.lib)
else:
args.append('--disable-nls')
return args
# Provide location of libelf.so to match libelf.
@property
def libs(self):
return find_libraries('libelf', self.prefix, recursive=True)