[PATCH 2/3] publican: support out-of-source tree build

Gaetan Nadon memsize at videotron.ca
Sat Mar 3 14:32:58 PST 2012


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 <peter.hutterer at who-t.net>
Signed-off-by: Gaetan Nadon <memsize at videotron.ca>
---
 doc/Wayland/.gitignore                             |    2 +-
 doc/Wayland/Makefile.am                            |   98 +++++++++++--------
 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
 doc/Wayland/{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 29162 -> 29162 bytes
 doc/Wayland/{en-US => en_US}/images/wayland.png    |  Bin 5649 -> 5649 bytes
 .../{en-US => en_US}/images/x-architecture.png     |  Bin 37306 -> 37306 bytes
 14 files changed, 58 insertions(+), 42 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 cf78754..e366f17 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 0ac9fff..5c53ff0 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
-
-# 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
-
-Wayland: docbook-xsl publican.cfg $(publican_sources)
-	publican build --config=$(srcdir)/publican.cfg --lang en-US --format html,pdf
-
-# 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
+	$(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_targets = $(publican_sources:$(srcdir)/en_US%=$(builddir)/en-US%) \
+	en-US/Protocol.xml
+
+# 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
+
+# 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
-- 
1.7.5.4



More information about the wayland-devel mailing list