Index: /trunk/doc/manual/Makefile.kmk
===================================================================
--- /trunk/doc/manual/Makefile.kmk	(revision 56541)
+++ /trunk/doc/manual/Makefile.kmk	(revision 56542)
@@ -426,6 +426,11 @@
 # 	$(QUIET)$(INSTALL) -m 0644 $< $@
 
+# Manual dependency on user_ChangeLogImpl.xml
+$(foreach lang,$(VBOX_MANUAL_LANGUAGES) \
+,$(eval $(VBOX_PATH_MANUAL_OUTBASE)/$(lang)/user_ChangeLog.xml: $(VBOX_PATH_MANUAL_SRC)/user_ChangeLogImpl.xml))
+
 # intermediate step to do some variable replacement in the document
-$(foreach f,$(VBOX_MANUAL_LANGUAGES),$(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/$f/,$(filter-out user_VBoxManage.xml,$(VBOX_MANUAL_XML_FILES)))): \
+$(foreach f,$(VBOX_MANUAL_LANGUAGES) \
+,$(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/$f/,$(filter-out user_VBoxManage.xml,$(VBOX_MANUAL_XML_FILES_INCL_CHANGELOG)))): \
 		$(VBOX_PATH_MANUAL_OUTBASE)/% : $(VBOX_PATH_MANUAL_SRC)/% $(VBOX_VERSION_STAMP) | $$(dir $$@)
 	$(call MSG_L1,Pre-processing [1] $(@F) to $@)
@@ -438,31 +443,7 @@
 	               -e 's/@VBOX_PRODUCT@/$(VBOX_PRODUCT)/g' \
 	               -e 's/@VBOX_C_YEAR@/$(VBOX_C_YEAR)/g' \
+	               -e 's|@VBOX_PATH_MANUAL_SRC@|$(VBOX_PATH_MANUAL_SRC)|g' \
 	               --output $@.tmp $<
 	$(QUIET)$(MV) -f $@.tmp $@
-
-$(foreach f,$(VBOX_MANUAL_LANGUAGES),$(VBOX_PATH_MANUAL_OUTBASE)/$f/user_ChangeLog.xml): \
-		$(VBOX_PATH_MANUAL_OUTBASE)/% : \
-		$(VBOX_PATH_MANUAL_SRC)/% $(VBOX_PATH_MANUAL_SRC)/user_ChangeLogImpl.xml | $$(dir $$@)
-	$(call MSG_L1,Pre-processing [3] $(@F) to $@)
-	$(QUIET)$(RM) -f $@ $@.tmp $@.tmp2
-	$(QUIET)$(SED) -e 's/@VBOX_VERSION_MAJOR@/$(VBOX_VERSION_MAJOR)/g' \
-	               -e 's/@VBOX_VERSION_MINOR@/$(VBOX_VERSION_MINOR)/g' \
-	               -e 's/@VBOX_VERSION_BUILD@/$(VBOX_VERSION_BUILD)/g' \
-	               -e 's/@VBOX_VERSION_STRING@/$(VBOX_VERSION_STRING)/g' \
-	               -e 's/@VBOX_VENDOR@/$(VBOX_VENDOR)/g' \
-	               -e 's/@VBOX_PRODUCT@/$(VBOX_PRODUCT)/g' \
-	               -e 's/@VBOX_C_YEAR@/$(VBOX_C_YEAR)/g' \
-	               --output $@.tmp $<
-	$(QUIET)$(SED) -e '1,/<!--@VIRTUALBOX_CHANGELOG_IMPL@-->/!d' \
-	               -e 's/<!--@VIRTUALBOX_CHANGELOG_IMPL@-->//' \
-	               --output $@ $@.tmp
-	var=`$(SED) -n '/!--@VIRTUALBOX_CHANGELOG_IMPL@-->/p' $<`; \
-		test -n "$${var}" \
-		&& $(SED) -e 's/<?xml version=\"1.0\" encoding=\"UTF-8\"?>//g' \
-			--append $@ $(VBOX_PATH_MANUAL_SRC)/user_ChangeLogImpl.xml; \
-       	true
-	$(QUIET)$(SED) -e '/<!--@VIRTUALBOX_CHANGELOG_IMPL@-->/,$$!d' \
-	               -e 's/<!--@VIRTUALBOX_CHANGELOG_IMPL@-->//' --append $@ $@.tmp
-	$(QUIET)$(RM) -f -- "$@.tmp"
 
 # TODO: figure why the rule below doesn't cause kmk to rebuild the manual when a man page changes!
@@ -524,5 +505,5 @@
 		$$(VBOX_XML_CATALOG) $(VBOX_XML_CATALOG_DOCBOOK) \
 		$$(VBOX_VERSION_STAMP) | $$(dir $$@)
-	$$(call MSG_GENERATE,,$$@,$$<)
+	$$(call MSG_TOOL,xsltproc $$(notdir $$(filter %.xsl,$$^)),,$$(filter %.xml,$$^),$$@)
 	$$(QUIET)$$(RM) -f "$$@"
 	$$(QUIET)$$(VBOX_XSLTPROC_WITH_CAT) --output $$@ $$(VBOX_PATH_MANUAL_SRC)/docbook-refentry-to-manual-sect1.xsl $$<
@@ -539,5 +520,5 @@
 		$(VBOX_XML_CATALOG) $(VBOX_XML_CATALOG_DOCBOOK) \
                | $$(dir $$@)
-	$(call MSG_GENERATE,,$@,$(filter %.xml,$^))
+	$(call MSG_TOOL,xsltproc $(notdir $(filter %.xsl,$^)),,$(firstword $(filter %.xml,$^)),$@)
 	$(QUIET)$(VBOX_XSLTPROC_WITH_CAT) --output "$@" $< $(filter %.xml,$^)
 
@@ -624,5 +605,5 @@
 		$(if $(VBOX_HAVE_XMLLINT),$(VBOX_PATH_MANUAL_OUTBASE)/%/validatemanual.run,) \
 		$(VBOX_XML_CATALOG) $(VBOX_XML_CATALOG_DOCBOOK) $(MAKEFILE_CURRENT)
-	$(call MSG_L1,Generating $@ from DocBook XML)
+	$(call MSG_TOOL,xsltproc $(notdir $(filter %.xsl,$^)),,$(firstword $(filter %.xml,$^)),$@)
 	$(QUIET)$(RM) -f $(addprefix $(@D)/,$(VBOX_MANUAL_LATEX_FILES_TARGET))
 #   generate TeX source from processed docbook and store it in UserManual.tex.tmp;
@@ -709,5 +690,5 @@
 		$(VBOX_PATH_MANUAL_SRC)/docbook2latex.xsl \
 		$(VBOX_XML_CATALOG) $(VBOX_XML_CATALOG_DOCBOOK) $(MAKEFILE_CURRENT) | $$(dir $$@)
-	$(call MSG_L1,Generating $@ from DocBook XML)
+	$(call MSG_TOOL,xsltproc $(notdir $(filter %.xsl,$^)),,$(firstword $(filter %.xml,$^)),$@)
 	$(QUIET)$(RM) -f $(addprefix $(@D/),$(VBOX_SDKREF_LATEX_FILES_TARGET))
 #	generate TeX source from processed docbook and store it in SDKRef.tex.tmp
@@ -794,5 +775,5 @@
 		$(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/%/,$(VBOX_MANUAL_XML_FILES_INCL_CHANGELOG)) \
 		$(VBOX_XML_CATALOG) $(VBOX_XML_CATALOG_DOCBOOK)
-	$(call MSG_L1,xsltproc $<,=> $@)
+	$(call MSG_TOOL,xsltproc $(notdir $(firstword $(filter %.xsl,$^))),,$(firstword $(filter %.xml,$^)),$@)
 	$(QUIET)$(RM) -f $@
 	$(QUIET)$(MKDIR) -p $(@D)
@@ -845,5 +826,5 @@
 		$(VBOX_XML_CATALOG) $(VBOX_XML_CATALOG_DOCBOOK) \
 		| $$(dir $$@)
-	$(call MSG_L1,xsltproc $<)
+	$(call MSG_TOOL,xsltproc $(notdir $(firstword $(filter %.xsl,$^))),,$(firstword $(filter %.xml,$^)),$@)
 	$(QUIET)$(VBOX_XSLTPROC_WITH_CAT) \
 		--output $(VBOX_PATH_MANUAL_OUTBASE)/en_US/html-single/UserManual.html \
@@ -858,5 +839,5 @@
 		$(VBOX_XML_CATALOG) $(VBOX_XML_CATALOG_DOCBOOK) \
 		| $$(dir $$@)
-	$(call MSG_L1,xsltproc $<)
+	$(call MSG_TOOL,xsltproc $(notdir $(firstword $(filter %.xsl,$^))),,$(firstword $(filter %.xml,$^)),$@)
 	$(QUIET)$(VBOX_XSLTPROC_WITH_CAT) \
 		--output $(VBOX_PATH_MANUAL_OUTBASE)/en_US/html-chunks/index.html \
@@ -891,4 +872,5 @@
 		$(VBOX_PATH_MANUAL_OUTBASE)/en_US/user_ChangeLog.xml \
 		$(VBOX_XML_CATALOG) $(VBOX_XML_CATALOG_DOCBOOK) | $$(dir $$@)
+	$(call MSG_TOOL,xsltproc $(notdir $(firstword $(filter %.xsl,$^))),,$(firstword $(filter %.xml,$^)),$@)
 	$(QUIET)$(VBOX_XSLTPROC_WITH_CAT) --output "$@" "$<" $(filter %.xml,$^)
 	$(call MSG_L1,Fresh ChangeLog.html is now at $@)
@@ -918,5 +900,5 @@
 		$$(VBOX_XML_CATALOG) $(VBOX_XML_CATALOG_DOCBOOK) \
 		$$(VBOX_VERSION_STAMP) | $$$$(dir $$$$@)
-	$$(call MSG_GENERATE,,$$@,$$<)
+	$$(call MSG_TOOL,xsltproc $$(notdir $$(firstword $$(filter %.xsl,$$^))),,$$(firstword $$(filter %.xml,$$^)),$$@)
 	$$(QUIET)$$(RM) -f "$$@"
 	$$(QUIET)$$(VBOX_XSLTPROC_WITH_CAT) --output $$@ \
@@ -931,5 +913,5 @@
 		$$(VBOX_XML_CATALOG) $(VBOX_XML_CATALOG_DOCBOOK) \
 		$$(VBOX_VERSION_STAMP) | $$$$(dir $$$$@)
-	$$(call MSG_GENERATE,,$$@,$$<)
+	$$(call MSG_TOOL,xsltproc $$(notdir $$(firstword $$(filter %.xsl,$$^))),,$$(firstword $$(filter %.xml,$$^)),$$@)
 	$$(QUIET)$$(RM) -f "$$@"
 	$$(QUIET)$$(VBOX_XSLTPROC_WITH_CAT) --output $$@ $$(VBOX_PATH_MANUAL_OUTBASE)/docbook-refentry-to-manpage.xsl $$<
@@ -968,5 +950,5 @@
 		$(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/en_US/,$(filter man_VBoxManage-%,$(VBOX_MANUAL_XML_REFENTRY_FILES))) \
 		$(VBOX_XML_CATALOG) $(VBOX_XML_CATALOG_DOCBOOK) $(MAKEFILE) | $$(dir $$@)
-	$(call MSG_GENERATE,,$@,$<)
+	$(call MSG_TOOL,xsltproc $(notdir $(firstword $(filter %.xsl,$^))),,$(filter %.xml,$^),$@)
 	$(QUIET)$(APPEND) -tn "$@" \
 		'/* Autogenerated by $<, do not edit! */' \
@@ -991,5 +973,5 @@
 		$(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/en_US/,$(filter man_VBoxManage-%,$(VBOX_MANUAL_XML_REFENTRY_FILES))) \
 		$(VBOX_XML_CATALOG) $(VBOX_XML_CATALOG_DOCBOOK) $(MAKEFILE) | $$(dir $$@)
-	$(call MSG_GENERATE,,$@,$<)
+	$(call MSG_TOOL,xsltproc $(notdir $(firstword $(filter %.xsl,$^))),,$(filter %.xml,$^),$@)
 	$(QUIET)$(APPEND) -tn "$@" \
 		'/* Autogenerated by $<, do not edit! */' \
Index: /trunk/doc/manual/en_US/user_ChangeLog.xml
===================================================================
--- /trunk/doc/manual/en_US/user_ChangeLog.xml	(revision 56541)
+++ /trunk/doc/manual/en_US/user_ChangeLog.xml	(revision 56542)
@@ -14,5 +14,6 @@
   In addition, each build contains a revision number.</para>
 
-<!--@VIRTUALBOX_CHANGELOG_IMPL@-->
+  <xi:include href="@VBOX_PATH_MANUAL_SRC@/user_ChangeLogImpl.xml" xpointer="xpointer(/chapter/*)"
+    xmlns:xi="http://www.w3.org/2001/XInclude" />
 
   <sect1>
Index: /trunk/doc/manual/user_ChangeLogImpl.xml
===================================================================
--- /trunk/doc/manual/user_ChangeLogImpl.xml	(revision 56541)
+++ /trunk/doc/manual/user_ChangeLogImpl.xml	(revision 56542)
@@ -1,4 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
+<chapter> <!-- HACK ALERT! Seems we must have a single top level element for xi:include to work.
+                           So, we use chapter and xpointer="xpointer(/chapter/)" with xi:include. -->
   <sect1>
     <title>Version 5.0.0 Release Candidate 1 (2015-06-01)</title>
@@ -12424,3 +12426,4 @@
 
   </sect1>
-
+</chapter>
+
