[libcamera-devel] [PATCH v2 1/3] apps: qcam: Port to Qt 6
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Mon Jul 22 17:13:57 CEST 2024
On Mon, Jul 22, 2024 at 04:01:23PM +0100, Kieran Bingham wrote:
> Quoting Kieran Bingham (2024-07-22 15:13:57)
> > Quoting Kieran Bingham (2024-04-16 19:14:35)
> > > 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.
> > > >
> > >
> > > With Ubuntu 24.04 release 'imminent' (as well as the next libcamera-0.3
> > > after I can merge the softISP) I believe it's time to merge this patch.
> > >
> > > However ...
> > >
> > >
> > >
> > > > 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
>
> On debian bullseye there's no qt6-tools-dev-tools package ...
>
> Trying to identify either the correct package or when it gets added...
>
>
> Hrm. ... it looks like it's only available in bullseye-backports:
>
> https://packages.debian.org/bullseye-backports/amd64/qt6-tools-dev-tools
>
> Now ... how do we handle this on the CI ...
See commit 239de776df95044aa8efa7d19064a9d5c679f4ca in the CI, which
removed handling of backports :-)
> > > Having installed these packages - I still can't enable qcam. So we must
> > > be missing some more dependencies that need to be listed here.
> >
> > So following this back to the list:
> >
> >
> > The issue above impacts Ubuntu-22.04 LTS, but has been reported to
> > Launchpad at:
> >
> > Link: https://bugs.launchpad.net/ubuntu/+source/qt6-base/+bug/2067202
> >
> > And should be resolved in a timeframe based on Ubuntu's priorities.
> >
> > I don't think we should withhold our development on that time frame -
> > and I think this Qt6 enablement patch should be merged.
> >
> > Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> >
> >
> > The 'negative' impacts of merging this patch are:
> > - Developers (not users) using Ubuntu 22.04 will have to manually
> > install a newer version of meson
> > * This is I expect more than likely easy or already done by any
> > actual developers of libcamera
> >
> > - Developers using Ubuntu 22.04 may lose qcam by default.
> > - This will not break the build - but qcam may stop being enabled by
> > default if QT6 can not be found while the bug link referenced above
> > is not resolved.
> > - I would hope this would give more pressure for Canonical to fix the
> > issue - but I expect that the number of libcamera developers who
> > are using libcamera, ubuntu-22.04 *and* need qcam are quite
> > limited. (perhaps just me?) - and solutions can be provided to
> > support them as required - while I think there are more build
> > systems that are now using a qt6 build instead of an EOL qt5 so
> > it's time to move on.
> >
> > > > 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',
> > > > 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)
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list