From 7ee21abef0d07df5d74475f63d4b2b5991af4937 Mon Sep 17 00:00:00 2001 From: Gaetan Nadon Date: Sat, 3 Mar 2012 17:32:58 -0500 Subject: [PATCH] publican: support out-of-source tree build When srcdir!=builddir, there is no way to tell publican that the source is in srcdir rather than builldir. The workaround is to copy the source files from srcdir to builddir. To retain the en-US final destination name, the source directory is renamed to en_US. Tested-by: Peter Hutterer Signed-off-by: Gaetan Nadon --- doc/Wayland/.gitignore | 2 +- doc/Wayland/Makefile.am | 92 ++++++++++-------- doc/Wayland/{en-US => en_US}/Architecture.xml | 0 doc/Wayland/{en-US => en_US}/Author_Group.xml | 0 doc/Wayland/{en-US => en_US}/Book_Info.xml | 0 doc/Wayland/{en-US => en_US}/Chapter.xml | 0 doc/Wayland/{en-US => en_US}/Preface.xml | 0 .../{en-US => en_US}/Revision_History.xml | 0 doc/Wayland/{en-US => en_US}/Wayland.ent | 0 doc/Wayland/{en-US => en_US}/Wayland.xml | 0 doc/Wayland/{en-US => en_US}/images/icon.svg | 0 .../images/wayland-architecture.png | Bin .../{en-US => en_US}/images/wayland.png | Bin .../images/x-architecture.png | Bin 14 files changed, 55 insertions(+), 39 deletions(-) rename doc/Wayland/{en-US => en_US}/Architecture.xml (100%) rename doc/Wayland/{en-US => en_US}/Author_Group.xml (100%) rename doc/Wayland/{en-US => en_US}/Book_Info.xml (100%) rename doc/Wayland/{en-US => en_US}/Chapter.xml (100%) rename doc/Wayland/{en-US => en_US}/Preface.xml (100%) rename doc/Wayland/{en-US => en_US}/Revision_History.xml (100%) rename doc/Wayland/{en-US => en_US}/Wayland.ent (100%) rename doc/Wayland/{en-US => en_US}/Wayland.xml (100%) rename doc/Wayland/{en-US => en_US}/images/icon.svg (100%) rename doc/Wayland/{en-US => en_US}/images/wayland-architecture.png (100%) rename doc/Wayland/{en-US => en_US}/images/wayland.png (100%) rename doc/Wayland/{en-US => en_US}/images/x-architecture.png (100%) diff --git a/doc/Wayland/.gitignore b/doc/Wayland/.gitignore index cf787546..e366f17b 100644 --- a/doc/Wayland/.gitignore +++ b/doc/Wayland/.gitignore @@ -1,2 +1,2 @@ Wayland -en-US/Protocol.xml +en-US/ diff --git a/doc/Wayland/Makefile.am b/doc/Wayland/Makefile.am index 0ac9fff9..5c53ff03 100644 --- a/doc/Wayland/Makefile.am +++ b/doc/Wayland/Makefile.am @@ -1,53 +1,69 @@ if HAVE_PUBLICAN -noinst_DATA = Wayland +noinst_DATA = Wayland $(publican_targets) +pubdir = $(docdir)/Wayland/en-US publican_sources = \ - $(srcdir)/en-US/Wayland.ent \ - $(srcdir)/en-US/Architecture.xml \ - $(srcdir)/en-US/Author_Group.xml \ - $(srcdir)/en-US/Book_Info.xml \ - $(srcdir)/en-US/Chapter.xml \ - $(srcdir)/en-US/Preface.xml \ - $(srcdir)/en-US/Wayland.xml \ - $(srcdir)/en-US/Revision_History.xml \ - $(srcdir)/en-US/images/icon.svg \ - $(srcdir)/en-US/images/wayland-architecture.png \ - $(srcdir)/en-US/images/wayland.png \ - $(srcdir)/en-US/images/x-architecture.png + $(srcdir)/en_US/Wayland.ent \ + $(srcdir)/en_US/Architecture.xml \ + $(srcdir)/en_US/Author_Group.xml \ + $(srcdir)/en_US/Book_Info.xml \ + $(srcdir)/en_US/Chapter.xml \ + $(srcdir)/en_US/Preface.xml \ + $(srcdir)/en_US/Wayland.xml \ + $(srcdir)/en_US/Revision_History.xml \ + $(srcdir)/en_US/images/icon.svg \ + $(srcdir)/en_US/images/wayland-architecture.png \ + $(srcdir)/en_US/images/wayland.png \ + $(srcdir)/en_US/images/x-architecture.png -# publican does not support out-of-tree builds and during make distcheck the -# source tree is read-only so we can't chdir and/or dump the protocol there -# copy the tree into _build, leaving a marker file to clean up after -# distclean -# See https://bugzilla.redhat.com/show_bug.cgi?id=798484 for the chmod -copy-sources: - if ! test -e "en-US/"; then \ - mkdir en-US/; \ - touch en-US/need-distclean; \ - cp -r $(srcdir)/en-US/* en-US; \ - chmod u+w en-US/images; \ - fi +publican_targets = $(publican_sources:$(srcdir)/en_US%=$(builddir)/en-US%) \ + en-US/Protocol.xml -Wayland: docbook-xsl publican.cfg $(publican_sources) - publican build --config=$(srcdir)/publican.cfg --lang en-US --format html,pdf +# The Protocol.xml is purely generated and required before running publican +en-US/Protocol.xml: $(top_srcdir)/protocol/wayland.xml $(srcdir)/protocol-to-docbook.xsl + $(AM_V_GEN)$(MKDIR_P) en-US/images + $(AM_V_GEN)$(XSLTPROC) $(srcdir)/protocol-to-docbook.xsl \ + $(top_srcdir)/protocol/wayland.xml > en-US/Protocol.xml -# This must be run befor the publican run -docbook-xsl: copy-sources $(top_srcdir)/protocol/wayland.xml $(srcdir)/protocol-to-docbook.xsl - $(AM_V_GEN)$(XSLTPROC) $(srcdir)/protocol-to-docbook.xsl $(top_srcdir)/protocol/wayland.xml > $(builddir)/en-US/Protocol.xml +# Copy the en_US source files into en-US destination +# This is required for out-of-source-tree build as publican does not allow us +# to specify the location of the source code. +$(builddir)/en-US/%: $(srcdir)/en_US/% en-US/Protocol.xml $(publican_sources) + $(AM_V_GEN)cp -f $< $@ + +# Run publican for the builddir on the generated (or copied) source +# The output formats are generated in the Wayland sub directory +Wayland: $(publican_targets) + $(AM_V_GEN)$(PUBLICAN) build --lang en-US --format html,pdf \ + --config $(srcdir)/publican.cfg + +CLEANFILES = en-US/Protocol.xml $(publican_targets) clean-local: - -rm -rf Wayland - if test -e "en-US/need-distclean"; then \ - rm -rf en-US; \ - fi + $(AM_V_at)rm -fr en-US + $(AM_V_at)rm -fr Wayland install-data-local: - $(MKDIR_P) $(DESTDIR)$(docdir) - cp -R $(builddir)/Wayland $(DESTDIR)$(docdir) + test -z "$(pubdir)/html/Common_Content/css" || $(mkdir_p) "$(DESTDIR)$(pubdir)/html/Common_Content/css" + test -z "$(pubdir)/html/Common_Content/images" || $(mkdir_p) "$(DESTDIR)$(pubdir)/html/Common_Content/images" + test -z "$(pubdir)/html/images" || $(mkdir_p) "$(DESTDIR)$(pubdir)/html/images" + test -z "$(pubdir)/pdf" || $(mkdir_p) "$(DESTDIR)$(pubdir)/pdf" + test -z "$(pubdir)/xml/Common_Content/css" || $(mkdir_p) "$(DESTDIR)$(pubdir)/xml/Common_Content/css" + test -z "$(pubdir)/xml/Common_Content/images" || $(mkdir_p) "$(DESTDIR)$(pubdir)/xml/Common_Content/images" + test -z "$(pubdir)/xml/images" || $(mkdir_p) "$(DESTDIR)$(pubdir)/xml/images" + list=`find $(builddir)/Wayland/en-US -path './Wayland/en-US/xml_tmp' -prune -o -type f`; \ + for p in $$list; do \ + echo " $(INSTALL_DATA) '$$p' '$(DESTDIR)$(docdir)/$$p'"; \ + $(INSTALL_DATA) "$$p" "$(DESTDIR)$(docdir)/$$p"; \ + done; uninstall-local: - -rm -rf $(DESTDIR)$(docdir)/Wayland/* - -rmdir $(DESTDIR)$(docdir)/Wayland + @if test -n $(DESTDIR)$(docdir); then \ + if test -d $(DESTDIR)$(docdir); then \ + echo " rm -fr $(DESTDIR)$(docdir)/Wayland;"; \ + rm -fr $(DESTDIR)$(docdir)/Wayland; \ + fi; \ + fi; EXTRA_DIST = $(publican_sources) publican.cfg protocol-to-docbook.xsl diff --git a/doc/Wayland/en-US/Architecture.xml b/doc/Wayland/en_US/Architecture.xml similarity index 100% rename from doc/Wayland/en-US/Architecture.xml rename to doc/Wayland/en_US/Architecture.xml diff --git a/doc/Wayland/en-US/Author_Group.xml b/doc/Wayland/en_US/Author_Group.xml similarity index 100% rename from doc/Wayland/en-US/Author_Group.xml rename to doc/Wayland/en_US/Author_Group.xml diff --git a/doc/Wayland/en-US/Book_Info.xml b/doc/Wayland/en_US/Book_Info.xml similarity index 100% rename from doc/Wayland/en-US/Book_Info.xml rename to doc/Wayland/en_US/Book_Info.xml diff --git a/doc/Wayland/en-US/Chapter.xml b/doc/Wayland/en_US/Chapter.xml similarity index 100% rename from doc/Wayland/en-US/Chapter.xml rename to doc/Wayland/en_US/Chapter.xml diff --git a/doc/Wayland/en-US/Preface.xml b/doc/Wayland/en_US/Preface.xml similarity index 100% rename from doc/Wayland/en-US/Preface.xml rename to doc/Wayland/en_US/Preface.xml diff --git a/doc/Wayland/en-US/Revision_History.xml b/doc/Wayland/en_US/Revision_History.xml similarity index 100% rename from doc/Wayland/en-US/Revision_History.xml rename to doc/Wayland/en_US/Revision_History.xml diff --git a/doc/Wayland/en-US/Wayland.ent b/doc/Wayland/en_US/Wayland.ent similarity index 100% rename from doc/Wayland/en-US/Wayland.ent rename to doc/Wayland/en_US/Wayland.ent diff --git a/doc/Wayland/en-US/Wayland.xml b/doc/Wayland/en_US/Wayland.xml similarity index 100% rename from doc/Wayland/en-US/Wayland.xml rename to doc/Wayland/en_US/Wayland.xml diff --git a/doc/Wayland/en-US/images/icon.svg b/doc/Wayland/en_US/images/icon.svg similarity index 100% rename from doc/Wayland/en-US/images/icon.svg rename to doc/Wayland/en_US/images/icon.svg diff --git a/doc/Wayland/en-US/images/wayland-architecture.png b/doc/Wayland/en_US/images/wayland-architecture.png similarity index 100% rename from doc/Wayland/en-US/images/wayland-architecture.png rename to doc/Wayland/en_US/images/wayland-architecture.png diff --git a/doc/Wayland/en-US/images/wayland.png b/doc/Wayland/en_US/images/wayland.png similarity index 100% rename from doc/Wayland/en-US/images/wayland.png rename to doc/Wayland/en_US/images/wayland.png diff --git a/doc/Wayland/en-US/images/x-architecture.png b/doc/Wayland/en_US/images/x-architecture.png similarity index 100% rename from doc/Wayland/en-US/images/x-architecture.png rename to doc/Wayland/en_US/images/x-architecture.png