2020-03-25 01:14:24 +03:00
|
|
|
:: Produce a brass pill
|
2017-06-02 01:47:24 +03:00
|
|
|
::
|
|
|
|
:::: /hoon/brass/gen
|
|
|
|
::
|
|
|
|
/? 310
|
2018-12-04 21:41:04 +03:00
|
|
|
/+ pill
|
2017-06-02 01:47:24 +03:00
|
|
|
::
|
|
|
|
::::
|
|
|
|
!:
|
|
|
|
:- %say
|
2020-11-19 10:44:28 +03:00
|
|
|
|= $: [now=@da eny=@uvJ bec=beak]
|
2021-09-29 16:19:24 +03:00
|
|
|
::
|
|
|
|
:: arg: desks to build pill from
|
|
|
|
::
|
|
|
|
:: list of desks. defaults to [%base]~.
|
|
|
|
:: the first desk in this list will become the pill's base desk.
|
|
|
|
:: optionally, the first desk may be replaced with a fully
|
|
|
|
:: qualified path to the new boot system (typically in sys).
|
|
|
|
:: the rest of the desks will be installed through kiln.
|
|
|
|
::
|
|
|
|
$= arg
|
|
|
|
$@ ~
|
|
|
|
$: base=$@(desk [@ta @ta @ta path])
|
|
|
|
rest=(list desk)
|
|
|
|
==
|
|
|
|
::
|
2020-11-19 10:44:28 +03:00
|
|
|
~
|
2017-06-02 01:47:24 +03:00
|
|
|
==
|
2022-03-17 19:03:10 +03:00
|
|
|
:- %pill
|
2021-07-26 08:26:49 +03:00
|
|
|
^- pill:pill
|
2017-06-02 01:47:24 +03:00
|
|
|
:: sys: root path to boot system, `/~me/[desk]/now/sys`
|
2021-09-29 16:19:24 +03:00
|
|
|
:: bas: root path to boot system' desk
|
|
|
|
:: dez: secondary desks and their root paths
|
2017-06-02 01:47:24 +03:00
|
|
|
::
|
2020-11-19 10:44:28 +03:00
|
|
|
=/ sys=path
|
2021-09-29 16:19:24 +03:00
|
|
|
?: ?=([^ *] arg)
|
|
|
|
`path`base.arg
|
|
|
|
=/ =desk
|
|
|
|
?~ 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)]
|
2017-06-02 01:47:24 +03:00
|
|
|
::
|
|
|
|
:: compiler-source: hoon source file producing compiler, `sys/hoon`
|
|
|
|
::
|
2020-11-25 13:20:23 +03:00
|
|
|
=+ compiler-source=.^(@t %cx (welp sys /hoon/hoon))
|
2017-06-02 01:47:24 +03:00
|
|
|
::
|
|
|
|
:: compiler-twig: compiler as hoon expression
|
|
|
|
::
|
2018-12-04 21:42:58 +03:00
|
|
|
~& %brass-parsing
|
2020-12-07 05:35:24 +03:00
|
|
|
=+ compiler-twig=(rain /sys/hoon/hoon compiler-source)
|
2018-12-04 21:42:58 +03:00
|
|
|
~& %brass-parsed
|
2017-06-02 01:47:24 +03:00
|
|
|
::
|
|
|
|
:: compiler-formula: compiler as nock formula
|
|
|
|
::
|
2018-12-04 21:42:58 +03:00
|
|
|
~& %brass-compiling
|
2017-06-02 01:47:24 +03:00
|
|
|
=+ compiler-formula=q:(~(mint ut %noun) %noun compiler-twig)
|
2018-12-04 21:42:58 +03:00
|
|
|
~& %brass-compiled
|
2017-06-02 01:47:24 +03:00
|
|
|
::
|
|
|
|
:: arvo-source: hoon source file producing arvo kernel, `sys/arvo`
|
|
|
|
::
|
|
|
|
=+ arvo-source=.^(@t %cx (welp sys /arvo/hoon))
|
|
|
|
::
|
2017-06-03 03:15:43 +03:00
|
|
|
:: boot-ova: startup events
|
2017-06-02 01:47:24 +03:00
|
|
|
::
|
2020-12-07 05:35:24 +03:00
|
|
|
=/ boot-ova=(list)
|
|
|
|
:~ aeon:eden:part
|
|
|
|
boot:eden:part
|
|
|
|
compiler-formula
|
|
|
|
compiler-source
|
|
|
|
arvo-source
|
|
|
|
==
|
2018-12-04 08:33:51 +03:00
|
|
|
:: a pill is a 3-tuple of event-lists: [boot kernel userspace]
|
|
|
|
::
|
2020-12-07 05:35:24 +03:00
|
|
|
:+ %pill %brass
|
2018-12-04 21:41:04 +03:00
|
|
|
:+ boot-ova
|
2020-12-07 05:35:24 +03:00
|
|
|
:~ (boot-ovum:pill compiler-source arvo-source)
|
2020-11-26 13:02:53 +03:00
|
|
|
(file-ovum2:pill bas)
|
2020-11-19 10:44:28 +03:00
|
|
|
==
|
2021-09-29 16:19:24 +03:00
|
|
|
%+ turn
|
|
|
|
(snoc dez [%base bas])
|
|
|
|
file-ovum:pill
|