[libcamera-devel] [PATCH v2 1/3] apps: qcam: Port to Qt 6

Kieran Bingham kieran.bingham at ideasonboard.com
Mon Jan 22 10:38:33 CET 2024


Aha, I missed that there was already a v2.

Quoting Neal Gompa via libcamera-devel (2024-01-21 22:39:53)
> Open source Qt 5 has been effectively end of life since the release
> of Qt 6, and Qt 6 has current LTS releases now.
> 
> This change ports qcam to Qt 6.2 and drops some of the baggage related
> to Qt 5 that is no longer applicable.
> 
> Signed-off-by: Neal Gompa <neal at gompa.dev>
> ---
>  README.rst                |  2 +-
>  meson.build               |  2 +-
>  src/apps/qcam/meson.build | 45 +++++++++++----------------------------
>  3 files changed, 15 insertions(+), 34 deletions(-)
> 
> diff --git a/README.rst b/README.rst
> index 315738ee..6f1c9302 100644
> --- a/README.rst
> +++ b/README.rst
> @@ -88,7 +88,7 @@ for cam: [optional]
>          - libsdl2-dev: Enables the SDL sink
>  
>  for qcam: [optional]
> -        libtiff-dev qtbase5-dev qttools5-dev-tools
> +        libtiff-dev qt6-base-dev qt6-tools-dev-tools
>  
>  for tracing with lttng: [optional]
>          liblttng-ust-dev python3-jinja2 lttng-tools
> diff --git a/meson.build b/meson.build
> index cb6b666a..4c315e2a 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -1,7 +1,7 @@
>  # SPDX-License-Identifier: CC0-1.0
>  
>  project('libcamera', 'c', 'cpp',
> -    meson_version : '>= 0.60',
> +    meson_version : '>= 0.63',

Debian Bookworm: is currently at 1.0.1-5
https://packages.debian.org/source/stable/meson

Ubuntu 22.04.3 is currently at 0.61.2-1 :-(
https://packages.ubuntu.com/jammy/meson

We're about 3 months away from Ubuntu 24.04 ...


Fedora is in a better shape, and all Fedora releases in support have a
recent Meson at 1.2.3 or later:
 https://src.fedoraproject.org/rpms/meson

Redhat Enterprise linux looks more problematic - So I'm not sure if that
should be included in fact.

OpenSuse seems to be already at 1.3.1 too:
https://software.opensuse.org/package/meson?locale=en

So it's just Ubuntu/Canonical holding us back here ...

Any thoughts anyone?

--
Kieran




>      version : '0.2.0',
>      default_options : [
>          'werror=true',
> diff --git a/src/apps/qcam/meson.build b/src/apps/qcam/meson.build
> index 6cf4c171..c7fcfbeb 100644
> --- a/src/apps/qcam/meson.build
> +++ b/src/apps/qcam/meson.build
> @@ -1,13 +1,13 @@
>  # SPDX-License-Identifier: CC0-1.0
>  
> -qt5 = import('qt5')
> -qt5_dep = dependency('qt5',
> +qt6 = import('qt6')
> +qt6_dep = dependency('qt6',
>                       method : 'pkg-config',
> -                     modules : ['Core', 'Gui', 'Widgets'],
> +                     modules : ['Core', 'Gui', 'OpenGL', 'OpenGLWidgets', 'Widgets'],
>                       required : get_option('qcam'),
> -                     version : '>=5.4')
> +                     version : '>=6.2')
>  
> -if not qt5_dep.found()
> +if not qt6_dep.found()
>      qcam_enabled = false
>      subdir_done()
>  endif
> @@ -20,46 +20,27 @@ qcam_sources = files([
>      'main.cpp',
>      'main_window.cpp',
>      'message_handler.cpp',
> +    'viewfinder_gl.cpp',
>      'viewfinder_qt.cpp',
>  ])
>  
>  qcam_moc_headers = files([
>      'cam_select_dialog.h',
>      'main_window.h',
> +    'viewfinder_gl.h',
>      'viewfinder_qt.h',
>  ])
>  
>  qcam_resources = files([
>      'assets/feathericons/feathericons.qrc',
> +    'assets/shader/shaders.qrc',
>  ])
>  
> -qt5_cpp_args = [apps_cpp_args, '-DQT_NO_KEYWORDS']
> +qt6_cpp_args = [apps_cpp_args, '-DQT_NO_KEYWORDS']
>  
> -if cxx.has_header_symbol('QOpenGLWidget', 'QOpenGLWidget',
> -                         dependencies : qt5_dep, args : '-fPIC')
> -    qcam_sources += files([
> -        'viewfinder_gl.cpp',
> -    ])
> -    qcam_moc_headers += files([
> -        'viewfinder_gl.h',
> -    ])
> -    qcam_resources += files([
> -        'assets/shader/shaders.qrc'
> -    ])
> -endif
> -
> -# gcc 9 introduced a deprecated-copy warning that is triggered by Qt until
> -# Qt 5.13. clang 10 introduced the same warning, but detects more issues
> -# that are not fixed in Qt yet. Disable the warning manually in both cases.
> -if ((cc.get_id() == 'gcc' and cc.version().version_compare('>=9.0') and
> -     qt5_dep.version().version_compare('<5.13')) or
> -    (cc.get_id() == 'clang' and cc.version().version_compare('>=10.0')))
> -    qt5_cpp_args += ['-Wno-deprecated-copy']
> -endif
> -
> -resources = qt5.preprocess(moc_headers : qcam_moc_headers,
> +resources = qt6.preprocess(moc_headers : qcam_moc_headers,
>                             qresources : qcam_resources,
> -                           dependencies : qt5_dep)
> +                           dependencies : qt6_dep)
>  
>  qcam  = executable('qcam', qcam_sources, resources,
>                     install : true,
> @@ -69,6 +50,6 @@ qcam  = executable('qcam', qcam_sources, resources,
>                         libatomic,
>                         libcamera_public,
>                         libtiff,
> -                       qt5_dep,
> +                       qt6_dep,
>                     ],
> -                   cpp_args : qt5_cpp_args)
> +                   cpp_args : qt6_cpp_args)
> -- 
> 2.43.0
>


More information about the libcamera-devel mailing list