diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 133 |
1 files changed, 93 insertions, 40 deletions
@@ -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: |