aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2024-08-17 09:42:40 -0300
committerEuAndreh <eu@euandre.org>2024-08-17 09:42:40 -0300
commitb18b4f5ca1cf770628d0722e310a14beb409632f (patch)
tree1ffe0bd2a065b4e3bdef78c5b7b7911c1f377cef /Makefile
parentservices.scm: Stop including heredoc: module (diff)
downloadpackages-b18b4f5ca1cf770628d0722e310a14beb409632f.tar.gz
packages-b18b4f5ca1cf770628d0722e310a14beb409632f.tar.xz
Makefile: Start over with correct rules for Guix
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile181
1 files changed, 45 insertions, 136 deletions
diff --git a/Makefile b/Makefile
index d1e1ba5..b0f061e 100644
--- a/Makefile
+++ b/Makefile
@@ -18,136 +18,39 @@ test-config-files = \
tests/internet/etc/dovecot/dovecot.conf \
derived-assets = \
- $(test-config-files) \
- src/bin/paku \
- public \
+ queue.scm.sentinel \
+ packages.scm.sentinel \
+ local.scm.sentinel \
+ internet.scm.sentinel \
+ $(test-config-files) \
+side-assets = \
+ queue.scm \
+ packages.scm \
+ local.scm \
+ internet.scm \
-all: guix nix debian alpine homebrew $(derived-assets)
+all: $(derived-assets)
-refresh: src/bin/paku
- paku refresh < paku.json > paku.lock
+queue.scm.sentinel: src/org/euandre/queue.scm
+packages.scm.sentinel: src/org/euandre/queue.scm src/org/euandre/packages.scm
+local.scm.sentinel: src/org/euandre/queue.scm tests/local/system.scm
+packages.scm.sentinel: src/org/euandre/queue.scm src/org/euandre/packages.scm \
+ src/org/euandre/services.scm tests/internet/system.scm
-
-paku.lock: src/bin/paku Makefile
- touch $@
-
-
-guix: guix.sentinel
-
-guix.sentinel: src/org/euandre/packages.scm guix.mk \
- result-packages.sentinel result-services.sentinel
- @$(MAKE) -f guix.mk
- touch $@
-
-guix.mk: paku.lock
- paku guix-channel-key > $@
-
-
-src/org/euandre/packages.scm: paku.lock
- paku guix > src/org/euandre/packages.scm
-
-result-packages result-packages.sentinel: \
- src/org/euandre/packages.scm src/org/euandre/queue.scm
- rm -f result-packages
- guix build -r result-packages -v3 -Lsrc/ -K \
- -f src/org/euandre/packages.scm \
- -f src/org/euandre/queue.scm
- touch result-packages.sentinel
-
-result-services.sentinel: result-local.sentinel result-internet.sentinel
+queue.scm.sentinel packages.scm.sentinel: Makefile
+ rm -f `basename $@ .sentinel`*
+ guix build -v3 -Lsrc -r`basename $@ .sentinel` -Kf src/org/euandre/`basename $@ .sentinel`
touch $@
-result-local result-local.sentinel: result-packages.sentinel
- rm -f result-local
- guix system -v3 -Lsrc/ -K -r result-local build tests/local/system.scm
- touch result-local.sentinel
-
-result-internet result-internet.sentinel: result-packages.sentinel
- rm -f result-internet
- guix system -v3 -Lsrc/ -K -r result-internet build tests/internet/system.scm
- touch result-internet.sentinel
-
-
-nix: result.sentinel
-
-build.nix: paku.lock
- paku build-nix > $@
-
-default.nix: paku.lock
- paku nix > $@
-
-result result.sentinel: default.nix
- nix-build build.nix
- touch result.sentinel
-
-
-debian.mk: paku.lock
- paku debian > $@
-
-debian.sentinel: debian.mk
- @$(MAKE) -f debian.mk
+local.scm.sentinel internet.scm.sentinel: Makefile
+ rm -f `basename $@ .sentinel`*
+ guix build -v3 -Lsrc -r`basename $@ .sentinel` -Kf tests/`basename $@ .scm.sentinel`/system.scm
touch $@
-debian: debian.sentinel
-
-
-alpine: alpine.sentinel
-
-alpine.sentinel: alpine.mk
- @$(MAKE) -f alpine.mk
- touch $@
-alpine.mk: paku.lock
- mkdir -p src/alpine
- paku alpine src/alpine > $@
-
-
-homebrew: Formula
-
-Formula: paku.lock
- rm -rf $@
- mkdir -p $@
- paku homebrew $@
- touch $@
-
-
-public/debian: debian.sentinel
- mkdir -p $@
- cp -R `cat debian.out.txt` $@
- touch $@
-
-public/alpine: alpine.sentinel
- rm -rf $@
- mkdir -p $@
- cp -R `cat alpine.out.txt` $@
- touch $@
-
-public/paku.html: paku.lock
- mkdir -p $(@D)
- paku html > $@
-
-public: public/debian public/alpine public/paku.html
-
-deploy: public
- rsync \
- --rsync-path='sudo -u deployer rsync' \
- -avzP \
- --delete \
- public/ euandre.org:/srv/www/s/package-repository/
-
-
-clean: src/bin/paku
- rm -rf "`paku -C datadir`"
- rm -rf \
- $(derived-assets) result* *.mk *.sentinel *.out.txt \
- src/secrets/*.rsa
-
-
-check-shellcheck:
- sh tests/assert-shellcheck.sh
local-files = \
/etc/postfix/master.cf \
@@ -159,32 +62,38 @@ internet-files = \
/etc/dkimproxyout.conf \
/etc/dovecot/dovecot.conf \
-check-guix: result-local.sentinel result-internet.sentinel $(test-config-files)
+check-guix-local: local.scm.sentinel $(test-config-files)
for f in $(local-files); do \
- diff -U5 --color=always result-local$$f tests/local$$f; \
+ diff -U5 local.scm"$$f" tests/local"$$f"; \
done
+
+check-guix-internet: internet.scm.sentinel $(test-config-files)
for f in $(internet-files); do \
- diff -U5 --color=always result-internet$$f tests/internet$$f; \
+ diff -U5 internet.scm"$$f" tests/internet"$$f"; \
done
-HTTP-REMOTE = "`paku -C base-url`"
-GIT-REMOTE = "`paku -C vcs.http`"
-check-ubuntu-x86_64-deb:
- sh tests/vm-check.sh -x -H ubuntu-x86_64-headless-deb -r $(HTTP-REMOTE) -t deb
+check-guix: check-guix-local check-guix-internet
+
+
+check-unit: check-guix
+
+
+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 missing.
+check: check-unit check-integration
-check-ubuntu-x86_64-homebrew:
- sh tests/vm-check.sh -x -H ubuntu-x86_64-headless-homebrew -r $(GIT-REMOTE) -t homebrew
-check-ubuntu: check-ubuntu-x86_64-deb check-ubuntu-x86_64-homebrew
-check-debian-x86_64-deb:
- sh tests/vm-check.sh -x -H debian-x86_64-headless -r $(HTTP-REMOTE) -t deb
+## Remove *all* derived artifacts produced during the build.
+## A dedicated test asserts that this is always true.
+clean:
+ rm -rf $(derived-assets) $(side-assets)
-check-debian: check-debian-x86_64-deb
-check-alpine-x86_64-apk: src/bin/paku
- sh tests/vm-check.sh -x -H alpine-x86_64-headless -r $(HTTP-REMOTE) -t apk -- -k "`paku -C maintainer.email`"
-check-alpine: check-alpine-x86_64-apk
-check: check-shellcheck check-guix check-ubuntu check-debian check-alpine
+ALWAYS: