git.fiddlerwoaroof.com
Browse code

(init)

Ed Langley authored on 06/09/2019 06:33:37
Showing 6 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,17 @@
1
+FROM bitnami/minideb:buster
2
+
3
+COPY setup /setup
4
+RUN /setup/apt
5
+
6
+WORKDIR /root
7
+ARG version=master
8
+ENV version=$version
9
+
10
+RUN /setup/checkout
11
+
12
+RUN /setup/build
13
+
14
+COPY sbclrc /root/.sbclrc
15
+RUN /usr/local/bin/sbcl --eval '(ensure-directories-exist (translate-logical-pathname #p"SYS:SITE;"))' --quit
16
+
17
+ENTRYPOINT ["/usr/local/bin/sbcl"]
0 18
new file mode 100644
... ...
@@ -0,0 +1,49 @@
1
+(defpackage :fwoar.repl-utils
2
+  (:use :cl)
3
+  (:export clone github))
4
+
5
+(in-package :cl-user)
6
+
7
+(eval-when (:compile-toplevel :load-toplevel :execute)
8
+  (load "~/quicklisp/setup.lisp"))
9
+
10
+(eval-when (:compile-toplevel :load-toplevel :execute)
11
+  (ql:quickload :legit)
12
+  (shadow 'load))
13
+
14
+(defun load (pathspec &rest args)
15
+  (restart-case (apply #'cl:load pathspec args)
16
+    (retry () (apply #'load pathspec args))))
17
+
18
+(defun home-relative-pathname (pathname)
19
+  (merge-pathnames pathname
20
+                   (user-homedir-pathname)))
21
+
22
+(pushnew (list "SYS:SITE;**;*.*.*"
23
+               (home-relative-pathname 
24
+                 (make-pathname :directory '(:relative ".sbcl" "site" :wild-inferiors) 
25
+                                :name :wild 
26
+                                :type :wild)))
27
+         (logical-pathname-translations "SYS")
28
+         :test #'equal)
29
+
30
+(setf (logical-pathname-translations "QL")
31
+      `(("QL:LOCAL-PROJECTS;**;*.*.*" ,(home-relative-pathname #p"quicklisp/local-projects/**/*.*"))
32
+        ("QL:SOFTWARE;**;*.*.*" ,(home-relative-pathname #p"quicklisp/local-projects/**/*.*"))))
33
+
34
+(mapcar (lambda (_) 
35
+          (load-logical-pathname-translations 
36
+            (pathname-name _)))
37
+        (directory #p"SYS:SITE;*.translations"))
38
+
39
+(defun fwoar.repl-utils:clone (repo name)
40
+  (legit:clone repo
41
+               (translate-logical-pathname (make-pathname :host "QL"
42
+                                                          :directory  (list :absolute
43
+                                                                            "LOCAL-PROJECTS"
44
+                                                                            name)))))
45
+
46
+(defun fwoar.repl-utils:github (user repo)
47
+  (fwoar.repl-utils:clone (format nil "https://github.com/~a/~a"
48
+                                  user repo)
49
+                          repo))
0 50
new file mode 100755
... ...
@@ -0,0 +1,8 @@
1
+#!/usr/bin/env bash
2
+
3
+set -eu -o pipefail
4
+
5
+echo 'deb-src http://mirrors.kernel.org/debian/ buster main contrib' > /etc/apt/sources.list.d/src.list
6
+apt-get update -y
7
+apt-get dist-upgrade -y
8
+apt-get install -y sbcl git wget
0 9
new file mode 100755
... ...
@@ -0,0 +1,19 @@
1
+#!/usr/bin/env bash
2
+set -eu -o pipefail
3
+
4
+cd /sbcl-build
5
+
6
+apt-get build-dep -y sbcl
7
+./make.sh --fancy --prefix=/usr/local/ --with-sb-linkable-runtime --with-sb-dynamic-core --arch=x86-64
8
+./install.sh
9
+
10
+cd /root
11
+
12
+wget https://beta.quicklisp.org/quicklisp.lisp -Oquicklisp.lisp
13
+/usr/local/bin/sbcl --load quicklisp.lisp --eval '(quicklisp-quickstart:install)' --quit
14
+rm quicklisp.lisp
15
+
16
+rm -rf /sbcl-build
17
+
18
+/setup/cleanup
19
+
0 20
new file mode 100755
... ...
@@ -0,0 +1,7 @@
1
+#!/usr/bin/env bash
2
+set -eu -o pipefail
3
+
4
+git clone git://git.code.sf.net/p/sbcl/sbcl /sbcl-build
5
+   
6
+cd /sbcl-build
7
+git checkout "${version}"
0 8
new file mode 100755
... ...
@@ -0,0 +1,7 @@
1
+#!/usr/bin/env bash
2
+set -eu -o pipefail
3
+
4
+apt-get purge -y sbcl
5
+apt-get install -y apt-rdepends
6
+apt-get purge --autoremove -y $(apt-rdepends --build-depends --follow=DEPENDS sbcl | awk '$1 == "Build-Depends:" {print $2}'  | tr '\n' ' ' 2>/dev/null) apt-rdepends
7
+apt-get autoremove -y