changeset 254: |
e2b8d0be0d24 |
parent 253: |
ff7589f4656d |
child 255: |
ad70dec68fa1 |
author: |
Richard Westhaver <ellis@rwest.io> |
date: |
Wed, 12 Jun 2024 23:02:34 -0400 |
files: |
autogen.lisp bootstrap.sh check.sh default.sxp skelfile |
description: |
autogen updates |
1.1--- a/autogen.lisp Wed Jun 12 13:56:58 2024 -0400
1.2+++ b/autogen.lisp Wed Jun 12 23:02:34 2024 -0400
1.3@@ -1,6 +1,6 @@
1.4-;;; bootstrap.lisp --- let 'er rip
1.5+;;; autogen.lisp --- Setup the current directory for
1.6
1.7-;;
1.8+;; sbcl --load autogen.lisp
1.9
1.10 ;;; Code:
1.11 (in-package :std-user)
1.12@@ -11,35 +11,60 @@
1.13 :cli/progress :cli/ansi :cli/ed :cli/prompt
1.14 :cli/shell :std/hash-table :std/alien :std/macs
1.15 :std/fmt))
1.16+
1.17 (in-package :infra/bootstrap)
1.18+
1.19 (in-readtable :shell)
1.20
1.21-(eval-when (:compile-toplevel)
1.22- (defstruct host name cpus mem arch kernel core)
1.23- (defparameter *profile* (read-sxp-file
1.24- (if-let ((profile (sb-posix:getenv "BUILD_PROFILE")))
1.25- profile
1.26- #P"default.sxp")))
1.27- (defparameter *core* sb-ext:*core-pathname*)
1.28- (defparameter *host-config* (read-sxp-file
1.29- (let ((hcfg (format nil "~a.sxp" (sb-unix:unix-gethostname))))
1.30- (unless (probe-file hcfg)
1.31- (print #0$./check.sh$#))
1.32- hcfg)))
1.33- (defparameter *env* (let ((table (make-hash-table :test 'equal))
1.34- (keys (list "STASH" "STORE" "DIST" "PACKY_URL" "VC_URL" "INSTALL_PREFIX"
1.35- "CC" "AR" "HG" "GIT" "LISP" "RUST" "LD" "SHELL" "DEV" "DEV_HOME"
1.36- "DEV_ID" "WORKER" "WORKER_ID" "WORKER_HOME" "CARGO_HOME" "RUSTUP_HOME"
1.37- "LISP_HOME")))
1.38- (dolist (k keys table)
1.39- (setf (gethash k table) (sb-posix:getenv k))))))
1.40+(defparameter *profile* (uiop:read-file-forms
1.41+ (if-let ((profile (sb-posix:getenv "INFRA_PROFILE")))
1.42+ profile
1.43+ #P"default.sxp")))
1.44+(defparameter *core* sb-ext:*core-pathname*)
1.45+(defparameter *host* (uiop:read-file-forms
1.46+ (let ((hcfg (format nil "~a.sxp" (sb-unix:unix-gethostname))))
1.47+ (unless (probe-file hcfg)
1.48+ (print #0$./check.sh$#))
1.49+ hcfg)))
1.50+(defun gethost (k) (getf *host* k))
1.51+(defun getprofile (k) (getf *profile* k))
1.52+(init-skel-vars)
1.53+(setq *skel-project* (find-skelfile *default-pathname-defaults* :load t))
1.54+(defparameter *host-env* (let ((table (make-hash-table :test 'equal))
1.55+ (keys (list "STASH" "STORE" "DIST" "PACKY_URL" "VC_URL" "INSTALL_PREFIX"
1.56+ "CC" "AR" "HG" "GIT" "LISP" "RUST" "LD" "SHELL" "DEV" "DEV_HOME"
1.57+ "DEV_ID" "WORKER" "WORKER_ID" "WORKER_HOME" "CARGO_HOME" "RUSTUP_HOME"
1.58+ "LISP_HOME" "INFRA_PROFILE")))
1.59+ (dolist (k keys table)
1.60+ (setf (gethash k table) (sb-posix:getenv k)))))
1.61+(defun getenv (k) (gethash *host-env* k))
1.62
1.63-(println "starting bootstrap.lisp")
1.64-;; (println sb-sys::*machine-version*)
1.65-;; (trace! "env:" (hash-table-alist *env*))
1.66+(info! "starting autogen.lisp" sb-ext:*core-pathname*)
1.67+(terpri)
1.68+(format t "core: ~A~%" *core*)
1.69+(terpri)
1.70+(println "host:")
1.71+(loop for (k v) on *host* by 'cddr
1.72+ do (format t " ~A = ~A~%" k v))
1.73+(println "env:")
1.74+(loop for k being the hash-key
1.75+ using (hash-value v) of *host-env*
1.76+ do (format t " ~A = ~:A~%" k v))
1.77+(println "profile:")
1.78+(loop for (k v) on *profile* by 'cddr
1.79+ do (format t " ~A = ~A~%" k v))
1.80
1.81-;; build-config
1.82-(defun apply-build-config ()
1.83- (setf *log-level* :trace))
1.84+;;; init stash (via skel)
1.85+(sk-call* *skel-project* :clean :src)
1.86
1.87-;; host-config
1.88+(let ((rocksdb-builder (sb-thread:make-thread (lambda () (sk-call* *skel-project* :rocksdb))))
1.89+ (sbcl-builder (sb-thread:make-thread (lambda () (sk-call* *skel-project* :sbcl :sbcl-shared))))
1.90+ (archlinux-pod-builder (sb-thread:make-thread (lambda () (sk-call *skel-project* :archlinux))))
1.91+ (alpine-pod-builder (sb-thread:make-thread (lambda () (sk-call *skel-project* :alpine)))))
1.92+ (std/thread:wait-for-threads
1.93+ (list rocksdb-builder sbcl-builder archlinux-pod-builder alpine-pod-builder)))
1.94+;;; *host*
1.95+
1.96+;;; *profile*
1.97+
1.98+(sb-ext:quit)
2.1--- a/bootstrap.sh Wed Jun 12 13:56:58 2024 -0400
2.2+++ b/bootstrap.sh Wed Jun 12 23:02:34 2024 -0400
2.3@@ -26,7 +26,7 @@
2.4 ensure download "$_rocksdb_url" "${_stash}/src/rocksdb.tar.zst" "$_arch"
2.5 ensure download "$_sk_url" "${_stash}/bin/sk" "$_arch"
2.6 chmod +x "${_stash}/bin/sk"
2.7- say "OK ${_stash}/bin/sk"
2.8+ say "${_stash}/bin/sk"
2.9 }
2.10
2.11 _read() {
3.1--- a/check.sh Wed Jun 12 13:56:58 2024 -0400
3.2+++ b/check.sh Wed Jun 12 23:02:34 2024 -0400
3.3@@ -22,6 +22,7 @@
3.4 local _mem_total="$RETVAL"
3.5 check_disk
3.6 check_mod kvm
3.7+ check_mod btrfs
3.8 get_architecture || return 1
3.9 local _arch="$RETVAL"
3.10 assert_nz "$_arch" "arch"
3.11@@ -41,6 +42,7 @@
3.12 *)
3.13 _write ":ext nil"
3.14 esac
3.15+ say $INFRA_HOST_CONFIG
3.16 }
3.17
3.18 say() {
4.1--- a/default.sxp Wed Jun 12 13:56:58 2024 -0400
4.2+++ b/default.sxp Wed Jun 12 23:02:34 2024 -0400
4.3@@ -1,5 +1,5 @@
4.4 ;; -*- mode:skel -*-
4.5-:sbcl-version "2.4.4" ;; SBCL is always required for bootstrap
4.6+:sbcl-version "2.4.5" ;; SBCL is always required for bootstrap
4.7
4.8 :cc "clang"
4.9
5.1--- a/skelfile Wed Jun 12 13:56:58 2024 -0400
5.2+++ b/skelfile Wed Jun 12 23:02:34 2024 -0400
5.3@@ -8,8 +8,10 @@
5.4 :vc (:hg "https://vc.compiler.company/comp/infra")
5.5 :docs ((:org "readme"))
5.6 :scripts "scripts"
5.7+:stash #p".stash"
5.8+:store #p"/usr/local/store"
5.9 :rules
5.10-((check (#$./check.sh$#))
5.11+((check () #$./check.sh$#)
5.12 (clean () #$rm -rvf .stash$#)
5.13 ;; containers
5.14 (archlinux () #$podman build -f containers/Containerfile.archlinux --no-cache -t localhost/archlinux$#)
5.15@@ -21,6 +23,7 @@
5.16 (containers (archlinux alpine ubuntu box worker operator))
5.17 ;; programs
5.18 (src () #$mkdir -pv .stash/src$#)
5.19+ (bin () #$mkdir -pv .stash/bin$#)
5.20 (emacs (src) #$./scripts/get-emacs.sh$#
5.21 #$cd .stash/src/emacs && ./autogen.sh$#
5.22 #$./scripts/build-emacs.sh$#)