diff options
author | EuAndreh <eu@euandre.org> | 2024-07-22 10:28:41 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2024-07-22 10:28:41 -0300 |
commit | 581a353ebab55074a6b78fa568a16c154993a559 (patch) | |
tree | d8c68c2c6cca82d2545b40426b769a5271491453 /Makefile | |
parent | system.scm: Add "papo.im" package explicitly for now (diff) | |
download | asami-581a353ebab55074a6b78fa568a16c154993a559.tar.gz asami-581a353ebab55074a6b78fa568a16c154993a559.tar.xz |
Refactor building of packages from papo.im
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 99 |
1 files changed, 32 insertions, 67 deletions
@@ -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: |