summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile133
1 files changed, 93 insertions, 40 deletions
diff --git a/Makefile b/Makefile
index d9b2f82..518ac92 100644
--- a/Makefile
+++ b/Makefile
@@ -26,9 +26,9 @@ BASEURL = /
.SUFFIXES:
-.SUFFIXES: .adoc .conf .snippets .indexentry .feedentry .sortdata .xml .txt
+.SUFFIXES: .adoc .conf .snippets .indexentry .feedentry .mapentry .sortdata .xml
.SUFFIXES: .htmlbody .htmlheader .htmlfooter .htmllisting .html .links .caslinks
-.SUFFIXES: .categorydata .gz .torrent .flac .ogg
+.SUFFIXES: .txt .categorydata .gz .torrent .flac .ogg .ps .pdf .sentinel
.adoc.conf:
mkwb conf src/global.conf $< > $@
@@ -54,6 +54,9 @@ BASEURL = /
.htmlbody.feedentry:
mkwb feedentry $< > $@
+.conf.mapentry:
+ mkwb mapentry $< > $@
+
.conf.sortdata:
mkwb sortdata $< > $@
@@ -71,6 +74,12 @@ BASEURL = /
.flac.ogg:
ffmpeg $(FFMFLAGS) -i $< -ar 48000 -vn -c:a libvorbis -b:a 320k $@
+.adoc.ps:
+ eslaides < $< > $@
+
+.ps.pdf:
+ ps2pdf - < $< > $@
+
all:
@@ -86,6 +95,7 @@ sources.snippets.gz = $(sources.adoc:.adoc=.snippets.gz)
sources.conf = $(sources.adoc:.adoc=.conf)
sources.links = $(sources.adoc:.adoc=.links)
sources.caslinks = $(sources.adoc:.adoc=.caslinks)
+sources.mapentry = $(sources.adoc:.adoc=.mapentry)
articles.indexentry = $(articles.adoc:.adoc=.indexentry)
articles.feedentry = $(articles.adoc:.adoc=.feedentry)
articles.sortdata = $(articles.adoc:.adoc=.sortdata)
@@ -99,6 +109,8 @@ categories.txt = $(categories.adoc:.adoc=.txt)
categories.xml = $(categories.adoc:.adoc=.xml)
categories.xml.gz = $(categories.adoc:.adoc=.xml.gz)
sources.media.torrent = $(sources.media:=.torrent)
+slides.ps = $(slides.adoc:.adoc=.ps)
+slides.pdf = $(slides.adoc:.adoc=.pdf)
sources = \
$(sources.adoc) \
@@ -111,7 +123,10 @@ sources = \
dynamic-contents = \
$(sources.html) \
+ $(slides.pdf) \
$(feeds.xml) \
+ $(sources.media.torrent) \
+ src/content/sitemap.xml \
static-contents = \
$(sources.extras) \
@@ -149,6 +164,13 @@ all-contents = \
$(contents) \
$(contents.gz) \
+captured-assets = \
+ src/content/$(PUBURL) \
+ src/content/favicon.ico \
+ src/content/favicon.png \
+
+captured-assets.sentinel = $(captured-assets:=.sentinel)
+
derived-assets = \
$(dynamic-contents) \
@@ -157,9 +179,10 @@ derived-assets = \
$(sources.htmlbody) \
$(sources.snippets) \
$(sources.snippets.gz) \
+ $(sources.conf) \
$(sources.links) \
$(sources.caslinks) \
- $(sources.conf) \
+ $(sources.mapentry) \
src/dyn.conf \
src/base.conf \
src/global.conf \
@@ -175,10 +198,14 @@ derived-assets = \
$(categories.txt) \
$(categories.xml) \
$(categories.xml.gz) \
+ $(slides.ps) \
+ $(slides.pdf) \
email.txt \
baseurl.txt \
fingerprint.txt \
expiry.txt \
+ expiry-epoch.txt \
+ now.txt \
src/content/.well-known/security.txt \
src/all-contents.txt \
src/all-filelists.txt \
@@ -190,29 +217,20 @@ derived-assets = \
install.txt \
sources.txt \
src/content/.gitignore \
-
-captured-assets = \
- src/content/$(PUBURL) \
- src/content/favicon.ico \
- src/content/favicon.png \
- $(sources.media.torrent) \
+ $(captured-assets.sentinel) \
side-assets = \
- src/collections/*/*/*/*/*.html.*.txt \
- src/collections/*/*/*/*/*.html.*.txt.gz \
- src/collections/*/index.html.*.txt \
- src/collections/*/sortdata.txt \
- src/collections/*/feed.*.xml \
- src/collections/*/feed.*.xml.gz \
- src/collections/*/*.sortdata \
+ src/collections/*/*/*/*/*/*.html.*.txt \
+ src/collections/*/*/*/*/*/*.txt.gz \
+ src/collections/*/*/index.html.*.txt \
+ src/collections/*/*/sortdata.txt \
+ src/collections/*/*/feed.*.xml \
+ src/collections/*/*/feed.*.xml.gz \
+ src/collections/*/*/*.sortdata \
src/pages/*/*.html.*.txt \
src/content/.well-known/ \
`cat src/all-symlinks.txt 2>/dev/null` \
- src/content/css/ \
- src/content/favicon/ \
- src/content/images/ \
- src/content/resources/ \
- src/content/static/ \
+ `cat src/linkonly-dirs.txt 2>/dev/null` \
@@ -223,7 +241,7 @@ all: $(captured-assets)
$(derived-assets): Makefile deps.mk
-$(sources.conf): src/global.conf src/headers.txt
+$(sources.conf): src/global.conf
src/content/.gitignore: src/symlinks.txt
@@ -251,8 +269,8 @@ $(indexes.htmllisting):
$(categories.htmllisting):
mkwb categoriesbody $*.conf > $@
-$(categories.txt):
- mkwb categories $(@D) > $@
+$(categories.txt): src/global.conf
+ mkwb categories src/global.conf $(@D) > $@
$(categories.xml):
for f in `cat $*.txt`; do \
@@ -272,26 +290,33 @@ $(sources.snippets.gz) $(categories.xml.gz):
if [ -s $* ]; then gzip -9fk `cat $*`; fi
sed 's/$$/.gz/' $* > $@
-src/content/$(PUBURL).gz: src/content/$(PUBURL)
-src/content/$(PUBURL):
- gpg --export --armour "`jq -r '.email' < meta.json`" > $@
+src/content/$(PUBURL).gz: src/content/$(PUBURL).sentinel
+src/content/$(PUBURL).sentinel: email.txt
+ gpg --export --armour "`cat email.txt`" | ifne ifnew $*
+ touch $@
-src/content/favicon.ico.gz: src/content/favicon.ico
-src/content/favicon.ico: src/content/img/favicon.svg
- convert src/content/img/favicon.svg $@
+src/content/favicon.ico.gz: src/content/favicon.ico.sentinel
+src/content/favicon.ico.sentinel: src/content/img/favicon.svg
+ convert src/content/img/favicon.svg -strip ico:- | ifnew $*
+ touch $@
-src/content/favicon.png: src/content/img/favicon.svg
- convert src/content/img/favicon.svg $@
+src/content/favicon.png.sentinel: src/content/img/favicon.svg
+ convert src/content/img/favicon.svg -strip png:- | ifnew $*
+ touch $@
$(sources.media.torrent):
F="`printf '%s\n' $* | cut -d/ -f3-`" && \
mktorrent -xfd -n $(*F) -o $@ -w "https://$(NAME)$(BASEURL)$${F}" $*
-email.txt: meta.json
- jq -r '.email' < meta.json > $@
+src/content/sitemap.xml.gz: src/content/sitemap.xml
+src/content/sitemap.xml: $(sources.mapentry)
+ mkwb sitemap $(sources.mapentry) > $@
-baseurl.txt: meta.json
- jq -r '.baseurl' < meta.json > $@
+email.txt: meta.capim
+ cat meta.capim | awk '$$1 == ":email" && $$0=$$2' | tr -d '"' > $@
+
+baseurl.txt: meta.capim
+ cat meta.capim | awk '$$1 == ":baseurl" && $$0=$$2' | tr -d '"' > $@
fingerprint.txt: src/content/$(PUBURL)
gpg --always-trust --no-keyring --show-key --with-colons \
@@ -304,13 +329,19 @@ expiry.txt: src/content/$(PUBURL)
awk -F: '/^pub:/ { print $$7 }' | \
xargs -I% date -Is -d@% > $@
+expiry-epoch.txt: expiry.txt
+ date -d "`cat expiry.txt`" '+%s' > $@
+
+now.txt:
+ now > $@
+
src/content/.well-known/security.txt.gz: src/content/.well-known/security.txt
src/content/.well-known/security.txt: email.txt baseurl.txt expiry.txt
mkdir -p $(@D)
printf 'Contact: mailto:%s\n' "`cat email.txt`" > $@
printf 'Expires: %s\n' "`cat expiry.txt`" >> $@
printf 'Encryption: %s/$(PUBURL)\n' "`cat baseurl.txt`" >> $@
- printf 'Preferred-Languages: en, pt, fr, eo, es\n' >> $@
+ printf 'Preferred-Languages: en, pt, fr, eo, es, de\n' >> $@
src/sources.txt:
printf '%s\n' $(sources) > $@
@@ -359,7 +390,7 @@ check-unit-updatedat: $(sources.updatedat-check)
.SUFFIXES: .links-internal-check
sources.links-internal-check = $(sources.adoc:.adoc=.links-internal-check)
-$(sources.links-internal-check): $(sources.html)
+$(sources.links-internal-check): $(sources.html) $(slides.pdf)
grep -E '^(link|image):' $*.links | cut -d: -f2- | \
xargs -I% test -e $(*D)/%
@@ -374,15 +405,32 @@ symlink-deps = \
$(feeds.xml) \
$(categories.xml) \
src/content/.well-known/security.txt \
+ $(sources.media.torrent) \
-check-unit-symlinks: src/all-symlinks.txt $(symlink-deps)
+check-unit-links-symlinks: src/all-symlinks.txt $(symlink-deps)
find `cat src/all-symlinks.txt` | xargs -n1 test -e
check-unit-links: check-unit-links-internal check-unit-links-external
-check-unit-links: check-unit-symlinks
+check-unit-links: check-unit-links-symlinks
+
+
+MAXSIZE = 52428800 # from spec: https://www.sitemaps.org/protocol.html
+check-unit-sitemap-size: src/content/sitemap.xml
+ test "`stat --printf='%s' src/content/sitemap.xml`" -le $(MAXSIZE)
+
+check-unit-sitemap-count: src/content/sitemap.xml
+ test "`grep -cF '</url>' src/content/sitemap.xml`" -le 50000
+
+check-unit-sitemap: check-unit-sitemap-count check-unit-sitemap-size
+
+
+check-unit-expiry: expiry-epoch.txt now.txt
+ test "`cat expiry-epoch.txt`" -gt "`cat now.txt`"
+
check-unit: check-unit-sorting check-unit-updatedat check-unit-links
+check-unit: check-unit-sitemap check-unit-expiry
integration-tests = \
@@ -401,6 +449,11 @@ check: check-unit check-integration
+i18n:
+ po4a po/po4a.cfg
+
+
+
## Remove *all* derived artifacts produced during the build.
## A dedicated test asserts that this is always true.
clean: