1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# Copyright 2013-2024 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 re
from spack.package import *
class Cpio(AutotoolsPackage, GNUMirrorPackage):
"""GNU cpio copies files into or out of a cpio or tar archive and the file system.
The archive can be another file on the disk, a magnetic tape, or a pipe.
"""
homepage = "https://www.gnu.org/software/cpio/"
gnu_mirror_path = "cpio/cpio-2.13.tar.gz"
executables = ["^cpio$"]
license("GPL-3.0-or-later")
version("2.14", sha256="145a340fd9d55f0b84779a44a12d5f79d77c99663967f8cfa168d7905ca52454")
version("2.13", sha256="e87470d9c984317f658567c03bfefb6b0c829ff17dbf6b0de48d71a4c8f3db88")
build_directory = "spack-build"
def patch(self):
"""Fix mutiple definition of char *program_name for gcc@10: and clang"""
filter_file(r"char \*program_name;", "", "src/global.c")
@classmethod
def determine_version(cls, exe):
output = Executable(exe)("--version", output=str, error=str)
match = re.search(r"\(GNU cpio\)\s+(\S+)", output)
return match.group(1) if match else None
def flag_handler(self, name, flags):
spec = self.spec
if name == "cflags":
if "%intel@:17" in spec:
flags.append("-no-gcc")
elif "%clang" in spec or "%fj" in spec:
flags.append("--rtlib=compiler-rt")
return (flags, None, None)
|