changeset 264: |
8015880d9a0d |
parent: |
6d526bd63943
|
child: |
fab40b02d833 |
author: |
Richard Westhaver <ellis@rwest.io> |
date: |
Sun, 16 Jun 2024 02:32:25 +0000 |
permissions: |
-rw-r--r-- |
description: |
sync |
1 ;;; autogen.lisp --- Setup the current directory for 3 ;; sbcl --core .stash/share/lisp/user.core --load autogen.lisp 9 (:use :cl :skel :log :std/named-readtables 10 :dat/json :dat/sxp :net/fetch :net/util 11 :cli/progress :cli/ansi :cli/ed :cli/prompt 12 :cli/shell :std/hash-table :std/alien :std/macs 15 (in-package :infra/autogen) 19 (defparameter *profile* (uiop:read-file-forms 20 (if-let ((profile (sb-posix:getenv "INFRA_PROFILE"))) 23 (defparameter *core* sb-ext:*core-pathname*) 24 (defparameter *host* (uiop:read-file-forms 25 (let ((hcfg (format nil "~a.sxp" (sb-unix:unix-gethostname)))) 26 (unless (probe-file hcfg) 27 (print #0$./check.sh$#)) 30 (defun gethost (k) (getf *host* k)) 31 (defun getprofile (k) (getf *profile* k)) 33 (setq *skel-project* (find-skelfile *default-pathname-defaults* :load t)) 34 (defparameter *host-env* (let ((table (make-hash-table :test 'equal)) 35 (keys (list "STASH" "STORE" "DIST" "PACKY_URL" "VC_URL" "INSTALL_PREFIX" 36 "CC" "AR" "HG" "GIT" "LISP" "RUST" "LD" "SHELL" "DEV" "DEV_HOME" 37 "DEV_ID" "WORKER" "WORKER_ID" "WORKER_HOME" "CARGO_HOME" "RUSTUP_HOME" 38 "LISP_HOME" "INFRA_PROFILE"))) 39 (dolist (k keys table) 40 (setf (gethash k table) (sb-posix:getenv k))))) 41 (defun getenv (k) (gethash *host-env* k)) 44 "Auto-generate the INFRA system." 45 (info! "starting autogen.lisp" sb-ext:*core-pathname*) 47 ;; print host, env, profile 48 (format t "core: ~A~%" *core*) 51 (loop for (k v) on *host* by 'cddr 52 do (format t " ~A = ~A~%" k v)) 54 (loop for k being the hash-key 55 using (hash-value v) of *host-env* 56 do (format t " ~A = ~:A~%" k v)) 58 (loop for (k v) on *profile* by 'cddr 59 do (format t " ~A = ~A~%" k v)) 61 (sk-call* *skel-project* :clean :bootstrap)) 63 (defun build-default () 64 (let ((rocksdb-builder (sb-thread:make-thread (lambda () (sk-call* *skel-project* :rocksdb)))) 65 (sbcl-builder (sb-thread:make-thread (lambda () (sk-call* *skel-project* :sbcl :sbcl-shared)))) 66 (operator-builder (sb-thread:make-thread (lambda () (sk-call* *skel-project* :archlinux :operator)))) 67 (worker-builder (sb-thread:make-thread (lambda () (sk-call* *skel-project* :alpine :worker))))) 68 (std/thread:wait-for-threads 69 (list rocksdb-builder sbcl-builder operator-builder worker-builder)))) 72 ;; The host profile is generated automatically by 'check.sh'. After running 73 ;; the script you'll have a file HOST.sxp. 76 ;; The default profile is defined in 'default.sxp'. You can use that as a base 77 ;; configuration and override it with INFRA_PROFILE 80 (unless (probe-file #p".stash")