mirror of
https://github.com/urbit/shrub.git
synced 2024-12-21 01:41:37 +03:00
76 lines
2.0 KiB
Plaintext
76 lines
2.0 KiB
Plaintext
:: Produce an ivory pill
|
|
::
|
|
:::: /hoon/ivory/gen
|
|
::
|
|
/? 310
|
|
::
|
|
::::
|
|
!:
|
|
:- %say
|
|
|= [[now=@da * bec=beak] *]
|
|
:- %noun
|
|
:: sys: root path to boot system, `/~me/[desk]/now/sys`
|
|
::
|
|
=/ sys=path
|
|
/(scot %p p.bec)/[q.bec]/(scot %da now)/sys
|
|
:: compiler-source: hoon source file producing compiler, `sys/hoon`
|
|
::
|
|
=/ compiler-source
|
|
.^(@t %cx (welp sys /hoon/hoon))
|
|
:: compiler-hoon: compiler as hoon expression
|
|
::
|
|
:: Parsed with a static path for reproducibility.
|
|
::
|
|
~& %ivory-parsing
|
|
=/ compiler-hoon (rain /sys/hoon/hoon compiler-source)
|
|
~& %ivory-parsed
|
|
:: arvo-source: hoon source file producing arvo kernel, `sys/arvo`
|
|
::
|
|
=/ arvo-source
|
|
.^(@t %cx (welp sys /arvo/hoon))
|
|
:: whole-hoon: arvo within compiler
|
|
::
|
|
:: Parsed with a static path for reproducibility.
|
|
::
|
|
=/ whole-hoon=hoon
|
|
:+ %tsbn compiler-hoon
|
|
:+ %tsld (rain /sys/arvo/hoon arvo-source)
|
|
[%$ 7]
|
|
:: compile the whole schmeer
|
|
::
|
|
~& %ivory-compiling
|
|
=/ whole-formula
|
|
q:(~(mint ut %noun) %noun whole-hoon)
|
|
~& %ivory-compiled
|
|
:: zuse-ovo: standard library installation event
|
|
::
|
|
:: Arvo parses the %veer card contents with +rain;
|
|
:: we include a static path for reproducibility.
|
|
::
|
|
=/ zuse-ovo=ovum
|
|
:- /vane/zuse
|
|
[%veer %$ /sys/zuse/hoon .^(@ %cx (weld sys /zuse/hoon))]
|
|
:: installed: Arvo gate (formal instance) with %zuse installed
|
|
::
|
|
:: The :zuse-ovo event occurs at a defaulted date for reproducibility.
|
|
::
|
|
~& %zuse-installing
|
|
=/ installed
|
|
.* 0
|
|
:+ %7 whole-formula
|
|
[%9 2 %10 [6 %1 *@da zuse-ovo] %0 1]
|
|
~& %zuse-installed
|
|
:: our boot-ova is a list containing one massive formula:
|
|
::
|
|
:: We evaluate :whole-formula (for jet registration),
|
|
:: then ignore the result and produces :installed
|
|
::
|
|
=/ boot-ova=(list)
|
|
[[%7 whole-formula %1 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 ~, as this pill must be compact.
|
|
::
|
|
[boot-ova ~ ~]
|