[{"id":34090,"web_url":"https://patchwork.libcamera.org/comment/34090/","msgid":"<174609599381.299497.17066400890299387814@ping.linuxembedded.co.uk>","date":"2025-05-01T10:39:53","subject":"Re: [PATCH v8 01/15] yaml: Move yaml_parser.cpp to base","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Milan Zamazal (2025-04-30 13:14:34)\n> Global configuration, which uses the YAML parser, will be in base.  Thus\n> YAML parser must be moved to base too.\n> \n> Indentation is changed in one place of the moved file to make the\n> autoformatter and checkstyle.py happy.\n> \n> Signed-off-by: Milan Zamazal <mzamazal@redhat.com>\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n> ---\n>  src/libcamera/base/meson.build           | 14 ++++++++++++++\n>  src/libcamera/{ => base}/yaml_parser.cpp | 13 ++++++-------\n>  src/libcamera/meson.build                | 14 --------------\n>  3 files changed, 20 insertions(+), 21 deletions(-)\n>  rename src/libcamera/{ => base}/yaml_parser.cpp (98%)\n> \n> diff --git a/src/libcamera/base/meson.build b/src/libcamera/base/meson.build\n> index a742dfdf..94843eb9 100644\n> --- a/src/libcamera/base/meson.build\n> +++ b/src/libcamera/base/meson.build\n> @@ -24,10 +24,12 @@ libcamera_base_internal_sources = files([\n>      'thread.cpp',\n>      'timer.cpp',\n>      'utils.cpp',\n> +    'yaml_parser.cpp',\n>  ])\n>  \n>  libdw = dependency('libdw', required : false)\n>  libunwind = dependency('libunwind', required : false)\n> +libyaml = dependency('yaml-0.1', required : false)\n>  \n>  if cc.has_header_symbol('execinfo.h', 'backtrace')\n>      config_h.set('HAVE_BACKTRACE', 1)\n> @@ -41,11 +43,23 @@ if libunwind.found()\n>      config_h.set('HAVE_UNWIND', 1)\n>  endif\n>  \n> +# Fallback to a subproject if libyaml isn't found, as it's not packaged in AOSP.\n> +if not libyaml.found()\n> +    cmake = import('cmake')\n> +\n> +    libyaml_vars = cmake.subproject_options()\n> +    libyaml_vars.add_cmake_defines({'CMAKE_POSITION_INDEPENDENT_CODE': 'ON'})\n> +    libyaml_vars.append_compile_args('c', '-Wno-unused-value')\n> +    libyaml_wrap = cmake.subproject('libyaml', options : libyaml_vars)\n> +    libyaml = libyaml_wrap.dependency('yaml')\n> +endif\n> +\n>  libcamera_base_deps = [\n>      libatomic,\n>      libdw,\n>      libthreads,\n>      libunwind,\n> +    libyaml,\n>  ]\n>  \n>  # Internal components must use the libcamera_base_private dependency to enable\n> diff --git a/src/libcamera/yaml_parser.cpp b/src/libcamera/base/yaml_parser.cpp\n> similarity index 98%\n> rename from src/libcamera/yaml_parser.cpp\n> rename to src/libcamera/base/yaml_parser.cpp\n> index a5e42461..13111faa 100644\n> --- a/src/libcamera/yaml_parser.cpp\n> +++ b/src/libcamera/base/yaml_parser.cpp\n> @@ -149,13 +149,12 @@ YamlObject::Getter<bool>::get(const YamlObject &obj) const\n>  \n>  template<typename T>\n>  struct YamlObject::Getter<T, std::enable_if_t<\n> -       std::is_same_v<int8_t, T> ||\n> -       std::is_same_v<uint8_t, T> ||\n> -       std::is_same_v<int16_t, T> ||\n> -       std::is_same_v<uint16_t, T> ||\n> -       std::is_same_v<int32_t, T> ||\n> -       std::is_same_v<uint32_t, T>>>\n> -{\n> +                                    std::is_same_v<int8_t, T> ||\n> +                                    std::is_same_v<uint8_t, T> ||\n> +                                    std::is_same_v<int16_t, T> ||\n> +                                    std::is_same_v<uint16_t, T> ||\n> +                                    std::is_same_v<int32_t, T> ||\n> +                                    std::is_same_v<uint32_t, T>>> {\n>         std::optional<T> get(const YamlObject &obj) const\n>         {\n>                 if (obj.type_ != Type::Value)\n> diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build\n> index 800d4080..e3f382fa 100644\n> --- a/src/libcamera/meson.build\n> +++ b/src/libcamera/meson.build\n> @@ -55,7 +55,6 @@ libcamera_internal_sources = files([\n>      'v4l2_subdevice.cpp',\n>      'v4l2_videodevice.cpp',\n>      'vector.cpp',\n> -    'yaml_parser.cpp',\n>  ])\n>  \n>  includes = [\n> @@ -83,7 +82,6 @@ if not cc.has_function('dlopen')\n>      libdl = cc.find_library('dl')\n>  endif\n>  libudev = dependency('libudev', required : get_option('udev'))\n> -libyaml = dependency('yaml-0.1', required : false)\n>  \n>  # Use one of gnutls or libcrypto (provided by OpenSSL), trying gnutls first.\n>  libcrypto = dependency('gnutls', required : false)\n> @@ -119,17 +117,6 @@ if libudev.found()\n>      ])\n>  endif\n>  \n> -# Fallback to a subproject if libyaml isn't found, as it's not packaged in AOSP.\n> -if not libyaml.found()\n> -    cmake = import('cmake')\n> -\n> -    libyaml_vars = cmake.subproject_options()\n> -    libyaml_vars.add_cmake_defines({'CMAKE_POSITION_INDEPENDENT_CODE': 'ON'})\n> -    libyaml_vars.append_compile_args('c', '-Wno-unused-value')\n> -    libyaml_wrap = cmake.subproject('libyaml', options : libyaml_vars)\n> -    libyaml = libyaml_wrap.dependency('yaml')\n> -endif\n> -\n>  control_sources = []\n>  \n>  controls_mode_files = {\n> @@ -189,7 +176,6 @@ libcamera_deps += [\n>      libdl,\n>      liblttng,\n>      libudev,\n> -    libyaml,\n>  ]\n>  \n>  # We add '/' to the build_rpath as a 'safe' path to act as a boolean flag.\n> -- \n> 2.49.0\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 9D1BEC327D\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  1 May 2025 10:39:58 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E70BD617D7;\n\tThu,  1 May 2025 12:39:57 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 50D8A617D7\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  1 May 2025 12:39:56 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 3088F63D;\n\tThu,  1 May 2025 12:39:49 +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=\"EO+Freu/\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1746095989;\n\tbh=HQc0FvobgIo9Dvd9JKQI1Ck3LRFzfWQHRPXK6z3vs20=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=EO+Freu/XesBq9DcGHEQhb7VKaggV1tTjT3QvmC/aMD2Ay0WOUyTl/dupYlUjC+vR\n\tolaKgWHL4HzW1/QZu5j8yW9cQQgv0WBHIYxwEgFyfewPbQOw6HWI15FNX/3kqAPK9f\n\tSIbhu5S6R9OOuut/o6okXSErPMwT832/tbWivh6g=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20250430121449.39910-2-mzamazal@redhat.com>","References":"<20250430121449.39910-1-mzamazal@redhat.com>\n\t<20250430121449.39910-2-mzamazal@redhat.com>","Subject":"Re: [PATCH v8 01/15] yaml: Move yaml_parser.cpp to base","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Milan Zamazal <mzamazal@redhat.com>, =?utf-8?b?QmFybmFiw6FzIFDFkWN6?=\n\t=?utf-8?q?e?= <pobrn@protonmail.com>, Laurent Pinchart\n\t<laurent.pinchart@ideasonboard.com>","To":"Milan Zamazal <mzamazal@redhat.com>, libcamera-devel@lists.libcamera.org","Date":"Thu, 01 May 2025 11:39:53 +0100","Message-ID":"<174609599381.299497.17066400890299387814@ping.linuxembedded.co.uk>","User-Agent":"alot/0.10","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>"}}]