Merge pull request #6430 from urbit/fix-next-kelvin-ci

ci: fix `next/kelvin/*` workflows
This commit is contained in:
Matthew LeVan 2023-03-28 11:55:09 -04:00 committed by GitHub
commit 8749a0dac2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 385 additions and 186 deletions

View File

@ -9,7 +9,7 @@ on:
- '.github/workflows/develop.yml' - '.github/workflows/develop.yml'
- '.github/workflows/release.yml' - '.github/workflows/release.yml'
- '.github/workflows/master.yml' - '.github/workflows/master.yml'
- '.github/workflows/vere.yml' - '.github/workflows/shared.yml'
- 'pkg/arvo/**' - 'pkg/arvo/**'
- 'pkg/docker-image/**' - 'pkg/docker-image/**'
- 'pkg/ent/**' - 'pkg/ent/**'
@ -24,7 +24,7 @@ on:
jobs: jobs:
call-vere: call-vere:
uses: ./.github/workflows/vere.yml uses: ./.github/workflows/shared.yml
with: with:
pace: 'edge' pace: 'edge'
upload: >- upload: >-

View File

@ -7,7 +7,7 @@ on:
- '.github/workflows/develop.yml' - '.github/workflows/develop.yml'
- '.github/workflows/release.yml' - '.github/workflows/release.yml'
- '.github/workflows/master.yml' - '.github/workflows/master.yml'
- '.github/workflows/vere.yml' - '.github/workflows/shared.yml'
- 'pkg/arvo/**' - 'pkg/arvo/**'
- 'pkg/docker-image/**' - 'pkg/docker-image/**'
- 'pkg/ent/**' - 'pkg/ent/**'
@ -22,7 +22,7 @@ on:
jobs: jobs:
call-vere: call-vere:
uses: ./.github/workflows/vere.yml uses: ./.github/workflows/shared.yml
with: with:
pace: 'edge' pace: 'edge'
upload: >- upload: >-

View File

@ -9,7 +9,7 @@ on:
- '.github/workflows/develop.yml' - '.github/workflows/develop.yml'
- '.github/workflows/release.yml' - '.github/workflows/release.yml'
- '.github/workflows/master.yml' - '.github/workflows/master.yml'
- '.github/workflows/vere.yml' - '.github/workflows/shared.yml'
- 'pkg/arvo/**' - 'pkg/arvo/**'
- 'pkg/docker-image/**' - 'pkg/docker-image/**'
- 'pkg/ent/**' - 'pkg/ent/**'
@ -24,7 +24,7 @@ on:
jobs: jobs:
call-vere: call-vere:
uses: ./.github/workflows/vere.yml uses: ./.github/workflows/shared.yml
with: with:
pace: 'live' pace: 'live'
upload: >- upload: >-

31
.github/workflows/next.yml vendored Normal file
View File

@ -0,0 +1,31 @@
name: Push to next/kelvin/*
on:
push:
branches:
- 'next/kelvin/*'
paths:
- '.github/workflows/feature.yml'
- '.github/workflows/develop.yml'
- '.github/workflows/release.yml'
- '.github/workflows/master.yml'
- '.github/workflows/shared.yml'
- 'pkg/arvo/**'
- 'pkg/docker-image/**'
- 'pkg/ent/**'
- 'pkg/ge-additions/**'
- 'pkg/libaes_siv/**'
- 'pkg/urbit/**'
- 'pkg/urcrypt/**'
- 'tests/**'
- 'bin/**'
- 'nix/**'
- 'default.nix'
jobs:
call-vere:
uses: ./.github/workflows/shared.yml
with:
upload: true
next: ${{ github.ref_name }}
secrets: inherit

View File

@ -9,7 +9,7 @@ on:
- '.github/workflows/develop.yml' - '.github/workflows/develop.yml'
- '.github/workflows/release.yml' - '.github/workflows/release.yml'
- '.github/workflows/master.yml' - '.github/workflows/master.yml'
- '.github/workflows/vere.yml' - '.github/workflows/shared.yml'
- 'pkg/arvo/**' - 'pkg/arvo/**'
- 'pkg/docker-image/**' - 'pkg/docker-image/**'
- 'pkg/ent/**' - 'pkg/ent/**'
@ -24,7 +24,7 @@ on:
jobs: jobs:
call-vere: call-vere:
uses: ./.github/workflows/vere.yml uses: ./.github/workflows/shared.yml
with: with:
pace: 'soon' pace: 'soon'
upload: >- upload: >-

View File

@ -14,6 +14,11 @@ on:
type: string type: string
default: 'edge' default: 'edge'
required: false required: false
next:
description: 'next kelvin version branch name'
type: string
default: null
required: false
secrets: secrets:
CACHIX_AUTH_TOKEN: CACHIX_AUTH_TOKEN:
required: false required: false
@ -73,9 +78,15 @@ jobs:
name: run urbit-tests name: run urbit-tests
run: | run: |
cp -RL tests pkg/arvo/tests cp -RL tests pkg/arvo/tests
vere=$(curl https://bootstrap.urbit.org/vere/${{ inputs.pace }}/last) if ${{ inputs.next != null }}; then
next=$(echo ${{ inputs.next }} | sed 's/[^0-9]//g')
base="https://bootstrap.urbit.org/vere/next/kelvin/${next}"
else
base="https://bootstrap.urbit.org/vere/${{ inputs.pace }}"
fi
vere=$(curl ${base}/last)
url="$(echo ${base}/v${vere}/vere-v${vere}-linux-x86_64)"
echo $vere echo $vere
url="$(echo https://bootstrap.urbit.org/vere/${{ inputs.pace }}/v${vere}/vere-v${vere}-linux-x86_64)"
echo $url echo $url
# put in .jam so it doesn't crash when it gets -A'd in # put in .jam so it doesn't crash when it gets -A'd in
curl -Lo pkg/arvo/vere.jam "$url" curl -Lo pkg/arvo/vere.jam "$url"

View File

@ -485,11 +485,10 @@
=/ =desk +.val =/ =desk +.val
=. userspace-ova.pil =. userspace-ova.pil
:: take all files from a userspace desk :: take all files from a userspace desk
=/ all-dirs=(list path) ~[/]
:_ ~ :_ ~
%- unix-event:pill-lib %- unix-event:pill-lib
%+ %*(. file-ovum:pill-lib directories all-dirs) %- file-ovum:pill-lib
desk /(scot %p our.hid)/[desk]/(scot %da now.hid) [desk /(scot %p our.hid)/[desk]/(scot %da now.hid) ~]
=^ ms state (poke-pill pil) =^ ms state (poke-pill pil)
(emit-cards ms) (emit-cards ms)
:: ::

View File

@ -25,6 +25,7 @@
== ==
:: ::
prime=_| prime=_|
exc=(list spur)
== ==
:- %pill :- %pill
^- pill:pill ^- pill:pill
@ -45,4 +46,4 @@
|= =desk |= =desk
[desk /(scot %p p.bec)/[desk]/(scot %da now)] [desk /(scot %p p.bec)/[desk]/(scot %da now)]
:: ::
(brass:pill sys dez prime) (brass:pill sys dez prime exc)

View File

@ -5,6 +5,6 @@
:::: ::::
:: ::
:- %say :- %say
|= [^ ships=(list ship) ~] |= [^ [form=?(%allow %deny) ships=(list ship)] ~]
:- %helm-ames-snub :- %helm-ames-snub
ships [form ships]

View File

@ -29,6 +29,7 @@
:: ::
dub=_| dub=_|
prime=_| prime=_|
exc=(list spur)
== ==
:- %pill :- %pill
^- pill:pill ^- pill:pill
@ -46,4 +47,4 @@
|= =desk |= =desk
[desk /(scot %p p.bec)/[desk]/(scot %da now)] [desk /(scot %p p.bec)/[desk]/(scot %da now)]
:: ::
(solid:pill sys dez dub now prime) (solid:pill sys dez dub now prime exc)

View File

@ -202,8 +202,8 @@
abet:(emit %pass /helm/prod %arvo %a %prod ships) abet:(emit %pass /helm/prod %arvo %a %prod ships)
:: ::
++ poke-ames-snub ++ poke-ames-snub
|= ships=(list ship) |= snub=[form=?(%allow %deny) ships=(list ship)]
abet:(emit %pass /helm/snub %arvo %a %snub ships) abet:(emit %pass /helm/snub %arvo %a %snub snub)
:: ::
++ poke-atom ++ poke-atom
|= ato=@ |= ato=@

View File

@ -583,15 +583,13 @@
..abet ..abet
=/ kel i.wic =/ kel i.wic
%- emil %- emil
=/ cards =/ desks=(list [=desk =zest])
%+ murn ~(tap by rock) %+ murn ~(tap by rock)
|= [=desk =zest wic=(set weft)] |= [=desk =zest wic=(set weft)]
?: |(=(%base desk) !?=(%live zest) (~(has in wic) kel)) ?: |(=(%base desk) !?=(%live zest) (~(has in wic) kel))
~ ~
`u=[%pass /kiln/bump/[desk] %arvo %c %zest desk %held] `u=[desk %held]
?~ cards [%pass /kiln/bump/zeal %arvo %c %zeal desks]~
[%pass /kiln/bump/wick %arvo %c %wick ~]~
cards
:: ::
++ poke-cancel ++ poke-cancel
|= a=@tas |= a=@tas

View File

@ -361,7 +361,7 @@
:: %init: vane boot :: %init: vane boot
:: %prod: re-send a packet per flow, to all peers if .ships is ~ :: %prod: re-send a packet per flow, to all peers if .ships is ~
:: %sift: limit verbosity to .ships :: %sift: limit verbosity to .ships
:: %snub: set packet blacklist to .ships :: %snub: set packet blocklist to .ships
:: %spew: set verbosity toggles :: %spew: set verbosity toggles
:: %cong: adjust congestion control parameters :: %cong: adjust congestion control parameters
:: %stir: recover from timer desync :: %stir: recover from timer desync
@ -380,7 +380,7 @@
$>(%init vane-task) $>(%init vane-task)
[%prod ships=(list ship)] [%prod ships=(list ship)]
[%sift ships=(list ship)] [%sift ships=(list ship)]
[%snub ships=(list ship)] [%snub form=?(%allow %deny) ships=(list ship)]
[%spew veb=(list verb)] [%spew veb=(list verb)]
[%cong msg=@ud mem=@ud] [%cong msg=@ud mem=@ud]
[%stir arg=@t] [%stir arg=@t]
@ -522,7 +522,6 @@
:: heeds: listeners for %clog notifications :: heeds: listeners for %clog notifications
:: closing: bones closed on the sender side :: closing: bones closed on the sender side
:: corked: bones closed on both sender and receiver :: corked: bones closed on both sender and receiver
:: krocs: bones that need to be sent again to the publisher
:: ::
+$ peer-state +$ peer-state
$: $: =symmetric-key $: $: =symmetric-key
@ -540,7 +539,6 @@
heeds=(set duct) heeds=(set duct)
closing=(set bone) closing=(set bone)
corked=(set bone) corked=(set bone)
krocs=(set bone)
== ==
:: $qos: quality of service; how is our connection to a peer doing? :: $qos: quality of service; how is our connection to a peer doing?
:: ::
@ -801,6 +799,7 @@
[%warp wer=ship rif=riff] :: internal file req [%warp wer=ship rif=riff] :: internal file req
[%werp who=ship wer=ship rif=riff-any] :: external file req [%werp who=ship wer=ship rif=riff-any] :: external file req
[%wick ~] :: try upgrade [%wick ~] :: try upgrade
[%zeal lit=(list [=desk =zest])] :: batch zest
[%zest des=desk liv=zest] :: live [%zest des=desk liv=zest] :: live
$>(%plea vane-task) :: ames request $>(%plea vane-task) :: ames request
== :: == ::
@ -1426,6 +1425,9 @@
:: start responding negatively to cors requests from origin :: start responding negatively to cors requests from origin
:: ::
[%reject-origin =origin] [%reject-origin =origin]
:: %spew: set verbosity toggle
::
[%spew veb=@]
== ==
:: +origin: request origin as specified in an Origin header :: +origin: request origin as specified in an Origin header
:: ::

View File

@ -612,20 +612,18 @@
:: snub: blocklist for incoming packets :: snub: blocklist for incoming packets
:: cong: parameters for marking a flow as clogged :: cong: parameters for marking a flow as clogged
:: ::
:: Note: .corks is only still present for unreleased migration reasons
::
::
+$ ames-state +$ ames-state
$: peers=(map ship ship-state) :: TODO: remove krocs from peer-state $: peers=(map ship ship-state)
=unix=duct =unix=duct
=life =life
crypto-core=acru:ames crypto-core=acru:ames
=bug =bug
corks=(set wire) :: TODO: remove next state update snub=[form=?(%allow %deny) ships=(set ship)]
snub=(set ship)
cong=[msg=@ud mem=@ud] cong=[msg=@ud mem=@ud]
== ==
+$ ames-state-4 ames-state-5 ::
+$ azimuth-state [=symmetric-key =life =rift =public-key sponsor=ship]
+$ ames-state-4 ames-state-5
+$ ames-state-5 +$ ames-state-5
$: peers=(map ship ship-state-5) $: peers=(map ship ship-state-5)
=unix=duct =unix=duct
@ -641,11 +639,7 @@
== ==
:: ::
+$ peer-state-5 +$ peer-state-5
$: $: =symmetric-key $: azimuth-state
=life
=public-key
sponsor=ship
==
route=(unit [direct=? =lane]) route=(unit [direct=? =lane])
=qos =qos
=ossuary =ossuary
@ -655,6 +649,11 @@
heeds=(set duct) heeds=(set duct)
== ==
:: ::
+$ bug-9
$: veb=_[`?`%.n `?`%.n `?`%.n `?`%.n `?`%.n `?`%.n `?`%.n]
ships=(set ship)
==
::
+$ ames-state-6 +$ ames-state-6
$: peers=(map ship ship-state-6) $: peers=(map ship ship-state-6)
=unix=duct =unix=duct
@ -669,12 +668,7 @@
== ==
:: ::
+$ peer-state-6 +$ peer-state-6
$: $: =symmetric-key $: azimuth-state
=life
=rift
=public-key
sponsor=ship
==
route=(unit [direct=? =lane]) route=(unit [direct=? =lane])
=qos =qos
=ossuary =ossuary
@ -685,7 +679,7 @@
== ==
:: ::
+$ ames-state-7 +$ ames-state-7
$: peers=(map ship ship-state) $: peers=(map ship ship-state-7)
=unix=duct =unix=duct
=life =life
crypto-core=acru:ames crypto-core=acru:ames
@ -693,7 +687,7 @@
== ==
:: ::
+$ ames-state-8 +$ ames-state-8
$: peers=(map ship ship-state) $: peers=(map ship ship-state-7)
=unix=duct =unix=duct
=life =life
crypto-core=acru:ames crypto-core=acru:ames
@ -701,18 +695,8 @@
corks=(set wire) corks=(set wire)
== ==
:: ::
+$ bug-9
$: veb=_[`?`%.n `?`%.n `?`%.n `?`%.n `?`%.n `?`%.n `?`%.n]
ships=(set ship)
==
::
+$ bug-10
$: veb=_[`?`%.n `?`%.n `?`%.n `?`%.n `?`%.n `?`%.n `?`%.n `?`%.n]
ships=(set ship)
==
::
+$ ames-state-9 +$ ames-state-9
$: peers=(map ship ship-state) $: peers=(map ship ship-state-7)
=unix=duct =unix=duct
=life =life
crypto-core=acru:ames crypto-core=acru:ames
@ -722,15 +706,54 @@
== ==
:: ::
+$ ames-state-10 +$ ames-state-10
$: peers=(map ship ship-state) $: peers=(map ship ship-state-7)
=unix=duct =unix=duct
=life =life
crypto-core=acru:ames crypto-core=acru:ames
bug=bug-10 =bug
corks=(set wire) corks=(set wire)
snub=(set ship) snub=(set ship)
== ==
:: ::
+$ ship-state-7
$% [%alien alien-agenda]
[%known peer-state-7]
==
::
+$ peer-state-7
$: azimuth-state
route=(unit [direct=? =lane])
=qos
=ossuary
snd=(map bone message-pump-state)
rcv=(map bone message-sink-state)
nax=(set [=bone =message-num])
heeds=(set duct)
closing=(set bone)
corked=(set bone)
krocs=(set bone)
==
::
+$ ames-state-11
$: peers=(map ship ship-state-7)
=unix=duct
=life
crypto-core=acru:ames
=bug
corks=(set wire)
snub=(set ship)
cong=[msg=@ud mem=@ud]
==
::
+$ queued-event-11
$% [%call =duct wrapped-task=(hobo task-11)]
[%take =wire =duct =sign]
==
::
+$ task-11
$% [%snub ships=(list ship)]
$<(%snub task)
==
:: $bug: debug printing configuration :: $bug: debug printing configuration
:: ::
:: veb: verbosity toggles :: veb: verbosity toggles
@ -857,7 +880,8 @@
[%8 ames-state-8] [%8 ames-state-8]
[%9 ames-state-9] [%9 ames-state-9]
[%10 ames-state-10] [%10 ames-state-10]
[%11 ^ames-state] [%11 ames-state-11]
[%12 ^ames-state]
== ==
:: ::
|= [now=@da eny=@ rof=roof] |= [now=@da eny=@ rof=roof]
@ -980,7 +1004,7 @@
:: lifecycle arms; mostly pass-throughs to the contained adult ames :: lifecycle arms; mostly pass-throughs to the contained adult ames
:: ::
++ scry scry:adult-core ++ scry scry:adult-core
++ stay [%11 %larva queued-events ames-state.adult-gate] ++ stay [%12 %larva queued-events ames-state.adult-gate]
++ load ++ load
|= $= old |= $= old
$% $: %4 $% $: %4
@ -1033,6 +1057,13 @@
[%adult state=ames-state-10] [%adult state=ames-state-10]
== == == ==
$: %11 $: %11
$% $: %larva
events=(qeu queued-event-11)
state=ames-state-11
==
[%adult state=ames-state-11]
== ==
$: %12
$% $: %larva $% $: %larva
events=(qeu queued-event) events=(qeu queued-event)
state=_ames-state.adult-gate state=_ames-state.adult-gate
@ -1107,14 +1138,34 @@
=. queued-events events.old =. queued-events events.old
larval-gate larval-gate
:: ::
[%11 %adult *] (load:adult-core %11 state.old) [%11 %adult *]
=. cached-state `[%11 state.old]
~> %slog.0^leaf/"ames: larva reload"
larval-gate
:: ::
[%11 %larva *] [%11 %larva *]
~> %slog.1^leaf/"ames: larva: load" ~> %slog.1^leaf/"ames: larva: load"
=. queued-events events.old =. queued-events
=. adult-gate (load:adult-core %11 state.old) :: "+rep:in on a +qeu looks strange, but works fine."
::
%- ~(rep in events.old)
|= [e=queued-event-11 q=(qeu queued-event)]
%- ~(put to q) ^- queued-event
?. ?=(%call -.e) e
=/ task=task-11 ((harden task-11) wrapped-task.e)
%= e
wrapped-task ?.(?=(%snub -.task) task [%snub %deny ships.task])
==
larval-gate larval-gate
:: ::
[%12 %adult *] (load:adult-core %12 state.old)
::
[%12 %larva *]
~> %slog.1^leaf/"ames: larva: load"
=. queued-events events.old
=. adult-gate (load:adult-core %12 state.old)
larval-gate
::
== ==
:: +molt: re-evolve to adult-ames :: +molt: re-evolve to adult-ames
:: ::
@ -1137,7 +1188,9 @@
10+(state-9-to-10:load:adult-core +.u.cached-state) 10+(state-9-to-10:load:adult-core +.u.cached-state)
=? u.cached-state ?=(%10 -.u.cached-state) =? u.cached-state ?=(%10 -.u.cached-state)
11+(state-10-to-11:load:adult-core +.u.cached-state) 11+(state-10-to-11:load:adult-core +.u.cached-state)
?> ?=(%11 -.u.cached-state) =? u.cached-state ?=(%11 -.u.cached-state)
12+(state-11-to-12:load:adult-core +.u.cached-state)
?> ?=(%12 -.u.cached-state)
=. ames-state.adult-gate +.u.cached-state =. ames-state.adult-gate +.u.cached-state
[moz larval-core(cached-state ~)] [moz larval-core(cached-state ~)]
-- --
@ -1269,9 +1322,9 @@
:: +on-snub: handle request to change ship blacklist :: +on-snub: handle request to change ship blacklist
:: ::
++ on-snub ++ on-snub
|= ships=(list ship) |= [form=?(%allow %deny) ships=(list ship)]
^+ event-core ^+ event-core
=. snub.ames-state (sy ships) =. snub.ames-state [form (sy ships)]
event-core event-core
:: +on-spew: handle request to set verbosity toggles on debug output :: +on-spew: handle request to set verbosity toggles on debug output
:: ::
@ -1413,11 +1466,12 @@
~/ %on-hear-packet ~/ %on-hear-packet
|= [=lane =packet dud=(unit goof)] |= [=lane =packet dud=(unit goof)]
^+ event-core ^+ event-core
%- (ev-trace odd.veb sndr.packet |.("received packet")) %- (ev-trace rcv.veb sndr.packet |.("received packet"))
:: ::
?: =(our sndr.packet) ?: =(our sndr.packet)
event-core event-core
?: (~(has in snub.ames-state) sndr.packet) ?: .= =(%deny form.snub.ames-state)
(~(has in ships.snub.ames-state) sndr.packet)
%- (ev-trace rcv.veb sndr.packet |.("snubbed")) %- (ev-trace rcv.veb sndr.packet |.("snubbed"))
event-core event-core
:: ::
@ -3386,6 +3440,15 @@
++ closing (~(has in closing.peer-state) bone) ++ closing (~(has in closing.peer-state) bone)
++ corked (~(has in corked.peer-state) bone) ++ corked (~(has in corked.peer-state) bone)
++ pump-core |=(=^bone (mu bone *message-pump-state)) ++ pump-core |=(=^bone (mu bone *message-pump-state))
++ received
|= =^bone
:: odd bone: %plea request message
:: even bone, 0 second bit: %boon response message
:: even bone, 1 second bit: nack-trace %boon message
::
?: =(1 (end 0 bone)) %plea
?: =(0 (end 0 (rsh 0 bone))) %boon
%nack
:: ::
+| %entry-points +| %entry-points
:: +call: handle a $message-sink-task :: +call: handle a $message-sink-task
@ -3393,18 +3456,24 @@
++ call ++ call
|= task=message-sink-task |= task=message-sink-task
^+ sink ^+ sink
:: if we get a plea request and have corked this flow, always ack
::
?: corked
=? peer-core &(?=(%hear -.task) =(1 (end 0 bone)))
%- (mi-trace odd.veb |.("hear plea on a corked bone={<bone>}"))
%+ send-shut-packet bone
[message-num.shut-packet.task %| %| ok=& lag=*@dr]
sink
?- -.task ?- -.task
%drop sink(nax.state (~(del in nax.state) message-num.task)) %drop sink(nax.state (~(del in nax.state) message-num.task))
%done (done ok.task) %done (done ok.task)
%hear (hear [lane shut-packet ok]:task) ::
%hear
?. ?| corked
?& %*(corked sink bone (mix 0b10 bone))
=(%nack (received bone))
== ==
(hear [lane shut-packet ok]:task)
:: if we %hear a task on a corked bone, always ack
::
=. peer-core
%+ send-shut-packet bone
[message-num.shut-packet.task %| %| ok=& lag=*@dr]
%. sink
%+ mi-trace odd.veb
|.("hear {<(received bone)>} on corked bone={<bone>}")
== ==
:: ::
+| %tasks +| %tasks
@ -3574,18 +3643,12 @@
+| %implementation +| %implementation
:: +handle-sink: dispatch message :: +handle-sink: dispatch message
:: ::
:: odd bone: %plea request message
:: even bone, 0 second bit: %boon response message
:: even bone, 1 second bit: nack-trace %boon message
::
++ handle-sink ++ handle-sink
|= [=message-num message=* ok=?] |= [=message-num message=* ok=?]
|^ ^+ sink ^+ sink
?: =(1 (end 0 bone)) sink-plea |^ ?-((received bone) %plea ha-plea, %boon ha-boon, %nack ha-nack)
?: =(0 (end 0 (rsh 0 bone))) sink-boon ::
sink-nack ++ ha-plea
:: XX FIXME: impure +abet pattern
++ sink-plea
^+ sink ^+ sink
?: |(closing corked) sink ?: |(closing corked) sink
%- %+ mi-trace msg.veb %- %+ mi-trace msg.veb
@ -3619,7 +3682,7 @@
=. closing.peer-state (~(put in closing.peer-state) bone) =. closing.peer-state (~(put in closing.peer-state) bone)
(pe-emit duct %pass wire %a %plea her [%a /close ~]) (pe-emit duct %pass wire %a %plea her [%a /close ~])
:: ::
:: +sink-boon: handle response message, acking unconditionally :: +ha-boon: handle response message, acking unconditionally
:: ::
:: .bone must be mapped in .ossuary.peer-state, or we crash. :: .bone must be mapped in .ossuary.peer-state, or we crash.
:: This means a malformed message will kill a flow. We :: This means a malformed message will kill a flow. We
@ -3633,7 +3696,7 @@
:: TODO: This handles a previous crash in the client vane, but :: TODO: This handles a previous crash in the client vane, but
:: not in %ames itself. :: not in %ames itself.
:: ::
++ sink-boon ++ ha-boon
^+ sink ^+ sink
?: |(closing corked) sink ?: |(closing corked) sink
%- %+ mi-trace msg.veb |. %- %+ mi-trace msg.veb |.
@ -3654,7 +3717,7 @@
:: ::
(call %done ok=%.y) (call %done ok=%.y)
:: ::
++ sink-nack ++ ha-nack
^+ sink ^+ sink
:: if we get a naxplanation for a %cork, the publisher hasn't :: if we get a naxplanation for a %cork, the publisher hasn't
:: received the OTA. The /recork timer will retry eventually. :: received the OTA. The /recork timer will retry eventually.
@ -3712,7 +3775,7 @@
%jilt (on-jilt:event-core ship.task) %jilt (on-jilt:event-core ship.task)
%prod (on-prod:event-core ships.task) %prod (on-prod:event-core ships.task)
%sift (on-sift:event-core ships.task) %sift (on-sift:event-core ships.task)
%snub (on-snub:event-core ships.task) %snub (on-snub:event-core [form ships]:task)
%spew (on-spew:event-core veb.task) %spew (on-spew:event-core veb.task)
%cong (on-cong:event-core [msg mem]:task) %cong (on-cong:event-core [msg mem]:task)
%stir (on-stir:event-core arg.task) %stir (on-stir:event-core arg.task)
@ -3750,15 +3813,15 @@
[moves ames-gate] [moves ames-gate]
:: +stay: extract state before reload :: +stay: extract state before reload
:: ::
++ stay [%11 %adult ames-state] ++ stay [%12 %adult ames-state]
:: +load: load in old state after reload :: +load: load in old state after reload
:: ::
++ load ++ load
=< |= $= old-state =< |= $= old-state
$% [%11 ^ames-state] $% [%12 ^ames-state]
== ==
^+ ames-gate ^+ ames-gate
?> ?=(%11 -.old-state) ?> ?=(%12 -.old-state)
ames-gate(ames-state +.old-state) ames-gate(ames-state +.old-state)
:: all state transitions are called from larval ames :: all state transitions are called from larval ames
:: ::
@ -3809,11 +3872,11 @@
:_ +.ames-state :_ +.ames-state
%- ~(run by peers.ames-state) %- ~(run by peers.ames-state)
|= ship-state=ship-state-6 |= ship-state=ship-state-6
^- ^ship-state ^- ship-state-7
?. ?=(%known -.ship-state) ?. ?=(%known -.ship-state)
ship-state ship-state
:- %known :- %known
^- peer-state ^- peer-state-7
:- +<.ship-state :- +<.ship-state
[route qos ossuary snd rcv nax heeds ~ ~ ~]:ship-state [route qos ossuary snd rcv nax heeds ~ ~ ~]:ship-state
:: ::
@ -3846,13 +3909,26 @@
:: ::
++ state-10-to-11 ++ state-10-to-11
|= ames-state=ames-state-10 |= ames-state=ames-state-10
^- ^^ames-state ^- ames-state-11
=, ames-state =, ames-state
:* peers unix-duct life crypto-core bug corks snub :* peers unix-duct life crypto-core bug corks snub
:: 5 messages and 100Kb of data outstanding :: 5 messages and 100Kb of data outstanding
:: ::
[msg=5 mem=100.000] [msg=5 mem=100.000]
== ==
::
++ state-11-to-12
|= ames-state=ames-state-11
^- ^^ames-state
:_ [unix-duct life crypto-core bug [%deny snub] cong]:ames-state
%- ~(run by peers.ames-state)
|= ship-state=ship-state-7
^- ^ship-state
?. ?=(%known -.ship-state)
ship-state
%= ship-state
+> [route qos ossuary snd rcv nax heeds closing corked]:+>.ship-state
==
-- --
:: +scry: dereference namespace :: +scry: dereference namespace
:: ::
@ -3890,6 +3966,7 @@
:: /ax/peers/[ship]/forward-lane (list lane) :: /ax/peers/[ship]/forward-lane (list lane)
:: /ax/bones/[ship] [snd=(set bone) rcv=(set bone)] :: /ax/bones/[ship] [snd=(set bone) rcv=(set bone)]
:: /ax/snd-bones/[ship]/[bone] vase :: /ax/snd-bones/[ship]/[bone] vase
:: /ax/snubbed (?(%allow %deny) (list ship))
:: ::
?. ?=(%x ren) ~ ?. ?=(%x ren) ~
?+ tyl ~ ?+ tyl ~
@ -3969,5 +4046,8 @@
=/ res =/ res
u.mps u.mps
``noun+!>(!>(res)) ``noun+!>(!>(res))
::
[%snubbed ~]
``noun+!>([form.snub.ames-state ~(tap in ships.snub.ames-state)])
== ==
-- --

View File

@ -4970,9 +4970,22 @@
:: ::
%wick %wick
=^ mos ruf =^ mos ruf
=/ den ((de now rof hen ruf) our %base) abet:wick:((de now rof hen ruf) our %base) :: [wick]
abet:wick:den :: [wick]
[mos ..^$] [mos ..^$]
::
%zeal
=^ m1 ruf
=| mos=(list move)
|- ^+ [mos ruf]
?~ lit.req
[mos ruf]
=/ den ((de now rof hen ruf) our desk.i.lit.req)
=^ mos-new ruf abet:(set-zest:den zest.i.lit.req)
$(mos (weld mos mos-new), lit.req t.lit.req)
=^ m2 ruf
abet:wick:((de now rof hen ruf) our %base)
=^ m3 ruf abet:goad:(lu now rof hen ruf)
[:(weld m1 m2 m3) ..^$]
:: ::
%zest %zest
=^ m1 ruf =^ m1 ruf

View File

@ -67,12 +67,8 @@
:: more structures :: more structures
:: ::
|% |%
++ axle +$ axle
$: :: date: date at which http-server's state was updated to this data structure $: %~2023.2.17
::
date=%~2022.7.26
:: server-state: state of inbound requests
::
=server-state =server-state
== ==
:: +server-state: state relating to open inbound HTTP connections :: +server-state: state relating to open inbound HTTP connections
@ -112,6 +108,9 @@
:: outgoing-duct: to unix :: outgoing-duct: to unix
:: ::
outgoing-duct=duct outgoing-duct=duct
:: verb: verbosity
::
verb=@
== ==
:: channel-request: an action requested on a channel :: channel-request: an action requested on a channel
:: ::
@ -584,7 +583,8 @@
[act [& secure address request] ~ 0] [act [& secure address request] ~ 0]
:: ::
=. connections.state =. connections.state
(~(put by connections.state) duct connection) %. (~(put by connections.state) duct connection)
(trace 2 |.("{<duct>} creating local"))
:: ::
:_ state :_ state
(subscribe-to-app app.act inbound-request.connection) (subscribe-to-app app.act inbound-request.connection)
@ -613,6 +613,7 @@
=/ connection=outstanding-connection =/ connection=outstanding-connection
[action [authenticated secure address request] ~ 0] [action [authenticated secure address request] ~ 0]
=. connections.state =. connections.state
:: XX pretty sure this is superfluous - done in +handle-response
(~(put by connections.state) duct connection) (~(put by connections.state) duct connection)
:: redirect to https if insecure, redirects enabled :: redirect to https if insecure, redirects enabled
:: and secure port live :: and secure port live
@ -864,6 +865,7 @@
%app %app
:_ state :_ state
:_ ~ :_ ~
%- (trace 1 |.("leaving subscription to {<app.action.u.connection>}"))
:* duct %pass /watch-response/[eyre-id] :* duct %pass /watch-response/[eyre-id]
%g %deal [our our] app.action.u.connection %g %deal [our our] app.action.u.connection
%leave ~ %leave ~
@ -1034,6 +1036,7 @@
=^ moz state =^ moz state
(handle-response response) (handle-response response)
[[give-session-tokens (weld moves moz)] state] [[give-session-tokens (weld moves moz)] state]
%- (trace 1 |.("{(trip i.channels)} discarding channel due to logout"))
=^ moz state =^ moz state
(discard-channel:by-channel i.channels |) (discard-channel:by-channel i.channels |)
$(moves (weld moves moz), channels t.channels) $(moves (weld moves moz), channels t.channels)
@ -1145,8 +1148,7 @@
:: POST methods are used solely for deleting channels :: POST methods are used solely for deleting channels
(on-put-request channel-id request) (on-put-request channel-id request)
:: ::
~& %session-not-a-put ((trace 0 |.("session not a put")) `state)
[~ state]
:: +on-cancel-request: cancels an ongoing subscription :: +on-cancel-request: cancels an ongoing subscription
:: ::
:: One of our long lived sessions just got closed. We put the associated :: One of our long lived sessions just got closed. We put the associated
@ -1156,15 +1158,15 @@
^- [(list move) server-state] ^- [(list move) server-state]
:: lookup the session id by duct :: lookup the session id by duct
:: ::
?~ maybe-channel-id=(~(get by duct-to-key.channel-state.state) duct) %- (trace 1 |.("{<duct>} moving channel to waiting state"))
~> %slog.[0 leaf+"eyre: no channel to cancel {<duct>}"]
[~ state]
:: ::
~> %slog.[0 leaf+"eyre: canceling {<duct>}"] ?~ maybe-channel-id=(~(get by duct-to-key.channel-state.state) duct)
((trace 0 |.("{<duct>} no channel to move")) `state)
:: ::
=/ maybe-session =/ maybe-session
(~(get by session.channel-state.state) u.maybe-channel-id) (~(get by session.channel-state.state) u.maybe-channel-id)
?~ maybe-session [~ state] ?~ maybe-session
((trace 1 |.("{<maybe-session>} session doesn't exist")) `state)
:: ::
=/ heartbeat-cancel=(list move) =/ heartbeat-cancel=(list move)
?~ heartbeat.u.maybe-session ~ ?~ heartbeat.u.maybe-session ~
@ -1461,6 +1463,7 @@
^- move ^- move
:^ duct %pass :^ duct %pass
(subscription-wire channel-id request-id ship app) (subscription-wire channel-id request-id ship app)
%- (trace 1 |.("subscribing to {<app>} on {<path>}"))
:* %g %deal [our ship] app :* %g %deal [our ship] app
`task:agent:gall`[%watch path] `task:agent:gall`[%watch path]
== ==
@ -1487,8 +1490,9 @@
:: the client sent us a weird request referring to a subscription :: the client sent us a weird request referring to a subscription
:: which isn't active. :: which isn't active.
:: ::
~& [%missing-subscription-in-unsubscribe channel-id subscription-id] %. $(requests t.requests)
$(requests t.requests) =* msg=tape "{(trip channel-id)} {<subscription-id>}"
(trace 0 |.("missing subscription in unsubscribe {msg}"))
:: ::
=. gall-moves =. gall-moves
:_ gall-moves :_ gall-moves
@ -1496,6 +1500,7 @@
=, u.maybe-subscription =, u.maybe-subscription
:^ duc %pass :^ duc %pass
(subscription-wire channel-id subscription-id.i.requests ship app) (subscription-wire channel-id subscription-id.i.requests ship app)
%- (trace 1 |.("leaving subscription to {<app>}"))
:* %g %deal [our ship] app :* %g %deal [our ship] app
`task:agent:gall`[%leave ~] `task:agent:gall`[%leave ~]
== ==
@ -1511,6 +1516,7 @@
$(requests t.requests) $(requests t.requests)
:: ::
%delete %delete
%- (trace 1 |.("{<channel-id>} discarding due to %delete PUT"))
=^ moves state =^ moves state
(discard-channel channel-id |) (discard-channel channel-id |)
=. gall-moves =. gall-moves
@ -1537,10 +1543,8 @@
(emit-event channel-id request-id sign) (emit-event channel-id request-id sign)
=/ =ship (slav %p i.extra) =/ =ship (slav %p i.extra)
=* app=term i.t.extra =* app=term i.t.extra
=/ =tape =* msg=tape "{(trip channel-id)} {(trip app)}"
%+ weld "eyre: removing watch for " %- (trace 0 |.("removing watch for non-existent channel {msg}"))
"non-existent channel {(trip channel-id)} on {(trip app)}"
%- (slog leaf+tape ~)
:_ state :_ state
:_ ~ :_ ~
^- move ^- move
@ -1628,11 +1632,15 @@
?& (gte num clog-threshold) ?& (gte num clog-threshold)
(lth (add last-ack.u.channel clog-timeout) now) (lth (add last-ack.u.channel clog-timeout) now)
== ==
~? clogged [%e %clogged channel-id request-id]
:: if we're clogged, or we ran into an event we can't serialize, :: if we're clogged, or we ran into an event we can't serialize,
:: kill this gall subscription. :: kill this gall subscription.
:: ::
=* kicking |(clogged ?=(~ json)) =* msg=tape "on {(trip channel-id)} for {(trip request-id)}"
=/ kicking=?
?: clogged
((trace 0 |.("clogged {msg}")) &)
?. ?=(~ json) |
((trace 0 |.("can't serialize event, kicking {msg}")) &)
=? moves kicking =? moves kicking
:_ moves :_ moves
::NOTE this shouldn't crash because we ::NOTE this shouldn't crash because we
@ -1640,6 +1648,7 @@
:: - only clog on %facts, which have a subscription associated, :: - only clog on %facts, which have a subscription associated,
:: - and already checked whether we still have that subscription. :: - and already checked whether we still have that subscription.
=+ (~(got by subscriptions.u.channel) request-id) =+ (~(got by subscriptions.u.channel) request-id)
%- (trace 1 |.("leaving subscription to {<app>}"))
:^ duct %pass :^ duct %pass
(subscription-wire channel-id request-id ship app) (subscription-wire channel-id request-id ship app)
[%g %deal [our ship] app %leave ~] [%g %deal [our ship] app %leave ~]
@ -1689,11 +1698,11 @@
^- (unit desk) ^- (unit desk)
=/ sub (~(get by subscriptions.channel) request-id) =/ sub (~(get by subscriptions.channel) request-id)
?~ sub ?~ sub
((slog leaf+"eyre: no subscription for request-id {<request-id>}" ~) ~) ((trace 0 |.("no subscription for request-id {(trip request-id)}")) ~)
=/ des=(unit (unit cage)) =/ des=(unit (unit cage))
(rof ~ %gd [our app.u.sub da+now] ~) (rof ~ %gd [our app.u.sub da+now] ~)
?. ?=([~ ~ *] des) ?. ?=([~ ~ *] des)
((slog leaf+"eyre: no desk for app {(trip app.u.sub)}" ~) ~) ((trace 0 |.("no desk for app {<app.u.sub>}")) ~)
`!<(=desk q.u.u.des) `!<(=desk q.u.u.des)
:: +channel-event-to-sign: attempt to recover a sign from a channel-event :: +channel-event-to-sign: attempt to recover a sign from a channel-event
:: ::
@ -1710,11 +1719,11 @@
=/ val=(unit (unit cage)) =/ val=(unit (unit cage))
(rof ~ %cb [our u.des da+now] /[have]) (rof ~ %cb [our u.des da+now] /[have])
?. ?=([~ ~ *] val) ?. ?=([~ ~ *] val)
((slog leaf+"eyre: no mark {(trip have)}" ~) ~) ((trace 0 |.("no mark {(trip have)}")) ~)
=+ !<(=dais:clay q.u.u.val) =+ !<(=dais:clay q.u.u.val)
=/ res (mule |.((vale:dais noun.event))) =/ res (mule |.((vale:dais noun.event)))
?: ?=(%| -.res) ?: ?=(%| -.res)
((slog leaf+"eyre: stale fact of mark {(trip have)}" ~) ~) ((trace 0 |.("stale fact of mark {(trip have)}")) ~)
`[%fact have p.res] `[%fact have p.res]
:: +sign-to-json: render sign from request-id as json channel event :: +sign-to-json: render sign from request-id as json channel event
:: ::
@ -1733,15 +1742,14 @@
?~ des [~ ~] ?~ des [~ ~]
:: ::
=* have=mark p.cage.sign =* have=mark p.cage.sign
=* desc=tape "from {(trip have)} to json"
=/ convert=(unit vase) =/ convert=(unit vase)
=/ cag=(unit (unit cage)) =/ cag=(unit (unit cage))
(rof ~ %cf [our u.des da+now] /[have]/json) (rof ~ %cf [our u.des da+now] /[have]/json)
?. ?=([~ ~ *] cag) ~ ?. ?=([~ ~ *] cag) ~
`q.u.u.cag `q.u.u.cag
?~ convert ?~ convert
((slog leaf+"eyre: no convert {desc}" ~) [~ ~]) ((trace 0 |.("no convert from {(trip have)} to json")) [~ ~])
~| "conversion failed {desc}" ~| "conversion failed from {(trip have)} to json"
[`[u.des have] `[%fact %json (slym u.convert q.q.cage.sign)]] [`[u.des have] `[%fact %json (slym u.convert q.q.cage.sign)]]
?~ jsyn ~ ?~ jsyn ~
%- some %- some
@ -1855,6 +1863,7 @@
%+ turn ~(tap by subscriptions.session) %+ turn ~(tap by subscriptions.session)
|= [request-id=@ud ship=@p app=term =path duc=^duct] |= [request-id=@ud ship=@p app=term =path duc=^duct]
^- move ^- move
%- (trace 1 |.("{<channel-id>} leaving subscription to {<app>}"))
:^ duc %pass :^ duc %pass
(subscription-wire channel-id request-id ship app) (subscription-wire channel-id request-id ship app)
[%g %deal [our ship] app %leave ~] [%g %deal [our ship] app %leave ~]
@ -1870,6 +1879,7 @@
?. ?=(%app -.action.connection) ?. ?=(%app -.action.connection)
~ ~
:_ ~ :_ ~
%- (trace 1 |.("leaving subscription to {<app.action.connection>}"))
:* duct %pass /watch-response/[eyre-id] :* duct %pass /watch-response/[eyre-id]
%g %deal [our our] app.action.connection %g %deal [our our] app.action.connection
%leave ~ %leave ~
@ -1897,8 +1907,7 @@
:: verify that this is a valid response on the duct :: verify that this is a valid response on the duct
:: ::
?~ connection-state=(~(get by connections.state) duct) ?~ connection-state=(~(get by connections.state) duct)
~& [%invalid-outstanding-connection duct] ((trace 0 |.("{<duct>} invalid outstanding connection")) `state)
[~ state]
:: ::
|^ ^- [(list move) server-state] |^ ^- [(list move) server-state]
:: ::
@ -1906,8 +1915,7 @@
:: ::
%start %start
?^ response-header.u.connection-state ?^ response-header.u.connection-state
~& [%http-multiple-start duct] ((trace 0 |.("{<duct>} error multiple start")) error-connection)
error-connection
:: if request was authenticated, extend the session & cookie's life :: if request was authenticated, extend the session & cookie's life
:: ::
=^ response-header sessions.authentication-state.state =^ response-header sessions.authentication-state.state
@ -1921,8 +1929,7 @@
?~ session-id=(session-id-from-request request.inbound) ?~ session-id=(session-id-from-request request.inbound)
:: cookies are the only auth method, so this is unexpected :: cookies are the only auth method, so this is unexpected
:: ::
~& [%e %authenticated-without-cookie] ((trace 0 |.("error authenticated without cookie")) no-op)
no-op
?. (~(has by sessions) u.session-id) ?. (~(has by sessions) u.session-id)
:: if the session has expired since the request was opened, :: if the session has expired since the request was opened,
:: tough luck, we don't create/revive sessions here :: tough luck, we don't create/revive sessions here
@ -1954,6 +1961,7 @@
:: ::
=. response-header.http-event response-header =. response-header.http-event response-header
=. connections.state =. connections.state
%- (trace 2 |.("{<duct>} start"))
%+ ~(put by connections.state) duct %+ ~(put by connections.state) duct
%_ connection %_ connection
response-header `response-header response-header `response-header
@ -1967,10 +1975,11 @@
:: ::
%continue %continue
?~ response-header.u.connection-state ?~ response-header.u.connection-state
~& [%http-continue-without-start duct] %. error-connection
error-connection (trace 0 |.("{<duct>} error continue without start"))
:: ::
=. connections.state =. connections.state
%- (trace 2 |.("{<duct>} continuing "))
%+ ~(jab by connections.state) duct %+ ~(jab by connections.state) duct
|= connection=outstanding-connection |= connection=outstanding-connection
=+ size=?~(data.http-event 0 p.u.data.http-event) =+ size=?~(data.http-event 0 p.u.data.http-event)
@ -1984,7 +1993,7 @@
%cancel %cancel
:: todo: log this differently from an ise. :: todo: log this differently from an ise.
:: ::
error-connection ((trace 1 |.("cancel http event")) error-connection)
== ==
:: ::
++ pass-response ++ pass-response
@ -1997,7 +2006,8 @@
:: remove all outstanding state for this connection :: remove all outstanding state for this connection
:: ::
=. connections.state =. connections.state
(~(del by connections.state) duct) %. (~(del by connections.state) duct)
(trace 2 |.("{<duct>} completed"))
state state
:: ::
++ error-connection ++ error-connection
@ -2015,6 +2025,8 @@
?. ?=(%app -.action.u.connection-state) ?. ?=(%app -.action.u.connection-state)
~ ~
:_ ~ :_ ~
%- %+ trace 1
|.("leaving subscription to {<app.action.u.connection-state>}")
:* duct %pass /watch-response/[eyre-id] :* duct %pass /watch-response/[eyre-id]
%g %deal [our our] app.action.u.connection-state %g %deal [our our] app.action.u.connection-state
%leave ~ %leave ~
@ -2124,6 +2136,11 @@
:- outgoing-duct.state :- outgoing-duct.state
=* ses sessions.authentication-state.state =* ses sessions.authentication-state.state
[%give %sessions (~(run in ~(key by ses)) (cury scot %uv))] [%give %sessions (~(run in ~(key by ses)) (cury scot %uv))]
::
++ trace
|= [pri=@ print=(trap tape)]
?: (lth verb.state pri) same
(slog leaf+"eyre: {(print)}" ~)
-- --
:: ::
++ forwarded-params ++ forwarded-params
@ -2426,6 +2443,10 @@
(~(del in approved) origin.task) (~(del in approved) origin.task)
(~(put in rejected) origin.task) (~(put in rejected) origin.task)
[~ http-server-gate] [~ http-server-gate]
::
%spew
=. verb.server-state.ax veb.task
`http-server-gate
== ==
:: ::
++ take ++ take
@ -2537,10 +2558,11 @@
?> ?=([%behn %wake *] sign) ?> ?=([%behn %wake *] sign)
?^ error.sign ?^ error.sign
[[duct %slip %d %flog %crud %wake u.error.sign]~ http-server-gate] [[duct %slip %d %flog %crud %wake u.error.sign]~ http-server-gate]
=/ discard-channel =* id i.t.t.wire
discard-channel:by-channel:(per-server-event event-args) %- %+ trace:(per-server-event event-args) 1
|.("{(trip id)} cancelling channel due to timeout")
=^ moves server-state.ax =^ moves server-state.ax
(discard-channel i.t.t.wire &) (discard-channel:by-channel:(per-server-event event-args) id &)
[moves http-server-gate] [moves http-server-gate]
:: ::
%heartbeat %heartbeat
@ -2613,27 +2635,61 @@
:: ::
++ load ++ load
=> |% => |%
++ axle-old +$ axle-any
%+ cork $% [%~2020.10.18 =server-state-0]
axle [%~2022.7.26 =server-state-0]
|= =axle [%~2023.2.17 =server-state]
axle(date %~2020.10.18) ==
-- +$ server-state-0
|= old=$%(axle axle-old) $: bindings=(list [=binding =duct =action])
=cors-registry
connections=(map duct outstanding-connection)
=authentication-state
=channel-state
domains=(set turf)
=http-config
ports=[insecure=@ud secure=(unit @ud)]
outgoing-duct=duct
==
--
|= old=axle-any
^+ ..^$ ^+ ..^$
::
?- -.old ?- -.old
%~2020.10.18 %~2020.10.18
%= $ =, server-state-0.old
date.old %~2022.7.26 %= ..^$
:: ax ^- axle
bindings.server-state.old :* %~2023.2.17
%+ insert-binding (insert-binding [[~ /~/name] outgoing-duct [%name ~]] bindings)
[[~ /~/name] outgoing-duct.server-state.old [%name ~]] cors-registry
bindings.server-state.old connections
== authentication-state
channel-state
domains
http-config
ports
outgoing-duct
0
== ==
:: ::
%~2022.7.26 %~2022.7.26
=, server-state-0.old
%= ..^$
ax ^- axle
:* %~2023.2.17
bindings
cors-registry
connections
authentication-state
channel-state
domains
http-config
ports
outgoing-duct
0
== ==
::
%~2023.2.17
:: enable https redirects if certificate configured :: enable https redirects if certificate configured
:: ::
=. redirect.http-config.server-state.old =. redirect.http-config.server-state.old

View File

@ -32,25 +32,23 @@
[/sys/hoon hoon/hoon] [/sys/hoon hoon/hoon]
[/sys/arvo hoon/arvo] [/sys/arvo hoon/arvo]
== ==
:: +dirs: filter for userspace directories to include
::
++ dirs
|= [bas=path exc=(list spur)]
^- (list spur)
?~ exc ~(tap in dir:.^(arch %cy bas))
%+ skim
~(tap in dir:.^(arch %cy bas))
|=(=spur =(~ (find ~[spur] exc)))
:: +file-ovum: userspace filesystem load :: +file-ovum: userspace filesystem load
:: ::
:: bas: full path to / directory :: bas: full path to / directory
:: ::
++ file-ovum ++ file-ovum
=/ directories=(list path) |= [des=desk bas=path exc=(list spur)]
:~ /app :: %gall applications
/gen :: :dojo generators
/lib :: libraries
/mar :: mark definitions
/sur :: structures
/sys :: system files
/ted :: :spider strands
/web :: %eyre web content
/desk :: desk manifest
==
|= [des=desk bas=path]
^- unix-event ^- unix-event
%. directories %. (dirs bas exc)
|= :: sal: all spurs to load from |= :: sal: all spurs to load from
:: ::
sal=(list spur) sal=(list spur)
@ -99,7 +97,7 @@
:: ::
:: +file-ovum2: electric boogaloo :: +file-ovum2: electric boogaloo
:: ::
++ file-ovum2 |=(p=path `unix-event`[//arvo what/(user-files p)]) ++ file-ovum2 |=(z=[path (list spur)] `unix-event`[//arvo what/(user-files z)])
:: ::
++ prep-ovum ++ prep-ovum
|= dez=(list path) |= dez=(list path)
@ -114,8 +112,8 @@
:: +user-files: all userspace hoon files :: +user-files: all userspace hoon files
:: ::
++ user-files ++ user-files
|= bas=path |= [bas=path exc=(list spur)]
%. directories:file-ovum %. (dirs bas exc)
|= sal=(list spur) |= sal=(list spur)
^- (list (pair path (cask))) ^- (list (pair path (cask)))
:: ::
@ -154,8 +152,9 @@
++ solid ++ solid
:: sys: root path to boot system, `/~me/[desk]/now/sys` :: sys: root path to boot system, `/~me/[desk]/now/sys`
:: dez: secondary desks and their root paths :: dez: secondary desks and their root paths
:: exc: list of desk folders to exclude
:: ::
|= [sys=path dez=(list [desk path]) dub=? now=@da prime=?] |= [sys=path dez=(list [desk path]) dub=? now=@da prime=? exc=(list spur)]
^- pill ^- pill
=/ bas=path (scag 3 sys) =/ bas=path (scag 3 sys)
=/ compiler-path (weld sys /hoon) =/ compiler-path (weld sys /hoon)
@ -201,7 +200,8 @@
:- (boot-ovum:pill compiler-src arvo-src) :- (boot-ovum:pill compiler-src arvo-src)
%+ turn %+ turn
(snoc (turn dez tail) bas) (snoc (turn dez tail) bas)
file-ovum2:pill |= =path
(file-ovum2 [path exc])
.*(0 arvo-formula) .*(0 arvo-formula)
|= [ovo=ovum ken=*] |= [ovo=ovum ken=*]
[~ (slum ken [now ovo])] [~ (slum ken [now ovo])]
@ -230,15 +230,18 @@
:+ boot-ova ~ :+ boot-ova ~
=. dez (snoc dez [%base bas]) =. dez (snoc dez [%base bas])
%+ weld %+ weld
(turn dez file-ovum) %+ turn dez
|= [dek=desk bas=path]
(file-ovum [dek bas exc])
?. prime ~ ?. prime ~
[(prep-ovum (turn dez tail))]~ [(prep-ovum (turn dez tail))]~
:: ::
++ brass ++ brass
:: sys: root path to boot system, `/~me/[desk]/now/sys` :: sys: root path to boot system, `/~me/[desk]/now/sys`
:: dez: secondary desks and their root paths :: dez: secondary desks and their root paths
:: exc: list of desk folders to exclude
:: ::
|= [sys=path dez=(list [desk path]) prime=?] |= [sys=path dez=(list [desk path]) prime=? exc=(list spur)]
^- pill ^- pill
=/ bas=path (scag 3 sys) =/ bas=path (scag 3 sys)
:: compiler-source: hoon source file producing compiler, `sys/hoon` :: compiler-source: hoon source file producing compiler, `sys/hoon`
@ -274,12 +277,14 @@
:: ::
:+ %pill %brass :+ %pill %brass
:+ boot-ova :+ boot-ova
:~ (boot-ovum:pill compiler-source arvo-source) :~ (boot-ovum compiler-source arvo-source)
(file-ovum2:pill bas) (file-ovum2 [bas exc])
== ==
=. dez (snoc dez [%base bas]) =. dez (snoc dez [%base bas])
%+ weld %+ weld
(turn dez file-ovum) %+ turn dez
|= [dek=desk bas=path]
(file-ovum [dek bas exc])
?. prime ~ ?. prime ~
[(prep-ovum (turn dez tail))]~ [(prep-ovum (turn dez tail))]~
:: ::
@ -355,7 +360,7 @@
::TODO will exclude non-:directories files, such as /changelog/txt ::TODO will exclude non-:directories files, such as /changelog/txt
=- (murn - same) =- (murn - same)
^- (list (unit ovum)) ^- (list (unit ovum))
:~ `(file-ovum as (en-beam beak /)) :~ `(file-ovum as (en-beam beak /) ~)
:: ::
?. pri ~ ?. pri ~
`(prep-ovum (en-beam beak /) ~) `(prep-ovum (en-beam beak /) ~)

View File

@ -201,7 +201,8 @@
?^ dat=(get:wav wav.tide u.when.req) ?^ dat=(get:wav wav.tide u.when.req)
:_ pub :_ ~ :_ pub :_ ~
(send scry/wave/u.dat src.bowl [dude u.when path]:req) (send scry/wave/u.dat src.bowl [dude u.when path]:req)
?. (gth u.when.req key::(fall (ram:wav wav.tide) [key=+(u.when.req) **])) ?: %+ lte u.when.req
key::(fall (ram:wav wav.tide) (pry:rok rok.tide) [=key val]:wav)
:_ pub :_ ~ :_ pub :_ ~
(send yore/~ src.bowl [dude u.when path]:req) (send yore/~ src.bowl [dude u.when path]:req)
:- ~[(send nigh/~ src.bowl [dude u.when path]:req)] :- ~[(send nigh/~ src.bowl [dude u.when path]:req)]

View File

@ -1,2 +1,3 @@
[%zuse 416] [%zuse 416]
[%zuse 415] [%zuse 415]
[%zuse 414]