diff --git a/build/src/build.bqn b/build/src/build.bqn index de2344d6..41783cac 100755 --- a/build/src/build.bqn +++ b/build/src/build.bqn @@ -326,21 +326,33 @@ GetCache ← { 𝕊 basename‿desc‿key: dataVersion ← 0 prevKs‿prevVs ← {a‿b: a≡dataVersion? b; ⟨⟩‿⟨⟩} •file.Exists◶⟨@, {Deserialize ⟨8‿'c',8⟩•bit._cast •FBytes 𝕩}⟩ dataPath - IsUpToDate ⇐ { 𝕊: + Find ⇐ { i ← ⊑prevKs⊐<𝕩.cacheKey - i<≠prevKs? - {@:0; ∧´ AtRoot⊸IsFileTheSame´¨𝕩} i⊑prevVs; - 0 + i<≠prevKs? i⊑prevVs; + @ + } + IsUpToDate ⇐ { + 𝕊: + 𝕩.found0≢@? + fileInfo‿depInfo ← 𝕩.found0 + ∧´ AtRoot⊸IsFileTheSame´¨ fileInfo? + depInfo≡𝕩.DepHash@ + ; + 0 } newKs‿newVs ← ⟨⟩‿⟨⟩ finalNewData ← @ FinalData ⇐ { 𝕊: finalNewData≢@?finalNewData; - jKs ← newKs∾prevKs - jVs ← newVs∾prevVs + jKs ← prevKs∾˜ {𝕩.cacheKey}¨ newKs + jVs ← prevVs∾˜ newKs {𝕨.SetVal 𝕩}¨ newVs finalNewData ↩ Serialize dataVersion⋈ (<∊jKs) /¨ jKs‿jVs } - Update ⇐ {key𝕊data: !finalNewData≡@ ⋄ newKs∾↩