mirror of
https://github.com/urbit/shrub.git
synced 2024-12-21 01:41:37 +03:00
Merge pull request #6298 from urbit/release/urbit-os-v2.132
Release: urbit-os-v2.132
This commit is contained in:
commit
cc7c6dba24
@ -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 <tagname>
|
||||
```
|
||||
|
||||
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
|
||||
<tagname>
|
||||
|
||||
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 <tagname>
|
||||
```
|
||||
|
@ -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?
|
||||
::
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -1,4 +1,3 @@
|
||||
/+ pill
|
||||
=* card card:agent:gall
|
||||
|%
|
||||
+$ state state-2
|
||||
|
@ -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)])
|
||||
=< next
|
||||
?~ kid
|
||||
~> %slog.(fmt "remote is identical to {here}, skipping")
|
||||
next
|
||||
..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 {<u.kid>}")
|
||||
(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 {<kid>}")
|
||||
~> %slog.(fmt "kids merge into {<u.kid>}")
|
||||
(merg /kids u.kid)
|
||||
::
|
||||
%kids
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
319
pkg/autoprop/app/autoprop.hoon
Normal file
319
pkg/autoprop/app/autoprop.hoon
Normal file
@ -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
|
||||
--
|
3
pkg/autoprop/desk.bill
Normal file
3
pkg/autoprop/desk.bill
Normal file
@ -0,0 +1,3 @@
|
||||
:~ %autoprop
|
||||
==
|
||||
|
1
pkg/autoprop/lib/dbug.hoon
Symbolic link
1
pkg/autoprop/lib/dbug.hoon
Symbolic link
@ -0,0 +1 @@
|
||||
../../base-dev/lib/dbug.hoon
|
1
pkg/autoprop/lib/default-agent.hoon
Symbolic link
1
pkg/autoprop/lib/default-agent.hoon
Symbolic link
@ -0,0 +1 @@
|
||||
../../base-dev/lib/default-agent.hoon
|
1
pkg/autoprop/lib/dice.hoon
Symbolic link
1
pkg/autoprop/lib/dice.hoon
Symbolic link
@ -0,0 +1 @@
|
||||
../../arvo/lib/dice.hoon
|
1
pkg/autoprop/lib/ethereum.hoon
Symbolic link
1
pkg/autoprop/lib/ethereum.hoon
Symbolic link
@ -0,0 +1 @@
|
||||
../../arvo/lib/ethereum.hoon
|
1
pkg/autoprop/lib/language-server/complete.hoon
Symbolic link
1
pkg/autoprop/lib/language-server/complete.hoon
Symbolic link
@ -0,0 +1 @@
|
||||
../../../base-dev/lib/language-server/complete.hoon
|
1
pkg/autoprop/lib/language-server/parser.hoon
Symbolic link
1
pkg/autoprop/lib/language-server/parser.hoon
Symbolic link
@ -0,0 +1 @@
|
||||
../../../base-dev/lib/language-server/parser.hoon
|
1
pkg/autoprop/lib/naive.hoon
Symbolic link
1
pkg/autoprop/lib/naive.hoon
Symbolic link
@ -0,0 +1 @@
|
||||
../../arvo/lib/naive.hoon
|
1
pkg/autoprop/lib/pill.hoon
Symbolic link
1
pkg/autoprop/lib/pill.hoon
Symbolic link
@ -0,0 +1 @@
|
||||
../../base-dev/lib/pill.hoon
|
1
pkg/autoprop/lib/shoe.hoon
Symbolic link
1
pkg/autoprop/lib/shoe.hoon
Symbolic link
@ -0,0 +1 @@
|
||||
../../base-dev/lib/shoe.hoon
|
1
pkg/autoprop/lib/skeleton.hoon
Symbolic link
1
pkg/autoprop/lib/skeleton.hoon
Symbolic link
@ -0,0 +1 @@
|
||||
../../base-dev/lib/skeleton.hoon
|
1
pkg/autoprop/lib/sole.hoon
Symbolic link
1
pkg/autoprop/lib/sole.hoon
Symbolic link
@ -0,0 +1 @@
|
||||
../../base-dev/lib/sole.hoon
|
1
pkg/autoprop/lib/tiny.hoon
Symbolic link
1
pkg/autoprop/lib/tiny.hoon
Symbolic link
@ -0,0 +1 @@
|
||||
../../arvo/lib/tiny.hoon
|
1
pkg/autoprop/lib/verb.hoon
Symbolic link
1
pkg/autoprop/lib/verb.hoon
Symbolic link
@ -0,0 +1 @@
|
||||
../../base-dev/lib/verb.hoon
|
1
pkg/autoprop/mar/bill.hoon
Symbolic link
1
pkg/autoprop/mar/bill.hoon
Symbolic link
@ -0,0 +1 @@
|
||||
../../base-dev/mar/bill.hoon
|
1
pkg/autoprop/mar/hoon.hoon
Symbolic link
1
pkg/autoprop/mar/hoon.hoon
Symbolic link
@ -0,0 +1 @@
|
||||
../../base-dev/mar/hoon.hoon
|
1
pkg/autoprop/mar/kelvin.hoon
Symbolic link
1
pkg/autoprop/mar/kelvin.hoon
Symbolic link
@ -0,0 +1 @@
|
||||
../../base-dev/mar/kelvin.hoon
|
1
pkg/autoprop/mar/mime.hoon
Symbolic link
1
pkg/autoprop/mar/mime.hoon
Symbolic link
@ -0,0 +1 @@
|
||||
../../base-dev/mar/mime.hoon
|
1
pkg/autoprop/mar/noun.hoon
Symbolic link
1
pkg/autoprop/mar/noun.hoon
Symbolic link
@ -0,0 +1 @@
|
||||
../../base-dev/mar/noun.hoon
|
1
pkg/autoprop/mar/ship.hoon
Symbolic link
1
pkg/autoprop/mar/ship.hoon
Symbolic link
@ -0,0 +1 @@
|
||||
../../base-dev/mar/ship.hoon
|
1
pkg/autoprop/mar/txt-diff.hoon
Symbolic link
1
pkg/autoprop/mar/txt-diff.hoon
Symbolic link
@ -0,0 +1 @@
|
||||
../../base-dev/mar/txt-diff.hoon
|
1
pkg/autoprop/mar/txt.hoon
Symbolic link
1
pkg/autoprop/mar/txt.hoon
Symbolic link
@ -0,0 +1 @@
|
||||
../../base-dev/mar/txt.hoon
|
1
pkg/autoprop/sur/dice.hoon
Symbolic link
1
pkg/autoprop/sur/dice.hoon
Symbolic link
@ -0,0 +1 @@
|
||||
../../arvo/sur/dice.hoon
|
1
pkg/autoprop/sur/language-server.hoon
Symbolic link
1
pkg/autoprop/sur/language-server.hoon
Symbolic link
@ -0,0 +1 @@
|
||||
../../base-dev/sur/language-server.hoon
|
1
pkg/autoprop/sur/sole.hoon
Symbolic link
1
pkg/autoprop/sur/sole.hoon
Symbolic link
@ -0,0 +1 @@
|
||||
../../base-dev/sur/sole.hoon
|
1
pkg/autoprop/sur/verb.hoon
Symbolic link
1
pkg/autoprop/sur/verb.hoon
Symbolic link
@ -0,0 +1 @@
|
||||
../../base-dev/sur/verb.hoon
|
1
pkg/autoprop/sys.kelvin
Normal file
1
pkg/autoprop/sys.kelvin
Normal file
@ -0,0 +1 @@
|
||||
[%zuse 415]
|
@ -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]]
|
||||
==
|
||||
--
|
||||
--
|
||||
|
Loading…
Reference in New Issue
Block a user