changelog shortlog graph tags branches changeset files file revisions raw help

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