From 65766a73e2140fefb028a2796940546ce9978830 Mon Sep 17 00:00:00 2001 From: Philip Monk Date: Wed, 29 Apr 2020 17:38:24 -0700 Subject: [PATCH] clay: port -merge to fusion --- bin/solid.pill | 4 +- pkg/arvo/lib/clay-commit.hoon | 80 ---------------------- pkg/arvo/sys/vane/clay.hoon | 29 ++++---- pkg/arvo/sys/zuse.hoon | 5 +- pkg/arvo/ted/merge.hoon | 122 ++++++---------------------------- 5 files changed, 43 insertions(+), 197 deletions(-) delete mode 100644 pkg/arvo/lib/clay-commit.hoon diff --git a/bin/solid.pill b/bin/solid.pill index 08ef1bb2a..b05984e23 100644 --- a/bin/solid.pill +++ b/bin/solid.pill @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bfdea141b5c28a037952fa06fbe350090b58eb4bd3c8fd7124d75a49ccd50d07 -size 13151591 +oid sha256:dfefbd6a561182f85a68c3a26a128168d7a70c17df0be5224bf2c8560a86ecbe +size 13157380 diff --git a/pkg/arvo/lib/clay-commit.hoon b/pkg/arvo/lib/clay-commit.hoon deleted file mode 100644 index 7b08c7301..000000000 --- a/pkg/arvo/lib/clay-commit.hoon +++ /dev/null @@ -1,80 +0,0 @@ -/- spider -/+ strandio -=, strand=strand:spider -=, clay -|% -:: Produce an ankh -:: -++ checkout - |= [=ankh deletes=(set path) changes=(map path cage)] - ^- ^ankh - :: Delete - :: - =. ankh - =/ dels ~(tap in deletes) - |- ^- ^ankh - =* outer-loop $ - ?~ dels - ankh - =. ankh - |- ^- ^ankh - =* inner-loop $ - ?~ i.dels - ankh(fil ~) - %= ankh - dir - %+ ~(put by dir.ankh) i.i.dels - %= inner-loop - i.dels t.i.dels - ankh (~(gut by dir.ankh) i.i.dels *^ankh) - == - == - outer-loop(dels t.dels) - :: Add/change - :: - =/ cans=(list [=path =cage]) ~(tap by changes) - |- ^- ^ankh - =* outer-loop $ - ?~ cans - ankh - =. ankh - =/ orig-path path.i.cans - |- ^- ^ankh - =* inner-loop $ - ?~ path.i.cans - %= ankh - fil - `[(page-to-lobe [p q.q]:cage.i.cans) cage.i.cans] - == - %= ankh - dir - %+ ~(put by dir.ankh) i.path.i.cans - %= inner-loop - path.i.cans t.path.i.cans - ankh (~(gut by dir.ankh) i.path.i.cans *^ankh) - == - == - outer-loop(cans t.cans) -:: Produce a mime cache -:: -++ checkout-cache - |= [=ship =desk deletes=(set path) changes=(map path cage)] - =/ m (strand ,(map path (unit mime))) - ^- form:m - ;< our=@p bind:m get-our:strandio - =/ mim-builds=(map path schematic:ford) - %- ~(run by changes) - |= =cage - [%cast [our desk] %mime %$ cage] - ;< mim-results=(map path cage) bind:m (build-cages:strandio mim-builds) - =/ can-mim=(map path (unit mime)) - %- ~(run by mim-results) - |= =cage - ?> ?=(%mime p.cage) - `!<(mime q.cage) - =/ del-mim=(map path (unit mime)) - (malt (turn ~(tap in deletes) |=(=path [path ~]))) - =/ new-mim=(map path (unit mime)) - (~(uni by del-mim) can-mim) - (pure:m new-mim) --- diff --git a/pkg/arvo/sys/vane/clay.hoon b/pkg/arvo/sys/vane/clay.hoon index 2a086e5cf..e4397c73e 100644 --- a/pkg/arvo/sys/vane/clay.hoon +++ b/pkg/arvo/sys/vane/clay.hoon @@ -155,7 +155,7 @@ cez=(map @ta crew) :: permission groups cue=(qeu [=duct =task:able]) :: queued requests act=active-write :: active write - pud=(unit [=desk =yuki]) :: pending update + pud=(unit [=desk =yoki]) :: pending update == :: :: :: Currently active write @@ -3473,7 +3473,7 @@ ?> ?=(~ deletes) =/ data=(map path (each page lobe)) (~(run by changes) |=(=cage &+[p q.q]:cage)) - (park | [~ data] *rang) + (park | &+[~ data] *rang) :: =/ parent-tako=tako (aeon-to-tako:ze let.dom) =/ data=(map path (each page lobe)) @@ -3488,7 +3488,7 @@ (~(run by changes) |=(=cage &+[p q.q]:cage)) :: =/ =yuki [~[parent-tako] data] - (park | yuki *rang) + (park | &+yuki *rang) :: :: Unix commit :: @@ -3524,17 +3524,22 @@ ++ park =/ check-sane | |^ - |= [updated=? =yuki =rang] + |= [updated=? =yoki =rang] ^+ ..park =: hut.ran (~(uni by hut.rang) hut.ran) lat.ran (~(uni by lat.rang) lat.ran) == + =/ new-data=(map path (each page lobe)) + ?- -.yoki + %& q.p.yoki + %| (~(run by q.p.yoki) |=(=lobe |+lobe)) + == =/ [deletes=(set path) changes=(map path (each page lobe))] =/ previous-yaki ?: =(0 let.dom) *yaki (aeon-to-yaki:ze let.dom) - (get-changes q.previous-yaki q.yuki) + (get-changes q.previous-yaki new-data) ~| [from=let.dom deletes=deletes changes=~(key by changes)] :: :: promote ford cache @@ -3559,13 +3564,13 @@ |= [=path =lobe =cage] [lobe %direct lobe [p q.q]:cage] =/ data=(map path lobe) - %- ~(urn by q.yuki) + %- ~(urn by new-data) |= [=path value=(each page lobe)] ?- -.value %| p.value %& lobe:(~(got by change-cages) path) == - =/ =yaki (make-yaki p.yuki data now) + =/ =yaki (make-yaki p.p.yoki data now) =: let.dom +(let.dom) hit.dom (~(put by hit.dom) +(let.dom) r.yaki) hut.ran (~(put by hut.ran) r.yaki yaki) @@ -3908,7 +3913,7 @@ :: Delay current update until sys update is complete :: ++ sys-update - |= [=ford=args:ford:fusion =yuki changes=(map path (each page lobe))] + |= [=ford=args:ford:fusion =yoki changes=(map path (each page lobe))] ^+ ..park =/ updates (need-sys-update changes) :: Don't save ford cache so it gets properly handled when we @@ -3917,7 +3922,7 @@ =^ updates-cages=(map path [lobe cage]) ford-cache.ford-args (checkout-changes ford-args updates) ?> =(~ pud) - =. pud `[syd yuki] + =. pud `[syd yoki] |^ ?: (~(has by updates) /sys/hoon/hoon) reset ?: (~(has by updates) /sys/arvo/hoon) @@ -5480,15 +5485,15 @@ %park =^ mos ruf =/ den ((de our now ski hen ruf) our des.req) - abet:(park:den | [yuk ran]:req) + abet:(park:den | [yok ran]:req) [mos ..^$] :: %pork - =/ [syd=desk =yuki] (need pud.ruf) + =/ [syd=desk =yoki] (need pud.ruf) =. pud.ruf ~ =^ mos ruf =/ den ((de our now ski hen ruf) our syd) - abet:(park:den & yuki *rang) + abet:(park:den & yoki *rang) [mos ..^$] :: %perm diff --git a/pkg/arvo/sys/zuse.hoon b/pkg/arvo/sys/zuse.hoon index 5c879f54a..a66a7d683 100644 --- a/pkg/arvo/sys/zuse.hoon +++ b/pkg/arvo/sys/zuse.hoon @@ -567,7 +567,7 @@ {$mont des/desk bem/beam} :: mount to unix {$dirk des/desk} :: mark mount dirty {$ogre pot/$@(desk beam)} :: delete mount point - {$park des/desk yuk/yuki ran/rang} :: plumbing commit + {$park des/desk yok/yoki ran/rang} :: synchronous commit {$perm des/desk pax/path rit/rite} :: change permissions {$pork ~} :: resume commit $>(%trim vane-task) :: trim state @@ -693,7 +693,8 @@ == :: ++ urge |*(a/mold (list (unce a))) :: list change ++ whom (each ship @ta) :: ship or named crew - ++ yuki :: commit + ++ yoki (each yuki yaki) :: commit + ++ yuki :: proto-commit $: p/(list tako) :: parents q/(map path (each page lobe)) :: namespace == :: diff --git a/pkg/arvo/ted/merge.hoon b/pkg/arvo/ted/merge.hoon index 54ae588c6..f5fe338cc 100644 --- a/pkg/arvo/ted/merge.hoon +++ b/pkg/arvo/ted/merge.hoon @@ -1,7 +1,7 @@ :: Merge second desk into first :: /- spider -/+ strandio, clay-commit +/+ strandio =, strand=strand:spider =, clay ^- thread:spider @@ -10,14 +10,16 @@ =/ m (strand ,vase) ^- form:m ;< our=@p bind:m get-our:strandio -;< wen=@da bind:m get-time:strandio -|^ +;< now=@da bind:m get-time:strandio :: :: Fetch current states :: -=/ start-path /(scot %p our)/[bob-desk]/(scot %da wen) +=/ start-path /(scot %p our)/[bob-desk]/(scot %da now) ;< =ali=riot:clay bind:m - (warp:strandio ali-ship ali-desk `[%sing %v da+wen /]) + (warp:strandio ali-ship ali-desk `[%sing %v da+now /]) +:: +;< wen=@da bind:m get-time:strandio +|^ ?> ?=(^ ali-riot) =+ !<(=ali=dome q.r.u.ali-riot) =/ ali-tako=tako (~(got by hit.ali-dome) let.ali-dome) @@ -32,13 +34,8 @@ ;< =merge-result bind:m (merge ali-yaki bob-yaki) ?~ merge-result (pure:m !>(~)) -=/ =rang - [(malt [r .]:new.u.merge-result ~) lat.u.merge-result] -;< [=ankh changes=(map path cage)] bind:m - (checkout bob-dome new.u.merge-result [deletes changes]:u.merge-result) -;< mim=(map path (unit mime)) bind:m - (checkout-cache:clay-commit ali-ship ali-desk deletes.u.merge-result changes) -=/ args [bob-desk r.new.u.merge-result rang ankh mim] +=/ =rang [~ lat.u.merge-result] +=/ args [bob-desk new.u.merge-result rang] ;< ~ bind:m (send-raw-card:strandio %pass /merg/[bob-desk]/[ali-desk] %arvo %c %park args) (pure:m !>(~)) @@ -46,10 +43,7 @@ +$ merge-result %- unit $: conflicts=(set path) - bop=(map path cage) - new=yaki - deletes=(set path) - changes=(set path) + new=yoki lat=(map lobe blob) == :: @@ -57,19 +51,12 @@ |= [=ali=yaki bob-yaki=(unit yaki)] =/ m (strand ,merge-result) ^- form:m - ?: ?=(%init germ) :: :: If this is an %init merge, we set the ali's commit to be bob's. :: - %: pure:m - ~ - conflicts=~ - bop=~ - new=ali-yaki - deletes=~ - changes=~(key by q.ali-yaki) - lat=~ - == + ?: ?=(%init germ) + (pure:m ~ conflicts=~ new=|+ali-yaki lat=~) + :: =/ bob-yaki (need bob-yaki) |^ ?- germ @@ -85,14 +72,10 @@ (pure:m ~) ?: (~(has in (reachable-takos r.bob-yaki)) r.ali-yaki) (pure:m ~) - =/ new-yaki (make-yaki [r.bob-yaki r.ali-yaki ~] q.bob-yaki wen) %: pure:m ~ conflicts=~ - bop=~ - new=new-yaki - deletes=~ - changes=~ + new=&+[[r.bob-yaki r.ali-yaki ~] (to-yuki q.bob-yaki)] lat=~ == :: @@ -103,14 +86,10 @@ %that ?: =(r.ali-yaki r.bob-yaki) (pure:m ~) - =/ new-yaki (make-yaki [r.bob-yaki r.ali-yaki ~] q.ali-yaki wen) %: pure:m ~ conflicts=~ - bop=~ - new=new-yaki - deletes=get-deletes - changes=get-changes + new=&+[[r.bob-yaki r.ali-yaki ~] (to-yuki q.ali-yaki)] lat=~ == :: @@ -131,15 +110,7 @@ %^ error %bad-fine-merge leaf+"tried fast-forward but is not ancestor or descendant" ~ - %: pure:m - ~ - conflicts=~ - bop=~ - new=ali-yaki - deletes=get-deletes - changes=get-changes - lat=~ - == + (pure:m ~ conflicts=~ new=|+ali-yaki lat=~) :: ?(%meet %mate %meld) ?: =(r.ali-yaki r.bob-yaki) @@ -187,10 +158,7 @@ %: pure:m ~ conflicts=~ - bop=~ - new=(make-yaki [r.bob-yaki r.ali-yaki ~] hat wen) - deletes=get-deletes - changes=get-changes + new=&+[[r.bob-yaki r.ali-yaki ~] (to-yuki hat)] lat=~ == == @@ -208,28 +176,6 @@ takos :: hence skip (~(uni in takos) ^$(tak q)) :: otherwise traverse :: - ++ get-deletes - %- silt ^- (list path) - %+ murn ~(tap by (~(uni by q.bob-yaki) q.ali-yaki)) - |= [=path =lobe] - ^- (unit ^path) - =/ a (~(get by q.ali-yaki) path) - =/ b (~(get by q.bob-yaki) path) - ?: |(=(a b) !=(~ a)) - ~ - `path - :: - ++ get-changes - %- silt ^- (list path) - %+ murn ~(tap by (~(uni by q.bob-yaki) q.ali-yaki)) - |= [=path =lobe] - ^- (unit ^path) - =/ a (~(get by q.ali-yaki) path) - =/ b (~(get by q.bob-yaki) path) - ?: |(=(a b) =(~ a)) - ~ - `path - :: :: Find the most recent common ancestor(s). :: :: Pretty sure this could be a lot more efficient. @@ -308,37 +254,11 @@ ~ `[pax ~] == - -- -:: -++ checkout - |^ - |= [=bob=dome =yaki deletes=(set path) changes=(set path)] - =/ m (strand ,[ankh (map path cage)]) - ^- form:m - =/ start-path /(scot %p our)/[bob-desk]/(scot %da wen) - =/ builds - %- malt - %+ turn ~(tap in changes) - |= =path - [path (lobe-to-schematic start-path (~(got by q.yaki) path))] - ;< results=(map path cage) bind:m (build-cages:strandio builds) - (pure:m (checkout:clay-commit ank.bob-dome deletes results) results) :: - ++ lobe-to-schematic - |= [=start=path =lobe] - ^- schematic:ford - =+ .^(=blob %cs (weld start-path /blob/(scot %uv lobe))) - =/ =disc:ford [ali-ship ali-desk] - ?- -.blob - %direct (page-to-schematic disc q.blob) - %delta [%pact disc $(lobe q.q.blob) (page-to-schematic disc r.blob)] - == - :: - ++ page-to-schematic - |= [=disc:ford =page] - ?. ?=(%hoon p.page) - [%volt disc page] - [%$ p.page [%atom %t ~] q.page] + ++ to-yuki + |= m=(map path lobe) + ^- (map path (each page lobe)) + (~(run by m) |=(=lobe |+lobe)) -- :: ++ error