[Build-common-hackers] Bug#433852: cdbs: Possible implementation

Carl Fürstenberg azatoth at gmail.com
Tue Jul 24 23:57:37 UTC 2007


Package: cdbs
Version: 0.4.49
Followup-For: Bug #433852

Have made a working implementation now, that comply with policy of
removing generated files on clean. based on file made by Sylvain Le Gall
but with major changes.

Hope this diesn't qualify as "experimental code" :)
/Carl
-------------- next part --------------
# -*- mode: makefile; coding: utf-8 -*-
# Copyright ? 2006 Sylvain Le Gall <gildor#debian.org>
# Copyright ? 2007 Carl F?rstenberg <azatoth at gmail.com>
# Description: Rules to manage manpages written in XML.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2, or (at
# your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
# MA 02110-1301, USA. 

#PATH_RULES#

ifndef _cdbs_rules_docbook_xml_manpage
	_cdbs_rules_docbook_xml_manpage = 1

include $(_cdbs_rules_path)/buildcore.mk$(_cdbs_makefile_suffix)

# docbook-xml manpages to build
DOCBOOKXML_MANPAGE_SOURCES := 

# add required build dependency for used tools 
CDBS_BUILD_DEPENDS := $(CDBS_BUILD_DEPENDS), docbook-xml, docbook-xsl, libxml2-utils, xsltproc, xml-twig-tools

# xmllint
DOCBOOKXML_MANPAGE_XMLLINT = xmllint --nonet --nocdata --noent --noout --postvalid --xinclude $(1)

# xml_grep
DOCBOOKXML_MANPAGE_XML_GREP = xml_grep --text_only --cond $(1) $(2)

# xsltproc
DOCBOOKXML_MANPAGE_XSLTPROC = xsltproc --nonet --xinclude --param man.charmap.use.subset 0 -o $(dir $(1)) $(2) $(1)

# XSL stylesheet to transform docbook-xml to manpage
DOCBOOKXML_MANPAGE_XSLTPROC_XSL = /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl

# file containing the list of generated files
DOCBOOKXML_MANPAGE_LIST := debian/docbook-xml-manpage-list

define ECHO_CALL
	echo $(1); \
	$(1);

endef

define DOCBOOKXML_MANPAGE_PROCESS
	$(call ECHO_CALL, $(call DOCBOOKXML_MANPAGE_XMLLINT, $(1))) \
	docbook_xml_manpage_title=`$(call DOCBOOKXML_MANPAGE_XML_GREP, '//refentrytitle', $(1)) | tr '[:upper:]' '[:lower:]'`; \
	docbook_xml_manpage_section=`$(call DOCBOOKXML_MANPAGE_XML_GREP, '//manvolnum', $(1));`; \
	docbook_xml_manpage=$$docbook_xml_manpage_title.$$docbook_xml_manpage_section; \
	echo "generating $(addprefix $(dir $(1)),$$docbook_xml_manpage)"; \
	echo $(addprefix $(dir $(1)),$$docbook_xml_manpage) >> $(DOCBOOKXML_MANPAGE_LIST); \
	$(call ECHO_CALL, $(call DOCBOOKXML_MANPAGE_XSLTPROC, $(1), $(DOCBOOKXML_MANPAGE_XSLTPROC_XSL))) 

endef

clean::
	@if test -f $(DOCBOOKXML_MANPAGE_LIST); then \
		for i in `cat $(DOCBOOKXML_MANPAGE_LIST)`; do \
		$(RM) $$i;echo $(RM) $$i; \
		done; \
		fi
	-$(RM) $(DOCBOOKXML_MANPAGE_LIST);
	-$(RM) debian/docbook-xml-manpage-stamp;

post-patches:: debian/docbook-xml-manpage-stamp
debian/docbook-xml-manpage-stamp: 
	@$(foreach source,$(DOCBOOKXML_MANPAGE_SOURCES),$(call DOCBOOKXML_MANPAGE_PROCESS,$(source)))
	touch $@

endif


More information about the Build-common-hackers mailing list