build.bqn: react to dependencies changing by other builds properly

This commit is contained in:
dzaima 2023-01-25 06:35:55 +02:00
parent f637fa7746
commit 9f92bac362

View File

@ -326,21 +326,33 @@ GetCache ← { 𝕊 basename‿desc‿key:
dataVersion 0 dataVersion 0
prevKsprevVs {ab: adataVersion? b; } •file.Exists@, {Deserialize 8'c',8•bit._cast •FBytes 𝕩} dataPath prevKsprevVs {ab: adataVersion? b; } •file.Exists@, {Deserialize 8'c',8•bit._cast •FBytes 𝕩} dataPath
IsUpToDate { 𝕊: Find {
i prevKs<𝕩.cacheKey i prevKs<𝕩.cacheKey
i<prevKs? i<prevKs? iprevVs;
{@:0; ´ AtRootIsFileTheSame´¨𝕩} iprevVs; @
0 }
IsUpToDate {
𝕊:
𝕩.found0@?
fileInfodepInfo 𝕩.found0
´ AtRootIsFileTheSame´¨ fileInfo?
depInfo𝕩.DepHash@
;
0
} }
newKsnewVs newKsnewVs
finalNewData @ finalNewData @
FinalData { 𝕊: FinalData { 𝕊:
finalNewData@?finalNewData; finalNewData@?finalNewData;
jKs newKsprevKs jKs prevKs˜ {𝕩.cacheKey}¨ newKs
jVs newVsprevVs jVs prevVs˜ newKs {𝕨.SetVal 𝕩}¨ newVs
finalNewData Serialize dataVersion (<jKs) /¨ jKsjVs finalNewData Serialize dataVersion (<jKs) /¨ jKsjVs
} }
Update {key𝕊data: !finalNewData@ newKs <key newVs <data} # data≡@ means failed to build Update {key𝕊data: # data≡@ means failed to build
!finalNewData@
newKs <key
newVs <data
}
onExitList {{𝕊: dataPath •FBytes 8,8'c'•bit._cast FinalData@}{𝕊: 0newKs}} onExitList {{𝕊: dataPath •FBytes 8,8'c'•bit._cast FinalData@}{𝕊: 0newKs}}
} }
@ -348,7 +360,7 @@ ruleKs‿ruleVs ← ⟨⟩‿⟨⟩
# dependency resolution & thread management # dependency resolution & thread management
Run { 𝕊: Run { 𝕊:
ruleDeps {𝕩.ruleDeps}¨ ruleVs ruleDeps {{𝕩.dst}¨ 𝕩.ruleDeps}¨ ruleVs
ruleSrcs0 ruleKsruleDeps ruleSrcs0 ruleKsruleDeps
! ´ ruleSrcs0<ruleKs ! ´ ruleSrcs0<ruleKs
ruleSrcs ((˜¨/)ruleDeps) ruleSrcs0 ruleSrcs ((˜¨/)ruleDeps) ruleSrcs0
@ -386,10 +398,10 @@ Run ← { 𝕊:
Log(×) 1tb Log(×) 1tb
{ 𝕊: { 𝕊:
v.cacheKey v.cache.Update @ v v.cache.Update @
} }
{ 𝕊: { 𝕊:
v.cacheKey v.cache.Update 3tb v v.cache.Update 3tb
ps iruleP ps iruleP
ruleN -1(ps) ruleN -1(ps)
left (0=psruleN)/ps left (0=psruleN)/ps
@ -467,14 +479,21 @@ Run ← { 𝕊:
AddRule { 𝕊 cachecacheKeydstGetCMDdispdeps: AddRule { 𝕊 cachecacheKeydstGetCMDdispdeps:
ruleKs <dst ruleKs <dst
setFound @
res { res {
dst dst dst dst
cache cache cache cache
cacheKey cacheKey cacheKey cacheKey
found0 0
SetFound {found0𝕩}
DepHash {𝕊: Hash {𝕩.found1@? 𝕩.found0; 𝕩.found1}¨ ruleDeps}
found1 @
SetVal {found1 𝕩DepHash@}
disp disp disp disp
CMD GetCMD CMD GetCMD
ruleDeps {𝕩.dst}¨ deps ruleDeps deps
} }
SetFound cache.Find res
ruleVs res ruleVs res
res res
} }