diff --git a/MAINTAINERS.md b/MAINTAINERS.md index 2e2e2746fc..eceb7ebaf8 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -72,20 +72,27 @@ release branch is cut from `develop` and the process begins again. ### Tagging -If it's a very trivial hotfix that you know isn't going to break anything, tag -it as `urbit-os-vx.y`. Here 'x' is the major version and 'y' is an OTA patch -counter. +When we branch release to deploy to `~marnec`, we need to tag it as a release candidate (RC), like `urbit-os-vx.y-rc1`. Here 'x' is the major version and 'y' is an OTA patch counter. After this any change that goes into release gets a new tag that increments the rc. -Use an annotated tag, i.e. +After we ship a release to the live network, add a tag that is not a release candidate, like `urbit-os-vx.y`, to the master branch, since that's what was released. + +#### Applying the Tag Locally + +Use an annotated tag with the `-a` git argument. Make sure to follow +the naming convention for RCs and live releases, described above. + + +To add a tag to the local repo, run this: ``` -git tag -a urbit-os-vx.y +git tag -a ``` -The tag format should look something like this: +This will bring up an editor, where you should add the release notes, +which should look like this: ``` -urbit-os-vx.y + This release will be pushed to the network as an over-the-air update. @@ -98,9 +105,17 @@ Contributions: [..] ``` -You can get the "contributions" section by the shortlog between the last release -and this release: +To fill in the "contributions" section, copy in the shortlog between the last release and this release, obtained by running this command: ``` git shortlog --no-merges LAST_RELEASE.. ``` + +#### Pushing the Tag to the Main Repo + +Once you have added a tag, push it to the main repository using the +following command: + +``` +git push origin +``` diff --git a/pkg/arvo/app/acme.hoon b/pkg/arvo/app/acme.hoon index cd2a2a09b4..17ca28d3f5 100644 --- a/pkg/arvo/app/acme.hoon +++ b/pkg/arvo/app/acme.hoon @@ -584,10 +584,11 @@ ~| [%no-next-domain idx=idx] (head (skim pending |=([turf idx=@ud ?] =(idx ^idx)))) :: XX should confirm that :turf points to us - :: confirms that domain exists (and an urbit is on :80) + :: confirms that domain exists (and an urbit is on the standard port) :: + =/ sec=? p:.^(hart:eyre %e /(scot %p our.bow)/host/(scot %da now.bow)) =/ =purl - :- [sec=| por=~ host=[%& turf.next]] + :- [sec=sec por=~ host=[%& turf.next]] [[ext=~ path=/'~debug'] query=~] =/ =wire (acme-wire try %validate-domain /idx/(scot %ud idx.next)) @@ -754,9 +755,8 @@ ?> ?=(%wake sas.u.rod) =* aut u.active.aut.u.rod =/ pat=path /'.well-known'/acme-challenge/[tok.cal.aut] - :: note: requires port 80, just as the ACME service will - :: - =/ url=purl [[sec=| por=~ hos=[%& dom.aut]] [ext=~ pat] hed=~] + =/ sec=? p:.^(hart:eyre %e /(scot %p our.bow)/host/(scot %da now.bow)) + =/ url=purl [[sec=sec por=~ hos=[%& dom.aut]] [ext=~ pat] hed=~] :: =/ url=purl [[sec=| por=`8.081 hos=[%& /localhost]] [ext=~ pat] hed=~] :: XX idx in wire? :: diff --git a/pkg/arvo/gen/brass.hoon b/pkg/arvo/gen/brass.hoon index 98c39ec7e7..a80cd5e903 100644 --- a/pkg/arvo/gen/brass.hoon +++ b/pkg/arvo/gen/brass.hoon @@ -24,7 +24,7 @@ rest=(list desk) == :: - ~ + prime=_| == :- %pill ^- pill:pill @@ -39,50 +39,10 @@ ?~ arg %base ?>(?=(@ base.arg) base.arg) /(scot %p p.bec)/[desk]/(scot %da now)/sys -=/ bas=path - (scag 3 sys) =/ dez=(list [desk path]) ?~ arg ~ %+ turn rest.arg |= =desk [desk /(scot %p p.bec)/[desk]/(scot %da now)] :: -:: compiler-source: hoon source file producing compiler, `sys/hoon` -:: -=+ compiler-source=.^(@t %cx (welp sys /hoon/hoon)) -:: -:: compiler-twig: compiler as hoon expression -:: -~& %brass-parsing -=+ compiler-twig=(rain /sys/hoon/hoon compiler-source) -~& %brass-parsed -:: -:: compiler-formula: compiler as nock formula -:: -~& %brass-compiling -=+ compiler-formula=q:(~(mint ut %noun) %noun compiler-twig) -~& %brass-compiled -:: -:: arvo-source: hoon source file producing arvo kernel, `sys/arvo` -:: -=+ arvo-source=.^(@t %cx (welp sys /arvo/hoon)) -:: -:: boot-ova: startup events -:: -=/ boot-ova=(list) - :~ aeon:eden:part - boot:eden:part - compiler-formula - compiler-source - arvo-source - == -:: a pill is a 3-tuple of event-lists: [boot kernel userspace] -:: -:+ %pill %brass -:+ boot-ova - :~ (boot-ovum:pill compiler-source arvo-source) - (file-ovum2:pill bas) - == -%+ turn - (snoc dez [%base bas]) -file-ovum:pill +(brass:pill sys dez prime) diff --git a/pkg/arvo/gen/ivory.hoon b/pkg/arvo/gen/ivory.hoon index 6ae9a25048..387ac43f34 100644 --- a/pkg/arvo/gen/ivory.hoon +++ b/pkg/arvo/gen/ivory.hoon @@ -17,60 +17,4 @@ =/ sys=path ?^ arg top.arg /(scot %p p.bec)/[q.bec]/(scot %da now)/sys -=/ lib - (welp (flop (tail (flop sys))) /lib) -:: -|^ =/ ver - =/ sub *(trap vase) - =. sub (build-sys sub %hoon) - =. sub (build-sys sub %arvo) - =. sub (build-sys sub %lull) - =. sub (build-sys sub %zuse) - =. sub (build-lib sub & %ethereum) - =. sub (build-lib sub & %azimuth) - (build-lib sub | %vere) - =/ nok !. - => *[ver=(trap vase) ~] - != q:$:ver - ivory/[nok ver ~] -:: -++ build-sys - |= [sub=(trap vase) nam=term] ^- (trap vase) - ~> %slog.[0 leaf+"ivory: building /sys/{(trip nam)}"] - (swat sub (rain /sys/[nam]/hoon .^(@t cx+(welp sys /[nam]/hoon)))) -:: -++ build-lib - |= [sub=(trap vase) imp=? nam=term] ^- (trap vase) - ~> %slog.[0 leaf+"ivory: building /lib/{(trip nam)}"] - =/ hun=hoon - %+ mist /lib/[nam]/hoon - .^(@t cx+(welp lib /[nam]/hoon)) - ?. imp (swat sub hun) - (swel sub [%ktts nam hun]) -:: +mist: +rain but skipping past ford runes -:: -++ mist - |= [bon=path txt=@] - ^- hoon - =+ vas=vast - ~| bon - %+ scan (trip txt) - %- full - =; fud - (ifix [;~(plug gay fud) gay] tall:vas(wer bon)) - %- star - ;~ pose vul - %+ ifix [fas (just `@`10)] - (star ;~(less (just `@`10) next)) - == -:: +swel: +swat but with +slop -:: -++ swel - |= [tap=(trap vase) gen=hoon] - ^- (trap vase) - =/ gun (~(mint ut p:$:tap) %noun gen) - => [tap=tap gun=gun] - |. ~+ - =/ pro q:$:tap - [[%cell p.gun p:$:tap] [.*(pro q.gun) pro]] --- +(ivory:pill sys) diff --git a/pkg/arvo/gen/solid.hoon b/pkg/arvo/gen/solid.hoon index cfd54601e3..f98d949480 100644 --- a/pkg/arvo/gen/solid.hoon +++ b/pkg/arvo/gen/solid.hoon @@ -28,12 +28,10 @@ == :: dub=_| + prime=_| == :- %pill ^- pill:pill -:: sys: root path to boot system, `/~me/[desk]/now/sys` -:: bas: root path to boot system' desk -:: dez: secondary desks and their root paths :: =/ sys=path ?: ?=([^ *] arg) @@ -42,84 +40,10 @@ ?~ arg %base ?>(?=(@ base.arg) base.arg) /(scot %p p.bec)/[desk]/(scot %da now)/sys -=/ bas=path - (scag 3 sys) =/ dez=(list [desk path]) ?~ arg ~ %+ turn rest.arg |= =desk [desk /(scot %p p.bec)/[desk]/(scot %da now)] :: -=/ compiler-path (weld sys /hoon) -=/ arvo-path (weld sys /arvo) -~& %solid-start -=/ compiler-src .^(@t %cx (weld compiler-path /hoon)) -=/ arvo-src .^(@t %cx (weld arvo-path /hoon)) -=/ arvo-formula - ~& %solid-loaded - =/ compiler-hoon (rain compiler-path compiler-src) - ?. dub - :: compile arvo against hoon, with our current compiler - :: - =/ whole-hoon=hoon - [%tsgr compiler-hoon [%tsgr [%$ 7] (rain arvo-path arvo-src)]] - ~& %solid-parsed - =/ whole-formula q:(~(mint ut %noun) %noun whole-hoon) - ~& %solid-arvo - whole-formula - :: compile arvo against hoon, with a freshly compiled hoon (via +ride) - :: - ~& %solid-parsed - =/ compiler-formula q:(~(mint ut %noun) %noun compiler-hoon) - ~& %solid-compiled - =/ whole-src - (rap 3 ['=> ' compiler-src '=> +7 ' arvo-src ~]) - ~& %solid-double-loaded - =/ whole-formula - =< + - .* [%noun whole-src] - [%8 compiler-formula [%9 2 %10 [6 %0 3] [%0 2]]] - ~& %solid-double-compiled - whole-formula -:: -~& [%solid-kernel `@ux`(mug arvo-formula)] -:: -:: installed: Arvo gate (formal interface) with %zuse and vanes installed -:: -=/ installed - =< q - %^ spin - ^- (list ovum) - :- (boot-ovum:pill compiler-src arvo-src) - %+ turn - (snoc (turn dez tail) bas) - file-ovum2:pill - .*(0 arvo-formula) - |= [ovo=ovum ken=*] - [~ (slum ken [now ovo])] -:: -:: boot-two: startup formula -:: -:: We evaluate :arvo-formula (for jet registration), -:: then ignore the result and produce .installed -:: -=/ boot-two - => *[arvo-formula=^ installed=^ tale=*] - != =+(.*(0 arvo-formula) [installed tale]) -:: -:: boot-ova -:: -=/ boot-ova=(list) - [aeon:eden:part boot-two arvo-formula installed ~] -:: -:: a pill is a 3-tuple of event-lists: [boot kernel userspace] -:: -:: Our kernel event-list is ~, as we've already installed them. -:: Our userspace event-list is a list containing a full %clay -:: filesystem sync event. -:: -:+ %pill %solid -:+ boot-ova ~ -%+ turn - (snoc dez [%base bas]) -file-ovum:pill +(solid:pill sys dez dub now prime) diff --git a/pkg/arvo/lib/dns.hoon b/pkg/arvo/lib/dns.hoon index cbad20271a..f2891ca399 100644 --- a/pkg/arvo/lib/dns.hoon +++ b/pkg/arvo/lib/dns.hoon @@ -36,7 +36,7 @@ ;< ~ bind:m (backoff:strandio try ~h1) ;< rep=(unit httr:eyre) bind:m (hiss-request:strandio hiss) ?: ?& ?=(^ rep) - |(=(200 p.u.rep) =(307 p.u.rep)) + |(=(200 p.u.rep) =(307 p.u.rep) =(301 p.u.rep)) == (pure:m &) ?. ?| ?=(~ rep) diff --git a/pkg/arvo/lib/hood/helm.hoon b/pkg/arvo/lib/hood/helm.hoon index 6b29348a26..0c812cbe8e 100644 --- a/pkg/arvo/lib/hood/helm.hoon +++ b/pkg/arvo/lib/hood/helm.hoon @@ -1,4 +1,3 @@ -/+ pill =* card card:agent:gall |% +$ state state-2 diff --git a/pkg/arvo/lib/hood/kiln.hoon b/pkg/arvo/lib/hood/kiln.hoon index 80c5db06c9..e82d8c26e5 100644 --- a/pkg/arvo/lib/hood/kiln.hoon +++ b/pkg/arvo/lib/hood/kiln.hoon @@ -1155,11 +1155,18 @@ :: ~> %slog.(fmt "finished downloading update for {here}") =. let +(let) - :: If nothing changed, just advance + :: If nothing changed, just ensure %kids is up-to-date and advance :: ?. (get-remote-diff our syd now [her sud (dec let)]) - ~> %slog.(fmt "remote is identical to {here}, skipping") - next + =< next + ?~ kid + ~> %slog.(fmt "remote is identical to {here}, skipping") + ..abet + ?. (get-remote-diff our u.kid now [her sud (dec let)]) + ~> %slog.(fmt "remote is identical to {here}, skipping") + ..abet + ~> %slog.(fmt "remote is identical to {here}, merging into {}") + (merg /kids u.kid) :: Else start merging, but also immediately start listening to :: the next revision. Now, all errors should no-op -- we're :: already waiting for the next revision. @@ -1186,7 +1193,7 @@ :: ?~ kid ..abet - ~> %slog.(fmt "kids merge into {}") + ~> %slog.(fmt "kids merge into {}") (merg /kids u.kid) :: %kids diff --git a/pkg/arvo/sys/lull.hoon b/pkg/arvo/sys/lull.hoon index 9bca8c59b5..4708945665 100644 --- a/pkg/arvo/sys/lull.hoon +++ b/pkg/arvo/sys/lull.hoon @@ -786,6 +786,7 @@ [%park des=desk yok=yoki ran=rang] :: synchronous commit [%perm des=desk pax=path rit=rite] :: change permissions [%pork ~] :: resume commit + [%prep lat=(map lobe page)] :: prime clay store [%rein des=desk ren=rein] :: extra apps [%stir arg=*] :: debug [%tire p=(unit ~)] :: app state subscribe @@ -1177,6 +1178,7 @@ $>(%init vane-task) :: after gall ready [%meld ~] :: unify memory [%pack ~] :: compact memory + [%seat =desk] :: install desk [%shot ses=@tas task=session-task] :: task for session [%talk p=(list tank)] :: print tanks [%text p=tape] :: print tape @@ -2527,6 +2529,9 @@ :: TODO: make $yuki an option for %into? :: $>(%park task:clay) + :: %clay: load blob store + :: + $>(%prep task:clay) :: %eyre: learn ports of live http servers :: $>(%live task:eyre) diff --git a/pkg/arvo/sys/vane/clay.hoon b/pkg/arvo/sys/vane/clay.hoon index f9a6f5954d..abafa0d3c2 100644 --- a/pkg/arvo/sys/vane/clay.hoon +++ b/pkg/arvo/sys/vane/clay.hoon @@ -4210,6 +4210,18 @@ ++ read-s |= [yon=aeon pax=path] ^- (unit (unit cage)) + ?: ?=([%bloc ~] pax) + :^ ~ ~ %noun + :- -:!>(*(map lobe page)) + ^- (map lobe page) + %- %~ rep in + %- reachable-takos + (~(got by hit.dom) let.dom) + |= [t=tako o=(map lobe page)] + %- ~(gas by o) + %+ turn + ~(val by q:(~(got by hut.ran) t)) + |=(l=lobe [l (~(got by lat.ran) l)]) ?. ?=([@ * *] pax) `~ ?+ i.pax `~ @@ -4913,6 +4925,9 @@ =/ den ((de now rof hen ruf) our syd) abet:(park:den & & yoki *rang) [mos ..^$] + :: + %prep + [~ ..^$(lat.ran.ruf (~(uni by lat.req) lat.ran.ruf))] :: %perm =^ mos ruf diff --git a/pkg/arvo/sys/vane/dill.hoon b/pkg/arvo/sys/vane/dill.hoon index f58a73bd03..3618e1008f 100644 --- a/pkg/arvo/sys/vane/dill.hoon +++ b/pkg/arvo/sys/vane/dill.hoon @@ -107,6 +107,11 @@ %pack (dump kyz) %crop (dump trim+p.kyz) %verb (pass /verb %$ kyz) + :: + %seat + %^ pass /seat %g + :+ %deal [our our] + [%hood %poke %kiln-install !>([desk.kyz our desk.kyz])] == :: ++ crud diff --git a/pkg/autoprop/app/autoprop.hoon b/pkg/autoprop/app/autoprop.hoon new file mode 100644 index 0000000000..a1da6dee2b --- /dev/null +++ b/pkg/autoprop/app/autoprop.hoon @@ -0,0 +1,319 @@ +:: autoprop: make pills & props when desk contents change +:: +:: auto-build a new .urb/put/latest-solid.pill: +:: +latest-solid solid %kids %garden +:: +:: stop auto-building latest-solid: +:: -latest-solid +:: +:: auto-build a new .urb/put/somedesk.jam: +:: +some-desk desk %somedesk +:: +:: see currently configured build tasks: +:: ? +:: +:: run task right now: +:: !latest-solid +:: +/+ libpill=pill, shoe, verb, dbug, default-agent +:: +=, clay +:: +|% ++$ state-0 + $: %0 + make=(map @ta [next=(unit @da) =task]) :: things to make + hear=(set desk) :: observed desks + vers=path :: runtime version + sole=sole-id :: the way out + == +:: ++$ sole-id sole-id:sole:shoe +:: ++$ task + $% pill + prop + == +:: ++$ pill + $% [%ivory base=desk] + [%solid base=desk etc=(set desk)] + [%brass base=desk etc=(set desk)] + == +:: ++$ prop + $% [%desk =desk] + == +:: ++$ command + $% [%put name=@ta =task] :: configure pill build + [%del name=@ta] :: remove pill build + [%see ~] :: help & current config + [%run name=@ta] :: force build + == +:: ++$ card card:shoe +:: +++ delay ~d5 +-- +=| state-0 +=* state - +:: +%+ verb | +%- agent:dbug +^- agent:gall +%- (agent:shoe command) +^- (shoe:shoe command) +|_ =bowl:gall ++* this . + def ~(. (default-agent this %|) bowl) + des ~(. (default:shoe this command) bowl) + rev rev:.^(vere %$ /(scot %p our.bowl)//(scot %da now.bowl)/zen/ver) +:: +++ on-init + ^- (quip card _this) + :_ this(vers rev) + [%pass /vers %arvo %b %wait (add now.bowl ~m5)]~ +:: +++ on-save !>(state) +++ on-load + |= old=vase + ^- (quip card _this) + [~ this(state !<(state-0 old))] +:: +++ command-parser + |= =sole-id + ^+ |~(nail *(like [? command])) + %+ pick + (cold [%see ~] wut) + |^ ;~ pose + (stag %put ;~(plug (ifix [lus ace] sym) ;~(pose pil pro))) + ;~(plug (cold %del hep) sym) + ;~(plug (cold %run zap) sym) + == + :: + ++ pil + ;~ pose + ;~(plug (perk %ivory ~) ;~(pfix ace des)) + ;~(plug (perk %solid ~) ;~(pfix ace dez)) + ;~(plug (perk %brass ~) ;~(pfix ace dez)) + == + :: + ++ pro + ;~(plug (perk %desk ~) ;~(pfix ace des)) + :: + ++ des + ;~(pfix cen sym) + :: + ++ dez + ;~ plug + des + ;~ pose + ;~(pfix ace (cook ~(gas in *(set desk)) (more ace des))) + (easy ~) + == + == + -- +:: +++ on-command + |= [=sole-id =command] + ^- (quip card _this) + ?- -.command + %put + =* task task.command + =/ targ=(set desk) + ?- -.task + %ivory [base.task ~ ~] + ?(%solid %brass) (~(put in etc.task) base.task) + %desk [desk.task ~ ~] + == + =/ news (~(dif in targ) hear) + =. hear (~(uni in hear) targ) + =. make (~(put by make) name.command `now.bowl task.command) + :_ this + %+ turn ~(tap in news) + |= =desk + :+ %pass /desk/[desk] + [%arvo %c %warp our.bowl desk `[%next %z da+now.bowl /]] + :: + %del + ::NOTE deletion from hear, if necessary, handled in +on-arvo + [~ this(make (~(del by make) name.command))] + :: + %see + :_ this + ^- (list card) + =- [%shoe [sole-id]~ %sole %mor -]~ + ^- (list sole-effect:shoe) + :- [%txt "to add: +task-name type %args"] + :- [%txt " where type is one of: solid, brass, ivory, desk"] + :- [%txt "to del: -task-name"] + :- [%txt "to run: !task-name"] + ?: =(~ make) + [%txt "no builds configured"]~ + :- [%txt "--"] + :- [%txt "builds:"] + %+ turn ~(tap by make) + |= [name=@ta next=(unit @da) =task] + :- %txt + %- trip + %+ rap 3 + :* name ' (' + ?~(next 'up to date' (scot %da u.next)) + ') : +' -.task ' %' + :: + ?- -.task + %ivory [base.task ~] + ?(%solid %brass) :- base.task + ?: =(~ etc.task) ~ + [' %' (join ' %' ~(tap in etc.task))] + %desk [desk.task ~] + == == + :: + %run + =* name name.command + =+ (~(got by make) name) + :_ =- this(make (~(jab by make) name -)) + |=([next=(unit @da) =^task] [~ task]) + ::TODO just poke hood instead? + =; sag=sole-effect:shoe + :_ ~ + :+ %shoe [sole]~ + :+ %sole %mor + :~ [%txt "{(trip dap.bowl)} built {(trip name)}"] + sag + == + |^ =* base base.task + :+ %sag + =/ ver=@ta + =+ .^(vere %$ /(scot %p our.bowl)//(scot %da now.bowl)/zen/ver) + ?. ?=([%vere @ ~] rev) + (rap 3 (join '-' rev)) + (fall (slaw %ta i.t.rev) i.t.rev) + ?- -.task + ?(%solid %brass %ivory) /[dap.bowl]/[ver]/[name]/pill + %desk /[dap.bowl]/[ver]/[name]/jam + == + ?- -.task + %ivory (ivory:libpill (sys base)) + :: + ?(%solid %brass) + =/ dez=(list [desk path]) + %+ turn ~(tap in etc.task) + |=(d=desk [d (bek d)]) + ?- -.task + %solid (solid:libpill (sys base) dez | now.bowl &) + %brass (brass:libpill (sys base) dez &) + == + :: + %desk + =* desk desk.task + (install:events:libpill desk (byk desk) &) + == + :: + ++ sys + |= d=desk + `path`(snoc (bek d) %sys) + :: + ++ byk + |= d=desk + `beak`[our.bowl d da+now.bowl] + :: + ++ bek + |= d=desk + `path`(en-beam (byk d) /) + -- + == +:: +++ on-arvo + |= [=wire sign=sign-arvo] + ^- (quip card _this) + ?: ?=([%build ~] wire) + :: on-wake, build all tasks whose time has come + :: + ?> ?=(%wake +<.sign) + =/ tasks=(list @ta) + %+ murn ~(tap by make) + |= [name=@ta next=(unit @da) task] + ?~ next ~ + ?:((lte u.next now.bowl) (some name) ~) + ?^ error.sign + ((slog 'on-wake build failed' >tasks< u.error.sign) ~ this) + :: + =| cards=(list card) + |- + ?~ tasks [cards this] + =^ caz this (on-command sole %run i.tasks) + $(tasks t.tasks, cards (weld cards caz)) + :: + ?: ?=([%vers ~] wire) + :: on-wake, republish props if we're on a new runtime + :: + ?> ?=(%wake +<.sign) + =/ next=card + [%pass /vers %arvo %b %wait (add now.bowl ~m5)] + ?^ error.sign + %- (slog 'on-wake vers failed' u.error.sign) + [[next]~ this] + ?: =(rev vers) [[next]~ this] + =/ tasks=(list @ta) ~(tap in ~(key by make)) + =| cards=(list card) + |- + ?~ tasks [[next cards] this] + =^ caz this (on-command sole %run i.tasks) + $(tasks t.tasks, cards (weld cards caz)) + :: + ?> ?=([%desk @ ~] wire) + =* desk i.t.wire + ?. ?=(%writ +<.sign) + ~& [dap.bowl %unexpected-sign +<.sign] + [~ this] + :: on-writ, bump build timers for all affected tasks + :: + =/ tasks=(list @ta) + %+ murn ~(tap by make) + |= [name=@ta (unit @da) =task] + =- ?:(- (some name) ~) + ?- -.task + %ivory =(desk base.task) + ?(%solid %brass) |(=(desk base.task) (~(has in etc.task) desk)) + %desk =(desk desk.task) + == + ?: =(~ tasks) + [~ this(hear (~(del in hear) desk))] + :: + =/ next=@da (add now.bowl delay) + :_ :: delay next build for affected tasks + :: + |- ?~ tasks this + =. make + %+ ~(jab by make) i.tasks + |=([(unit @da) =task] [`next task]) + $(tasks t.tasks) + :~ :: watch for the next change on this desk + :: + :+ %pass /desk/[desk] + [%arvo %c %warp our.bowl desk `[%next %z da+now.bowl /]] + :: + :: set a timer for building affected tasks + :: + [%pass /build %arvo %b %wait next] + == +:: +++ on-connect + |= =sole-id + ^- (quip card _this) + ::TODO actually should just poke drum to write + [~ this(sole sole-id)] +:: +++ can-connect |=(* =(src our):bowl) +++ on-disconnect on-disconnect:des +++ tab-list tab-list:des +:: +++ on-poke on-poke:def +++ on-watch on-watch:def +++ on-leave on-leave:def +++ on-peek on-peek:def +++ on-agent on-agent:def +++ on-fail on-fail:def +-- diff --git a/pkg/autoprop/desk.bill b/pkg/autoprop/desk.bill new file mode 100644 index 0000000000..c5030c486f --- /dev/null +++ b/pkg/autoprop/desk.bill @@ -0,0 +1,3 @@ +:~ %autoprop +== + diff --git a/pkg/autoprop/lib/dbug.hoon b/pkg/autoprop/lib/dbug.hoon new file mode 120000 index 0000000000..04f6855f78 --- /dev/null +++ b/pkg/autoprop/lib/dbug.hoon @@ -0,0 +1 @@ +../../base-dev/lib/dbug.hoon \ No newline at end of file diff --git a/pkg/autoprop/lib/default-agent.hoon b/pkg/autoprop/lib/default-agent.hoon new file mode 120000 index 0000000000..698f6802d4 --- /dev/null +++ b/pkg/autoprop/lib/default-agent.hoon @@ -0,0 +1 @@ +../../base-dev/lib/default-agent.hoon \ No newline at end of file diff --git a/pkg/autoprop/lib/dice.hoon b/pkg/autoprop/lib/dice.hoon new file mode 120000 index 0000000000..60d435d3ab --- /dev/null +++ b/pkg/autoprop/lib/dice.hoon @@ -0,0 +1 @@ +../../arvo/lib/dice.hoon \ No newline at end of file diff --git a/pkg/autoprop/lib/ethereum.hoon b/pkg/autoprop/lib/ethereum.hoon new file mode 120000 index 0000000000..96b5f11e63 --- /dev/null +++ b/pkg/autoprop/lib/ethereum.hoon @@ -0,0 +1 @@ +../../arvo/lib/ethereum.hoon \ No newline at end of file diff --git a/pkg/autoprop/lib/language-server/complete.hoon b/pkg/autoprop/lib/language-server/complete.hoon new file mode 120000 index 0000000000..219d824c7b --- /dev/null +++ b/pkg/autoprop/lib/language-server/complete.hoon @@ -0,0 +1 @@ +../../../base-dev/lib/language-server/complete.hoon \ No newline at end of file diff --git a/pkg/autoprop/lib/language-server/parser.hoon b/pkg/autoprop/lib/language-server/parser.hoon new file mode 120000 index 0000000000..327e1a5de6 --- /dev/null +++ b/pkg/autoprop/lib/language-server/parser.hoon @@ -0,0 +1 @@ +../../../base-dev/lib/language-server/parser.hoon \ No newline at end of file diff --git a/pkg/autoprop/lib/naive.hoon b/pkg/autoprop/lib/naive.hoon new file mode 120000 index 0000000000..f2d1d3a913 --- /dev/null +++ b/pkg/autoprop/lib/naive.hoon @@ -0,0 +1 @@ +../../arvo/lib/naive.hoon \ No newline at end of file diff --git a/pkg/autoprop/lib/pill.hoon b/pkg/autoprop/lib/pill.hoon new file mode 120000 index 0000000000..41e912cf19 --- /dev/null +++ b/pkg/autoprop/lib/pill.hoon @@ -0,0 +1 @@ +../../base-dev/lib/pill.hoon \ No newline at end of file diff --git a/pkg/autoprop/lib/shoe.hoon b/pkg/autoprop/lib/shoe.hoon new file mode 120000 index 0000000000..a4aab1dd76 --- /dev/null +++ b/pkg/autoprop/lib/shoe.hoon @@ -0,0 +1 @@ +../../base-dev/lib/shoe.hoon \ No newline at end of file diff --git a/pkg/autoprop/lib/skeleton.hoon b/pkg/autoprop/lib/skeleton.hoon new file mode 120000 index 0000000000..77626a3276 --- /dev/null +++ b/pkg/autoprop/lib/skeleton.hoon @@ -0,0 +1 @@ +../../base-dev/lib/skeleton.hoon \ No newline at end of file diff --git a/pkg/autoprop/lib/sole.hoon b/pkg/autoprop/lib/sole.hoon new file mode 120000 index 0000000000..f776890f23 --- /dev/null +++ b/pkg/autoprop/lib/sole.hoon @@ -0,0 +1 @@ +../../base-dev/lib/sole.hoon \ No newline at end of file diff --git a/pkg/autoprop/lib/tiny.hoon b/pkg/autoprop/lib/tiny.hoon new file mode 120000 index 0000000000..1d319d2094 --- /dev/null +++ b/pkg/autoprop/lib/tiny.hoon @@ -0,0 +1 @@ +../../arvo/lib/tiny.hoon \ No newline at end of file diff --git a/pkg/autoprop/lib/verb.hoon b/pkg/autoprop/lib/verb.hoon new file mode 120000 index 0000000000..939072347e --- /dev/null +++ b/pkg/autoprop/lib/verb.hoon @@ -0,0 +1 @@ +../../base-dev/lib/verb.hoon \ No newline at end of file diff --git a/pkg/autoprop/mar/bill.hoon b/pkg/autoprop/mar/bill.hoon new file mode 120000 index 0000000000..801d99730d --- /dev/null +++ b/pkg/autoprop/mar/bill.hoon @@ -0,0 +1 @@ +../../base-dev/mar/bill.hoon \ No newline at end of file diff --git a/pkg/autoprop/mar/hoon.hoon b/pkg/autoprop/mar/hoon.hoon new file mode 120000 index 0000000000..95f8f67f9e --- /dev/null +++ b/pkg/autoprop/mar/hoon.hoon @@ -0,0 +1 @@ +../../base-dev/mar/hoon.hoon \ No newline at end of file diff --git a/pkg/autoprop/mar/kelvin.hoon b/pkg/autoprop/mar/kelvin.hoon new file mode 120000 index 0000000000..195ebe0dc0 --- /dev/null +++ b/pkg/autoprop/mar/kelvin.hoon @@ -0,0 +1 @@ +../../base-dev/mar/kelvin.hoon \ No newline at end of file diff --git a/pkg/autoprop/mar/mime.hoon b/pkg/autoprop/mar/mime.hoon new file mode 120000 index 0000000000..0d85898f37 --- /dev/null +++ b/pkg/autoprop/mar/mime.hoon @@ -0,0 +1 @@ +../../base-dev/mar/mime.hoon \ No newline at end of file diff --git a/pkg/autoprop/mar/noun.hoon b/pkg/autoprop/mar/noun.hoon new file mode 120000 index 0000000000..97cc308763 --- /dev/null +++ b/pkg/autoprop/mar/noun.hoon @@ -0,0 +1 @@ +../../base-dev/mar/noun.hoon \ No newline at end of file diff --git a/pkg/autoprop/mar/ship.hoon b/pkg/autoprop/mar/ship.hoon new file mode 120000 index 0000000000..72de2c03c1 --- /dev/null +++ b/pkg/autoprop/mar/ship.hoon @@ -0,0 +1 @@ +../../base-dev/mar/ship.hoon \ No newline at end of file diff --git a/pkg/autoprop/mar/txt-diff.hoon b/pkg/autoprop/mar/txt-diff.hoon new file mode 120000 index 0000000000..1f7c042850 --- /dev/null +++ b/pkg/autoprop/mar/txt-diff.hoon @@ -0,0 +1 @@ +../../base-dev/mar/txt-diff.hoon \ No newline at end of file diff --git a/pkg/autoprop/mar/txt.hoon b/pkg/autoprop/mar/txt.hoon new file mode 120000 index 0000000000..4325415754 --- /dev/null +++ b/pkg/autoprop/mar/txt.hoon @@ -0,0 +1 @@ +../../base-dev/mar/txt.hoon \ No newline at end of file diff --git a/pkg/autoprop/sur/dice.hoon b/pkg/autoprop/sur/dice.hoon new file mode 120000 index 0000000000..454af0e29b --- /dev/null +++ b/pkg/autoprop/sur/dice.hoon @@ -0,0 +1 @@ +../../arvo/sur/dice.hoon \ No newline at end of file diff --git a/pkg/autoprop/sur/language-server.hoon b/pkg/autoprop/sur/language-server.hoon new file mode 120000 index 0000000000..a1c7267805 --- /dev/null +++ b/pkg/autoprop/sur/language-server.hoon @@ -0,0 +1 @@ +../../base-dev/sur/language-server.hoon \ No newline at end of file diff --git a/pkg/autoprop/sur/sole.hoon b/pkg/autoprop/sur/sole.hoon new file mode 120000 index 0000000000..8cac118917 --- /dev/null +++ b/pkg/autoprop/sur/sole.hoon @@ -0,0 +1 @@ +../../base-dev/sur/sole.hoon \ No newline at end of file diff --git a/pkg/autoprop/sur/verb.hoon b/pkg/autoprop/sur/verb.hoon new file mode 120000 index 0000000000..1a6100d9ce --- /dev/null +++ b/pkg/autoprop/sur/verb.hoon @@ -0,0 +1 @@ +../../base-dev/sur/verb.hoon \ No newline at end of file diff --git a/pkg/autoprop/sys.kelvin b/pkg/autoprop/sys.kelvin new file mode 100644 index 0000000000..5bd0cc68f8 --- /dev/null +++ b/pkg/autoprop/sys.kelvin @@ -0,0 +1 @@ +[%zuse 415] diff --git a/pkg/base-dev/lib/pill.hoon b/pkg/base-dev/lib/pill.hoon index 1f6993fb6e..4b07f57c63 100644 --- a/pkg/base-dev/lib/pill.hoon +++ b/pkg/base-dev/lib/pill.hoon @@ -64,7 +64,11 @@ %- ~(gas by *(map path (each page lobe:clay))) (turn hav |=([=path =page] [path &+page])) [/c/sync [%park des &+yuki *rang:clay]] - =| hav=(list [path page]) + (file-pages bas sal) +:: +++ file-pages + |= [bas=path sal=(list spur)] + =| hav=(list [path page:clay]) |- ^+ hav ?~ sal ~ =. hav $(sal t.sal) @@ -97,6 +101,16 @@ :: ++ file-ovum2 |=(p=path `unix-event`[//arvo what/(user-files p)]) :: +++ prep-ovum + |= dez=(list path) + ^- unix-event + =- ~& clay-blobs+~(wyt by -) + [/c/inflate [%prep -]] + %+ roll dez + |= [bas=path out=(map lobe:clay page:clay)] + %- ~(uni by out) + .^(_out %cs (snoc bas %bloc)) +:: :: +user-files: all userspace hoon files :: ++ user-files @@ -135,4 +149,218 @@ |- ^+ hav ?~ all hav $(all t.all, hav ^$(tyl [p.i.all tyl])) +:: +::TODO include %prep task in solid and brass? +++ solid + :: sys: root path to boot system, `/~me/[desk]/now/sys` + :: dez: secondary desks and their root paths + :: + |= [sys=path dez=(list [desk path]) dub=? now=@da prime=?] + ^- pill + =/ bas=path (scag 3 sys) + =/ compiler-path (weld sys /hoon) + =/ arvo-path (weld sys /arvo) + ~& %solid-start + =/ compiler-src .^(@t %cx (weld compiler-path /hoon)) + =/ arvo-src .^(@t %cx (weld arvo-path /hoon)) + =/ arvo-formula + ~& %solid-loaded + =/ compiler-hoon (rain compiler-path compiler-src) + ?. dub + :: compile arvo against hoon, with our current compiler + :: + =/ whole-hoon=hoon + [%tsgr compiler-hoon [%tsgr [%$ 7] (rain arvo-path arvo-src)]] + ~& %solid-parsed + =/ whole-formula q:(~(mint ut %noun) %noun whole-hoon) + ~& %solid-arvo + whole-formula + :: compile arvo against hoon, with a freshly compiled hoon (via +ride) + :: + ~& %solid-parsed + =/ compiler-formula q:(~(mint ut %noun) %noun compiler-hoon) + ~& %solid-compiled + =/ whole-src + (rap 3 ['=> ' compiler-src '=> +7 ' arvo-src ~]) + ~& %solid-double-loaded + =/ whole-formula + =< + + .* [%noun whole-src] + [%8 compiler-formula [%9 2 %10 [6 %0 3] [%0 2]]] + ~& %solid-double-compiled + whole-formula + :: + ~& [%solid-kernel `@ux`(mug arvo-formula)] + :: + :: installed: Arvo gate (formal interface) with %zuse and vanes installed + :: + =/ installed + =< q + %^ spin + ^- (list ovum) + :- (boot-ovum:pill compiler-src arvo-src) + %+ turn + (snoc (turn dez tail) bas) + file-ovum2:pill + .*(0 arvo-formula) + |= [ovo=ovum ken=*] + [~ (slum ken [now ovo])] + :: + :: boot-two: startup formula + :: + :: We evaluate :arvo-formula (for jet registration), + :: then ignore the result and produce .installed + :: + =/ boot-two + => *[arvo-formula=^ installed=^ tale=*] + != =+(.*(0 arvo-formula) [installed tale]) + :: + :: boot-ova + :: + =/ boot-ova=(list) + [aeon:eden:part boot-two arvo-formula installed ~] + :: + :: a pill is a 3-tuple of event-lists: [boot kernel userspace] + :: + :: Our kernel event-list is ~, as we've already installed them. + :: Our userspace event-list is a list containing a full %clay + :: filesystem sync event. + :: + :+ %pill %solid + :+ boot-ova ~ + =. dez (snoc dez [%base bas]) + %+ weld + (turn dez file-ovum) + ?. prime ~ + [(prep-ovum (turn dez tail))]~ +:: +++ brass + :: sys: root path to boot system, `/~me/[desk]/now/sys` + :: dez: secondary desks and their root paths + :: + |= [sys=path dez=(list [desk path]) prime=?] + ^- pill + =/ bas=path (scag 3 sys) + :: compiler-source: hoon source file producing compiler, `sys/hoon` + :: + =+ compiler-source=.^(@t %cx (welp sys /hoon/hoon)) + :: + :: compiler-twig: compiler as hoon expression + :: + ~& %brass-parsing + =+ compiler-twig=(rain /sys/hoon/hoon compiler-source) + ~& %brass-parsed + :: + :: compiler-formula: compiler as nock formula + :: + ~& %brass-compiling + =+ compiler-formula=q:(~(mint ut %noun) %noun compiler-twig) + ~& %brass-compiled + :: + :: arvo-source: hoon source file producing arvo kernel, `sys/arvo` + :: + =+ arvo-source=.^(@t %cx (welp sys /arvo/hoon)) + :: + :: boot-ova: startup events + :: + =/ boot-ova=(list) + :~ aeon:eden:part + boot:eden:part + compiler-formula + compiler-source + arvo-source + == + :: a pill is a 3-tuple of event-lists: [boot kernel userspace] + :: + :+ %pill %brass + :+ boot-ova + :~ (boot-ovum:pill compiler-source arvo-source) + (file-ovum2:pill bas) + == + =. dez (snoc dez [%base bas]) + %+ weld + (turn dez file-ovum) + ?. prime ~ + [(prep-ovum (turn dez tail))]~ +:: +++ ivory + |= sys=path + ^- pill + =/ lib (snoc (scag 3 sys) %lib) + |^ =/ ver + =/ sub *(trap vase) + =. sub (build-sys sub %hoon) + =. sub (build-sys sub %arvo) + =. sub (build-sys sub %lull) + =. sub (build-sys sub %zuse) + =. sub (build-lib sub & %ethereum) + =. sub (build-lib sub & %azimuth) + (build-lib sub | %vere) + =/ nok !. + => *[ver=(trap vase) ~] + != q:$:ver + ivory/[nok ver ~] + :: + ++ build-sys + |= [sub=(trap vase) nam=term] ^- (trap vase) + ~> %slog.[0 leaf+"ivory: building /sys/{(trip nam)}"] + (swat sub (rain /sys/[nam]/hoon .^(@t cx+(welp sys /[nam]/hoon)))) + :: + ++ build-lib + |= [sub=(trap vase) imp=? nam=term] ^- (trap vase) + ~> %slog.[0 leaf+"ivory: building /lib/{(trip nam)}"] + =/ hun=hoon + %+ mist /lib/[nam]/hoon + .^(@t cx+(welp lib /[nam]/hoon)) + ?. imp (swat sub hun) + (swel sub [%ktts nam hun]) + :: +mist: +rain but skipping past ford runes + :: + ++ mist + |= [bon=path txt=@] + ^- hoon + =+ vas=vast + ~| bon + %+ scan (trip txt) + %- full + =; fud + (ifix [;~(plug gay fud) gay] tall:vas(wer bon)) + %- star + ;~ pose vul + %+ ifix [fas (just `@`10)] + (star ;~(less (just `@`10) next)) + == + :: +swel: +swat but with +slop + :: + ++ swel + |= [tap=(trap vase) gen=hoon] + ^- (trap vase) + =/ gun (~(mint ut p:$:tap) %noun gen) + => [tap=tap gun=gun] + |. ~+ + =/ pro q:$:tap + [[%cell p.gun p:$:tap] [.*(pro q.gun) pro]] + -- +:: +++ events + |% + +$ prop [%prop meta tier (list ovum)] + +$ meta term + +$ tier ?(%fore %hind) :: before or after userspace + :: + ++ install + |= [as=desk =beak pri=?] + ^- prop + :^ %prop (rap 3 %install '-' as ~) %hind + ::TODO will exclude non-:directories files, such as /changelog/txt + =- (murn - same) + ^- (list (unit ovum)) + :~ `(file-ovum as (en-beam beak /)) + :: + ?. pri ~ + `(prep-ovum (en-beam beak /) ~) + :: + `[/d/install/[as] [%seat as]] + == + -- --