changeset 20: |
6932edcf60ec |
parent 19: |
93bea7513a3e |
child 21: |
e3ba21f7d53a |
child 22: |
889970442a12 |
author: |
Richard Westhaver <ellis@rwest.io> |
date: |
Tue, 30 Apr 2024 22:10:26 -0400 |
files: |
infra/quickstart.org |
description: |
update infra/quickstart |
1.1--- a/infra/quickstart.org Sun Apr 28 19:50:01 2024 -0400
1.2+++ b/infra/quickstart.org Tue Apr 30 22:10:26 2024 -0400
1.3@@ -4,34 +4,100 @@
1.4 Infra Quickstart Guide)}}}
1.5 #+property: header-args :dir /home/ellis/dev/comp/infra/
1.6
1.7-- Minimum Host Requirements
1.8+The CC =infra= project can be thought of as one big Makefile, and
1.9+currently it is one.
1.10+
1.11+- *Host Requirements*
1.12 - x86_64 4 core CPU
1.13 - 8G RAM
1.14 - 32G Disk Space
1.15- - Unix OS (Archlinux > other GNU/Linux > Darwin)
1.16+ - Linux kernel
1.17+
1.18+- *Minimum Dependencies*
1.19+ - mercurial
1.20+ - git
1.21+ - clang
1.22+ - zstd
1.23+
1.24+* TODO check.sh
1.25+Check that the current host is a qualified builder.
1.26
1.27-- Minimum Dependencies
1.28- - Make
1.29- - Mercurial
1.30- - Git
1.31- - Clang
1.32- - Zstd
1.33- - Podman
1.34- - SBCL
1.35+This will interrogate the system, checking for minimum
1.36+requirements. If any requirement isn't met an error is
1.37+signaled. Environment variables are also reported here, but not
1.38+set. On completion, the file =host.sxp= is written to the current
1.39+directory.
1.40
1.41-- init from container registry
1.42-#+name: pull-infra-container
1.43+The minimum software dependencies above should be installed via your
1.44+system's package manager. The remaining dependencies are installed via
1.45+the =install.sh= script.
1.46+
1.47 #+begin_src shell
1.48-podman pull registry.compiler.company/comp/infra/box:latest
1.49-podman run -it infra/box
1.50+./check.sh
1.51 #+end_src
1.52
1.53-/OR/
1.54+* TODO profile.sh
1.55+Provision a pre-configured profile for this host.
1.56+
1.57+The default profile builds most dependencies from source. Depending on
1.58+your hardware this can take a very long time and may not be
1.59+appropriate anyway. For example a 'guest' builder may want to be
1.60+provisioned some dependencies from the host and install cached
1.61+binaries.
1.62+
1.63+This script
1.64+* TODO install.sh
1.65+Install core dependencies.
1.66+
1.67+This script may install any of the following depending on
1.68+=profile.sxp=:
1.69
1.70-- init from source
1.71-#+name: pull-infra-source
1.72-#+begin_src shell
1.73-hg clone https://vc.compiler.company/comp/infra
1.74-cd infra
1.75-make box
1.76-#+end_src
1.77+- shared libraries and headers
1.78+ - rocksdb
1.79+ - tree-sitter
1.80+ - tree-sitter-langs
1.81+- programs
1.82+ - emacs
1.83+ - rust
1.84+ - sbcl
1.85+ - core-progs
1.86+ - skel
1.87+ - packy
1.88+- system packages
1.89+ - imagemagick
1.90+ - giflib
1.91+ - libgccjit
1.92+ - uutils-coreutils
1.93+ - wireguard-tools
1.94+ - openssl
1.95+ - linux-headers
1.96+ - liburing
1.97+ - libxkbcommon
1.98+ - podman
1.99+
1.100+* TODO bootstrap.sh
1.101+Bootstrap the core.
1.102+
1.103+- download the compressed =infra= lisp core from
1.104+ https://packy.compiler.company
1.105+- compile and load =bootstrap.lisp=
1.106+
1.107+Upon completion a local =stash= directory is provisioned. At this
1.108+point we no longer need to depend on shell scripting as we have a
1.109+fully interactive Lisp environment to hack on our builds with.
1.110+
1.111+From here, you may run =skel inspect= to inspect the infra =skelfile=
1.112+and select a target to build on your machine or in a container. Use
1.113+=skel --help= for a list of other commands.
1.114+
1.115+* TODO deploy.lisp
1.116+Deploy =infra= builds to a remote.
1.117+
1.118+Deployment involves 'packing' a target found in =stash=, archiving it,
1.119+compressing it, and sending it to a remote location possibly with a
1.120+signature, checksum, or other metadata, and possibly encrypted. A
1.121+'package' may also be a raw directory of plain-text files. It's a very
1.122+loose term. Where the package ends up and how it is packed depends on
1.123+the build-config and skelfile slots.
1.124+
1.125+Production deployments end up at https://packy.compiler.company.