]> git.ipfire.org Git - thirdparty/dbus.git/commitdiff
Fix broken meinproc4 based docbook generating by already used xsltproc
authorRalf Habacker <ralf.habacker@freenet.de>
Tue, 20 Nov 2018 13:06:17 +0000 (14:06 +0100)
committerRalf Habacker <ralf.habacker@freenet.de>
Tue, 20 Nov 2018 14:56:12 +0000 (15:56 +0100)
Using xsltproc helps to reduce manual editing of xml doc and avoids
cyclic dependency (kdelibs depends on dbus and dbus depends on kdelibs).
It is available on all platforms (in the opposite to xmlto) and supports
freedesktop CI out of the box.

This commit adds docbook-xml and docbook-xsl as new dependency for cmake
and removes obsolate xmlto support, which depends on xsltproc.

cmake/doc/CMakeLists.txt
tools/ci-install.sh

index 403aee7840b79b031517d562001eca30a587e376..d30e9e39d7bc574bd9a419dda740e27a6d60d667 100644 (file)
@@ -1,5 +1,8 @@
 SET(DOC_DIR ${CMAKE_SOURCE_DIR}/../doc)
 
+#
+# api documentation
+#
 find_package(Doxygen)
 
 # build doc always
@@ -44,96 +47,51 @@ if(DBUS_HAVE_XSLTPROC)
 endif()
 
 #
-# find docbook generator
+# docbook based documentation
 # 
-find_program(MEINPROC4_EXECUTABLE meinproc4)
-
-find_program(XMLTO_EXECUTABLE xmlto)
-
-find_program(CYGPATH_EXECUTABLE cygpath)
-
-if (MEINPROC4_EXECUTABLE OR XMLTO_EXECUTABLE)
-  OPTION(DBUS_ENABLE_XML_DOCS "build XML  documentation (requires xmlto or meinproc4)" ON)
-  ADD_CUSTOM_TARGET(xmldoc ALL)
-endif (MEINPROC4_EXECUTABLE OR XMLTO_EXECUTABLE)
-
-if (XMLTO_EXECUTABLE)
-       set (DOCBOOK_GENERATOR_NAME "xmlto" PARENT_SCOPE)
-       set(DBUS_XML_DOCS_ENABLED 1)
-       set(MEINPROC4_EXECUTABLE 0)
-       MESSAGE(STATUS "xmlto docbook generator found")
-       set(STYLESHEET_MAN "${DOCBOOKXSL_DIR}/manpages/docbook.xsl")
-       set(STYLESHEET_HTML "${DOCBOOKXSL_DIR}/html/docbook.xsl")
-
-elseif (MEINPROC4_EXECUTABLE)
-       set(DOCBOOK_GENERATOR_NAME "meinproc4" PARENT_SCOPE)
-       set(DBUS_XML_DOCS_ENABLED 1)
-       if(WIN32)
-               get_filename_component(_a ${MEINPROC4_EXECUTABLE} PATH)
-               get_filename_component(_meinproc_install_path ${_a} PATH)
-               set(STYLESHEET_HTML "${_meinproc_install_path}/share/apps/ksgmltools2/docbook/xsl/html/docbook.xsl")
-       else(WIN32)
-               set(STYLESHEET_HTML file:///usr/share/kde4/apps/ksgmltools2/customization/kde-nochunk.xsl)
-       endif(WIN32)
-endif ()
-
-if (DBUS_ENABLE_XML_DOCS)
-
-macro (DOCBOOK _sources _format)
-  get_filename_component(_infile ${_sources} ABSOLUTE)
-  get_filename_component(_name ${_infile} NAME)
-  set(_deps ${CMAKE_SOURCE_DIR}/CMakeLists.txt ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt)
-
-  if (${_format} STREQUAL "man")
-    string(REPLACE ".xml" "" _outname ${_name})
-    set(STYLESHEET ${STYLESHEET_MAN})
-  else()
-    string(REPLACE ".xml" ".html" _outname ${_name})
-    set(STYLESHEET ${STYLESHEET_HTML})
-  endif ()
-
-  set(_outfile ${CMAKE_CURRENT_BINARY_DIR}/${_outname})
-  if (EXISTS ${_sources})
-         if (MEINPROC4_EXECUTABLE)
-                   ADD_CUSTOM_COMMAND(
-                       OUTPUT ${_outfile}
-                       COMMAND ${MEINPROC4_EXECUTABLE} --stylesheet ${STYLESHEET} -o ${_outfile} ${_infile}
-                       DEPENDS ${_infile} ${STYLESHEET} ${_deps}
-                       WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
-               )
-         endif ()
-         if (XMLTO_EXECUTABLE)
-                   if (MSYS)
-                       if (CYGPATH_EXECUTABLE)
-                           execute_process(
-                               COMMAND cygpath ${_infile}
-                               OUTPUT_VARIABLE _infile)
-                       else ()
-                           execute_process(COMMAND dirname ${_infile}  OUTPUT_VARIABLE _path)
-                           string(STRIP ${_path} _path)
-                           execute_process(COMMAND sh -c "cd ${_path}; pwd -W" OUTPUT_VARIABLE _path)
-                           string(STRIP ${_path} _path)
-                           set(_infile "${_path}/${_name}")
-                       endif(CYGPATH_EXECUTABLE)
-                   endif (MSYS)
-                   ADD_CUSTOM_COMMAND(
-                       OUTPUT ${_outfile}
-                       COMMAND ${XMLTO_EXECUTABLE} -vv ${_format} ${_infile}
-                       DEPENDS ${_infile} ${_deps}
-                       WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
-               )
-         endif ()
-         if (${_format} STREQUAL "man")
-                 install(FILES ${_outfile} DESTINATION share/man/man1)
-         else ()
-                 install(FILES ${_outfile} DESTINATION share/doc/dbus)
-         endif ()
-  else ()
-         MESSAGE(STATUS "skipping xml doc generating for ${_infile}, file not found")
-  endif ()
-  ADD_CUSTOM_TARGET(${_outname} DEPENDS ${_outfile})
-  ADD_DEPENDENCIES(xmldoc ${_outname})
-endmacro (DOCBOOK)
+find_package(DocBookXSL)
+
+if(DOCBOOKXSL_DIR AND XSLTPROC_EXECUTABLE)
+    option(DBUS_ENABLE_XML_DOCS "build XML documentation" ON)
+    set(DBUS_XML_DOCS_ENABLED 1)
+    message(STATUS "xsltproc docbook generator found")
+    add_custom_target(xmldoc)
+    add_dependencies(doc xmldoc)
+endif()
+
+if(DBUS_ENABLE_XML_DOCS)
+
+macro(DOCBOOK _sources _format)
+    get_filename_component(_infile ${_sources} ABSOLUTE)
+    get_filename_component(_name ${_infile} NAME)
+    if(${_format} STREQUAL "man")
+        string(REPLACE ".xml" "" _outname ${_name})
+        set(STYLESHEET "${DOCBOOKXSL_DIR}/manpages/docbook.xsl")
+    else()
+        string(REPLACE ".xml" ".html" _outname ${_name})
+        set(STYLESHEET "${DOCBOOKXSL_DIR}/html/docbook.xsl")
+    endif()
+    set(_outfile ${CMAKE_CURRENT_BINARY_DIR}/${_outname})
+
+    set(_outfile ${CMAKE_CURRENT_BINARY_DIR}/${_outname})
+    if(EXISTS ${_sources})
+        if(XSLTPROC_EXECUTABLE)
+            add_custom_target(${_outname}
+                ${XSLTPROC_EXECUTABLE} --output ${_outfile} --nonet --xinclude  --param passivetex.extensions '1' ${STYLESHEET} ${_infile}
+                DEPENDS ${_infile}
+                WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+            )
+        endif ()
+        add_dependencies(xmldoc ${_outname})
+        if (${_format} STREQUAL "man")
+            install(FILES ${_outfile} DESTINATION share/man/man1)
+        else()
+            install(FILES ${_outfile} DESTINATION share/doc/dbus)
+        endif()
+    else()
+        message(STATUS "skipping xml doc generating for ${_infile}, file not found")
+    endif()
+endmacro(DOCBOOK)
 
 ### copy tests to builddir so that generated tests and static tests 
 ### are all in one place.
@@ -158,48 +116,50 @@ ENDMACRO (COPYDIR)
 COPYDIR(doc *.png)
 COPYDIR(doc *.svg)
 
-DOCBOOK(${CMAKE_SOURCE_DIR}/../doc/dbus-test-plan.xml html-nochunks)
-DOCBOOK(${CMAKE_SOURCE_DIR}/../doc/dbus-tutorial.xml html-nochunks)
-DOCBOOK(${CMAKE_SOURCE_DIR}/../doc/dbus-specification.xml html-nochunks)
-DOCBOOK(${CMAKE_SOURCE_DIR}/../doc/dbus-faq.xml html-nochunks)
-configure_file(${CMAKE_SOURCE_DIR}/../doc/dbus-cleanup-sockets.1.xml.in ${CMAKE_BINARY_DIR}/doc/dbus-cleanup-sockets.1.xml)
-configure_file(${CMAKE_SOURCE_DIR}/../doc/dbus-daemon.1.xml.in ${CMAKE_BINARY_DIR}/doc/dbus-daemon.1.xml)
-configure_file(${CMAKE_SOURCE_DIR}/../doc/dbus-launch.1.xml.in ${CMAKE_BINARY_DIR}/doc/dbus-launch.1.xml)
-configure_file(${CMAKE_SOURCE_DIR}/../doc/dbus-monitor.1.xml.in ${CMAKE_BINARY_DIR}/doc/dbus-monitor.1.xml)
-configure_file(${CMAKE_SOURCE_DIR}/../doc/dbus-send.1.xml.in ${CMAKE_BINARY_DIR}/doc/dbus-send.1.xml)
-configure_file(${CMAKE_SOURCE_DIR}/../doc/dbus-test-tool.1.xml.in ${CMAKE_BINARY_DIR}/doc/dbus-test-tool.1.xml)
-configure_file(${CMAKE_SOURCE_DIR}/../doc/dbus-update-activation-environment.1.xml.in ${CMAKE_BINARY_DIR}/doc/dbus-update-activation-environment.1.xml)
-configure_file(${CMAKE_SOURCE_DIR}/../doc/dbus-uuidgen.1.xml.in ${CMAKE_BINARY_DIR}/doc/dbus-uuidgen.1.xml)
-DOCBOOK(${CMAKE_BINARY_DIR}/doc/dbus-cleanup-sockets.1.xml html-nochunks)
-DOCBOOK(${CMAKE_BINARY_DIR}/doc/dbus-daemon.1.xml html-nochunks)
-DOCBOOK(${CMAKE_BINARY_DIR}/doc/dbus-launch.1.xml html-nochunks)
-DOCBOOK(${CMAKE_BINARY_DIR}/doc/dbus-monitor.1.xml html-nochunks)
-DOCBOOK(${CMAKE_BINARY_DIR}/doc/dbus-send.1.xml html-nochunks)
-DOCBOOK(${CMAKE_BINARY_DIR}/doc/dbus-test-tool.1.xml html-nochunks)
-DOCBOOK(${CMAKE_BINARY_DIR}/doc/dbus-uuidgen.1.xml html-nochunks)
-DOCBOOK(${CMAKE_BINARY_DIR}/doc/dbus-update-activation-environment.1.xml html-nochunks)
-if (UNIX)
-  DOCBOOK(${CMAKE_BINARY_DIR}/doc/dbus-daemon.1.xml man)
-  DOCBOOK(${CMAKE_BINARY_DIR}/doc/dbus-monitor.1.xml man)
-  DOCBOOK(${CMAKE_BINARY_DIR}/doc/dbus-send.1.xml man)
-  DOCBOOK(${CMAKE_BINARY_DIR}/doc/dbus-test-tool.1.xml man)
-  DOCBOOK(${CMAKE_BINARY_DIR}/doc/dbus-launch.1.xml man)
-  DOCBOOK(${CMAKE_BINARY_DIR}/doc/dbus-uuidgen.1.xml man)
-  DOCBOOK(${CMAKE_BINARY_DIR}/doc/dbus-cleanup-sockets.1.xml man)
-  DOCBOOK(${CMAKE_BINARY_DIR}/doc/dbus-update-activation-environment.1.xml man)
+docbook(${DOC_DIR}/dbus-test-plan.xml html)
+docbook(${DOC_DIR}/dbus-tutorial.xml html)
+docbook(${DOC_DIR}/dbus-specification.xml html)
+docbook(${DOC_DIR}/dbus-faq.xml html)
+
+configure_file(${DOC_DIR}/dbus-cleanup-sockets.1.xml.in ${CMAKE_BINARY_DIR}/doc/dbus-cleanup-sockets.1.xml)
+configure_file(${DOC_DIR}/dbus-daemon.1.xml.in ${CMAKE_BINARY_DIR}/doc/dbus-daemon.1.xml)
+configure_file(${DOC_DIR}/dbus-launch.1.xml.in ${CMAKE_BINARY_DIR}/doc/dbus-launch.1.xml)
+configure_file(${DOC_DIR}/dbus-monitor.1.xml.in ${CMAKE_BINARY_DIR}/doc/dbus-monitor.1.xml)
+configure_file(${DOC_DIR}/dbus-send.1.xml.in ${CMAKE_BINARY_DIR}/doc/dbus-send.1.xml)
+configure_file(${DOC_DIR}/dbus-test-tool.1.xml.in ${CMAKE_BINARY_DIR}/doc/dbus-test-tool.1.xml)
+configure_file(${DOC_DIR}/dbus-update-activation-environment.1.xml.in ${CMAKE_BINARY_DIR}/doc/dbus-update-activation-environment.1.xml)
+configure_file(${DOC_DIR}/dbus-uuidgen.1.xml.in ${CMAKE_BINARY_DIR}/doc/dbus-uuidgen.1.xml)
+if(UNIX)
+    docbook(${CMAKE_BINARY_DIR}/doc/dbus-daemon.1.xml man)
+    docbook(${CMAKE_BINARY_DIR}/doc/dbus-monitor.1.xml man)
+    docbook(${CMAKE_BINARY_DIR}/doc/dbus-send.1.xml man)
+    docbook(${CMAKE_BINARY_DIR}/doc/dbus-test-tool.1.xml man)
+    docbook(${CMAKE_BINARY_DIR}/doc/dbus-launch.1.xml man)
+    docbook(${CMAKE_BINARY_DIR}/doc/dbus-uuidgen.1.xml man)
+    docbook(${CMAKE_BINARY_DIR}/doc/dbus-cleanup-sockets.1.xml man)
+    docbook(${CMAKE_BINARY_DIR}/doc/dbus-update-activation-environment.1.xml man)
 endif()
+docbook(${CMAKE_BINARY_DIR}/doc/dbus-daemon.1.xml html)
+docbook(${CMAKE_BINARY_DIR}/doc/dbus-monitor.1.xml html)
+docbook(${CMAKE_BINARY_DIR}/doc/dbus-send.1.xml html)
+docbook(${CMAKE_BINARY_DIR}/doc/dbus-test-tool.1.xml html)
+docbook(${CMAKE_BINARY_DIR}/doc/dbus-launch.1.xml html)
+docbook(${CMAKE_BINARY_DIR}/doc/dbus-uuidgen.1.xml html)
+docbook(${CMAKE_BINARY_DIR}/doc/dbus-cleanup-sockets.1.xml html)
+docbook(${CMAKE_BINARY_DIR}/doc/dbus-update-activation-environment.1.xml html)
+
 #
 # handle html index file
 #
 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/index.html.cmake ${CMAKE_CURRENT_BINARY_DIR}/index.html )
 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/index.html DESTINATION share/doc/dbus)
 
-set (EXTRA_DIST        
-       ${CMAKE_SOURCE_DIR}/../doc/busconfig.dtd                        
-       ${CMAKE_SOURCE_DIR}/../doc/introspect.dtd                       
-       ${CMAKE_SOURCE_DIR}/../doc/introspect.xsl
+set (EXTRA_DIST
+    ${DOC_DIR}/busconfig.dtd
+    ${DOC_DIR}/introspect.dtd
+    ${DOC_DIR}/introspect.xsl
 )
 
 install(FILES ${EXTRA_DIST} DESTINATION share/doc/dbus)
 
-endif(DBUS_ENABLE_XML_DOCS)
+endif()
index 30d4abe0a4724e0531b6aca2c3d465b281f9b165..b50e534e9dda8adffb28f0c816a1f6a95aedbaed 100755 (executable)
@@ -131,6 +131,8 @@ case "$ci_distro" in
             debhelper \
             dh-autoreconf \
             dh-exec \
+            docbook-xml \
+            docbook-xsl \
             doxygen \
             dpkg-dev \
             gnome-desktop-testing \