Accept a modules value with the new fingerprint alone, and say mesh/check is the required status (issue 1851, S7 and S16, ADR 0453 §6, ADR 0503 §3 §5)
FP and None stay readable for build-agent's path until R4g; the gate's status comment and the checks verb now name mesh/check as what a main requires.
This commit is contained in:
@@ -370,12 +370,13 @@ func (c Candidate) check() error {
|
||||
|
||||
// Module is the value of a modules key: the module's source fingerprint, or none and why (a build that resolves
|
||||
// packages when built gets none, said here), and where it was computed: Repository and Commit are the trunk merge,
|
||||
// Src the source revision then (0 before the gate writes source.main). Exactly one of FP and None is set.
|
||||
// Src the source revision then (0 before the gate writes source.main). At most one of FP and None is set.
|
||||
//
|
||||
// From R4c the indexer writes the new form beside it (novox/hq ADR 0453 clause 6): FP2, the fingerprint of the new
|
||||
// form (`src2:` and 64 hex digits), or None2, why it has none; one of them whenever either is, never both; and
|
||||
// Manifest, the digest of the module's manifest, the key of the manifests bucket. A value written before has none of
|
||||
// the three, and a reader of today's shape ignores them.
|
||||
// the three, and a reader of today's shape ignores them. From R4e a value may carry the new form alone (ADR 0453 clause
|
||||
// 6; issue 1851): one of FP, None, FP2 and None2 is set, and the old form stays readable.
|
||||
type Module struct {
|
||||
V int `json:"v"`
|
||||
FP string `json:"fp,omitempty"`
|
||||
@@ -443,8 +444,8 @@ func (m Module) check() error {
|
||||
switch {
|
||||
case m.FP != "" && m.None != "":
|
||||
return fmt.Errorf("delivery: a module has both a fingerprint and a reason for none")
|
||||
case m.FP == "" && m.None == "":
|
||||
return fmt.Errorf("delivery: a module has neither a fingerprint nor a reason for none")
|
||||
case m.FP == "" && m.None == "" && m.FP2 == "" && m.None2 == "":
|
||||
return fmt.Errorf("delivery: a module has neither a fingerprint nor a reason for none, of either form")
|
||||
case m.FP != "" && !strings.HasPrefix(m.FP, SourcePrefix):
|
||||
return fmt.Errorf("delivery: the module's fingerprint %q does not start with %s", m.FP, SourcePrefix)
|
||||
case m.FP2 != "" && m.None2 != "":
|
||||
|
||||
Reference in New Issue
Block a user