changelog shortlog graph tags branches changeset files revisions annotate raw help

Mercurial > org > docs / infra/quickstart.org

changeset 20: 6932edcf60ec
parent: 93bea7513a3e
child: 889970442a12
author: Richard Westhaver <ellis@rwest.io>
date: Tue, 30 Apr 2024 22:10:26 -0400
permissions: -rw-r--r--
description: update infra/quickstart
1 {{{header(infra/quickstart,
2 Richard Westhaver,
3 ellis@rwest.io,
4 Infra Quickstart Guide)}}}
5 #+property: header-args :dir /home/ellis/dev/comp/infra/
6 
7 The CC =infra= project can be thought of as one big Makefile, and
8 currently it is one.
9 
10 - *Host Requirements*
11  - x86_64 4 core CPU
12  - 8G RAM
13  - 32G Disk Space
14  - Linux kernel
15 
16 - *Minimum Dependencies*
17  - mercurial
18  - git
19  - clang
20  - zstd
21 
22 * TODO check.sh
23 Check that the current host is a qualified builder.
24 
25 This will interrogate the system, checking for minimum
26 requirements. If any requirement isn't met an error is
27 signaled. Environment variables are also reported here, but not
28 set. On completion, the file =host.sxp= is written to the current
29 directory.
30 
31 The minimum software dependencies above should be installed via your
32 system's package manager. The remaining dependencies are installed via
33 the =install.sh= script.
34 
35 #+begin_src shell
36 ./check.sh
37 #+end_src
38 
39 * TODO profile.sh
40 Provision a pre-configured profile for this host.
41 
42 The default profile builds most dependencies from source. Depending on
43 your hardware this can take a very long time and may not be
44 appropriate anyway. For example a 'guest' builder may want to be
45 provisioned some dependencies from the host and install cached
46 binaries.
47 
48 This script
49 * TODO install.sh
50 Install core dependencies.
51 
52 This script may install any of the following depending on
53 =profile.sxp=:
54 
55 - shared libraries and headers
56  - rocksdb
57  - tree-sitter
58  - tree-sitter-langs
59 - programs
60  - emacs
61  - rust
62  - sbcl
63  - core-progs
64  - skel
65  - packy
66 - system packages
67  - imagemagick
68  - giflib
69  - libgccjit
70  - uutils-coreutils
71  - wireguard-tools
72  - openssl
73  - linux-headers
74  - liburing
75  - libxkbcommon
76  - podman
77 
78 * TODO bootstrap.sh
79 Bootstrap the core.
80 
81 - download the compressed =infra= lisp core from
82  https://packy.compiler.company
83 - compile and load =bootstrap.lisp=
84 
85 Upon completion a local =stash= directory is provisioned. At this
86 point we no longer need to depend on shell scripting as we have a
87 fully interactive Lisp environment to hack on our builds with.
88 
89 From here, you may run =skel inspect= to inspect the infra =skelfile=
90 and select a target to build on your machine or in a container. Use
91 =skel --help= for a list of other commands.
92 
93 * TODO deploy.lisp
94 Deploy =infra= builds to a remote.
95 
96 Deployment involves 'packing' a target found in =stash=, archiving it,
97 compressing it, and sending it to a remote location possibly with a
98 signature, checksum, or other metadata, and possibly encrypted. A
99 'package' may also be a raw directory of plain-text files. It's a very
100 loose term. Where the package ends up and how it is packed depends on
101 the build-config and skelfile slots.
102 
103 Production deployments end up at https://packy.compiler.company.