{"id":19926,"url":"https://patchwork.libcamera.org/api/1.1/patches/19926/?format=json","web_url":"https://patchwork.libcamera.org/patch/19926/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/1.1/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20240423103034.364150-12-mzamazal@redhat.com>","date":"2024-04-23T10:30:26","name":"[v2,11/13] config: Add global configuration file documentation","commit_ref":null,"pull_url":null,"state":"superseded","archived":false,"hash":"5eb623079605e12bc9481db9e0997df3d3d09206","submitter":{"id":177,"url":"https://patchwork.libcamera.org/api/1.1/people/177/?format=json","name":"Milan Zamazal","email":"mzamazal@redhat.com"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/19926/mbox/","series":[{"id":4267,"url":"https://patchwork.libcamera.org/api/1.1/series/4267/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=4267","date":"2024-04-23T10:30:15","name":"Add global configuration file","version":2,"mbox":"https://patchwork.libcamera.org/series/4267/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/19926/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/19926/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 C7D5BBE08B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 23 Apr 2024 10:31:42 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 565176342E;\n\tTue, 23 Apr 2024 12:31:42 +0200 (CEST)","from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.129.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 2C122633ED\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 23 Apr 2024 12:31:32 +0200 (CEST)","from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73])\n\tby relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,\n\tcipher=TLS_AES_256_GCM_SHA384) id us-mta-33-LwsQnSgcPfilU6fITyMY8g-1;\n\tTue, 23 Apr 2024 06:31:29 -0400","from smtp.corp.redhat.com\n\t(int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\tkey-exchange X25519 server-signature RSA-PSS (2048 bits)\n\tserver-digest SHA256) (No client certificate requested)\n\tby mimecast-mx02.redhat.com (Postfix) with ESMTPS id 96E023C0ED4B;\n\tTue, 23 Apr 2024 10:31:29 +0000 (UTC)","from nuthatch.redhat.com (unknown [10.45.225.63])\n\tby smtp.corp.redhat.com (Postfix) with ESMTP id A51DF1C060D0;\n\tTue, 23 Apr 2024 10:31:28 +0000 (UTC)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=redhat.com header.i=@redhat.com\n\theader.b=\"eyI7jX5L\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1713868291;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\tto:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\tcontent-transfer-encoding:content-transfer-encoding:\n\tin-reply-to:in-reply-to:references:references;\n\tbh=ZTbw4do6UUbclIccaLrZ+AbTwZ279YD/xIq/O9saBy4=;\n\tb=eyI7jX5LIrzkThC3pRlVKTE3Jday0iR3EmBmG176bmnyR9nTe10WTwQ/3DjpwLd1kLyviG\n\tvNQym6XirKFrR39APYdd4J7btoc09k/ByJB+oJWfAeHXhwbBX4KkfgdscVIpKAYXNxW6CM\n\tXnW7ClV54024TT3GCxxAI56hJq5fE2o=","X-MC-Unique":"LwsQnSgcPfilU6fITyMY8g-1","From":"Milan Zamazal <mzamazal@redhat.com>","To":"libcamera-devel@lists.libcamera.org","Cc":"Milan Zamazal <mzamazal@redhat.com>,\n\tNaushir Patuck <naush@raspberrypi.com>","Subject":"[PATCH v2 11/13] config: Add global configuration file documentation","Date":"Tue, 23 Apr 2024 12:30:26 +0200","Message-ID":"<20240423103034.364150-12-mzamazal@redhat.com>","In-Reply-To":"<20240423103034.364150-1-mzamazal@redhat.com>","References":"<20240423103034.364150-1-mzamazal@redhat.com>","MIME-Version":"1.0","X-Scanned-By":"MIMEDefang 3.4.1 on 10.11.54.7","X-Mimecast-Spam-Score":"0","X-Mimecast-Originator":"redhat.com","Content-Transfer-Encoding":"8bit","Content-Type":"text/plain; charset=\"US-ASCII\"; x-default=true","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":"Extend (and rename) the documentation of environment variables with\ninformation about the configuration file.\n\nSigned-off-by: Milan Zamazal <mzamazal@redhat.com>\n---\n Documentation/index.rst                       |  2 +-\n Documentation/meson.build                     |  2 +-\n ...ariables.rst => runtime_configuration.rst} | 96 ++++++++++++++++---\n 3 files changed, 87 insertions(+), 13 deletions(-)\n rename Documentation/{environment_variables.rst => runtime_configuration.rst} (65%)","diff":"diff --git a/Documentation/index.rst b/Documentation/index.rst\nindex 5442ae75..aa277b85 100644\n--- a/Documentation/index.rst\n+++ b/Documentation/index.rst\n@@ -19,7 +19,7 @@\n    Pipeline Handler Writer's Guide <guides/pipeline-handler>\n    IPA Writer's guide <guides/ipa>\n    Tracing guide <guides/tracing>\n-   Environment variables <environment_variables>\n+   Runtime configuration <runtime_configuration>\n    Sensor driver requirements <sensor_driver_requirements>\n    Lens driver requirements <lens_driver_requirements>\n    Python Bindings <python-bindings>\ndiff --git a/Documentation/meson.build b/Documentation/meson.build\nindex 3872e0a8..f8ca63eb 100644\n--- a/Documentation/meson.build\n+++ b/Documentation/meson.build\n@@ -70,7 +70,6 @@ if sphinx.found()\n         'conf.py',\n         'contributing.rst',\n         'docs.rst',\n-        'environment_variables.rst',\n         'guides/application-developer.rst',\n         'guides/introduction.rst',\n         'guides/ipa.rst',\n@@ -79,6 +78,7 @@ if sphinx.found()\n         'index.rst',\n         'lens_driver_requirements.rst',\n         'python-bindings.rst',\n+        'runtime_configuration.rst',\n         'sensor_driver_requirements.rst',\n         'software-isp-benchmarking.rst',\n        '../README.rst',\ndiff --git a/Documentation/environment_variables.rst b/Documentation/runtime_configuration.rst\nsimilarity index 65%\nrename from Documentation/environment_variables.rst\nrename to Documentation/runtime_configuration.rst\nindex a9b230bc..d3972363 100644\n--- a/Documentation/environment_variables.rst\n+++ b/Documentation/runtime_configuration.rst\n@@ -1,43 +1,117 @@\n .. SPDX-License-Identifier: CC-BY-SA-4.0\n \n-Environment variables\n+Runtime configuration\n =====================\n \n-The libcamera behaviour can be tuned through environment variables. This\n-document lists all the available variables and describes their usage.\n+The libcamera behaviour can be tuned through a configuration file or\n+environment variables. This document lists all the configuration options\n+and describes their usage.\n+\n+General rules\n+-------------\n+\n+The configuration file is looked up in the following locations, in this\n+order:\n+\n+- $XDG_CONFIG_HOME/libcamera/configuration.yaml\n+- LIBCAMERA_SYSCONF_DIR/configuration.yaml\n+- /etc/libcamera/configuration.yaml\n+\n+The first configuration file found wins, contingent configuration files\n+in other locations are ignored.\n+\n+Settings in environment variables take precedence over settings in\n+configuration files. This allows overriding behaviour temporarily\n+without the need to modify configuration files.\n+\n+Configuration options\n+---------------------\n+\n+Here is an overview of the available configuration options, in the YAML\n+file structure:\n+\n+::\n+\n+  configuration:\n+     ipa:\n+       config_paths: # full paths to directories, separated by colons\n+       force_isolation: # true/false\n+       module_paths: # full paths to directories, separated by colons\n+    log:\n+      color: # true/false for color/no-color\n+      file: # either `syslog` or a full path\n+      levels: # see Log levels\n+    pipelines:\n+      rkisp1:\n+        tuning_file: # full path\n+      rpi:\n+        config_file: # full path\n+        tuning_file: # full path\n+      simple:\n+        supported_devices:\n+        - driver: # driver name, e.g. `mxc-isi`\n+          software_isp: # true/false\n+\n+Configuration file example\n+--------------------------\n+\n+::\n+\n+   ---\n+   version: 1\n+   configuration:\n+     ipa:\n+       config_paths: /home/user/.libcamera/share/ipa:/opt/libcamera/vendor/share/ipa\n+       module_paths: /home/user/.libcamera/lib:/opt/libcamera/vendor/lib\n+       force_isolation: true\n+     log:\n+       color: false\n+       file: syslog\n+       levels: 'IPAManager:DEBUG'\n+     pipelines:\n+       rkisp1:\n+         tuning_file: /home/user/.libcamera/rkisp1.yaml\n+       rpi:\n+         config_file: /usr/local/share/libcamera/pipeline/rpi/vc4/minimal_mem.yaml\n+       simple:\n+         supported_devices:\n+         - driver: mxc-isi\n+           software_isp: true\n \n List of variables\n -----------------\n \n-LIBCAMERA_LOG_FILE\n+The corresponding configuration file paths are listed in parentheses.\n+\n+LIBCAMERA_LOG_FILE (log.file)\n    The custom destination for log output.\n \n    Example value: ``/home/{user}/camera_log.log``\n \n-LIBCAMERA_LOG_LEVELS\n+LIBCAMERA_LOG_LEVELS (log.levels)\n    Configure the verbosity of log messages for different categories (`more <Log levels_>`__).\n \n    Example value: ``*:DEBUG``\n \n-LIBCAMERA_LOG_NO_COLOR\n+LIBCAMERA_LOG_NO_COLOR (log.color)\n    Disable coloring of log messages (`more <Notes about debugging_>`__).\n \n-LIBCAMERA_IPA_CONFIG_PATH\n+LIBCAMERA_IPA_CONFIG_PATH (ipa.config_paths)\n    Define custom search locations for IPA configurations (`more <IPA configuration_>`__).\n \n    Example value: ``${HOME}/.libcamera/share/ipa:/opt/libcamera/vendor/share/ipa``\n \n-LIBCAMERA_IPA_FORCE_ISOLATION\n+LIBCAMERA_IPA_FORCE_ISOLATION (ipa.force_isolation)\n    When set to a non-empty string, force process isolation of all IPA modules.\n \n    Example value: ``1``\n \n-LIBCAMERA_IPA_MODULE_PATH\n+LIBCAMERA_IPA_MODULE_PATH (ipa.module_paths)\n    Define custom search locations for IPA modules (`more <IPA module_>`__).\n \n    Example value: ``${HOME}/.libcamera/lib:/opt/libcamera/vendor/lib``\n \n-LIBCAMERA_RPI_CONFIG_FILE\n+LIBCAMERA_RPI_CONFIG_FILE (pipelines.rpi.config_file)\n    Define a custom configuration file to use in the Raspberry Pi pipeline handler.\n \n    Example value: ``/usr/local/share/libcamera/pipeline/rpi/vc4/minimal_mem.yaml``\n@@ -136,7 +210,7 @@ code.\n IPA configuration\n ~~~~~~~~~~~~~~~~~\n \n-IPA modules use configuration files to store parameters. The format and\n+IPA modules use their own configuration files to store parameters. The format and\n contents of the configuration files is specific to the IPA module. They usually\n contain tuning parameters for the algorithms, in JSON format.\n \n","prefixes":["v2","11/13"]}