Drop gtk-doc as the API reference generator
From: #3035 (comment 1774436)
Let's break down this in steps:
Preparation
-
remove the existing gtk-doc build of the API references for glib, gobject, and gio - See !3724 (merged)
-
move the SECTION
docblocks that are not tied to a type to a separate Markdown file underdoc/reference
- See !3724 (merged)
-
move the Markdown files from the docs.gtk.org website into the GLib repository - partially done as !3591 (merged)
- remaining work as !3758 (merged) and gtk!6663 (merged)
- files in the GTK repository now need to be checked against what landed in GLib (to ensure no intermediate updates were missed) and then deleted
-
port the remaining XML docs into Markdown -
port the man pages to reStructuredText and use rst2man
consistently: !3775 (merged) -
use the Markdown generator for the gdbus examples - Decided to drop them instead, in commit e2efafb8
-
ensure that Unix- and win32-specific APIs (such as GWin32InputStream
) are represented correctly in GIR so they can be documented and linked to, regardless of what the docs build platform is -
ensure gdbus-codegen
can output in gi-docgen format as well as gtk-doc format- Deferred to #3256
Switch time
-
port the content of the docblocks from gtk-doc to gi-docgen - use gi-docgen links
- use proper code blocks (with syntax highlighting)
- ensure that every indented Markdown line is using 2 spaces to avoid being identified as a pre-formatted block
- in general, follow the style guidelines for developer documentation
- !3801 (merged)
- Split out as #3250 because it’s going to take a while and I’m certainly not going to do it all
-
if gobject-introspection is available, generate the introspection data for GLib, GObject, GModule, and GIO when building the libraries - See: !3636 (merged)
-
if gi-docgen is available and the introspection has been generated, generate the API references from the introspection data and ancillary contents
Since g-i depends on GLib, this means that building the documentation for GLib will need a second build:
- build glib with no documentation
- build gobject-introspection
- build glib with documentation
Side effect: since g-i is tied to GLib due to it containing the introspection data for GLib, by moving the introspection build to GLib itself we can decouple g-i; this should make it easier to build GLib with an older version of gobject-introspection.
Cleaning up
-
Fix gobject-introspection annotation warnings and remove use of deprecated gtk-doc annotation tags - See !3636 (comment 1869185)
- Some work on this in !3736 (merged)
- Remainder of the work deferred to #3251 because it’ll require changes across several modules
-
Enable fatal warnings from g-ir-scanner - Deferred to #3251 because it’ll require changes across several modules
-
Add a CI job to build and publish the docs on docs.gtk.org - See !3636 (comment 1869187)
- Done in !3768 (merged) and gtk!6663 (merged)
-
Check if any of gobject-introspection’s overrides for cross-compilation wrappers need to be copied to GLib -
Go through new documentation tables of contents and ensure page titles are capitalised consistently: !3737 (merged) -
Rename -Dgtk_doc
option: !3736 (merged) -
Update REUSE limits as a whole load of files have changed around -
Remove nicks and blurbs from pspecs (#2991 (closed)) — some of them may need turning into doc comments -
Split platform-specific APIs (particularly win32 ones) into a separate GIR and revert !3723 (merged) -
Test cross-with-exe-wrapper and cross-without builds (as per this discussion) - Somewhat done in #3201 (comment 2001555)
Edited by Philip Withnall