Show a patch.

GET /api/patches/24294/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 24294,
    "url": "https://patchwork.libcamera.org/api/patches/24294/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/24294/",
    "project": {
        "id": 1,
        "url": "https://patchwork.libcamera.org/api/projects/1/?format=api",
        "name": "libcamera",
        "link_name": "libcamera",
        "list_id": "libcamera_core",
        "list_email": "libcamera-devel@lists.libcamera.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": ""
    },
    "msgid": "<20250908140803.123272-5-stefan.klug@ideasonboard.com>",
    "date": "2025-09-08T14:07:47",
    "name": "[4/6] documentation: Include API docs in the sphinx documentation",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "22faf05f7e1356dab29219502676858eae11970a",
    "submitter": {
        "id": 184,
        "url": "https://patchwork.libcamera.org/api/people/184/?format=api",
        "name": "Stefan Klug",
        "email": "stefan.klug@ideasonboard.com"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/24294/mbox/",
    "series": [
        {
            "id": 5424,
            "url": "https://patchwork.libcamera.org/api/series/5424/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5424",
            "date": "2025-09-08T14:07:43",
            "name": "Documentation theming update",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/5424/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/24294/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/24294/checks/",
    "tags": {},
    "headers": {
        "Return-Path": "<libcamera-devel-bounces@lists.libcamera.org>",
        "X-Original-To": "parsemail@patchwork.libcamera.org",
        "Delivered-To": "parsemail@patchwork.libcamera.org",
        "Received": [
            "from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 24A66BDB13\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  8 Sep 2025 14:08:42 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D7FFD69359;\n\tMon,  8 Sep 2025 16:08:41 +0200 (CEST)",
            "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id BCFCA69368\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  8 Sep 2025 16:08:39 +0200 (CEST)",
            "from ideasonboard.com (unknown\n\t[IPv6:2a00:6020:448c:6c00:c241:40fd:9e5d:437c])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 556E7C71;\n\tMon,  8 Sep 2025 16:07:27 +0200 (CEST)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"FgQeGD9r\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1757340447;\n\tbh=RFDifQdtvXRcsfC5c7TEpe9l5AH0nOk843nQJw1cwIA=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=FgQeGD9rut31hLSi0fUBuVRP63bR3iVh/mH9mAQ7ugvbaYEJJlRzPhoEh/GIw2W82\n\tjfdZOLhMg5JkV5F53dHi06BH76LKlmQ2Ab5jBOB/mDX9Dbe5bnFPVZJ1/I9iZuBNf2\n\tu4zm6+fxe0L3WeoUkVTOH6Q9q9S0pNBjcB7mlFmY=",
        "From": "Stefan Klug <stefan.klug@ideasonboard.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Cc": "Stefan Klug <stefan.klug@ideasonboard.com>",
        "Subject": "[PATCH 4/6] documentation: Include API docs in the sphinx\n\tdocumentation",
        "Date": "Mon,  8 Sep 2025 16:07:47 +0200",
        "Message-ID": "<20250908140803.123272-5-stefan.klug@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.48.1",
        "In-Reply-To": "<20250908140803.123272-1-stefan.klug@ideasonboard.com>",
        "References": "<20250908140803.123272-1-stefan.klug@ideasonboard.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-BeenThere": "libcamera-devel@lists.libcamera.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "<libcamera-devel.lists.libcamera.org>",
        "List-Unsubscribe": "<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>",
        "List-Archive": "<https://lists.libcamera.org/pipermail/libcamera-devel/>",
        "List-Post": "<mailto:libcamera-devel@lists.libcamera.org>",
        "List-Help": "<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>",
        "List-Subscribe": "<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>",
        "Errors-To": "libcamera-devel-bounces@lists.libcamera.org",
        "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"
    },
    "content": "This commit prepares the move of all the libcamera documetation to a\nplace separate from the website. This makes it easier to handle website\nand docs separately.\n\nThe index is updated to mimic the structure currently available on the\nwebsite.\n\nThe build process now first creates the sphinx documentation and then\ncopies the doxygen documentation into the sphinx output directory.\n\nSigned-off-by: Stefan Klug <stefan.klug@ideasonboard.com>\n\n---\n\nToDo:\n- The meson custom targets still need some love. We need to decide what\n  gets installed and in what structure.\n---\n Documentation/conf.py.in       |  4 ++--\n Documentation/index.rst        | 31 +++++++++++++++++++------------\n Documentation/introduction.rst |  6 ------\n Documentation/meson.build      | 21 +++++++++++++++++----\n 4 files changed, 38 insertions(+), 24 deletions(-)",
    "diff": "diff --git a/Documentation/conf.py.in b/Documentation/conf.py.in\nindex 44e9aaf133ef..c772f643fb7c 100644\n--- a/Documentation/conf.py.in\n+++ b/Documentation/conf.py.in\n@@ -75,11 +75,11 @@ pygments_style = None\n doxylink = {\n     'doxy-pub': (\n         '@TOP_BUILDDIR@/Documentation/api-html/tagfile.xml',\n-        '../api-html/',\n+        'api-html/',\n     ),\n     'doxy-int': (\n         '@TOP_BUILDDIR@/Documentation/internal-api-html/tagfile.xml',\n-        '../internal-api-html/',\n+        'internal-api-html/',\n     ),\n }\n \ndiff --git a/Documentation/index.rst b/Documentation/index.rst\nindex 251112fbdf5f..f6b9994c58c4 100644\n--- a/Documentation/index.rst\n+++ b/Documentation/index.rst\n@@ -4,28 +4,35 @@\n \n .. toctree::\n    :maxdepth: 1\n-   :caption: Contents:\n+   :caption: For Users\n+\n+   Introduction <self>\n+   Feature Requirements <feature_requirements>\n+   Application Writer's Guide <guides/application-developer>\n+   Python Bindings <python-bindings>\n+   Environment variables <environment_variables>\n+   Public-API <api-html/index>\n+\n+.. toctree::\n+   :maxdepth: 1\n+   :caption: For Developers\n \n-   Home <self>\n    Contribute <contributing>\n    Getting Started <getting-started>\n-\n-   Application Writer's Guide <guides/application-developer>\n    Camera Sensor Model <camera-sensor-model>\n-   Environment variables <environment_variables>\n-   Feature Requirements <feature_requirements>\n    IPA Writer's guide <guides/ipa>\n-   Lens driver requirements <lens_driver_requirements>\n    libcamera Architecture <libcamera_architecture>\n    Pipeline Handler Writer's Guide <guides/pipeline-handler>\n-   Python Bindings <python-bindings>\n-   Sensor driver requirements <sensor_driver_requirements>\n    SoftwareISP Benchmarking <software-isp-benchmarking>\n    Tracing guide <guides/tracing>\n-\n    Design document: AE <design/ae>\n+   Internal-API <internal-api-html/index>\n \n .. toctree::\n-   :hidden:\n+   :maxdepth: 1\n+   :caption: For System Integrators\n+\n+   Lens driver requirements <lens_driver_requirements>\n+   Sensor driver requirements <sensor_driver_requirements>\n+\n \n-   introduction\ndiff --git a/Documentation/introduction.rst b/Documentation/introduction.rst\nindex 82aa11a30f33..d76cebd05ee1 100644\n--- a/Documentation/introduction.rst\n+++ b/Documentation/introduction.rst\n@@ -6,12 +6,6 @@\n Introduction\n ************\n \n-.. toctree::\n-   :hidden:\n-\n-   API <api-html/index>\n-   Internal API <internal-api-html/index>\n-\n What is libcamera?\n ==================\n \ndiff --git a/Documentation/meson.build b/Documentation/meson.build\nindex f73407432fff..f9d17935749f 100644\n--- a/Documentation/meson.build\n+++ b/Documentation/meson.build\n@@ -13,6 +13,7 @@ if doxygen.found() and dot.found()\n     cdata = configuration_data()\n     cdata.set('VERSION', 'v@0@'.format(libcamera_git_version))\n     cdata.set('TOP_SRCDIR', meson.project_source_root())\n+    cdata.set('CURRENT_SRCDIR', meson.current_source_dir())\n     cdata.set('TOP_BUILDDIR', meson.project_build_root())\n     cdata.set('OUTPUT_DIR', meson.current_build_dir())\n     cdata.set('WARN_AS_ERROR', get_option('doc_werror') ? 'YES' : 'NO')\n@@ -150,6 +151,7 @@ if sphinx.found()\n     sphinx_conf_dir = fs.parent(sphinx_conf)\n \n     docs_sources = [\n+        'api-html/index.rst',\n         'camera-sensor-model.rst',\n         'code-of-conduct.rst',\n         'coding-style.rst',\n@@ -164,6 +166,7 @@ if sphinx.found()\n         'guides/pipeline-handler.rst',\n         'guides/tracing.rst',\n         'index.rst',\n+        'internal-api-html/index.rst',\n         'introduction.rst',\n         'lens_driver_requirements.rst',\n         'libcamera_architecture.rst',\n@@ -176,17 +179,27 @@ if sphinx.found()\n \n     release = 'release=v' + libcamera_git_version\n \n-    custom_target('documentation',\n+\n+\n+    documentation_sphinx = custom_target('documentation-sphinx',\n                   command : [sphinx, '-D', release, '-q', '-W', '-b', 'html',\n                              '-c', sphinx_conf_dir,\n-                             meson.current_source_dir(), '@OUTPUT@'],\n+                             meson.current_source_dir(), '@OUTDIR@/html'],\n                   input : docs_sources,\n-                  output : 'html',\n+                  output: 'sphinx-build',\n                   build_by_default : true,\n                   depends : [\n                       doxygen_public,\n                       doxygen_internal,\n-                  ],\n+                  ])\n+\n+    custom_target('documentation',\n+                  command : ['cp', '-r', '@OUTDIR@/api-html', '@OUTDIR@/internal-api-html', '@OUTDIR@/html'],\n+                  output : 'html',\n+                  depends: [documentation_sphinx],\n+                  build_by_default : true,\n+                  build_always_stale : true,\n+                  output: 'html',\n                   install : true,\n                   install_dir : doc_install_dir,\n                   install_tag : 'doc')\n",
    "prefixes": [
        "4/6"
    ]
}