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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
use std
pkg bld =
type build = struct
/* build state */
basedir : byte[:]
tags : std.htab(byte[:], (int, int, int))#
libs : std.htab(byte[:], libdep#)#
deps : depgraph#
/* in flight builds */
queue : node#[:]
proc : std.htab(std.pid, node#)#
fail : bool
/* build params */
all : byte[:][:]
targs : std.htab(byte[:], targ)#
prefix : byte[:]
system : byte[:]
arch : byte[:]
;;
type targ = union
`Bin myrtarg#
`Lib myrtarg#
`Gen cmdtarg#
`Cmd cmdtarg#
`Man mantarg#
`Data datatarg#
;;
type myrtarg = struct
name : byte[:]
dir : byte[:]
inputs : byte[:][:]
/* dir, lib, targname */
libdeps : (byte[:], byte[:], byte[:])[:]
tstdeps : (byte[:], byte[:], byte[:])[:]
runtime : byte[:]
incpath : byte[:][:]
tags : byte[:][:]
ldscript : byte[:]
islib : bool
istest : bool
isbench : bool
isdyn : bool
install : bool
;;
type cmdtarg = struct
dir : byte[:]
gen : byte[:][:]
cmd : byte[:][:]
deps : byte[:][:]
tags : byte[:][:]
durable : bool
istest : bool
isbench : bool
;;
type mantarg = struct
dir : byte[:]
tags : byte[:][:]
pages : byte[:][:]
;;
type datatarg = struct
dir : byte[:]
name : byte[:]
tags : byte[:][:]
path : byte[:]
blobs : byte[:][:]
;;
type libdep = struct
dir : byte[:]
name : byte[:]
dep : byte[:][:]
dyndep : byte[:][:]
genuse : byte[:]
genar : byte[:]
mtime : std.time
;;
type testresult = union
`Skip
`Pass
`Fail byte[:]
`Timing (int, flt64, flt64)
;;
type depgraph = struct
/* the edges of the graph from both ends */
targs : std.htab(byte[:], node#[:])#
gen : std.htab(byte[:], node#)#
nodes : node#[:]
leaves : node#[:]
;;
type node = struct
/* for debugging, "primary output" */
lbl : byte[:]
/* run this command in this dir to 'execute' the node */
cmd : byte[:][:]
wdir : byte[:]
/* install info */
instdir : byte[:]
instmod : int64
/* dependency names */
gen : byte[:][:]
dep : byte[:][:]
deptime : std.time
/* resolved dependency nodes */
ndep : node#[:]
ngen : node#[:]
/* build state */
nblock : int32
mtime : std.time
durable : bool /* keep outputs when cleaning */
want : bool
;;
;;
|