[PATCH v1] libcamera: tracing: fix header generation when built as subproject

Barnabás Pőcze pobrn at protonmail.com
Wed Nov 9 17:36:14 CET 2022


The previously used

  path = output.replace('include/', '', 1)

logic is not sufficient to correctly determine the proper path
when libcamera is built as a subproject. Fix it by using Python's
pathlib to calculate the relative path of the output file with
respect to the "include" directory of libcamera.

Signed-off-by: Barnabás Pőcze <pobrn at protonmail.com>
---
 include/libcamera/internal/meson.build |  2 +-
 include/meson.build                    |  2 ++
 utils/tracepoints/gen-tp-header.py     | 13 +++++++------
 3 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/include/libcamera/internal/meson.build b/include/libcamera/internal/meson.build
index 7a780d48ee57..f8be86e040c5 100644
--- a/include/libcamera/internal/meson.build
+++ b/include/libcamera/internal/meson.build
@@ -6,7 +6,7 @@ libcamera_tracepoint_header = custom_target(
     'tp_header',
     input: ['tracepoints.h.in', tracepoint_files],
     output: 'tracepoints.h',
-    command: [gen_tracepoints_header, '@OUTPUT@', '@INPUT@'],
+    command: [gen_tracepoints_header, include_build_dir, '@OUTPUT@', '@INPUT@'],
 )

 libcamera_internal_headers = files([
diff --git a/include/meson.build b/include/meson.build
index 27ce2f41c534..19b93a7bd753 100644
--- a/include/meson.build
+++ b/include/meson.build
@@ -1,4 +1,6 @@
 # SPDX-License-Identifier: CC0-1.0

+include_build_dir = meson.current_build_dir()
+
 subdir('android')
 subdir('libcamera')
diff --git a/utils/tracepoints/gen-tp-header.py b/utils/tracepoints/gen-tp-header.py
index bbd472d972d0..a454615e4625 100755
--- a/utils/tracepoints/gen-tp-header.py
+++ b/utils/tracepoints/gen-tp-header.py
@@ -8,22 +8,23 @@

 import datetime
 import jinja2
+import pathlib
 import os
 import sys

 def main(argv):
-    if len(argv) < 3:
-        print(f'Usage: {argv[0]} output template tp_files...')
+    if len(argv) < 4:
+        print(f'Usage: {argv[0]} include_build_dir output template tp_files...')
         return 1

-    output = argv[1]
-    template = argv[2]
+    output = argv[2]
+    template = argv[3]

     year = datetime.datetime.now().year
-    path = output.replace('include/', '', 1)
+    path = pathlib.Path(output).absolute().relative_to(argv[1])

     source = ''
-    for fname in argv[3:]:
+    for fname in argv[4:]:
         source += open(fname, 'r', encoding='utf-8').read() + '\n\n'

     template = jinja2.Template(open(template, 'r', encoding='utf-8').read())
--
2.38.1




More information about the libcamera-devel mailing list