mirror of
https://github.com/ilyakooo0/urbit.git
synced 2024-12-26 00:12:28 +03:00
goad: recompile apps after changes to /sys
OTAs commonly end up in an inconsistent state if apps depend on changes to /sys. For example, the %sift changes break on OTA because %spider needs to be reloaded so that it's aware of the new thread type. This adds a %goad app, which reloads all apps after every change to /sys. Getting this to start OTA is nontrivial, but this pattern should work for apps in the future. The changes to clock shouldn't generally be necessary; they are only necessary here because we can't rely on hood to start goad, since hood fails to compile if it's run before zuse is reloaded. Once goad is active, this will cease to be a problem.
This commit is contained in:
parent
07e2f20f57
commit
b14606660a
@ -22,8 +22,20 @@
|
|||||||
:~ [%pass / %arvo %e %connect [~ /'~clock'] %clock]
|
:~ [%pass / %arvo %e %connect [~ /'~clock'] %clock]
|
||||||
[%pass /clock %agent [our.bowl %launch] %poke launcha]
|
[%pass /clock %agent [our.bowl %launch] %poke launcha]
|
||||||
==
|
==
|
||||||
++ on-save on-save:def
|
:: bootstrapping to get %goad started OTA
|
||||||
++ on-load on-load:def
|
::
|
||||||
|
++ on-save !>(%1)
|
||||||
|
++ on-load
|
||||||
|
|= old-state=vase
|
||||||
|
=/ old !<(?(~ %1) old-state)
|
||||||
|
=^ cards this
|
||||||
|
?. ?=(~ old)
|
||||||
|
`this
|
||||||
|
:_ this :_ ~
|
||||||
|
[%pass /behn %arvo %b %wait +(now.bowl)]
|
||||||
|
::
|
||||||
|
[cards this]
|
||||||
|
::
|
||||||
++ on-poke
|
++ on-poke
|
||||||
|= [=mark =vase]
|
|= [=mark =vase]
|
||||||
^- (quip card:agent:gall _this)
|
^- (quip card:agent:gall _this)
|
||||||
@ -63,6 +75,13 @@
|
|||||||
++ on-arvo
|
++ on-arvo
|
||||||
|= [=wire =sign-arvo]
|
|= [=wire =sign-arvo]
|
||||||
^- (quip card:agent:gall _this)
|
^- (quip card:agent:gall _this)
|
||||||
|
?: ?=(%wake +<.sign-arvo)
|
||||||
|
?^ error.sign-arvo
|
||||||
|
:_ this :_ ~
|
||||||
|
[%pass /dill %arvo %d %flog %crud %clock-fail u.error.sign-arvo]
|
||||||
|
:_ this :_ ~
|
||||||
|
[%pass /gall %arvo %g %goad | `%hood]
|
||||||
|
::
|
||||||
?. ?=(%bound +<.sign-arvo)
|
?. ?=(%bound +<.sign-arvo)
|
||||||
(on-arvo:def wire sign-arvo)
|
(on-arvo:def wire sign-arvo)
|
||||||
[~ this]
|
[~ this]
|
||||||
|
57
pkg/arvo/app/goad.hoon
Normal file
57
pkg/arvo/app/goad.hoon
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
/+ default-agent, verb
|
||||||
|
%+ verb |
|
||||||
|
^- agent:gall
|
||||||
|
=>
|
||||||
|
|%
|
||||||
|
++ warp
|
||||||
|
|= =bowl:gall
|
||||||
|
[%pass /clay %arvo %c %warp our.bowl %home ~ %next %z da+now.bowl /sys]
|
||||||
|
::
|
||||||
|
++ wait
|
||||||
|
|= =bowl:gall
|
||||||
|
[%pass /behn %arvo %b %wait +(now.bowl)]
|
||||||
|
::
|
||||||
|
++ goad
|
||||||
|
:~ [%pass /gall %arvo %g %goad | ~]
|
||||||
|
==
|
||||||
|
--
|
||||||
|
::
|
||||||
|
|_ =bowl:gall
|
||||||
|
+* this .
|
||||||
|
def ~(. (default-agent this %|) bowl)
|
||||||
|
++ on-init
|
||||||
|
:: subscribe to /sys and do initial goad
|
||||||
|
::
|
||||||
|
[[(warp bowl) goad] this]
|
||||||
|
::
|
||||||
|
++ on-save on-save:def
|
||||||
|
++ on-load on-load:def
|
||||||
|
++ 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-arvo
|
||||||
|
|= [=wire =sign-arvo]
|
||||||
|
?+ wire (on-arvo:def wire sign-arvo)
|
||||||
|
[%clay ~]
|
||||||
|
:: on writ, wait
|
||||||
|
::
|
||||||
|
?> ?=(%writ +<.sign-arvo)
|
||||||
|
:_ this
|
||||||
|
:~ (warp bowl)
|
||||||
|
(wait bowl)
|
||||||
|
==
|
||||||
|
::
|
||||||
|
[%behn ~]
|
||||||
|
:: on wake, goad
|
||||||
|
::
|
||||||
|
?> ?=(%wake +<.sign-arvo)
|
||||||
|
?^ error.sign-arvo
|
||||||
|
:_ this :_ ~
|
||||||
|
[%pass /dill %arvo %d %flog %crud %goad-fail u.error.sign-arvo]
|
||||||
|
[goad this]
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ on-fail on-fail:def
|
||||||
|
--
|
@ -43,9 +43,9 @@
|
|||||||
!:
|
!:
|
||||||
=> |% ::
|
=> |% ::
|
||||||
++ hood-old :: unified old-state
|
++ hood-old :: unified old-state
|
||||||
{?($0 $1) lac/(map @tas hood-part-old)} ::
|
{?($1 $2) lac/(map @tas hood-part-old)} ::
|
||||||
++ hood-1 :: unified state
|
++ hood-1 :: unified state
|
||||||
{$1 lac/(map @tas hood-part)} ::
|
{$2 lac/(map @tas hood-part)} ::
|
||||||
++ hood-good :: extract specific
|
++ hood-good :: extract specific
|
||||||
=+ hed=$:hood-head
|
=+ hed=$:hood-head
|
||||||
|@ ++ $
|
|@ ++ $
|
||||||
@ -140,12 +140,17 @@
|
|||||||
`..on-init
|
`..on-init
|
||||||
::
|
::
|
||||||
++ on-save
|
++ on-save
|
||||||
!>([%1 lac])
|
!>([%2 lac])
|
||||||
::
|
::
|
||||||
++ on-load
|
++ on-load
|
||||||
|= =old-state=vase
|
|= =old-state=vase
|
||||||
=/ old-state !<(hood-1 old-state-vase)
|
=/ old-state !<(hood-old old-state-vase)
|
||||||
`..on-init(lac lac.old-state)
|
=^ cards lac
|
||||||
|
=. lac lac.old-state
|
||||||
|
?. ?=(%1 -.old-state)
|
||||||
|
`lac
|
||||||
|
((wrap on-load):from-drum:(help hid) %1)
|
||||||
|
[cards ..on-init]
|
||||||
::
|
::
|
||||||
++ on-poke
|
++ on-poke
|
||||||
|= [=mark =vase]
|
|= [=mark =vase]
|
||||||
|
@ -85,6 +85,7 @@
|
|||||||
%eth-watcher
|
%eth-watcher
|
||||||
%azimuth-tracker
|
%azimuth-tracker
|
||||||
%ping
|
%ping
|
||||||
|
%goad
|
||||||
==
|
==
|
||||||
?: lit
|
?: lit
|
||||||
~
|
~
|
||||||
@ -212,6 +213,11 @@
|
|||||||
%drum-set-boot-apps =;(f (f !<(_+<.f vase)) poke-set-boot-apps)
|
%drum-set-boot-apps =;(f (f !<(_+<.f vase)) poke-set-boot-apps)
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
|
++ on-load
|
||||||
|
|= %1
|
||||||
|
=< se-abet =< se-view
|
||||||
|
(se-born %home %goad)
|
||||||
|
::
|
||||||
++ reap-phat :: ack connect
|
++ reap-phat :: ack connect
|
||||||
|= {way/wire saw/(unit tang)}
|
|= {way/wire saw/(unit tang)}
|
||||||
=< se-abet =< se-view
|
=< se-abet =< se-view
|
||||||
|
@ -230,7 +230,6 @@
|
|||||||
=/ =note-arvo [%f %kill ~]
|
=/ =note-arvo [%f %kill ~]
|
||||||
(mo-pass wire note-arvo)
|
(mo-pass wire note-arvo)
|
||||||
::
|
::
|
||||||
::
|
|
||||||
:: +mo-goad: rebuild agent(s)
|
:: +mo-goad: rebuild agent(s)
|
||||||
::
|
::
|
||||||
++ mo-goad
|
++ mo-goad
|
||||||
@ -1575,9 +1574,6 @@
|
|||||||
::
|
::
|
||||||
++ all-state $%(state-0 state-1 ^state)
|
++ all-state $%(state-0 state-1 ^state)
|
||||||
::
|
::
|
||||||
:: Note that if you change sign-arvo, you must ensure that spider
|
|
||||||
:: gets reloaded.
|
|
||||||
::
|
|
||||||
++ state-1-to-2
|
++ state-1-to-2
|
||||||
|= =state-1
|
|= =state-1
|
||||||
^- ^state
|
^- ^state
|
||||||
|
Loading…
Reference in New Issue
Block a user