diff --git a/.gitignore b/.gitignore
index 0d10f6e1f..76fc815eb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -33,8 +33,7 @@ Makefile.config
/doc/manual/*.8
/doc/manual/images
/doc/manual/version.txt
-/doc/manual/NEWS.html
-/doc/manual/NEWS.txt
+/doc/manual/release-notes.html
# /scripts/
/scripts/nix-profile.sh
diff --git a/Makefile.config.in b/Makefile.config.in
index 5524ea3ad..093748332 100644
--- a/Makefile.config.in
+++ b/Makefile.config.in
@@ -29,5 +29,6 @@ pkglibdir = $(libdir)/$(PACKAGE_NAME)
prefix = @prefix@
storedir = @storedir@
sysconfdir = @sysconfdir@
+w3m = @w3m@
xmllint = @xmllint@
xsltproc = @xsltproc@
diff --git a/doc/manual/local.mk b/doc/manual/local.mk
index 4342215b0..0e583b281 100644
--- a/doc/manual/local.mk
+++ b/doc/manual/local.mk
@@ -76,7 +76,7 @@ $(d)/manual.pdf: $(d)/manual.xml $(MANUAL_SRCS) $(d)/manual.is-valid
$(trace-gen) if test "$(dblatex)" != ""; then \
cd doc/manual && $(XSLTPROC) --xinclude --stringparam profile.condition manual \
$(docbookxsl)/profiling/profile.xsl manual.xml | \
- $(dblatex) -o manual.pdf $(dblatex_opts) -; \
+ $(dblatex) -o $(notdir $@) $(dblatex_opts) -; \
else \
echo "Please install dblatex and rerun configure."; \
exit 1; \
@@ -84,3 +84,30 @@ $(d)/manual.pdf: $(d)/manual.xml $(MANUAL_SRCS) $(d)/manual.is-valid
clean-files += $(d)/manual.pdf
+
+# Generate the release notes.
+
+NEWS_OPTS = \
+ --stringparam generate.toc "article nop" \
+ --stringparam section.autolabel.max.depth 0 \
+ --stringparam header.rule 0
+
+$(d)/release-notes.html: $(d)/release-notes.xml
+ $(trace-gen) $(XSLTPROC) --xinclude --output $@ $(NEWS_OPTS) \
+ $(docbookxsl)/html/docbook.xsl $<
+
+NEWS: $(d)/release-notes.xml
+ $(trace-gen) $(XSLTPROC) --xinclude doc/manual/quote-literals.xsl $< | \
+ $(XSLTPROC) --output $@.tmp.html $(NEWS_OPTS) \
+ $(docbookxsl)/html/docbook.xsl - && \
+ LANG=en_US.UTF-8 $(w3m) -dump $@.tmp.html > $@.tmp && \
+ sed -e 's/●/*/g' -e 's/○/-/g' -e 's/━/-/g' < $@.tmp > NEWS && \
+ rm $@.tmp $@.tmp.html
+
+dist-files += NEWS $(d)/release-notes.html
+
+clean-files += NEWS $(d)/release-notes.html
+
+all: $(d)/release-notes.html NEWS
+
+$(foreach file, $(d)/release-notes.html, $(eval $(call install-data-in, $(file), $(docdir)/manual)))
diff --git a/doc/manual/quote-literals.xsl b/doc/manual/quote-literals.xsl
index 03971bff9..5002643db 100644
--- a/doc/manual/quote-literals.xsl
+++ b/doc/manual/quote-literals.xsl
@@ -7,9 +7,9 @@
extension-element-prefixes="str">
-
+
`'
-
+
@@ -21,7 +21,7 @@
@@ -37,8 +37,4 @@
-
-
-
-
diff --git a/release.nix b/release.nix
index b64bc9415..285b8fb4f 100644
--- a/release.nix
+++ b/release.nix
@@ -69,7 +69,7 @@ let
echo "doc manual $out/share/doc/nix/manual" >> $out/nix-support/hydra-build-products
echo "doc-pdf manual $out/manual.pdf" >> $out/nix-support/hydra-build-products
- echo "doc release-notes $out/share/doc/nix/release-notes" >> $out/nix-support/hydra-build-products
+ echo "doc release-notes $out/share/doc/nix/manual release-notes.html" >> $out/nix-support/hydra-build-products
'';
};