aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/rosa/ninja.go
blob: 0f29d18667549ff50ba4fda89f35bfdc4f0449a0 (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
package rosa

import "hakurei.app/internal/pkg"

// Ninja is the build system used by [CMakeHelper] and [MesonHelper].
var Ninja = H("ninja")

func init() {
	const (
		version  = "1.13.2"
		checksum = "ygKWMa0YV2lWKiFro5hnL-vcKbc_-RACZuPu0Io8qDvgQlZ0dxv7hPNSFkt4214v"
	)
	meta := Metadata{
		Name:        "ninja",
		Description: "a small build system with a focus on speed",
		Website:     "https://ninja-build.org",
		Version:     version,

		ID: 2089,
	}
	native.MustRegister(meta.Name, func(t Toolchain) (*Metadata, pkg.Artifact) {
		_, _python := t.Load(Python)
		_, _bash := t.Load(bash)
		return &meta, t.New(meta.Name+"-"+version, 0, []pkg.Artifact{
			_python,
			_bash,
		}, nil, nil, `
cd "$(mktemp -d)"
python3 /usr/src/ninja/configure.py \
	--verbose \
	--bootstrap \
	--gtest-source-dir=/usr/src/googletest
./ninja `+jobsFlagE+` all
./ninja_test

mkdir -p /work/system/bin/
cp ninja /work/system/bin/
`, pkg.Path(AbsUsrSrc.Append("googletest"), false,
			newFromGitHubRelease(
				"google/googletest",
				"v1.16.0",
				"googletest-1.16.0.tar.gz",
				"NjLGvSbgPy_B-y-o1hdanlzEzaYeStFcvFGxpYV3KYlhrWWFRcugYhM3ZMzOA9B_",
				pkg.TarGzip,
			)), pkg.Path(AbsUsrSrc.Append("ninja"), true, t.NewPatchedSource(
			meta.Name, version, newFromGitHub(
				"ninja-build/ninja",
				"v"+version,
				checksum,
			), false,
		)))
	})
}