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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
# Copyright 2013-2023 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.package import *
class Nss(MakefilePackage):
"""Network Security Services (NSS) is a set of libraries designed to
support cross-platform development of security-enabled client and server
applications. Applications built with NSS can support SSL v3, TLS, PKCS #5,
PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and other
security standards."""
homepage = "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS"
url = "https://ftp.mozilla.org/pub/security/nss/releases/NSS_3_67_RTM/src/nss-3.67.tar.gz"
version("3.75", sha256="fd571507827284644f4dd522a032acda2286835f6683ed22a1c2d3878cc58582")
version("3.73", sha256="566d3a68da9b10d7da9ef84eb4fe182f8f04e20d85c55d1bf360bb2c0096d8e5")
# Everything before 3.73 is vulnerable (CVE-2021-43527)
version(
"3.67",
sha256="f6549a9148cd27b394b40c77fa73111d5ea23cdb51d796665de1b7458f88ce7f",
deprecated=True,
)
depends_on("nspr@4.24:")
depends_on("sqlite")
depends_on("zlib")
parallel = False
build_directory = "nss"
def url_for_version(self, version):
url = "https://ftp.mozilla.org/pub/security/nss/releases/NSS_{0}_RTM/src/nss-{1}.tar.gz"
return url.format(version.underscored, version)
@property
def build_targets(self):
# We cannot use nss_build_all because this will try to build nspr.
targets = ["all", "latest"]
targets.append("CCC={}".format(spack_cxx))
targets.append("USE_64=1")
targets.append("BUILD_OPT=1")
for var in ("DIST", "SOURCE_PREFIX", "SOURCE_MD_DIR"):
targets.append("{0}={1}".format(var, join_path(self.stage.source_path, "dist")))
targets.append("NSS_USE_SYSTEM_SQLITE=1")
if self.spec.satisfies("%gcc@10:"):
targets.append("NSS_ENABLE_WERROR=0")
return targets
def install(self, spec, prefix):
install_tree("dist/bin", prefix.bin, symlinks=False)
install_tree("dist/public/nss", prefix.include.nss, symlinks=False)
install_tree("dist/lib", prefix.lib, symlinks=False)
@run_after("install")
def install_pkgconfig(self):
pkg_path = join_path(self.prefix.lib, "pkgconfig")
mkdirp(pkg_path)
with open(join_path(pkg_path, "nss.pc"), "w") as f:
f.write("prefix={0}\n".format(self.prefix))
f.write("exec_prefix=${prefix}\n")
f.write("libdir={0}\n".format(self.prefix.lib))
f.write("includedir={0}\n".format(self.prefix.include.nss))
f.write("\n")
f.write("Name: NSS\n")
f.write("Description: Network Security Services\n")
f.write("Version: {0}\n".format(self.spec.version))
f.write("Requires: nspr\n")
f.write("Cflags: -I${includedir}\n")
f.write("Libs: -L${libdir} -lssl3 -lsmime3 -lnss3 -lnssutil3\n")
|