diff options
author | Michael Reed <michael@michaelreed.io> | 2017-07-13 20:45:13 -0400 |
---|---|---|
committer | Michael Reed <michael@michaelreed.io> | 2017-07-15 12:05:36 -0400 |
commit | 672212f42bd4344049089e255762c33e96637a0a (patch) | |
tree | 88568dc98c37209e35edc96bc6011f4926abe274 /www | |
parent | ad782e9a2351b39d5b57eaceceb01a0f6b79165b (diff) | |
download | librebootfr-672212f42bd4344049089e255762c33e96637a0a.tar.gz librebootfr-672212f42bd4344049089e255762c33e96637a0a.zip |
Speed up website build
It turns out that we only need bare HTML files for .md files in news,
yet publish.sh creates them unconditionally. That is, we spend a lot
of time building bare HTML files that we never use.
This commit makes it so that bare HTML files are only generated for
news files, which speeds up the website build significantly:
$ /home/michael/benchmark.sh speed-up-build master
Already on 'speed-up-build'
NOW TESTING ON speed-up-build
0m08.24s real 0m08.53s user 0m05.57s system
0m08.21s real 0m08.39s user 0m05.58s system
0m08.26s real 0m08.23s user 0m05.70s system
0m08.26s real 0m08.27s user 0m05.91s system
0m08.24s real 0m08.36s user 0m05.63s system
0m08.28s real 0m08.40s user 0m05.67s system
0m08.29s real 0m08.21s user 0m05.83s system
0m08.23s real 0m08.12s user 0m05.80s system
0m08.32s real 0m08.32s user 0m05.75s system
0m08.30s real 0m08.40s user 0m05.61s system
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 33 commits.
NOW TESTING ON master
0m12.98s real 0m15.07s user 0m07.18s system
0m12.93s real 0m14.57s user 0m07.69s system
0m12.98s real 0m15.06s user 0m07.46s system
0m12.98s real 0m14.75s user 0m07.67s system
0m12.94s real 0m15.10s user 0m07.22s system
0m12.94s real 0m14.95s user 0m07.22s system
0m12.98s real 0m14.57s user 0m08.02s system
0m12.96s real 0m14.84s user 0m07.41s system
0m12.96s real 0m14.99s user 0m07.49s system
0m13.06s real 0m14.91s user 0m07.54s system
And here's the script in question, benchmark.sh:
#!/bin/sh
set -u
set -e
# usage: runit branch
runit() {
git checkout "$1"
echo
echo NOW TESTING ON "$1"
echo
for i in `jot 10`; do make clean >/dev/null; time make -j2 >/dev/null; done
}
make clean >/dev/null
for branch in "$@"
do
runit "$branch"
done
Diffstat (limited to 'www')
-rw-r--r-- | www/Makefile | 20 | ||||
-rwxr-xr-x | www/publish.sh | 3 |
2 files changed, 11 insertions, 12 deletions
diff --git a/www/Makefile b/www/Makefile index d9405f6e..10eb66fc 100644 --- a/www/Makefile +++ b/www/Makefile @@ -18,25 +18,27 @@ HTML_MAIN = $(MD_MAIN:.md=.html) MD_NEWS != cat news/MANIFEST HTML_NEWS = $(MD_NEWS:.md=.html) +HTML_BARE_NEWS = $(MD_NEWS:.md=.bare.html) -# news/index.html implies the building of $(HTML_NEWS). -all: $(HTML_MAIN) news/index.html +# news/index.html implies the building of $(HTML_BARE_NEWS). +all: $(HTML_MAIN) $(HTML_NEWS) news/index.html -.SUFFIXES: .md .html +.SUFFIXES: .md .html .bare.html .md.html: ./publish.sh $< +.md.bare.html: + pandoc $(<) > $(<:.md=.bare.html) + # Unlike all the other markdown files, news/index.md does not exist at first: -# it must be generated by index.sh. Also note that index.sh depends on the -# existence of the HTML version of all news items, hence the dependency line -# below. -news/index.md: $(HTML_NEWS) +# it must be generated by index.sh. Also note that index.sh generates the RSS +# feed, which requires the bare HTML versions of all news items. +news/index.md: $(HTML_BARE_NEWS) ./index.sh clean: - rm -f $(HTML_MAIN) $(HTML_MAIN:.html=.bare.html) \ - $(HTML_NEWS) $(HTML_NEWS:.html=.bare.html) \ + rm -f $(HTML_MAIN) $(HTML_NEWS) $(HTML_BARE_NEWS) \ news/index.md news/index.html news/index.bare.html \ feed.xml news/feed.xml diff --git a/www/publish.sh b/www/publish.sh index f9d9f9a7..9a8a6abc 100755 --- a/www/publish.sh +++ b/www/publish.sh @@ -76,9 +76,6 @@ SMART=$(pandoc -v | grep -q '2\.0' || printf '%s\n' "--smart") || SMART="" pandoc $TOC $SMART "$TMPFILE" -s --css /global.css $OPTS \ --template template.html --metadata return="$RETURN" > "$FILE.html" -# additionally, produce bare file for RSS -pandoc "$1" > "$FILE.bare.html" - # generate section title anchors as [link] sed -i -e 's_^<h\([123]\) id="\(.*\)">\(.*\)</h\1>_<div class="h"><h\1 id="\2">\3</h\1><a aria-hidden="true" href="#\2">[link]</a></div>_' "$FILE.html" |