Deploy germinal #15

Merged
jmcbray merged 1 commit from tobias/germinal:bundle into master 2020-06-14 21:02:39 -04:00
6 changed files with 41 additions and 11 deletions

26
Makefile Normal file
View file

@ -0,0 +1,26 @@
bin/germinal: *lisp *asd
CL_SOURCE_REGISTRY=$(realpath $(dir germinal.asd)) sbcl --non-interactive \
--eval '(ql:quickload :germinal)' \
--eval '(asdf:make :germinal)'
.PHONY: clean
clean:
rm -rf bin/
PREFIX = /usr/local
.PHONY: install
install: bin/germinal
install -d $(PREFIX)/lib/germinal
install bin/* $(PREFIX)/lib/germinal
echo "#!/bin/sh\ncd $(PREFIX)/lib/germinal && exec ./germinal \$$@" \
> $(PREFIX)/bin/germinal
chmod +x $(PREFIX)/bin/germinal
install -m 644 germinal.service /etc/systemd/system/
install -d /etc/germinal
cp --no-clobber config.toml /etc/germinal/
install -d /var/gemini
.PHONY: uninstall
uninstall:
rm -f -- $(PREFIX)/bin/germinal /etc/systemd/system/germinal.service
rm -rf -- $(PREFIX)/lib/germinal

View file

@ -30,8 +30,8 @@ that Germinal shares some sounds with Gemini.
This is still a bit of a hack, and if you don't have a working Common Lisp
development environment, you will probably have trouble getting it running.
The included ~build.sh~ will build a single executable, but unfortunately it
depends on a shared library that will be somewhere in your ~/.cache folder...
You can build and install Germinal using SBCL with:
~make && sudo make install~
Germinal has been tested on SBCL and ECL. It runs fine on both, but I haven't
been able to build a working binary distribution on ECL.
@ -46,7 +46,7 @@ that Germinal shares some sounds with Gemini.
will be run from. This will improve in the future when I write the
configuration parts. You can generate the cert like this:
~openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes~
~openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes -subj '/CN=HOSTNAME'~
** Usage

View file

@ -1,7 +0,0 @@
#!/bin/sh
sbcl --non-interactive \
--load germinal.asd \
--eval '(ql:quickload :germinal)' \
--eval '(asdf:make :germinal)'
gzexe germinal
rm -f germinal~

View file

@ -26,7 +26,9 @@
(:file "server")
)
:description "A Gemini protocol server."
:build-operation "program-op"
:build-pathname "germinal"
:entry-point "germinal:start-cli"
:defsystem-depends-on (:deploy)
:build-operation "deploy-op"
)

View file

@ -13,6 +13,8 @@ ProtectSystem=full
ProtectHome=yes
ProtectDevices=yes
SystemCallFilter=@system-service
SystemCallErrorNumber=EPERM
[Install]
WantedBy=multi-user.target

View file

@ -19,6 +19,13 @@
;;; Package-level things
(in-package :germinal)
;;; Use system libraries
(deploy:define-library cl+ssl::libssl
:dont-deploy t)
(deploy:define-library osicat-posix::librt
:dont-deploy t)
(interpol:enable-interpol-syntax)
(defvar *germinal-server-name* "localhost")