From 774475787e7cf59b8d10a104f12904560bf31b88 Mon Sep 17 00:00:00 2001 From: Jens Georg Date: Sat, 19 Dec 2020 01:04:41 +0100 Subject: wip: Fix gtkdoc generation and installation Fixes #190 --- build-aux/meson/install-gtkdoc.py | 15 ++++++++++++++ doc/reference/librygel-core/gtkdoc/meson.build | 2 ++ doc/reference/librygel-core/meson.build | 13 ++++++------ doc/reference/librygel-db/gtkdoc/meson.build | 2 ++ doc/reference/librygel-db/meson.build | 10 ++++----- .../gtkdoc/implementing-renderers-gst.xml | 8 ++++---- .../librygel-renderer-gst/gtkdoc/meson.build | 3 +++ doc/reference/librygel-renderer-gst/meson.build | 10 ++++----- .../gtkdoc/implementing-renderer-plugins.xml | 16 +++++++-------- .../gtkdoc/implementing-renderers.xml | 2 +- doc/reference/librygel-renderer/gtkdoc/meson.build | 4 ++++ doc/reference/librygel-renderer/meson.build | 10 ++++----- .../gtkdoc/implementing-media-engines.xml | 4 ++-- .../gtkdoc/implementing-server-plugins.xml | 24 +++++++++++----------- .../gtkdoc/implementing-servers.xml | 8 ++++---- doc/reference/librygel-server/gtkdoc/meson.build | 5 +++++ doc/reference/librygel-server/meson.build | 10 ++++----- meson.build | 5 ++++- 18 files changed, 88 insertions(+), 63 deletions(-) create mode 100644 build-aux/meson/install-gtkdoc.py create mode 100644 doc/reference/librygel-core/gtkdoc/meson.build create mode 100644 doc/reference/librygel-db/gtkdoc/meson.build create mode 100644 doc/reference/librygel-renderer-gst/gtkdoc/meson.build create mode 100644 doc/reference/librygel-renderer/gtkdoc/meson.build create mode 100644 doc/reference/librygel-server/gtkdoc/meson.build diff --git a/build-aux/meson/install-gtkdoc.py b/build-aux/meson/install-gtkdoc.py new file mode 100644 index 00000000..e391a69a --- /dev/null +++ b/build-aux/meson/install-gtkdoc.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python3 + +import sys +from os import environ, path, getcwd +import shutil + +destdir = environ.get('MESON_INSTALL_DESTDIR_PREFIX', '') + +a = path.join(sys.argv[1], 'html') +b = path.join(destdir, sys.argv[2]) + +print(a,b) +shutil.copytree(a, b, dirs_exist_ok=True) + + diff --git a/doc/reference/librygel-core/gtkdoc/meson.build b/doc/reference/librygel-core/gtkdoc/meson.build new file mode 100644 index 00000000..da1cf315 --- /dev/null +++ b/doc/reference/librygel-core/gtkdoc/meson.build @@ -0,0 +1,2 @@ +configure_file(input: 'librygel-core-docs.xml', output: 'librygel-core-docs.xml', copy: true) +configure_file(input: 'overview.xml', output: 'overview.xml', copy: true) diff --git a/doc/reference/librygel-core/meson.build b/doc/reference/librygel-core/meson.build index 8a74cc90..f4ceca96 100644 --- a/doc/reference/librygel-core/meson.build +++ b/doc/reference/librygel-core/meson.build @@ -22,22 +22,22 @@ custom_target('valadoc-core', [ valadoc, core_doc_common_args, - '-o', 'valadoc', core_sources ] ) if gtkdoc.found() -custom_target('gtkdoc-core', + subdir('gtkdoc') + +gtkdoc_core_target = custom_target('gtkdoc-core', input: core_sources, output: 'gtkdoc', depends : core_lib, build_by_default : get_option('api-docs'), - command : + command: [ valadoc, '--doclet', 'gtkdoc', - '-o', 'gtkdoc', core_doc_common_args, '-X', join_paths(meson.build_root(), 'src/librygel-core/rygel-core.h'), '-X', '-l', @@ -48,9 +48,8 @@ custom_target('gtkdoc-core', ) if get_option('api-docs') - install_subdir('gtkdoc/html', - install_dir : join_paths(get_option('datadir'), 'gtk-doc/html/librygel-core'), - strip_directory : true) + meson.add_install_script(install_doc, gtkdoc_core_target, + join_paths(get_option('datadir'), 'gtk-doc/html/librygel-core')) endif endif endif diff --git a/doc/reference/librygel-db/gtkdoc/meson.build b/doc/reference/librygel-db/gtkdoc/meson.build new file mode 100644 index 00000000..cb778cf4 --- /dev/null +++ b/doc/reference/librygel-db/gtkdoc/meson.build @@ -0,0 +1,2 @@ +configure_file(input: 'librygel-db-docs.xml', output: 'librygel-db-docs.xml', copy: true) +configure_file(input: 'overview.xml', output: 'overview.xml', copy: true) diff --git a/doc/reference/librygel-db/meson.build b/doc/reference/librygel-db/meson.build index 3463c56e..9c6fffd5 100644 --- a/doc/reference/librygel-db/meson.build +++ b/doc/reference/librygel-db/meson.build @@ -28,13 +28,13 @@ custom_target('valadoc-db', [ valadoc, db_doc_common_args, - '-o', 'valadoc', db_sources ] ) if gtkdoc.found() -custom_target('gtkdoc-db', +subdir('gtkdoc') +gtkdoc_db_target = custom_target('gtkdoc-db', input: db_sources, output: 'gtkdoc', depends : db_lib, @@ -44,7 +44,6 @@ custom_target('gtkdoc-db', valadoc, db_doc_common_args, '--doclet', 'gtkdoc', - '-o', 'gtkdoc', '-X', join_paths(meson.build_root(), 'src/librygel-db/rygel-db.h'), '-X', '-l', '-X', join_paths(meson.build_root(), 'src/librygel-db/librygel-db-2.6.so'), @@ -55,9 +54,8 @@ custom_target('gtkdoc-db', ) if get_option('api-docs') - install_subdir('gtkdoc/html', - install_dir : join_paths(get_option('datadir'), 'gtk-doc/html/librygel-db'), - strip_directory : true) + meson.add_install_script(install_doc, gtkdoc_db_target, + join_paths(get_option('datadir'), 'gtk-doc/html/librygel-db')) endif endif diff --git a/doc/reference/librygel-renderer-gst/gtkdoc/implementing-renderers-gst.xml b/doc/reference/librygel-renderer-gst/gtkdoc/implementing-renderers-gst.xml index 484d9cfe..55315ba5 100644 --- a/doc/reference/librygel-renderer-gst/gtkdoc/implementing-renderers-gst.xml +++ b/doc/reference/librygel-renderer-gst/gtkdoc/implementing-renderers-gst.xml @@ -11,12 +11,12 @@ Implementing GStreamer-based Renderers: Overview -This library may be used to create in-process UPnP/DLNA Renderers, or Players based on GStreamer, via +This library may be used to create in-process UPnP/DLNA Renderers, or Players based on GStreamer, via the RygelPlaybinRenderer class. For instance, this may be used to add UPnP/DLNA Renderer or Player capability to an existing GStreamer-based media player application. -The RygelPlaybinRenderer reference documentation +The RygelPlaybinRenderer reference documentation and these examples explain how to implement renderers. @@ -33,7 +33,7 @@ and connect it to a network interface, rendering the content to stdout as ASCII. - @@ -50,7 +50,7 @@ This slightly fuller example program shows how to instantiate the renderer then - diff --git a/doc/reference/librygel-renderer-gst/gtkdoc/meson.build b/doc/reference/librygel-renderer-gst/gtkdoc/meson.build new file mode 100644 index 00000000..51207b0e --- /dev/null +++ b/doc/reference/librygel-renderer-gst/gtkdoc/meson.build @@ -0,0 +1,3 @@ +configure_file(input: 'librygel-renderer-gst-docs.xml', output: 'librygel-renderer-gst-docs.xml', configuration: conf) +configure_file(input: 'implementing-renderers-gst.xml', output: 'implementing-renderers-gst.xml', configuration: conf) +configure_file(input: 'overview.xml', output: 'overview.xml', copy: true) diff --git a/doc/reference/librygel-renderer-gst/meson.build b/doc/reference/librygel-renderer-gst/meson.build index 21977856..51e95d72 100644 --- a/doc/reference/librygel-renderer-gst/meson.build +++ b/doc/reference/librygel-renderer-gst/meson.build @@ -31,13 +31,13 @@ custom_target('valadoc-renderer-gst', [ valadoc, renderer_gst_doc_common_args, - '-o', 'valadoc', renderer_gst_sources ] ) if gtkdoc.found() -custom_target('gtkdoc-renderer-gst', +subdir('gtkdoc') +gtkdoc_renderer_gst_target = custom_target('gtkdoc-renderer-gst', input: renderer_gst_sources, output: 'gtkdoc', depends : renderer_gst_lib, @@ -47,7 +47,6 @@ custom_target('gtkdoc-renderer-gst', valadoc, renderer_gst_doc_common_args, '--doclet', 'gtkdoc', - '-o', 'gtkdoc', '-X', join_paths(meson.build_root(), 'src/librygel-renderer/rygel-renderer.h'), '-X', '-l', '-X', join_paths(meson.build_root(), 'src/librygel-renderer/librygel-renderer-2.6.so'), @@ -59,9 +58,8 @@ custom_target('gtkdoc-renderer-gst', ] ) if get_option('api-docs') - install_subdir('gtkdoc/html', - install_dir : join_paths(get_option('datadir'), 'gtk-doc/html/librygel-renderer-gst'), - strip_directory : true) + meson.add_install_script(install_doc, gtkdoc_renderer_gst_target, + join_paths(get_option('datadir'), 'gtk-doc/html/librygel-renderer-gst')) endif endif endif diff --git a/doc/reference/librygel-renderer/gtkdoc/implementing-renderer-plugins.xml b/doc/reference/librygel-renderer/gtkdoc/implementing-renderer-plugins.xml index 2755f845..19962708 100644 --- a/doc/reference/librygel-renderer/gtkdoc/implementing-renderer-plugins.xml +++ b/doc/reference/librygel-renderer/gtkdoc/implementing-renderer-plugins.xml @@ -14,11 +14,11 @@ -This library may be used to create Rygel renderer plugins by +This library may be used to create Rygel renderer plugins by implementing the RygelMediaRendererPlugin class. -The RygelMediaRendererPlugin reference documentation +The RygelMediaRendererPlugin reference documentation and this example explain how to implement these plugins. @@ -31,8 +31,8 @@ and this example explain how to implement these plugins. This example source code shows how to implement a Rygel Renderer plugin. -This example implements module that provides a RygelMediaPlayer -that simply prints the addresses of any URIs provided to it by a UPnP/DLNA controller. A real Rygel renderer +This example implements module that provides a RygelMediaPlayer +that simply prints the addresses of any URIs provided to it by a UPnP/DLNA controller. A real Rygel renderer plugin's player would render the actual media content to some device. See, for instance, the RygelPlaybinPlayer from the librygel-renderer-gst library, used in the Rygel Playbin plugin. @@ -40,22 +40,22 @@ librygel-renderer-gst library, used in the - - - - diff --git a/doc/reference/librygel-renderer/gtkdoc/implementing-renderers.xml b/doc/reference/librygel-renderer/gtkdoc/implementing-renderers.xml index b85a15ee..58c65b7b 100644 --- a/doc/reference/librygel-renderer/gtkdoc/implementing-renderers.xml +++ b/doc/reference/librygel-renderer/gtkdoc/implementing-renderers.xml @@ -40,7 +40,7 @@ and connect it to a network interface. - - + - - + - - + - - + @@ -73,7 +73,7 @@ implemented in Vala. The RygelMediaExportRootContainer creates an instance of a RygelMediaExportMediaCache class and a RygelMediaExportHarvester class. The harvester finds files on the filesystem, and stores them in the media cache, which uses SQLite to keep track of them. -RygelMediaExportRootContainer informs the media cache that it should have a child container for the media content as organised on the filesystem, and additionally some virtual folders for Music, Pictures, Video and Playlists, with further sub-divisions under these, for instance by publication year. These containers are added to the media cache via instances of the RygelMediaExportNullContainer class, but that is just to simplify the media cache API and these instances then serve no further purpose. The virtual folders are re-added whenever the filesystem's container is updated, so that they can show the updated +RygelMediaExportRootContainer informs the media cache that it should have a child container for the media content as organised on the filesystem, and additionally some virtual folders for Music, Pictures, Video and Playlists, with further sub-divisions under these, for instance by publication year. These containers are added to the media cache via instances of the RygelMediaExportNullContainer class, but that is just to simplify the media cache API and these instances then serve no further purpose. The virtual folders are re-added whenever the filesystem's container is updated, so that they can show the updated content, though that is not particularly efficient. RygelMediaExportRootContainer then delegates its RygelMediaContainer virtual function implementations to this media cache, which in turn uses the RygelMediaExportObjectFactory to instantiate new containers for each request based on their ID. For instance, it returns a RygelMediaExportDBContainer if the requested ID indicates a virtual container, using the definition in the rest of the ID to build a suitable SQL query. diff --git a/doc/reference/librygel-server/gtkdoc/implementing-servers.xml b/doc/reference/librygel-server/gtkdoc/implementing-servers.xml index ca9171c9..3b08007b 100644 --- a/doc/reference/librygel-server/gtkdoc/implementing-servers.xml +++ b/doc/reference/librygel-server/gtkdoc/implementing-servers.xml @@ -14,7 +14,7 @@ This library may be used to create UPnP or DLNA servers via its RygelMediaServer class. -The RygelMediaServer reference documentation +The RygelMediaServer reference documentation and this example explains how to implement a server. @@ -25,13 +25,13 @@ and this example explains how to implement a server. -This example program shows how to fill a container with media items and then instantiate a server to serve +This example program shows how to fill a container with media items and then instantiate a server to serve them. - - + diff --git a/doc/reference/librygel-server/gtkdoc/meson.build b/doc/reference/librygel-server/gtkdoc/meson.build new file mode 100644 index 00000000..d568a646 --- /dev/null +++ b/doc/reference/librygel-server/gtkdoc/meson.build @@ -0,0 +1,5 @@ +configure_file(input: 'librygel-server-docs.xml', output: 'librygel-server-docs.xml', copy: true) +configure_file(input: 'implementing-media-engines.xml', output: 'implementing-media-engines.xml', copy: true) +configure_file(input: 'implementing-server-plugins.xml', output: 'implementing-server-plugins.xml', configuration: conf) +configure_file(input: 'implementing-servers.xml', output: 'implementing-servers.xml', configuration: conf) +configure_file(input: 'overview.xml', output: 'overview.xml', copy: true) diff --git a/doc/reference/librygel-server/meson.build b/doc/reference/librygel-server/meson.build index d0bf4bf7..390e575a 100644 --- a/doc/reference/librygel-server/meson.build +++ b/doc/reference/librygel-server/meson.build @@ -28,13 +28,13 @@ custom_target('valadoc-server', [ valadoc, server_doc_common_args, - '-o', 'valadoc', server_sources ] ) if gtkdoc.found() -custom_target('gtkdoc-server', +subdir('gtkdoc') +gtkdoc_server_target = custom_target('gtkdoc-server', input: server_sources, output: 'gtkdoc', depends : server_lib, @@ -44,7 +44,6 @@ custom_target('gtkdoc-server', valadoc, server_doc_common_args, '--doclet', 'gtkdoc', - '-o', 'gtkdoc', '-X', join_paths(meson.build_root(), 'src/librygel-server/rygel-server.h'), '-X', '-l', '-X', join_paths(meson.build_root(), 'src/librygel-server/librygel-server-2.6.so'), @@ -54,9 +53,8 @@ custom_target('gtkdoc-server', ] ) if get_option('api-docs') - install_subdir('gtkdoc/html', - install_dir : join_paths(get_option('datadir'), 'gtk-doc/html/librygel-server'), - strip_directory : true) + meson.add_install_script(install_doc, gtkdoc_server_target, + join_paths(get_option('datadir'), 'gtk-doc/html/librygel-server')) endif endif endif diff --git a/meson.build b/meson.build index 4aa683d6..48301dce 100644 --- a/meson.build +++ b/meson.build @@ -1,4 +1,4 @@ -project('rygel', 'vala', 'c', version : '0.40.0', meson_version : '>= 0.50.0') +project('rygel', 'vala', 'c', version : '0.40.0', meson_version : '>= 0.55.0') vala = meson.get_compiler('vala') # Check for the required vala version @@ -9,6 +9,8 @@ if not vala_version_found.version_compare(vala_version_required) error('Found Vala version @0@, need @1@'.format(vala_version_found, vala_version_required)) endif +install_doc = find_program('build-aux/meson/install-gtkdoc.py') + i18n = import('i18n') gnome = import('gnome') @@ -60,6 +62,7 @@ conf.set_quoted('LOCALEDIR', join_paths(get_option('prefix'), get_option('locale conf.set_quoted('MX_EXTRACT_PATH', join_paths(rygel_libexecdir, 'mx-extract')) conf.set_quoted('DESKTOP_DIR', join_paths(get_option('prefix'), get_option('datadir'), 'applications')) conf.set_quoted('VERSION', meson.project_version()) +conf.set('EXAMPLEDIR', join_paths(meson.current_source_dir(), 'examples')) config_include = include_directories('.') add_global_arguments(['-include','config.h'], language : 'c') -- cgit v1.2.1