diff options
author | EuAndreh <eu@euandre.org> | 2024-08-17 09:42:40 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2024-08-17 09:42:40 -0300 |
commit | b18b4f5ca1cf770628d0722e310a14beb409632f (patch) | |
tree | 1ffe0bd2a065b4e3bdef78c5b7b7911c1f377cef /Makefile | |
parent | services.scm: Stop including heredoc: module (diff) | |
download | packages-b18b4f5ca1cf770628d0722e310a14beb409632f.tar.gz packages-b18b4f5ca1cf770628d0722e310a14beb409632f.tar.xz |
Makefile: Start over with correct rules for Guix
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 181 |
1 files changed, 45 insertions, 136 deletions
@@ -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: |