summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2024-07-22 10:28:41 -0300
committerEuAndreh <eu@euandre.org>2024-07-22 10:28:41 -0300
commit581a353ebab55074a6b78fa568a16c154993a559 (patch)
treed8c68c2c6cca82d2545b40426b769a5271491453 /Makefile
parentsystem.scm: Add "papo.im" package explicitly for now (diff)
downloadasami-581a353ebab55074a6b78fa568a16c154993a559.tar.gz
asami-581a353ebab55074a6b78fa568a16c154993a559.tar.xz
Refactor building of packages from papo.im
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile99
1 files changed, 32 insertions, 67 deletions
diff --git a/Makefile b/Makefile
index fccc3f8..66993db 100644
--- a/Makefile
+++ b/Makefile
@@ -1,19 +1,19 @@
.POSIX:
-NAME = papo.im
+NAME = server
NAME_UC = $(NAME)
+## Installation prefix. Defaults to "/usr".
PREFIX = /usr
SHAREDIR = $(PREFIX)/share
DOCDIR = $(SHAREDIR)/doc/$(NAME)
-URL = $(NAME)
+## Where to store the installation. Empty by default.
+DESTDIR =
TLD = $(URL)
-LIST = list@$(URL)
-
OFFSITE_SSH = 00000@aa0000.rsync.net
.SUFFIXES:
-.SUFFIXES: .in .gpg .md .html
+.SUFFIXES: .in .gpg
.in:
sed \
@@ -27,36 +27,28 @@ OFFSITE_SSH = 00000@aa0000.rsync.net
< $< > $@
if [ -x $< ]; then chmod +x $@; fi
-.gpg:
- gpg -d < $< > $@
-
-.md.html:
- sh aux/commonmark.sh -N'$(NAME_UC)' -t$(*F) -l en < $< > $@
+all:
+include deps.mk
-prod-secrets.txt.gpg = \
- src/secrets/borg-passphrase.txt.gpg \
- src/secrets/root@$(TLD).id_rsa.txt.gpg \
-
-all-secrets.txt.gpg = \
- $(prod-secrets.txt.gpg) \
- src/secrets/rsync.net.txt.gpg \
- src/secrets/VPS-root.txt.gpg \
prod-secrets.txt = $(prod-secrets.txt.gpg:.gpg=)
-all-secrets.txt = $(all-secrets.txt.gpg:.gpg=)
+repo-secrets.txt = $(repo-secrets.txt.gpg:.gpg=)
derived-assets = \
- mkdir-public.sentinel \
- system.sentinel \
- public \
- aux/preamble.md \
- CHANGELOG.html \
+
+side-assets = \
+ $(prod-secrets.txt) \
+ $(repo-secrets.txt) \
+ packages \
+ system \
+## Default target. Builds all artifacts required for testing
+## and installation.
all: $(derived-assets)
$(derived-assets) src/config/conf.env: Makefile
@@ -65,10 +57,9 @@ $(derived-assets) src/config/conf.env: Makefile
src/config/tld.txt: Makefile
echo '$(TLD)' > $@
-system.sentinel: src/guix/system.scm src/config/tld.txt src/config/conf.env \
- src/keys/SSH/root@$(URL).id_rsa.pub.stripped
- guix build -v3 -f src/guix/system.scm
- touch $@
+packages system: src/guix/packages.scm src/guix/system.scm
+ rm -f $@
+ guix build -r $@ -v3 -Kf src/guix/$@.scm
.SUFFIXES: .stripped
src/keys/SSH/root@$(TLD).id_rsa.pub.stripped: \
@@ -76,14 +67,16 @@ src/keys/SSH/root@$(TLD).id_rsa.pub.stripped: \
cut -d' ' -f8- < $*.txt > $@
+check-unit:
+check-integration:
## Run all tests. Each test suite is isolated, so that a parallel
## build can run tests at the same time. The required artifacts
## are created if required.
-check:
+check: check-unit check-integration
clean:
- rm -rf $(derived-assets) $(all-secrets.txt)
+ rm -rf $(derived-assets) $(side-assets)
install: all
mkdir -p \
@@ -91,38 +84,19 @@ install: all
cp -R src/web/* '$(DESTDIR)$(DOCDIR)'
-mkdir-public.sentinel:
- mkdir -p public/
- touch $@
-
-public/CHANGELOG.html: mkdir-public.sentinel CHANGELOG.html
- cp $(@F) $@
-
-public/TODOs.html:
-public/ci: mkdir-public.sentinel
- sh src/scripts/report.sh -o $@
-
-
-## Generates the `public/` directory, which contains all static HTML files.
-public: public/CHANGELOG.html public/TODOs.html public/ci
$(all-secrets.txt.gpg):
gpg -ae `src/keys/gpg-recipients.sh` < $* > $@
-## Import the GPG keys to allow encrypting secrets to them.
-import:
- sh src/keys/gpg-import.sh
-
## Print the latest 500 lines of the application and keeps tailing it.
logs:
- ssh $(TLD) tail -n500 /var/log/$(NAME).log
+ ssh $(TLD) tail -fn500 /var/log/$(NAME).log
## Print *all* logs available on the server.
all-logs:
- ssh $(TLD) \
- 'gunzip -c /var/log/$(NAME).log.*; cat /var/log/$(NAME).log' | \
- sort
+ ssh $(TLD) 'nicely cat /var/log/$(NAME).log.* && \
+ nicely gzip -c /var/log/$(NAME).log' | gunzip
## Decrypt $(prod-secrets.txt) in `src/secrets/` and put them in their
@@ -134,24 +108,15 @@ upload-secrets: $(prod-secrets.txt)
--chmod=000 \
-avzP \
$(prod-secrets.txt) $(TLD):/opt/secrets/
- rm -f $(prod-secrets.txt)
-## Generate the `.ssh/authorized_keys` file and upload it to $(OFFSITE_SSH).
+
+## Generate the ".ssh/authorized_keys" file and upload
+## it to $(OFFSITE_SSH).
upload-keys:
- cat src/keys/SSH/*.txt | \
+ find src/keys/SSH/*.txt | \
+ LANG=POSIX.UTF-8 sort | \
+ xargs cat | \
ssh $(OFFSITE_SSH) dd of=.ssh/authorized_keys
-## Deploy everything that is deployable from the repository when
-## open in the local development machine.
-deploy: upload-secrets upload-keys
- @printf '\nRunning `git push` to update the deployment.\n'
- git push
-
-
-MAKEFILE = Makefile
-## Show this help.
-help:
- cat $(MAKEFILE) | sh aux/makehelp.sh
-
ALWAYS: