aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/rosa/ssl.go
blob: 28b01971884d3ff3ade02a5e86efa85bd89595b7 (plain)
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package rosa

import (
	"hakurei.app/internal/pkg"
)

func (t Toolchain) newNSS() pkg.Artifact {
	const (
		version  = "3_120"
		checksum = "9M0SNMrj9BJp6RH2rQnMm6bZWtP0Kgj64D5JNPHF7Cxr2_8kfy3msubIcvEPwC35"

		version0  = "4_38_2"
		checksum0 = "25x2uJeQnOHIiq_zj17b4sYqKgeoU8-IsySUptoPcdHZ52PohFZfGuIisBreWzx0"
	)
	return t.NewViaMake("nss", version, t.NewPatchedSource(
		"nss", version, pkg.NewHTTPGetTar(
			nil, "https://github.com/nss-dev/nss/archive/refs/tags/"+
				"NSS_"+version+"_RTM.tar.gz",
			mustDecode(checksum),
			pkg.TarGzip,
		), false,
	), &MakeAttr{
		Paths: []pkg.ExecPath{
			pkg.Path(AbsUsrSrc.Append("nspr.zip"), false, pkg.NewHTTPGet(
				nil, "https://hg-edge.mozilla.org/projects/nspr/archive/"+
					"NSPR_"+version0+"_RTM.zip",
				mustDecode(checksum0),
			)),
		},

		Writable:      true,
		OmitDefaults:  true,
		SkipConfigure: true,
		InPlace:       true,

		ScriptEarly: `
unzip /usr/src/nspr.zip -d /usr/src
mv '/usr/src/nspr-NSPR_` + version0 + `_RTM' /usr/src/nspr
cd /usr/src/nss
`,
		SkipCheck: true,
		Make: []string{
			"CCC=clang++",
			"NSDISTMODE=copy",
			"BUILD_OPT=1",
			"USE_64=1",
			"nss_build_all",
		},
		ScriptInstall: `
mkdir -p /work/system/nss
cp -r \
	/usr/src/dist/. \
	lib/ckfw/builtins/certdata.txt \
	/work/system/nss
`,
	},
		t.Load(Perl),
		t.Load(Python),
		t.Load(Unzip),
		t.Load(Gawk),
		t.Load(Coreutils),

		t.Load(Zlib),
		t.Load(KernelHeaders),
	)
}
func init() { artifactsF[NSS] = Toolchain.newNSS }

func (t Toolchain) newBuildCATrust() pkg.Artifact {
	const version = "0.4.0"
	return t.newViaPip("buildcatrust", version, "none", "any",
		"k_FGzkRCLjbTWBkuBLzQJ1S8FPAz19neJZlMHm0t10F2Y0hElmvVwdSBRc03Rjo1",
		"https://github.com/nix-community/buildcatrust/"+
			"releases/download/v"+version+"/")
}
func init() { artifactsF[buildcatrust] = Toolchain.newBuildCATrust }

func (t Toolchain) newNSSCACert() pkg.Artifact {
	return t.New("nss-cacert", 0, []pkg.Artifact{
		t.Load(Bash),
		t.Load(Python),

		t.Load(NSS),
		t.Load(buildcatrust),
	}, nil, nil, `
mkdir -p /work/system/etc/ssl/{certs/unbundled,certs/hashed,trust-source}
buildcatrust \
	--certdata_input /system/nss/certdata.txt \
	--ca_bundle_output /work/system/etc/ssl/certs/ca-bundle.crt \
	--ca_standard_bundle_output /work/system/etc/ssl/certs/ca-no-trust-rules-bundle.crt \
	--ca_unpacked_output /work/system/etc/ssl/certs/unbundled \
	--ca_hashed_unpacked_output /work/system/etc/ssl/certs/hashed \
	--p11kit_output /work/system/etc/ssl/trust-source/ca-bundle.trust.p11-kit
`)
}
func init() { artifactsF[NSSCACert] = Toolchain.newNSSCACert }