[{"id":38885,"web_url":"https://patchwork.libcamera.org/comment/38885/","msgid":"<7e4d0a8f-672e-4b10-a90f-44a77f1ab457@ideasonboard.com>","date":"2026-05-13T07:31:47","subject":"Re: [PATCH] Documentation: Split public and internal post-install\n\tactions","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"Hi\n\n2026. 05. 13. 0:55 keltezéssel, Laurent Pinchart írta:\n> We move the Doxygen-generated API documentation to the Sphinx output\n> directory at installation time, in order to integrate the two parts of\n> the documentation together. This uses a post-install script, arguably as\n> a hack, for lack of a better solution ([1]).\n> \n> The post-install step does not specify tags, which prevents it from\n> running when installing the doc or doc-internal tags only. To fix it,\n> split it in two runs, one for the public and one for the internal API,\n> and tag them with 'doc' and 'doc-internal' respectively. As the script\n> is now called with a single API directory, simplify it and make it print\n> a more precise message.\n> \n> [1] See commit 4a9863e05397 (\"Documentation: Improve Sphinx and Doxygen\n> integration\") for a more detailed explanation.\n> \n> Reported-by: Stefan Klug <stefan.klug@ideasonboard.com>\n> Closes: https://gitlab.freedesktop.org/camera/libcamera/-/work_items/333\n> Suggested-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n>   Documentation/install-doxygen.sh | 11 ++++-------\n>   Documentation/meson.build        |  6 ++++--\n>   2 files changed, 8 insertions(+), 9 deletions(-)\n> \n> diff --git a/Documentation/install-doxygen.sh b/Documentation/install-doxygen.sh\n> index ea5a19dc8fda..091f356fe529 100755\n> --- a/Documentation/install-doxygen.sh\n> +++ b/Documentation/install-doxygen.sh\n> @@ -7,12 +7,9 @@\n>   # Move Doxygen-generated API documentation to correct location\n>   \n>   doc_dir=\"${MESON_INSTALL_DESTDIR_PREFIX}/$1\"\n> -shift\n> -dirs=\"$*\"\n> +api_dir=\"$2\"\n>   \n> -echo \"Moving API documentation\"\n> +echo \"Moving Doxygen ${api_dir} API documentation\"\n>   \n> -for dir in $dirs ; do\n> -\trm -r \"${doc_dir}/html/${dir}\"\n> -\tmv \"${doc_dir}/${dir}\" \"${doc_dir}/html/\"\n> -done\n> +rm -r \"${doc_dir}/html/${api_dir}\"\n\nWith only `--tags doc-internal`, this fails since `html` does not exist.\nShould this use `-rf` ?\n\n\n> +mv \"${doc_dir}/${api_dir}\" \"${doc_dir}/html/\"\n\nWhat should happen when only `--tags doc-internal` is used? Currently\nthis copies the documentation right into `html/`. I suppose that is\nprobably a reasonable choice. Or we can keep the `rm` invocation as is\nand let it fail -> `--tags doc-internal` only is considered unsupported.\n\n\n> diff --git a/Documentation/meson.build b/Documentation/meson.build\n> index 51899c19c166..84c05091d5b5 100644\n> --- a/Documentation/meson.build\n> +++ b/Documentation/meson.build\n> @@ -194,8 +194,10 @@ if sphinx.found()\n>                     install_dir : doc_install_dir,\n>                     install_tag : 'doc')\n>   \n> -    meson.add_install_script('install-doxygen.sh', doc_install_dir,\n> -                             'public-api', 'internal-api')\n> +    meson.add_install_script('install-doxygen.sh', doc_install_dir, 'public-api',\n> +                             install_tag : 'doc')\n> +    meson.add_install_script('install-doxygen.sh', doc_install_dir, 'internal-api',\n> +                             install_tag : 'doc-internal')\n>   \n>       custom_target('documentation-linkcheck',\n>                     command : [sphinx, '-W', '-b', 'linkcheck',\n> \n> base-commit: b0dbd5100b1b1665dd2bc839d06263d55a89a6bd","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 CF331BDB1C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 13 May 2026 07:31:53 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 5575C63025;\n\tWed, 13 May 2026 09:31:52 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 8619F62FD3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 13 May 2026 09:31:51 +0200 (CEST)","from [192.168.33.19] (185.182.215.166.nat.pool.zt.hu\n\t[185.182.215.166])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id E28A6BB;\n\tWed, 13 May 2026 09:31:42 +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=\"rlONytDw\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1778657503;\n\tbh=zMEZlNWDxkHarASDFGP6gClA3Utd+BUGEKT1klyks8k=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=rlONytDwj1xutdX3NPLJRGAQMdGQX1cLoOMXe5bYXG/s6legdI3fL2LdUr7si7gje\n\tfR7rTs1GFp67Jr77WlUGL1uGOtakNkGj5qAyyr7ZswXSCht46OPjKlyfg2aIckOTC0\n\t4YhFkMQ+qOZn1ylXGAysGYYmSLUjAIZqdqzH6dLI=","Message-ID":"<7e4d0a8f-672e-4b10-a90f-44a77f1ab457@ideasonboard.com>","Date":"Wed, 13 May 2026 09:31:47 +0200","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH] Documentation: Split public and internal post-install\n\tactions","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Cc":"Stefan Klug <stefan.klug@ideasonboard.com>","References":"<20260512225505.234522-1-laurent.pinchart@ideasonboard.com>","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Content-Language":"en-US, hu-HU","In-Reply-To":"<20260512225505.234522-1-laurent.pinchart@ideasonboard.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","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>"}},{"id":38886,"web_url":"https://patchwork.libcamera.org/comment/38886/","msgid":"<177865873755.2119687.8659118874849856372@localhost>","date":"2026-05-13T07:52:17","subject":"Re: [PATCH] Documentation: Split public and internal post-install\n\tactions","submitter":{"id":184,"url":"https://patchwork.libcamera.org/api/people/184/","name":"Stefan Klug","email":"stefan.klug@ideasonboard.com"},"content":"Hi,\n\nQuoting Barnabás Pőcze (2026-05-13 09:31:47)\n> Hi\n> \n> 2026. 05. 13. 0:55 keltezéssel, Laurent Pinchart írta:\n> > We move the Doxygen-generated API documentation to the Sphinx output\n> > directory at installation time, in order to integrate the two parts of\n> > the documentation together. This uses a post-install script, arguably as\n> > a hack, for lack of a better solution ([1]).\n> > \n> > The post-install step does not specify tags, which prevents it from\n> > running when installing the doc or doc-internal tags only. To fix it,\n> > split it in two runs, one for the public and one for the internal API,\n> > and tag them with 'doc' and 'doc-internal' respectively. As the script\n> > is now called with a single API directory, simplify it and make it print\n> > a more precise message.\n> > \n> > [1] See commit 4a9863e05397 (\"Documentation: Improve Sphinx and Doxygen\n> > integration\") for a more detailed explanation.\n> > \n> > Reported-by: Stefan Klug <stefan.klug@ideasonboard.com>\n> > Closes: https://gitlab.freedesktop.org/camera/libcamera/-/work_items/333\n> > Suggested-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n> > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > ---\n> >   Documentation/install-doxygen.sh | 11 ++++-------\n> >   Documentation/meson.build        |  6 ++++--\n> >   2 files changed, 8 insertions(+), 9 deletions(-)\n> > \n> > diff --git a/Documentation/install-doxygen.sh b/Documentation/install-doxygen.sh\n> > index ea5a19dc8fda..091f356fe529 100755\n> > --- a/Documentation/install-doxygen.sh\n> > +++ b/Documentation/install-doxygen.sh\n> > @@ -7,12 +7,9 @@\n> >   # Move Doxygen-generated API documentation to correct location\n> >   \n> >   doc_dir=\"${MESON_INSTALL_DESTDIR_PREFIX}/$1\"\n> > -shift\n> > -dirs=\"$*\"\n> > +api_dir=\"$2\"\n> >   \n> > -echo \"Moving API documentation\"\n> > +echo \"Moving Doxygen ${api_dir} API documentation\"\n> >   \n> > -for dir in $dirs ; do\n> > -     rm -r \"${doc_dir}/html/${dir}\"\n> > -     mv \"${doc_dir}/${dir}\" \"${doc_dir}/html/\"\n> > -done\n> > +rm -r \"${doc_dir}/html/${api_dir}\"\n> \n> With only `--tags doc-internal`, this fails since `html` does not exist.\n> Should this use `-rf` ?\n\nI think that would be good. This script should not fail if it misses a\nfile.\n\n> \n> \n> > +mv \"${doc_dir}/${api_dir}\" \"${doc_dir}/html/\"\n> \n> What should happen when only `--tags doc-internal` is used? Currently\n> this copies the documentation right into `html/`. I suppose that is\n> probably a reasonable choice. Or we can keep the `rm` invocation as is\n> and let it fail -> `--tags doc-internal` only is considered unsupported.\n\nI don't think we should install the internal docs directly into html.\nThat will create a big mess, if someone accidentally did that and then\ninstalls with --tags doc.\n\nSo I think we should add an unconditional\nmkdir -p ${doc_dir}/html\nat the beginning.\n\nOr what about dropping the doc-internal tag? Is there really a use-case\nwhere that is needed? The normal users will all just run 'meson install'\nwithout --tags and the professional users will likely want the internal\ndocs also.\n\nBest regards,\nStefan\n\n> \n> \n> > diff --git a/Documentation/meson.build b/Documentation/meson.build\n> > index 51899c19c166..84c05091d5b5 100644\n> > --- a/Documentation/meson.build\n> > +++ b/Documentation/meson.build\n> > @@ -194,8 +194,10 @@ if sphinx.found()\n> >                     install_dir : doc_install_dir,\n> >                     install_tag : 'doc')\n> >   \n> > -    meson.add_install_script('install-doxygen.sh', doc_install_dir,\n> > -                             'public-api', 'internal-api')\n> > +    meson.add_install_script('install-doxygen.sh', doc_install_dir, 'public-api',\n> > +                             install_tag : 'doc')\n> > +    meson.add_install_script('install-doxygen.sh', doc_install_dir, 'internal-api',\n> > +                             install_tag : 'doc-internal')\n> >   \n> >       custom_target('documentation-linkcheck',\n> >                     command : [sphinx, '-W', '-b', 'linkcheck',\n> > \n> > base-commit: b0dbd5100b1b1665dd2bc839d06263d55a89a6bd\n>","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 369A6BDCBD\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 13 May 2026 07:52:23 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D6BA16301E;\n\tWed, 13 May 2026 09:52:21 +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 998A662FD3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 13 May 2026 09:52:20 +0200 (CEST)","from ideasonboard.com (unknown\n\t[IPv6:2a00:6020:448c:6c00:6790:33cc:5304:20da])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 2D5E2A06;\n\tWed, 13 May 2026 09:52:12 +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=\"VK92cY80\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1778658732;\n\tbh=en0f9zg2pWUa5WY8Icy+2Ez7LABOCeYHSBUlvzIW9kc=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=VK92cY800jvwB/7Rj0fFcy5Ey6gaRwRXZ2x69HC4mlNx8jQMB0bPqpbDZV+1GeCX4\n\tfygVFIFKJkRH7R63X+A3R7DuQpF+8ci21xph4wI0IzMYHxMMU1lEMAtKINX30wJyDc\n\tL9jXtt5ckHuGBo+oepMk4MiGpPD9Jmvdl4AXxzEc=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<7e4d0a8f-672e-4b10-a90f-44a77f1ab457@ideasonboard.com>","References":"<20260512225505.234522-1-laurent.pinchart@ideasonboard.com>\n\t<7e4d0a8f-672e-4b10-a90f-44a77f1ab457@ideasonboard.com>","Subject":"Re: [PATCH] Documentation: Split public and internal post-install\n\tactions","From":"Stefan Klug <stefan.klug@ideasonboard.com>","Cc":"","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>,\n\tLaurent Pinchart <laurent.pinchart@ideasonboard.com>, \n\tlibcamera-devel@lists.libcamera.org","Date":"Wed, 13 May 2026 09:52:17 +0200","Message-ID":"<177865873755.2119687.8659118874849856372@localhost>","User-Agent":"alot/0.12.dev8+g2c003385c862.d20250602","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>"}},{"id":38888,"web_url":"https://patchwork.libcamera.org/comment/38888/","msgid":"<20260513125930.GA256222@killaraus.ideasonboard.com>","date":"2026-05-13T12:59:30","subject":"Re: [PATCH] Documentation: Split public and internal post-install\n\tactions","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"On Wed, May 13, 2026 at 09:52:17AM +0200, Stefan Klug wrote:\n> Quoting Barnabás Pőcze (2026-05-13 09:31:47)\n> > 2026. 05. 13. 0:55 keltezéssel, Laurent Pinchart írta:\n> > > We move the Doxygen-generated API documentation to the Sphinx output\n> > > directory at installation time, in order to integrate the two parts of\n> > > the documentation together. This uses a post-install script, arguably as\n> > > a hack, for lack of a better solution ([1]).\n> > > \n> > > The post-install step does not specify tags, which prevents it from\n> > > running when installing the doc or doc-internal tags only. To fix it,\n> > > split it in two runs, one for the public and one for the internal API,\n> > > and tag them with 'doc' and 'doc-internal' respectively. As the script\n> > > is now called with a single API directory, simplify it and make it print\n> > > a more precise message.\n> > > \n> > > [1] See commit 4a9863e05397 (\"Documentation: Improve Sphinx and Doxygen\n> > > integration\") for a more detailed explanation.\n> > > \n> > > Reported-by: Stefan Klug <stefan.klug@ideasonboard.com>\n> > > Closes: https://gitlab.freedesktop.org/camera/libcamera/-/work_items/333\n> > > Suggested-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n> > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > > ---\n> > >   Documentation/install-doxygen.sh | 11 ++++-------\n> > >   Documentation/meson.build        |  6 ++++--\n> > >   2 files changed, 8 insertions(+), 9 deletions(-)\n> > > \n> > > diff --git a/Documentation/install-doxygen.sh b/Documentation/install-doxygen.sh\n> > > index ea5a19dc8fda..091f356fe529 100755\n> > > --- a/Documentation/install-doxygen.sh\n> > > +++ b/Documentation/install-doxygen.sh\n> > > @@ -7,12 +7,9 @@\n> > >   # Move Doxygen-generated API documentation to correct location\n> > >   \n> > >   doc_dir=\"${MESON_INSTALL_DESTDIR_PREFIX}/$1\"\n> > > -shift\n> > > -dirs=\"$*\"\n> > > +api_dir=\"$2\"\n> > >   \n> > > -echo \"Moving API documentation\"\n> > > +echo \"Moving Doxygen ${api_dir} API documentation\"\n> > >   \n> > > -for dir in $dirs ; do\n> > > -     rm -r \"${doc_dir}/html/${dir}\"\n> > > -     mv \"${doc_dir}/${dir}\" \"${doc_dir}/html/\"\n> > > -done\n> > > +rm -r \"${doc_dir}/html/${api_dir}\"\n> > \n> > With only `--tags doc-internal`, this fails since `html` does not exist.\n> > Should this use `-rf` ?\n> \n> I think that would be good. This script should not fail if it misses a\n> file.\n> \n> > > +mv \"${doc_dir}/${api_dir}\" \"${doc_dir}/html/\"\n> > \n> > What should happen when only `--tags doc-internal` is used? Currently\n> > this copies the documentation right into `html/`. I suppose that is\n> > probably a reasonable choice. Or we can keep the `rm` invocation as is\n> > and let it fail -> `--tags doc-internal` only is considered unsupported.\n> \n> I don't think we should install the internal docs directly into html.\n> That will create a big mess, if someone accidentally did that and then\n> installs with --tags doc.\n> \n> So I think we should add an unconditional\n> mkdir -p ${doc_dir}/html\n> at the beginning.\n\nSo I gave this a try:\n\ndiff --git a/Documentation/install-doxygen.sh b/Documentation/install-doxygen.sh\nindex 091f356fe529..0981e002787f 100755\n--- a/Documentation/install-doxygen.sh\n+++ b/Documentation/install-doxygen.sh\n@@ -11,5 +11,6 @@ api_dir=\"$2\"\n\n echo \"Moving Doxygen ${api_dir} API documentation\"\n\n-rm -r \"${doc_dir}/html/${api_dir}\"\n+mkdir -p \"${doc_dir}/html/\"\n+rm -rf \"${doc_dir}/html/${api_dir}\"\n mv \"${doc_dir}/${api_dir}\" \"${doc_dir}/html/\"\n\n\nHere's the result:\n\n$ meson setup --auto-features disabled \\\n\t-D pipelines=[] \\\n\t-D test=false \\\n\t-D documentation=enabled \\\n\t-D doc_werror=true \\\n\tbuild/doctest\n...\n$ meson compile -C build/doctest/ documentation\n[...]\n[26/26] Generating Documentation/documentation with a custom command\n$ meson install -C build/doctest \\\n\t--tags doc-internal \\\n\t--destdir install \\\n\t--no-rebuild\n[...]\nMoving Doxygen internal-api API documentation\n$ ls -l build/doctest/install/usr/local/share/doc/libcamera-0.7.1/html/\ntotal 180\ndrwxr-xr-x 3 laurent laurent 139264 May 13 15:40 internal-api\n$ meson install -C build/doctest \\\n\t--tags doc \\\n\t--destdir install \\\n\t--no-rebuild\n[...]\nMoving Doxygen public-api API documentation\n$ ls -l build/doctest/install/usr/local/share/doc/libcamera-0.7.1/html/\ntotal 764\n-rw-r--r-- 1 laurent laurent  26703 May 13 15:40 camera-sensor-model.html\n-rw-r--r-- 1 laurent laurent  21583 May 13 15:40 code-of-conduct.html\n-rw-r--r-- 1 laurent laurent  42563 May 13 15:40 coding-style.html\n-rw-r--r-- 1 laurent laurent  24843 May 13 15:40 contributing.html\ndrwxr-xr-x 2 laurent laurent     29 May 13 15:41 design\n-rw-r--r-- 1 laurent laurent  25728 May 13 15:40 feature_requirements.html\n-rw-r--r-- 1 laurent laurent  13686 May 13 15:40 genindex.html\n-rw-r--r-- 1 laurent laurent  24587 May 13 15:40 getting-started.html\ndrwxr-xr-x 2 laurent laurent    125 May 13 15:41 guides\ndrwxr-xr-x 2 laurent laurent   4096 May 13 15:41 _images\n-rw-r--r-- 1 laurent laurent  34142 May 13 15:40 index.html\ndrwxr-xr-x 3 laurent laurent 139264 May 13 15:41 internal-api\n-rw-r--r-- 1 laurent laurent  30900 May 13 15:40 introduction.html\n-rw-r--r-- 1 laurent laurent  23715 May 13 15:40 isp-feature-matrix.html\n-rw-r--r-- 1 laurent laurent  16271 May 13 15:40 lens_driver_requirements.html\n-rw-r--r-- 1 laurent laurent  30120 May 13 15:40 libcamera_architecture.html\n-rw-r--r-- 1 laurent laurent    990 May 13 15:40 objects.inv\ndrwxr-xr-x 3 laurent laurent  28672 May 13 15:41 public-api\n-rw-r--r-- 1 laurent laurent  19906 May 13 15:40 python-bindings.html\n-rw-r--r-- 1 laurent laurent  37285 May 13 15:40 runtime_configuration.html\n-rw-r--r-- 1 laurent laurent  12738 May 13 15:40 search.html\n-rw-r--r-- 1 laurent laurent  49640 May 13 15:40 searchindex.js\n-rw-r--r-- 1 laurent laurent  20641 May 13 15:40 sensor_driver_requirements.html\n-rw-r--r-- 1 laurent laurent  15305 May 13 15:40 sensor-support.html\n-rw-r--r-- 1 laurent laurent  19656 May 13 15:40 software-isp-benchmarking.html\ndrwxr-xr-x 6 laurent laurent   4096 May 13 15:41 _sources\ndrwxr-xr-x 7 laurent laurent   4096 May 13 15:41 _static\n\n\n*But* there's a hidden bug there. The html/internal-api/index.html file\nis now the placeholder generated by Sphinx, overwritten when installing\nthe 'doc' tag.\n\n> Or what about dropping the doc-internal tag? Is there really a use-case\n> where that is needed? The normal users will all just run 'meson install'\n> without --tags and the professional users will likely want the internal\n> docs also.\n\nThe internal API documentation is meant for libcamera developers, while\nthe public API documentation is meant for application developers. I\nwould therefore expect distributions to package the latter but not the\nformer. When working on libcamera itself, a developer will have access\nto the source code, there should be no reason for them to read\ndocumentation installed by the distribution. Given that the internal API\nwill change much faster than the public API, anything provided by the\ndistribution, even if the major version matches, will be outdated.\nThat's why there's a doc-internal tag, to facilitate packaging of the\npublic API documentation without the internal API.\n\nI'd be tempted to stop installing the internal API documentation\ncompletely. Is anyone consuming that documentation outside of the build\ndirectory ?\n\nI'll experiment with a different approach for the CI documentation build\nthat will not require this patch.\n\n> > > diff --git a/Documentation/meson.build b/Documentation/meson.build\n> > > index 51899c19c166..84c05091d5b5 100644\n> > > --- a/Documentation/meson.build\n> > > +++ b/Documentation/meson.build\n> > > @@ -194,8 +194,10 @@ if sphinx.found()\n> > >                     install_dir : doc_install_dir,\n> > >                     install_tag : 'doc')\n> > >   \n> > > -    meson.add_install_script('install-doxygen.sh', doc_install_dir,\n> > > -                             'public-api', 'internal-api')\n> > > +    meson.add_install_script('install-doxygen.sh', doc_install_dir, 'public-api',\n> > > +                             install_tag : 'doc')\n> > > +    meson.add_install_script('install-doxygen.sh', doc_install_dir, 'internal-api',\n> > > +                             install_tag : 'doc-internal')\n> > >   \n> > >       custom_target('documentation-linkcheck',\n> > >                     command : [sphinx, '-W', '-b', 'linkcheck',\n> > > \n> > > base-commit: b0dbd5100b1b1665dd2bc839d06263d55a89a6bd","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 0370DBDB1C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 13 May 2026 12:59:34 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 19F9862FE8;\n\tWed, 13 May 2026 14:59:34 +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 C517E62010\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 13 May 2026 14:59:31 +0200 (CEST)","from killaraus.ideasonboard.com\n\t(2001-14ba-70f3-e800--a06.rev.dnainternet.fi\n\t[IPv6:2001:14ba:70f3:e800::a06])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 0050F557;\n\tWed, 13 May 2026 14:59:22 +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=\"RdNBPpsC\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1778677163;\n\tbh=l8+TQNZHDG5iUdW+7d8amnBQGISzXKFqprzO0zbeCLw=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=RdNBPpsCEofo1HNLj9k9dn5r40pSt3aRWk8Ry8tGTAhPLtzfiwKQc/xXFw0sj0cxO\n\tqFh3wCw1v4HT90NbFT9Ll3k8xfQXfTmGce2SljxXDkjlKUI8is2E0N3Ccbsm5cKTqw\n\tJahtp0AMpU+GKyrCiXLE+bEGvTN9cypmKjZq8Ru4=","Date":"Wed, 13 May 2026 15:59:30 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Stefan Klug <stefan.klug@ideasonboard.com>","Cc":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH] Documentation: Split public and internal post-install\n\tactions","Message-ID":"<20260513125930.GA256222@killaraus.ideasonboard.com>","References":"<20260512225505.234522-1-laurent.pinchart@ideasonboard.com>\n\t<7e4d0a8f-672e-4b10-a90f-44a77f1ab457@ideasonboard.com>\n\t<177865873755.2119687.8659118874849856372@localhost>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<177865873755.2119687.8659118874849856372@localhost>","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>"}}]