changelog shortlog graph tags branches files raw help

Mercurial > org > docs / changeset: update infra/quickstart

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.