This adds the -nonet option to xsltproc invocations, which fixes
compile errors when building the gnome-doc-utils docs.

Upstream-Status: Inappropriate [configuration]
Signed-off-by: Scott Garman <scott.a.garman@intel.com>
Signed-off-by: Constantin Musca <constantinx.musca@intel.com>

Index: gnome-doc-utils-0.20.10/doc/xslt/Makefile.am
===================================================================
--- gnome-doc-utils-0.20.10.orig/doc/xslt/Makefile.am
+++ gnome-doc-utils-0.20.10/doc/xslt/Makefile.am
@@ -21,14 +21,14 @@ all: $(xsldoc_docs) $(xsldoc_xmls)
 
 $(xsldoc_docs): $(xsldoc_xsls) xsldoc.awk xsldoc-fill.xsl
 	$(AM_V_GEN)$(GDU_AWK) -f "$(srcdir)/xsldoc.awk" "$(filter %/$(basename $(notdir $@)).xsl,$(xsldoc_xsls))" \
-	| xsltproc -o "$@" \
+	| xsltproc -nonet -o "$@" \
 	--stringparam basename "$(basename $(notdir $@))" \
 	--stringparam xsl_file "$(filter %/$(basename $(notdir $@)).xsl,$(xsldoc_xsls))" \
 	"$(srcdir)/xsldoc-fill.xsl" -
 
 $(xsldoc_xmls): xsldoc-docbook.xsl
 $(xsldoc_xmls): C/%.xml : C/%.xsldoc
-	$(AM_V_GEN)xsltproc -o "$@" \
+	$(AM_V_GEN)xsltproc -nonet -o "$@" \
 	--stringparam basename "$(basename $(notdir $@))" \
 	--stringparam xsl_file "$(filter %/$(basename $(notdir $@)).xsl,$(xsldoc_xsls))" \
 	"$(srcdir)/xsldoc-docbook.xsl" "$<"
@@ -62,7 +62,7 @@ gnome-doc-xslt-check-includes:
 gnome-doc-xslt-check-xsldoc: $(xsldoc_docs)
 	@echo "Running xsldoc checks";
 	@(echo "<xsldoc>"; cat $(xsldoc_docs); echo "</xsldoc>") \
-	| xsltproc "$(srcdir)/xsldoc-check.xsl" - 1> /dev/null
+	| xsltproc -nonet "$(srcdir)/xsldoc-check.xsl" - 1> /dev/null
 
 .PHONY: clean-xsldoc
 clean-local: clean_xsldoc
Index: gnome-doc-utils-0.20.10/tools/gnome-doc-utils.make
===================================================================
--- gnome-doc-utils-0.20.10.orig/tools/gnome-doc-utils.make
+++ gnome-doc-utils-0.20.10/tools/gnome-doc-utils.make
@@ -37,7 +37,7 @@ $(DOC_H_FILE): $(DOC_H_DOCS);
 	list='$(DOC_H_DOCS)'; for doc in $$list; do \
 	  xmlpath="`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`:$(srcdir)/`echo $$doc | sed -e 's/^\(.*\/\).*/\1/' -e '/\//!s/.*//'`"; \
 	  if ! test -f "$$doc"; then doc="$(srcdir)/$$doc"; fi; \
-	  xsltproc --path "$$xmlpath" $(_credits) $$doc; \
+	  xsltproc -nonet --path "$$xmlpath" $(_credits) $$doc; \
 	done | sort | uniq \
 	  | awk 'BEGIN{s=""}{n=split($$0,w,"<");if(s!=""&&s!=substr(w[1],1,length(w[1])-1)){print s};if(n>1){print $$0;s=""}else{s=$$0}};END{if(s!=""){print s}}' \
 	  | sed -e 's/\\/\\\\/' -e 's/"/\\"/' -e 's/\(.*\)/\t"\1",/' >> $@.tmp
@@ -50,7 +50,7 @@ $(DOC_H_FILE): $(DOC_H_DOCS);
 	  docid=`echo "$$doc" | sed -e 's/.*\/\([^/]*\)\.xml/\1/' \
 	    | sed -e 's/[^a-zA-Z_]/_/g' | tr 'a-z' 'A-Z'`; \
 	  echo $$xmlpath; \
-	  ids=`xsltproc --xinclude --path "$$xmlpath" $(_ids) $$doc`; \
+	  ids=`xsltproc -nonet --xinclude --path "$$xmlpath" $(_ids) $$doc`; \
 	  for id in $$ids; do \
 	    echo '#define HELP_'`echo $$docid`'_'`echo $$id \
 	      | sed -e 's/[^a-zA-Z_]/_/g' | tr 'a-z' 'A-Z'`' "'$$id'"' >> $@.tmp; \
@@ -197,7 +197,7 @@ $(_DOC_OMF_DB) : $(DOC_MODULE)-%.omf : %
 	  echo "The file '$(_skcontentslist)' does not exist." >&2;		\
 	  echo "Please check your ScrollKeeper installation." >&2;		\
 	  exit 1; }
-	$(GDU_V_DB2OMF)xsltproc -o $@ $(call db2omf_args,$@,$<,'docbook') || { rm -f "$@"; exit 1; }
+	$(GDU_V_DB2OMF)xsltproc -nonet -o $@ $(call db2omf_args,$@,$<,'docbook') || { rm -f "$@"; exit 1; }
 
 ## @ _DOC_OMF_HTML
 ## The OMF files for HTML output
@@ -212,7 +212,7 @@ if ENABLE_SK
 	  echo "Please check your ScrollKeeper installation." >&2;		\
 	  exit 1; }
 endif
-	$(GDU_V_DB2OMF)xsltproc -o $@ $(call db2omf_args,$@,$<,'xhtml') || { rm -f "$@"; exit 1; }
+	$(GDU_V_DB2OMF)xsltproc -nonet -o $@ $(call db2omf_args,$@,$<,'xhtml') || { rm -f "$@"; exit 1; }
 
 ## @ _DOC_OMF_ALL
 ## All OMF output files to be built
@@ -267,7 +267,7 @@ _DOC_C_FIGURES = $(if $(DOC_FIGURES),
 ## All HTML documentation in the C locale
 # FIXME: probably have to shell escape to determine the file names
 _DOC_C_HTML = $(foreach f,						\
-	$(shell xsltproc --xinclude 					\
+	$(shell xsltproc -nonet --xinclude 					\
 	  --stringparam db.chunk.basename "$(DOC_MODULE)"		\
 	  $(_chunks) "C/$(DOC_MODULE).xml"),				\
 	C/$(f).xhtml)
@@ -393,7 +393,7 @@ _DOC_HTML_ALL = $(if $(filter html HTML,
 _DOC_HTML_TOPS = $(foreach lc,C $(_DOC_REAL_LINGUAS),$(lc)/$(DOC_MODULE).xhtml)
 
 $(_DOC_HTML_TOPS): $(_DOC_C_DOCS) $(_DOC_LC_DOCS)
-	$(GDU_V_DB2HTM)xsltproc -o $@ --xinclude --param db.chunk.chunk_top "false()" --stringparam db.chunk.basename "$(DOC_MODULE)" --stringparam db.chunk.extension ".xhtml" $(_db2html) $(patsubst %.xhtml,%.xml,$@)
+	$(GDU_V_DB2HTM)xsltproc -nonet -o $@ --xinclude --param db.chunk.chunk_top "false()" --stringparam db.chunk.basename "$(DOC_MODULE)" --stringparam db.chunk.extension ".xhtml" $(_db2html) $(patsubst %.xhtml,%.xml,$@)
 
 
 ################################################################################
