|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When running index.sh on OpenBSD, the following error happens for
each item in the news/ directory (output is from "bash -x"):
+ touch -d '4 Jun 2017' news/andrew-robbins-new-maintainer.md
touch: out of range or illegal time specification: YYYY-MM-DDThh:mm:ss[.frac][Z]
This is because OpenBSD's touch(1) requires that the "d" flag's argument
be in ISO 8601 format, that is, "YYYY-MM-DDThh:mm:ss[.frac][Z]". This
could have been dealt with by converting the article date (determined
by "sed -n 3p $f | sed -e 's/^..//g'") to ISO 8601 format, then passing
the date to touch(1). That would have required even more code, so was
discarded as a possible solution.
Instead, we solve this by keeping a MANIFEST file under news/, which
is read to determine (a) which articles should be added to news/index.md,
and (b) in which order. This avoids the need for touch(1) altogether,
finally making the whole libreboot website build properly on OpenBSD.
This also allows a minor simplification in the Makefile.
|
|
This is done by replacing www/generate.sh with a Makefile. Benefits:
- Makes builds incremental, meaning that only the minimum number of
markdown files will be converted to HTML during a build. The previous
scheme always generated a new HTML file for every markdown file,
which is a big waste of time if only 1 or 2 markdown files have been
changed.
- Allows for much faster builds through concurrent jobs (e.g., via
"make -j4"). On my 4-core machine, my average build time for the
website with generate.sh was just over 26 seconds; with "make -j4",
it was 13 seconds.
- Avoids portability issues with find(1) in generate.sh, which I was
encountering on OpenBSD.
A note on portability: unlike GNU Make, OpenBSD's Make does not have
the "$(shell [commands])" construct, so we don't use that. Instead we
use "!= [commands]", which is supported by both.
|