[libcamera-devel,v2,1/3] apps: qcam: Port to Qt 6
diff mbox series

Message ID 20240121224052.1049989-2-neal@gompa.dev
State Accepted
Headers show
Series
  • apps: qcam: Port to Qt 6
Related show

Commit Message

Neal Gompa Jan. 21, 2024, 10:39 p.m. UTC
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@gompa.dev>
---
 README.rst                |  2 +-
 meson.build               |  2 +-
 src/apps/qcam/meson.build | 45 +++++++++++----------------------------
 3 files changed, 15 insertions(+), 34 deletions(-)

Comments

Kieran Bingham Jan. 22, 2024, 9:38 a.m. UTC | #1
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@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
>
Laurent Pinchart Jan. 22, 2024, 9:53 a.m. UTC | #2
On Mon, Jan 22, 2024 at 09:38:33AM +0000, Kieran Bingham via libcamera-devel wrote:
> 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@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?

I was hoping jammy-backports would help us, but that doesn't seem to be
the case :-(

As there doesn't seem to be an urgency to switch to Qt 6 (unless I'm
missing something), I'm tempted to propose waiting until Ubuntu 24.04
gets released.

> >      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)
Kieran Bingham Jan. 22, 2024, 11 a.m. UTC | #3
Quoting Laurent Pinchart (2024-01-22 09:53:39)
> On Mon, Jan 22, 2024 at 09:38:33AM +0000, Kieran Bingham via libcamera-devel wrote:
> > 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@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?
> 
> I was hoping jammy-backports would help us, but that doesn't seem to be
> the case :-(
> 
> As there doesn't seem to be an urgency to switch to Qt 6 (unless I'm
> missing something), I'm tempted to propose waiting until Ubuntu 24.04
> gets released.

Noble (24.04) will have either 1.2.1 or 1.3.1 (there are different
versions in proposed and Release). Either way it will be > 1.2! :
  https://launchpad.net/ubuntu/noble/+package/meson

I would propose that the meson version update is separated from the
patch as a preceeding commit, and could already be resent. Then we can
simply pick these in April. I'd probably say we could merge this in
early April, such that we can make a release of libcamera with that
support merged soon after Ubuntu 24.04 is released on April 25th.

--
Regards
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)
> 
> -- 
> Regards,
> 
> Laurent Pinchart
Neal Gompa Jan. 22, 2024, 11:08 a.m. UTC | #4
On Mon, Jan 22, 2024 at 6:00 AM Kieran Bingham
<kieran.bingham@ideasonboard.com> wrote:
>
> Quoting Laurent Pinchart (2024-01-22 09:53:39)
> > On Mon, Jan 22, 2024 at 09:38:33AM +0000, Kieran Bingham via libcamera-devel wrote:
> > > 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@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?
> >
> > I was hoping jammy-backports would help us, but that doesn't seem to be
> > the case :-(
> >
> > As there doesn't seem to be an urgency to switch to Qt 6 (unless I'm
> > missing something), I'm tempted to propose waiting until Ubuntu 24.04
> > gets released.
>
> Noble (24.04) will have either 1.2.1 or 1.3.1 (there are different
> versions in proposed and Release). Either way it will be > 1.2! :
>   https://launchpad.net/ubuntu/noble/+package/meson
>
> I would propose that the meson version update is separated from the
> patch as a preceeding commit, and could already be resent. Then we can
> simply pick these in April. I'd probably say we could merge this in
> early April, such that we can make a release of libcamera with that
> support merged soon after Ubuntu 24.04 is released on April 25th.
>

On the flip side, if it's merged and released into Debian before the
Ubuntu freeze on Feb 29[1], then it would be part of Ubuntu 24.04
itself.

[1]: https://discourse.ubuntu.com/t/noble-numbat-release-schedule/35649
Neal Gompa Jan. 22, 2024, 11:12 a.m. UTC | #5
On Mon, Jan 22, 2024 at 4:53 AM Laurent Pinchart via libcamera-devel
<libcamera-devel@lists.libcamera.org> wrote:
>
> On Mon, Jan 22, 2024 at 09:38:33AM +0000, Kieran Bingham via libcamera-devel wrote:
> > 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@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?
>
> I was hoping jammy-backports would help us, but that doesn't seem to be
> the case :-(
>
> As there doesn't seem to be an urgency to switch to Qt 6 (unless I'm
> missing something), I'm tempted to propose waiting until Ubuntu 24.04
> gets released.
>
> > >      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)
>

I'd like to have this in place for Fedora 40 as that's the release
we're moving to KDE Plasma 6[1] and thus generally preferring
everything to be Qt 6 whenever possible. Additionally, CentOS/RHEL 10
(which forks from Fedora 40) will only have Qt 6. The freeze for
Fedora is in two weeks[2], and I'd like to have this landed before
then.

[1]: https://fedoraproject.org/wiki/Changes/KDE_Plasma_6
[2]: https://fedorapeople.org/groups/schedule/f-40/f-40-key-tasks.html
Laurent Pinchart Jan. 22, 2024, 11:33 a.m. UTC | #6
On Mon, Jan 22, 2024 at 06:12:08AM -0500, Neal Gompa wrote:
> On Mon, Jan 22, 2024 at 4:53 AM Laurent Pinchart via libcamera-devel
> <libcamera-devel@lists.libcamera.org> wrote:
> >
> > On Mon, Jan 22, 2024 at 09:38:33AM +0000, Kieran Bingham via libcamera-devel wrote:
> > > 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@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?
> >
> > I was hoping jammy-backports would help us, but that doesn't seem to be
> > the case :-(
> >
> > As there doesn't seem to be an urgency to switch to Qt 6 (unless I'm
> > missing something), I'm tempted to propose waiting until Ubuntu 24.04
> > gets released.
> >
> > > >      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)
> 
> I'd like to have this in place for Fedora 40 as that's the release
> we're moving to KDE Plasma 6[1] and thus generally preferring
> everything to be Qt 6 whenever possible. Additionally, CentOS/RHEL 10
> (which forks from Fedora 40) will only have Qt 6. The freeze for
> Fedora is in two weeks[2], and I'd like to have this landed before
> then.

That's a pretty short notice. Could you have a look at the toolbar icon
issue I've reported then ?

> [1]: https://fedoraproject.org/wiki/Changes/KDE_Plasma_6
> [2]: https://fedorapeople.org/groups/schedule/f-40/f-40-key-tasks.html
Neal Gompa Jan. 22, 2024, 11:38 a.m. UTC | #7
On Mon, Jan 22, 2024 at 6:33 AM Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
>
> On Mon, Jan 22, 2024 at 06:12:08AM -0500, Neal Gompa wrote:
> > On Mon, Jan 22, 2024 at 4:53 AM Laurent Pinchart via libcamera-devel
> > <libcamera-devel@lists.libcamera.org> wrote:
> > >
> > > On Mon, Jan 22, 2024 at 09:38:33AM +0000, Kieran Bingham via libcamera-devel wrote:
> > > > 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@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?
> > >
> > > I was hoping jammy-backports would help us, but that doesn't seem to be
> > > the case :-(
> > >
> > > As there doesn't seem to be an urgency to switch to Qt 6 (unless I'm
> > > missing something), I'm tempted to propose waiting until Ubuntu 24.04
> > > gets released.
> > >
> > > > >      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)
> >
> > I'd like to have this in place for Fedora 40 as that's the release
> > we're moving to KDE Plasma 6[1] and thus generally preferring
> > everything to be Qt 6 whenever possible. Additionally, CentOS/RHEL 10
> > (which forks from Fedora 40) will only have Qt 6. The freeze for
> > Fedora is in two weeks[2], and I'd like to have this landed before
> > then.
>
> That's a pretty short notice. Could you have a look at the toolbar icon
> issue I've reported then ?
>

Yup. I cannot reproduce the issue. It works here. Here's a screenshot:
https://i.imgur.com/zle2XbL.png
Eric Curtin Jan. 22, 2024, 11:39 a.m. UTC | #8
On Sun, 21 Jan 2024 at 22:41, Neal Gompa <neal@gompa.dev> wrote:
>
> 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@gompa.dev>

Qt 6 ftw

Reviewed-by: Eric Curtin <ecurtin@redhat.com>

Is mise le meas/Regards,

Eric Curtin

> ---
>  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',
>      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
>
Laurent Pinchart Jan. 22, 2024, 11:57 a.m. UTC | #9
On Mon, Jan 22, 2024 at 06:38:25AM -0500, Neal Gompa wrote:
> On Mon, Jan 22, 2024 at 6:33 AM Laurent Pinchart wrote:
> > On Mon, Jan 22, 2024 at 06:12:08AM -0500, Neal Gompa wrote:
> > > On Mon, Jan 22, 2024 at 4:53 AM Laurent Pinchart via libcamera-devel wrote:
> > > > On Mon, Jan 22, 2024 at 09:38:33AM +0000, Kieran Bingham via libcamera-devel wrote:
> > > > > 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@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?
> > > >
> > > > I was hoping jammy-backports would help us, but that doesn't seem to be
> > > > the case :-(
> > > >
> > > > As there doesn't seem to be an urgency to switch to Qt 6 (unless I'm
> > > > missing something), I'm tempted to propose waiting until Ubuntu 24.04
> > > > gets released.
> > > >
> > > > > >      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)
> > >
> > > I'd like to have this in place for Fedora 40 as that's the release
> > > we're moving to KDE Plasma 6[1] and thus generally preferring
> > > everything to be Qt 6 whenever possible. Additionally, CentOS/RHEL 10
> > > (which forks from Fedora 40) will only have Qt 6. The freeze for
> > > Fedora is in two weeks[2], and I'd like to have this landed before
> > > then.
> >
> > That's a pretty short notice. Could you have a look at the toolbar icon
> > issue I've reported then ?
> 
> Yup. I cannot reproduce the issue. It works here. Here's a screenshot:
> https://i.imgur.com/zle2XbL.png

Here's how it looks like for me.

- With Qt5: https://postimg.cc/jC16fLh1
- With Qt6: https://postimg.cc/WtGY6mhy

I wonder if this could be caused by not having KDE 6 installed.

What's the default KDE environment for Debian Bookworm and Ubuntu 24.04,
is it KDE 5 or KDE 6 ?
Neal Gompa Jan. 22, 2024, 12:04 p.m. UTC | #10
On Mon, Jan 22, 2024 at 6:57 AM Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
>
> On Mon, Jan 22, 2024 at 06:38:25AM -0500, Neal Gompa wrote:
> > On Mon, Jan 22, 2024 at 6:33 AM Laurent Pinchart wrote:
> > > On Mon, Jan 22, 2024 at 06:12:08AM -0500, Neal Gompa wrote:
> > > > On Mon, Jan 22, 2024 at 4:53 AM Laurent Pinchart via libcamera-devel wrote:
> > > > > On Mon, Jan 22, 2024 at 09:38:33AM +0000, Kieran Bingham via libcamera-devel wrote:
> > > > > > 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@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?
> > > > >
> > > > > I was hoping jammy-backports would help us, but that doesn't seem to be
> > > > > the case :-(
> > > > >
> > > > > As there doesn't seem to be an urgency to switch to Qt 6 (unless I'm
> > > > > missing something), I'm tempted to propose waiting until Ubuntu 24.04
> > > > > gets released.
> > > > >
> > > > > > >      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)
> > > >
> > > > I'd like to have this in place for Fedora 40 as that's the release
> > > > we're moving to KDE Plasma 6[1] and thus generally preferring
> > > > everything to be Qt 6 whenever possible. Additionally, CentOS/RHEL 10
> > > > (which forks from Fedora 40) will only have Qt 6. The freeze for
> > > > Fedora is in two weeks[2], and I'd like to have this landed before
> > > > then.
> > >
> > > That's a pretty short notice. Could you have a look at the toolbar icon
> > > issue I've reported then ?
> >
> > Yup. I cannot reproduce the issue. It works here. Here's a screenshot:
> > https://i.imgur.com/zle2XbL.png
>
> Here's how it looks like for me.
>
> - With Qt5: https://postimg.cc/jC16fLh1
> - With Qt6: https://postimg.cc/WtGY6mhy
>
> I wonder if this could be caused by not having KDE 6 installed.
>
> What's the default KDE environment for Debian Bookworm and Ubuntu 24.04,
> is it KDE 5 or KDE 6 ?
>

KDE Plasma 5, but that screenshot is on Fedora 39 with KDE Plasma 5.27.10.
Laurent Pinchart Jan. 22, 2024, 12:08 p.m. UTC | #11
On Mon, Jan 22, 2024 at 01:57:02PM +0200, Laurent Pinchart wrote:
> On Mon, Jan 22, 2024 at 06:38:25AM -0500, Neal Gompa wrote:
> > On Mon, Jan 22, 2024 at 6:33 AM Laurent Pinchart wrote:
> > > On Mon, Jan 22, 2024 at 06:12:08AM -0500, Neal Gompa wrote:
> > > > On Mon, Jan 22, 2024 at 4:53 AM Laurent Pinchart via libcamera-devel wrote:
> > > > > On Mon, Jan 22, 2024 at 09:38:33AM +0000, Kieran Bingham via libcamera-devel wrote:
> > > > > > 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@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?
> > > > >
> > > > > I was hoping jammy-backports would help us, but that doesn't seem to be
> > > > > the case :-(
> > > > >
> > > > > As there doesn't seem to be an urgency to switch to Qt 6 (unless I'm
> > > > > missing something), I'm tempted to propose waiting until Ubuntu 24.04
> > > > > gets released.
> > > > >
> > > > > > >      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)
> > > >
> > > > I'd like to have this in place for Fedora 40 as that's the release
> > > > we're moving to KDE Plasma 6[1] and thus generally preferring
> > > > everything to be Qt 6 whenever possible. Additionally, CentOS/RHEL 10
> > > > (which forks from Fedora 40) will only have Qt 6. The freeze for
> > > > Fedora is in two weeks[2], and I'd like to have this landed before
> > > > then.
> > >
> > > That's a pretty short notice. Could you have a look at the toolbar icon
> > > issue I've reported then ?
> > 
> > Yup. I cannot reproduce the issue. It works here. Here's a screenshot:
> > https://i.imgur.com/zle2XbL.png
> 
> Here's how it looks like for me.
> 
> - With Qt5: https://postimg.cc/jC16fLh1
> - With Qt6: https://postimg.cc/WtGY6mhy
> 
> I wonder if this could be caused by not having KDE 6 installed.
> 
> What's the default KDE environment for Debian Bookworm and Ubuntu 24.04,
> is it KDE 5 or KDE 6 ?

According to https://community.kde.org/Schedules/Plasma_6, Plasma 6 will
be released on 2024-02-01. It would sounds a bit ambitious to already
depend on it.
Gergo Koteles Jan. 22, 2024, 12:10 p.m. UTC | #12
Hi Laurent,

On Mon, 2024-01-22 at 13:57 +0200, Laurent Pinchart wrote:
> > 
> > Yup. I cannot reproduce the issue. It works here. Here's a screenshot:
> > https://i.imgur.com/zle2XbL.png
> 
> Here's how it looks like for me.
> 
> - With Qt5: https://postimg.cc/jC16fLh1
> - With Qt6: https://postimg.cc/WtGY6mhy
> 
> I wonder if this could be caused by not having KDE 6 installed.
> 
> What's the default KDE environment for Debian Bookworm and Ubuntu 24.04,
> is it KDE 5 or KDE 6 ?
> 

Do you have libqt6svg6? That is needed for Qt6 svg icons.

Regards,
Gergo
Laurent Pinchart Jan. 22, 2024, 12:40 p.m. UTC | #13
On Mon, Jan 22, 2024 at 01:10:09PM +0100, Gergo Koteles wrote:
> Hi Laurent,
> 
> On Mon, 2024-01-22 at 13:57 +0200, Laurent Pinchart wrote:
> > > 
> > > Yup. I cannot reproduce the issue. It works here. Here's a screenshot:
> > > https://i.imgur.com/zle2XbL.png
> > 
> > Here's how it looks like for me.
> > 
> > - With Qt5: https://postimg.cc/jC16fLh1
> > - With Qt6: https://postimg.cc/WtGY6mhy
> > 
> > I wonder if this could be caused by not having KDE 6 installed.
> > 
> > What's the default KDE environment for Debian Bookworm and Ubuntu 24.04,
> > is it KDE 5 or KDE 6 ?
> 
> Do you have libqt6svg6? That is needed for Qt6 svg icons.

I was missing it indeed (the package is called dev-qt/qtsvg in Gentoo).
That fixed the problem, thank you.
Kieran Bingham Jan. 22, 2024, 1:07 p.m. UTC | #14
Quoting Neal Gompa (2024-01-22 11:08:33)
> On Mon, Jan 22, 2024 at 6:00 AM Kieran Bingham
> <kieran.bingham@ideasonboard.com> wrote:
> >
> > Quoting Laurent Pinchart (2024-01-22 09:53:39)
> > > On Mon, Jan 22, 2024 at 09:38:33AM +0000, Kieran Bingham via libcamera-devel wrote:
> > > > 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@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?
> > >
> > > I was hoping jammy-backports would help us, but that doesn't seem to be
> > > the case :-(
> > >
> > > As there doesn't seem to be an urgency to switch to Qt 6 (unless I'm
> > > missing something), I'm tempted to propose waiting until Ubuntu 24.04
> > > gets released.
> >
> > Noble (24.04) will have either 1.2.1 or 1.3.1 (there are different
> > versions in proposed and Release). Either way it will be > 1.2! :
> >   https://launchpad.net/ubuntu/noble/+package/meson
> >
> > I would propose that the meson version update is separated from the
> > patch as a preceeding commit, and could already be resent. Then we can
> > simply pick these in April. I'd probably say we could merge this in
> > early April, such that we can make a release of libcamera with that
> > support merged soon after Ubuntu 24.04 is released on April 25th.
> >
> 
> On the flip side, if it's merged and released into Debian before the
> Ubuntu freeze on Feb 29[1], then it would be part of Ubuntu 24.04
> itself.

That's an interesting take too.

Which one is the chicken and which one is the egg?

Our early requirement for meeting the dependencies in the distributions
was because the distributions themselves were not including libcamera.
Therefore, users of libcamera /had/ to be able to build libcamera.

Now that things can be included, perhaps that's reason enough to say
aiming for integration is better.

> [1]: https://discourse.ubuntu.com/t/noble-numbat-release-schedule/35649

It looks like libcamera-0.2 is already included in the noble release, so
package updates into debian look like they get into Ubuntu quite 'fast'.

I feel like targetting getting /into/ the next Ubuntu LTS with updates
is better than working on /top/ of it.

The expense/cost is that in between we would no longer support compiling
the master branch (or intermediate releases) with the 'current' LTS of
Ubuntu.

I could say "Oh well, that probably doesn't matter" ... except ... I use
Ubuntu-22.04 as my main distro ... and I would plan to upgrade at the
next release.

I'm aware that I can work around this issue by upgrading meson myself.
The question is what will happen to others ... and maybe it's just
something we should bite and help them upgrade meson in the interim.

--
Kieran



> -- 
> 真実はいつも一つ!/ Always, there's only one truth!
Neal Gompa Jan. 22, 2024, 2:08 p.m. UTC | #15
On Mon, Jan 22, 2024 at 8:07 AM Kieran Bingham
<kieran.bingham@ideasonboard.com> wrote:
>
> Quoting Neal Gompa (2024-01-22 11:08:33)
> > On Mon, Jan 22, 2024 at 6:00 AM Kieran Bingham
> > <kieran.bingham@ideasonboard.com> wrote:
> > >
> > > Quoting Laurent Pinchart (2024-01-22 09:53:39)
> > > > On Mon, Jan 22, 2024 at 09:38:33AM +0000, Kieran Bingham via libcamera-devel wrote:
> > > > > 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@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?
> > > >
> > > > I was hoping jammy-backports would help us, but that doesn't seem to be
> > > > the case :-(
> > > >
> > > > As there doesn't seem to be an urgency to switch to Qt 6 (unless I'm
> > > > missing something), I'm tempted to propose waiting until Ubuntu 24.04
> > > > gets released.
> > >
> > > Noble (24.04) will have either 1.2.1 or 1.3.1 (there are different
> > > versions in proposed and Release). Either way it will be > 1.2! :
> > >   https://launchpad.net/ubuntu/noble/+package/meson
> > >
> > > I would propose that the meson version update is separated from the
> > > patch as a preceeding commit, and could already be resent. Then we can
> > > simply pick these in April. I'd probably say we could merge this in
> > > early April, such that we can make a release of libcamera with that
> > > support merged soon after Ubuntu 24.04 is released on April 25th.
> > >
> >
> > On the flip side, if it's merged and released into Debian before the
> > Ubuntu freeze on Feb 29[1], then it would be part of Ubuntu 24.04
> > itself.
>
> That's an interesting take too.
>
> Which one is the chicken and which one is the egg?
>
> Our early requirement for meeting the dependencies in the distributions
> was because the distributions themselves were not including libcamera.
> Therefore, users of libcamera /had/ to be able to build libcamera.
>
> Now that things can be included, perhaps that's reason enough to say
> aiming for integration is better.
>
> > [1]: https://discourse.ubuntu.com/t/noble-numbat-release-schedule/35649
>
> It looks like libcamera-0.2 is already included in the noble release, so
> package updates into debian look like they get into Ubuntu quite 'fast'.
>
> I feel like targetting getting /into/ the next Ubuntu LTS with updates
> is better than working on /top/ of it.
>
> The expense/cost is that in between we would no longer support compiling
> the master branch (or intermediate releases) with the 'current' LTS of
> Ubuntu.
>
> I could say "Oh well, that probably doesn't matter" ... except ... I use
> Ubuntu-22.04 as my main distro ... and I would plan to upgrade at the
> next release.
>
> I'm aware that I can work around this issue by upgrading meson myself.
> The question is what will happen to others ... and maybe it's just
> something we should bite and help them upgrade meson in the interim.
>

Well, in a previous life I used to maintain Meson backports for Ubuntu.

I'm happy to provide a package (based on the CentOS 9 one) for Ubuntu
22.04 until 24.04 is released if it would help you:
https://software.opensuse.org//download.html?project=home%3APharaoh_Atem%3AMeson&package=meson




--
真実はいつも一つ!/ Always, there's only one truth!
Kieran Bingham Jan. 22, 2024, 4:02 p.m. UTC | #16
Quoting Neal Gompa (2024-01-22 14:08:37)
> On Mon, Jan 22, 2024 at 8:07 AM Kieran Bingham
> <kieran.bingham@ideasonboard.com> wrote:
> >
> > Quoting Neal Gompa (2024-01-22 11:08:33)
> > > On Mon, Jan 22, 2024 at 6:00 AM Kieran Bingham
> > > <kieran.bingham@ideasonboard.com> wrote:
> > > >
> > > > Quoting Laurent Pinchart (2024-01-22 09:53:39)
> > > > > On Mon, Jan 22, 2024 at 09:38:33AM +0000, Kieran Bingham via libcamera-devel wrote:
> > > > > > 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@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?
> > > > >
> > > > > I was hoping jammy-backports would help us, but that doesn't seem to be
> > > > > the case :-(
> > > > >
> > > > > As there doesn't seem to be an urgency to switch to Qt 6 (unless I'm
> > > > > missing something), I'm tempted to propose waiting until Ubuntu 24.04
> > > > > gets released.
> > > >
> > > > Noble (24.04) will have either 1.2.1 or 1.3.1 (there are different
> > > > versions in proposed and Release). Either way it will be > 1.2! :
> > > >   https://launchpad.net/ubuntu/noble/+package/meson
> > > >
> > > > I would propose that the meson version update is separated from the
> > > > patch as a preceeding commit, and could already be resent. Then we can
> > > > simply pick these in April. I'd probably say we could merge this in
> > > > early April, such that we can make a release of libcamera with that
> > > > support merged soon after Ubuntu 24.04 is released on April 25th.
> > > >
> > >
> > > On the flip side, if it's merged and released into Debian before the
> > > Ubuntu freeze on Feb 29[1], then it would be part of Ubuntu 24.04
> > > itself.
> >
> > That's an interesting take too.
> >
> > Which one is the chicken and which one is the egg?
> >
> > Our early requirement for meeting the dependencies in the distributions
> > was because the distributions themselves were not including libcamera.
> > Therefore, users of libcamera /had/ to be able to build libcamera.
> >
> > Now that things can be included, perhaps that's reason enough to say
> > aiming for integration is better.
> >
> > > [1]: https://discourse.ubuntu.com/t/noble-numbat-release-schedule/35649
> >
> > It looks like libcamera-0.2 is already included in the noble release, so
> > package updates into debian look like they get into Ubuntu quite 'fast'.
> >
> > I feel like targetting getting /into/ the next Ubuntu LTS with updates
> > is better than working on /top/ of it.
> >
> > The expense/cost is that in between we would no longer support compiling
> > the master branch (or intermediate releases) with the 'current' LTS of
> > Ubuntu.
> >
> > I could say "Oh well, that probably doesn't matter" ... except ... I use
> > Ubuntu-22.04 as my main distro ... and I would plan to upgrade at the
> > next release.
> >
> > I'm aware that I can work around this issue by upgrading meson myself.
> > The question is what will happen to others ... and maybe it's just
> > something we should bite and help them upgrade meson in the interim.
> >
> 
> Well, in a previous life I used to maintain Meson backports for Ubuntu.
> 
> I'm happy to provide a package (based on the CentOS 9 one) for Ubuntu
> 22.04 until 24.04 is released if it would help you:
> https://software.opensuse.org//download.html?project=home%3APharaoh_Atem%3AMeson&package=meson

Is there an official Ubuntu channel for that? If you can make
'ubuntu-22.04' support a later meson - I have no argument to prevent this
being merged already!

--
Kieran
Neal Gompa Jan. 22, 2024, 7:55 p.m. UTC | #17
On Mon, Jan 22, 2024 at 11:02 AM Kieran Bingham
<kieran.bingham@ideasonboard.com> wrote:
>
> Quoting Neal Gompa (2024-01-22 14:08:37)
> > On Mon, Jan 22, 2024 at 8:07 AM Kieran Bingham
> > <kieran.bingham@ideasonboard.com> wrote:
> > >
> > > Quoting Neal Gompa (2024-01-22 11:08:33)
> > > > On Mon, Jan 22, 2024 at 6:00 AM Kieran Bingham
> > > > <kieran.bingham@ideasonboard.com> wrote:
> > > > >
> > > > > Quoting Laurent Pinchart (2024-01-22 09:53:39)
> > > > > > On Mon, Jan 22, 2024 at 09:38:33AM +0000, Kieran Bingham via libcamera-devel wrote:
> > > > > > > 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@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?
> > > > > >
> > > > > > I was hoping jammy-backports would help us, but that doesn't seem to be
> > > > > > the case :-(
> > > > > >
> > > > > > As there doesn't seem to be an urgency to switch to Qt 6 (unless I'm
> > > > > > missing something), I'm tempted to propose waiting until Ubuntu 24.04
> > > > > > gets released.
> > > > >
> > > > > Noble (24.04) will have either 1.2.1 or 1.3.1 (there are different
> > > > > versions in proposed and Release). Either way it will be > 1.2! :
> > > > >   https://launchpad.net/ubuntu/noble/+package/meson
> > > > >
> > > > > I would propose that the meson version update is separated from the
> > > > > patch as a preceeding commit, and could already be resent. Then we can
> > > > > simply pick these in April. I'd probably say we could merge this in
> > > > > early April, such that we can make a release of libcamera with that
> > > > > support merged soon after Ubuntu 24.04 is released on April 25th.
> > > > >
> > > >
> > > > On the flip side, if it's merged and released into Debian before the
> > > > Ubuntu freeze on Feb 29[1], then it would be part of Ubuntu 24.04
> > > > itself.
> > >
> > > That's an interesting take too.
> > >
> > > Which one is the chicken and which one is the egg?
> > >
> > > Our early requirement for meeting the dependencies in the distributions
> > > was because the distributions themselves were not including libcamera.
> > > Therefore, users of libcamera /had/ to be able to build libcamera.
> > >
> > > Now that things can be included, perhaps that's reason enough to say
> > > aiming for integration is better.
> > >
> > > > [1]: https://discourse.ubuntu.com/t/noble-numbat-release-schedule/35649
> > >
> > > It looks like libcamera-0.2 is already included in the noble release, so
> > > package updates into debian look like they get into Ubuntu quite 'fast'.
> > >
> > > I feel like targetting getting /into/ the next Ubuntu LTS with updates
> > > is better than working on /top/ of it.
> > >
> > > The expense/cost is that in between we would no longer support compiling
> > > the master branch (or intermediate releases) with the 'current' LTS of
> > > Ubuntu.
> > >
> > > I could say "Oh well, that probably doesn't matter" ... except ... I use
> > > Ubuntu-22.04 as my main distro ... and I would plan to upgrade at the
> > > next release.
> > >
> > > I'm aware that I can work around this issue by upgrading meson myself.
> > > The question is what will happen to others ... and maybe it's just
> > > something we should bite and help them upgrade meson in the interim.
> > >
> >
> > Well, in a previous life I used to maintain Meson backports for Ubuntu.
> >
> > I'm happy to provide a package (based on the CentOS 9 one) for Ubuntu
> > 22.04 until 24.04 is released if it would help you:
> > https://software.opensuse.org//download.html?project=home%3APharaoh_Atem%3AMeson&package=meson
>
> Is there an official Ubuntu channel for that? If you can make
> 'ubuntu-22.04' support a later meson - I have no argument to prevent this
> being merged already!
>

No. At this point, it would be unlikely to get updated unless you know
someone who can ship something in jammy-backports. But even then, with
24.04 coming in a few months, 22.04 has been in its zombie period for
a while now. Typically, the expectation is that you either use later
Ubuntu STS releases (23.10 is a perfectly fine release, as an example)
or backport what you need while you wait for the next LTS.

If you intend to hold back the patch until after 24.04 releases, then
there is no chance for this to be part of Ubuntu 24.04 itself, which I
think would be a shame. I prepared a backport for meson for Ubuntu
22.04 because you said it would help you for developing on 22.04. I am
not about to ask you to move to Fedora (which is what I use) or CentOS
Stream 9 (which would be an analogous LTS that does have a recent
enough Meson).

My only argument at this point is that you can choose to include the
patch now and make a release so it can land in Debian sid now, and
thus make it into Ubuntu 24.04 so that Ubuntu users will benefit from
it. From my perspective, I want this so that Fedora users and later
CentOS 10 users will benefit from it. I also think that Debian/Ubuntu
folks would benefit from it because it's one less thing depending on
essentially unsupported versions of Qt.




--
真実はいつも一つ!/ Always, there's only one truth!
Kieran Bingham Jan. 22, 2024, 10:31 p.m. UTC | #18
Quoting Neal Gompa (2024-01-22 19:55:20)
> On Mon, Jan 22, 2024 at 11:02 AM Kieran Bingham
> <kieran.bingham@ideasonboard.com> wrote:
> >
> > > > > > > > So it's just Ubuntu/Canonical holding us back here ...
> > > > > > > >
> > > > > > > > Any thoughts anyone?
> > > > > > >
> > > > > > > I was hoping jammy-backports would help us, but that doesn't seem to be
> > > > > > > the case :-(
> > > > > > >
> > > > > > > As there doesn't seem to be an urgency to switch to Qt 6 (unless I'm
> > > > > > > missing something), I'm tempted to propose waiting until Ubuntu 24.04
> > > > > > > gets released.

Is there an urgency? Is there a requirement to move to QT6 for Fedora or
otherwise?

> > > > > >
> > > > > > Noble (24.04) will have either 1.2.1 or 1.3.1 (there are different
> > > > > > versions in proposed and Release). Either way it will be > 1.2! :
> > > > > >   https://launchpad.net/ubuntu/noble/+package/meson
> > > > > >
> > > > > > I would propose that the meson version update is separated from the
> > > > > > patch as a preceeding commit, and could already be resent. Then we can
> > > > > > simply pick these in April. I'd probably say we could merge this in
> > > > > > early April, such that we can make a release of libcamera with that
> > > > > > support merged soon after Ubuntu 24.04 is released on April 25th.
> > > > > >
> > > > >
> > > > > On the flip side, if it's merged and released into Debian before the
> > > > > Ubuntu freeze on Feb 29[1], then it would be part of Ubuntu 24.04
> > > > > itself.
> > > >
> > > > That's an interesting take too.
> > > >
> > > > Which one is the chicken and which one is the egg?
> > > >
> > > > Our early requirement for meeting the dependencies in the distributions
> > > > was because the distributions themselves were not including libcamera.
> > > > Therefore, users of libcamera /had/ to be able to build libcamera.
> > > >
> > > > Now that things can be included, perhaps that's reason enough to say
> > > > aiming for integration is better.
> > > >
> > > > > [1]: https://discourse.ubuntu.com/t/noble-numbat-release-schedule/35649
> > > >
> > > > It looks like libcamera-0.2 is already included in the noble release, so
> > > > package updates into debian look like they get into Ubuntu quite 'fast'.
> > > >
> > > > I feel like targetting getting /into/ the next Ubuntu LTS with updates
> > > > is better than working on /top/ of it.
> > > >
> > > > The expense/cost is that in between we would no longer support compiling
> > > > the master branch (or intermediate releases) with the 'current' LTS of
> > > > Ubuntu.
> > > >
> > > > I could say "Oh well, that probably doesn't matter" ... except ... I use
> > > > Ubuntu-22.04 as my main distro ... and I would plan to upgrade at the
> > > > next release.
> > > >
> > > > I'm aware that I can work around this issue by upgrading meson myself.
> > > > The question is what will happen to others ... and maybe it's just
> > > > something we should bite and help them upgrade meson in the interim.
> > > >
> > >
> > > Well, in a previous life I used to maintain Meson backports for Ubuntu.
> > >
> > > I'm happy to provide a package (based on the CentOS 9 one) for Ubuntu
> > > 22.04 until 24.04 is released if it would help you:
> > > https://software.opensuse.org//download.html?project=home%3APharaoh_Atem%3AMeson&package=meson
> >
> > Is there an official Ubuntu channel for that? If you can make
> > 'ubuntu-22.04' support a later meson - I have no argument to prevent this
> > being merged already!
> >
> 
> No. At this point, it would be unlikely to get updated unless you know
> someone who can ship something in jammy-backports. But even then, with
> 24.04 coming in a few months, 22.04 has been in its zombie period for
> a while now. Typically, the expectation is that you either use later
> Ubuntu STS releases (23.10 is a perfectly fine release, as an example)
> or backport what you need while you wait for the next LTS.
> 
> If you intend to hold back the patch until after 24.04 releases, then
> there is no chance for this to be part of Ubuntu 24.04 itself, which I
> think would be a shame. I prepared a backport for meson for Ubuntu
> 22.04 because you said it would help you for developing on 22.04. I am

I myself am quite capable of updating meson. I was highlighting that
there are 'users' of Ubuntu 22.04. Our aim for libcamera has always been
to make sure that libcamera can be built on the 'main distributions'.
For which we define that as 'the latest LTS of the big distros'.

My question above was because it sounded like you could get that solved
by fixing the one remaining stuck-in-the-past distro which is blocking
us.

"> Well, in a previous life I used to maintain Meson backports for Ubuntu."

And if you could do that - there would be nothing blocking the patch!

> not about to ask you to move to Fedora (which is what I use) or CentOS
> Stream 9 (which would be an analogous LTS that does have a recent
> enough Meson).
> 
> My only argument at this point is that you can choose to include the
> patch now and make a release so it can land in Debian sid now, and
> thus make it into Ubuntu 24.04 so that Ubuntu users will benefit from
> it. From my perspective, I want this so that Fedora users and later
> CentOS 10 users will benefit from it. I also think that Debian/Ubuntu

The question for us though is how many people's set ups will we break by
updating and merging this patch? I don't know the answer - it could be a
handfull or less, which may be worth the 'short term' support cost.
Maybe its none (one including me?) Or maybe its more? We don't have a
way to know until they shout angrily ...


> folks would benefit from it because it's one less thing depending on
> essentially unsupported versions of Qt.

I don't disagree. Hence earlier - which is the chicken, and which is the
egg ...
--
Kieran
Neal Gompa Jan. 22, 2024, 10:40 p.m. UTC | #19
On Mon, Jan 22, 2024 at 5:31 PM Kieran Bingham
<kieran.bingham@ideasonboard.com> wrote:
>
> Quoting Neal Gompa (2024-01-22 19:55:20)
> > On Mon, Jan 22, 2024 at 11:02 AM Kieran Bingham
> > <kieran.bingham@ideasonboard.com> wrote:
> > >
> > > > > > > > > So it's just Ubuntu/Canonical holding us back here ...
> > > > > > > > >
> > > > > > > > > Any thoughts anyone?
> > > > > > > >
> > > > > > > > I was hoping jammy-backports would help us, but that doesn't seem to be
> > > > > > > > the case :-(
> > > > > > > >
> > > > > > > > As there doesn't seem to be an urgency to switch to Qt 6 (unless I'm
> > > > > > > > missing something), I'm tempted to propose waiting until Ubuntu 24.04
> > > > > > > > gets released.
>
> Is there an urgency? Is there a requirement to move to QT6 for Fedora or
> otherwise?
>
> > > > > > >
> > > > > > > Noble (24.04) will have either 1.2.1 or 1.3.1 (there are different
> > > > > > > versions in proposed and Release). Either way it will be > 1.2! :
> > > > > > >   https://launchpad.net/ubuntu/noble/+package/meson
> > > > > > >
> > > > > > > I would propose that the meson version update is separated from the
> > > > > > > patch as a preceeding commit, and could already be resent. Then we can
> > > > > > > simply pick these in April. I'd probably say we could merge this in
> > > > > > > early April, such that we can make a release of libcamera with that
> > > > > > > support merged soon after Ubuntu 24.04 is released on April 25th.
> > > > > > >
> > > > > >
> > > > > > On the flip side, if it's merged and released into Debian before the
> > > > > > Ubuntu freeze on Feb 29[1], then it would be part of Ubuntu 24.04
> > > > > > itself.
> > > > >
> > > > > That's an interesting take too.
> > > > >
> > > > > Which one is the chicken and which one is the egg?
> > > > >
> > > > > Our early requirement for meeting the dependencies in the distributions
> > > > > was because the distributions themselves were not including libcamera.
> > > > > Therefore, users of libcamera /had/ to be able to build libcamera.
> > > > >
> > > > > Now that things can be included, perhaps that's reason enough to say
> > > > > aiming for integration is better.
> > > > >
> > > > > > [1]: https://discourse.ubuntu.com/t/noble-numbat-release-schedule/35649
> > > > >
> > > > > It looks like libcamera-0.2 is already included in the noble release, so
> > > > > package updates into debian look like they get into Ubuntu quite 'fast'.
> > > > >
> > > > > I feel like targetting getting /into/ the next Ubuntu LTS with updates
> > > > > is better than working on /top/ of it.
> > > > >
> > > > > The expense/cost is that in between we would no longer support compiling
> > > > > the master branch (or intermediate releases) with the 'current' LTS of
> > > > > Ubuntu.
> > > > >
> > > > > I could say "Oh well, that probably doesn't matter" ... except ... I use
> > > > > Ubuntu-22.04 as my main distro ... and I would plan to upgrade at the
> > > > > next release.
> > > > >
> > > > > I'm aware that I can work around this issue by upgrading meson myself.
> > > > > The question is what will happen to others ... and maybe it's just
> > > > > something we should bite and help them upgrade meson in the interim.
> > > > >
> > > >
> > > > Well, in a previous life I used to maintain Meson backports for Ubuntu.
> > > >
> > > > I'm happy to provide a package (based on the CentOS 9 one) for Ubuntu
> > > > 22.04 until 24.04 is released if it would help you:
> > > > https://software.opensuse.org//download.html?project=home%3APharaoh_Atem%3AMeson&package=meson
> > >
> > > Is there an official Ubuntu channel for that? If you can make
> > > 'ubuntu-22.04' support a later meson - I have no argument to prevent this
> > > being merged already!
> > >
> >
> > No. At this point, it would be unlikely to get updated unless you know
> > someone who can ship something in jammy-backports. But even then, with
> > 24.04 coming in a few months, 22.04 has been in its zombie period for
> > a while now. Typically, the expectation is that you either use later
> > Ubuntu STS releases (23.10 is a perfectly fine release, as an example)
> > or backport what you need while you wait for the next LTS.
> >
> > If you intend to hold back the patch until after 24.04 releases, then
> > there is no chance for this to be part of Ubuntu 24.04 itself, which I
> > think would be a shame. I prepared a backport for meson for Ubuntu
> > 22.04 because you said it would help you for developing on 22.04. I am
>
> I myself am quite capable of updating meson. I was highlighting that
> there are 'users' of Ubuntu 22.04. Our aim for libcamera has always been
> to make sure that libcamera can be built on the 'main distributions'.
> For which we define that as 'the latest LTS of the big distros'.
>
> My question above was because it sounded like you could get that solved
> by fixing the one remaining stuck-in-the-past distro which is blocking
> us.
>
> "> Well, in a previous life I used to maintain Meson backports for Ubuntu."
>
> And if you could do that - there would be nothing blocking the patch!
>

Unfortunately, not in Ubuntu proper. I did it outside of the distribution.

It's actually very hard to get a backport of Meson through because it
is not behavior-stable across releases. This is incredibly important
for Debian and Ubuntu, which is likely why Meson almost never sees
official backports. Even CentOS Meson upgrades required a lot of work
to bend new releases to be more backward compatible so nothing would
break.

> > not about to ask you to move to Fedora (which is what I use) or CentOS
> > Stream 9 (which would be an analogous LTS that does have a recent
> > enough Meson).
> >
> > My only argument at this point is that you can choose to include the
> > patch now and make a release so it can land in Debian sid now, and
> > thus make it into Ubuntu 24.04 so that Ubuntu users will benefit from
> > it. From my perspective, I want this so that Fedora users and later
> > CentOS 10 users will benefit from it. I also think that Debian/Ubuntu
>
> The question for us though is how many people's set ups will we break by
> updating and merging this patch? I don't know the answer - it could be a
> handfull or less, which may be worth the 'short term' support cost.
> Maybe its none (one including me?) Or maybe its more? We don't have a
> way to know until they shout angrily ...
>
>

I think realistically most people use libcamera from the distributions
themselves. And in Debian and Ubuntu, libcamera is not updated in
stable releases at all. If people are trying to use updated libcamera
on those distributions, then they are either 1) building from source
or 2) installing a third party build. In both scenarios, handling a
meson upgrade is probably reasonable.

> > folks would benefit from it because it's one less thing depending on
> > essentially unsupported versions of Qt.
>
> I don't disagree. Hence earlier - which is the chicken, and which is the
> egg ...

🤷‍♂️
Laurent Pinchart Jan. 23, 2024, 12:19 a.m. UTC | #20
On Mon, Jan 22, 2024 at 05:40:42PM -0500, Neal Gompa wrote:
> On Mon, Jan 22, 2024 at 5:31 PM Kieran Bingham wrote:
> > Quoting Neal Gompa (2024-01-22 19:55:20)
> > > On Mon, Jan 22, 2024 at 11:02 AM Kieran Bingham wrote:
> > > >
> > > > > > > > > > So it's just Ubuntu/Canonical holding us back here ...
> > > > > > > > > >
> > > > > > > > > > Any thoughts anyone?
> > > > > > > > >
> > > > > > > > > I was hoping jammy-backports would help us, but that doesn't seem to be
> > > > > > > > > the case :-(
> > > > > > > > >
> > > > > > > > > As there doesn't seem to be an urgency to switch to Qt 6 (unless I'm
> > > > > > > > > missing something), I'm tempted to propose waiting until Ubuntu 24.04
> > > > > > > > > gets released.
> >
> > Is there an urgency? Is there a requirement to move to QT6 for Fedora or
> > otherwise?
> >
> > > > > > > >
> > > > > > > > Noble (24.04) will have either 1.2.1 or 1.3.1 (there are different
> > > > > > > > versions in proposed and Release). Either way it will be > 1.2! :
> > > > > > > >   https://launchpad.net/ubuntu/noble/+package/meson
> > > > > > > >
> > > > > > > > I would propose that the meson version update is separated from the
> > > > > > > > patch as a preceeding commit, and could already be resent. Then we can
> > > > > > > > simply pick these in April. I'd probably say we could merge this in
> > > > > > > > early April, such that we can make a release of libcamera with that
> > > > > > > > support merged soon after Ubuntu 24.04 is released on April 25th.
> > > > > > > >
> > > > > > >
> > > > > > > On the flip side, if it's merged and released into Debian before the
> > > > > > > Ubuntu freeze on Feb 29[1], then it would be part of Ubuntu 24.04
> > > > > > > itself.
> > > > > >
> > > > > > That's an interesting take too.
> > > > > >
> > > > > > Which one is the chicken and which one is the egg?
> > > > > >
> > > > > > Our early requirement for meeting the dependencies in the distributions
> > > > > > was because the distributions themselves were not including libcamera.
> > > > > > Therefore, users of libcamera /had/ to be able to build libcamera.
> > > > > >
> > > > > > Now that things can be included, perhaps that's reason enough to say
> > > > > > aiming for integration is better.
> > > > > >
> > > > > > > [1]: https://discourse.ubuntu.com/t/noble-numbat-release-schedule/35649
> > > > > >
> > > > > > It looks like libcamera-0.2 is already included in the noble release, so
> > > > > > package updates into debian look like they get into Ubuntu quite 'fast'.
> > > > > >
> > > > > > I feel like targetting getting /into/ the next Ubuntu LTS with updates
> > > > > > is better than working on /top/ of it.
> > > > > >
> > > > > > The expense/cost is that in between we would no longer support compiling
> > > > > > the master branch (or intermediate releases) with the 'current' LTS of
> > > > > > Ubuntu.
> > > > > >
> > > > > > I could say "Oh well, that probably doesn't matter" ... except ... I use
> > > > > > Ubuntu-22.04 as my main distro ... and I would plan to upgrade at the
> > > > > > next release.
> > > > > >
> > > > > > I'm aware that I can work around this issue by upgrading meson myself.
> > > > > > The question is what will happen to others ... and maybe it's just
> > > > > > something we should bite and help them upgrade meson in the interim.
> > > > > >
> > > > >
> > > > > Well, in a previous life I used to maintain Meson backports for Ubuntu.
> > > > >
> > > > > I'm happy to provide a package (based on the CentOS 9 one) for Ubuntu
> > > > > 22.04 until 24.04 is released if it would help you:
> > > > > https://software.opensuse.org//download.html?project=home%3APharaoh_Atem%3AMeson&package=meson
> > > >
> > > > Is there an official Ubuntu channel for that? If you can make
> > > > 'ubuntu-22.04' support a later meson - I have no argument to prevent this
> > > > being merged already!
> > > >
> > >
> > > No. At this point, it would be unlikely to get updated unless you know
> > > someone who can ship something in jammy-backports. But even then, with
> > > 24.04 coming in a few months, 22.04 has been in its zombie period for
> > > a while now. Typically, the expectation is that you either use later
> > > Ubuntu STS releases (23.10 is a perfectly fine release, as an example)
> > > or backport what you need while you wait for the next LTS.
> > >
> > > If you intend to hold back the patch until after 24.04 releases, then
> > > there is no chance for this to be part of Ubuntu 24.04 itself, which I
> > > think would be a shame. I prepared a backport for meson for Ubuntu
> > > 22.04 because you said it would help you for developing on 22.04. I am
> >
> > I myself am quite capable of updating meson. I was highlighting that
> > there are 'users' of Ubuntu 22.04. Our aim for libcamera has always been
> > to make sure that libcamera can be built on the 'main distributions'.
> > For which we define that as 'the latest LTS of the big distros'.
> >
> > My question above was because it sounded like you could get that solved
> > by fixing the one remaining stuck-in-the-past distro which is blocking
> > us.
> >
> > "> Well, in a previous life I used to maintain Meson backports for Ubuntu."
> >
> > And if you could do that - there would be nothing blocking the patch!
> >
> 
> Unfortunately, not in Ubuntu proper. I did it outside of the distribution.
> 
> It's actually very hard to get a backport of Meson through because it
> is not behavior-stable across releases. This is incredibly important
> for Debian and Ubuntu, which is likely why Meson almost never sees
> official backports. Even CentOS Meson upgrades required a lot of work
> to bend new releases to be more backward compatible so nothing would
> break.

I don't know if it can help convincing Ubuntu, but Debian has the
following meson versions:

bullseye (oldstable) (devel): high-productivity build system
0.56.2-1: all

bullseye-backports (devel): high-productivity build system
1.0.0-1.1~bpo11+1: all 

> > > not about to ask you to move to Fedora (which is what I use) or CentOS
> > > Stream 9 (which would be an analogous LTS that does have a recent
> > > enough Meson).
> > >
> > > My only argument at this point is that you can choose to include the
> > > patch now and make a release so it can land in Debian sid now, and
> > > thus make it into Ubuntu 24.04 so that Ubuntu users will benefit from
> > > it. From my perspective, I want this so that Fedora users and later
> > > CentOS 10 users will benefit from it. I also think that Debian/Ubuntu
> >
> > The question for us though is how many people's set ups will we break by
> > updating and merging this patch? I don't know the answer - it could be a
> > handfull or less, which may be worth the 'short term' support cost.
> > Maybe its none (one including me?) Or maybe its more? We don't have a
> > way to know until they shout angrily ...
> 
> I think realistically most people use libcamera from the distributions
> themselves. And in Debian and Ubuntu, libcamera is not updated in
> stable releases at all. If people are trying to use updated libcamera
> on those distributions, then they are either 1) building from source
> or 2) installing a third party build. In both scenarios, handling a
> meson upgrade is probably reasonable.
> 
> > > folks would benefit from it because it's one less thing depending on
> > > essentially unsupported versions of Qt.
> >
> > I don't disagree. Hence earlier - which is the chicken, and which is the
> > egg ...
> 
> 🤷‍♂️
Gergo Koteles Jan. 23, 2024, 12:21 a.m. UTC | #21
On Mon, 2024-01-22 at 17:40 -0500, Neal Gompa wrote:
> On Mon, Jan 22, 2024 at 5:31 PM Kieran Bingham
> <kieran.bingham@ideasonboard.com> wrote:
> > 
> > Quoting Neal Gompa (2024-01-22 19:55:20)
> > > On Mon, Jan 22, 2024 at 11:02 AM Kieran Bingham
> > > <kieran.bingham@ideasonboard.com> wrote:
> > > > 
> > > > > > > > > > So it's just Ubuntu/Canonical holding us back here ...
> > > > > > > > > > 
> > > > > > > > > > Any thoughts anyone?
> > > > > > > > > 
> > > > > > > > > I was hoping jammy-backports would help us, but that doesn't seem to be
> > > > > > > > > the case :-(
> > > > > > > > > 
> > > > > > > > > As there doesn't seem to be an urgency to switch to Qt 6 (unless I'm
> > > > > > > > > missing something), I'm tempted to propose waiting until Ubuntu 24.04
> > > > > > > > > gets released.
> > 
> > Is there an urgency? Is there a requirement to move to QT6 for Fedora or
> > otherwise?
> > 
> > > > > > > > 
> > > > > > > > Noble (24.04) will have either 1.2.1 or 1.3.1 (there are different
> > > > > > > > versions in proposed and Release). Either way it will be > 1.2! :
> > > > > > > >   https://launchpad.net/ubuntu/noble/+package/meson
> > > > > > > > 
> > > > > > > > I would propose that the meson version update is separated from the
> > > > > > > > patch as a preceeding commit, and could already be resent. Then we can
> > > > > > > > simply pick these in April. I'd probably say we could merge this in
> > > > > > > > early April, such that we can make a release of libcamera with that
> > > > > > > > support merged soon after Ubuntu 24.04 is released on April 25th.
> > > > > > > > 
> > > > > > > 
> > > > > > > On the flip side, if it's merged and released into Debian before the
> > > > > > > Ubuntu freeze on Feb 29[1], then it would be part of Ubuntu 24.04
> > > > > > > itself.
> > > > > > 
> > > > > > That's an interesting take too.
> > > > > > 
> > > > > > Which one is the chicken and which one is the egg?
> > > > > > 
> > > > > > Our early requirement for meeting the dependencies in the distributions
> > > > > > was because the distributions themselves were not including libcamera.
> > > > > > Therefore, users of libcamera /had/ to be able to build libcamera.
> > > > > > 
> > > > > > Now that things can be included, perhaps that's reason enough to say
> > > > > > aiming for integration is better.
> > > > > > 
> > > > > > > [1]: https://discourse.ubuntu.com/t/noble-numbat-release-schedule/35649
> > > > > > 
> > > > > > It looks like libcamera-0.2 is already included in the noble release, so
> > > > > > package updates into debian look like they get into Ubuntu quite 'fast'.
> > > > > > 
> > > > > > I feel like targetting getting /into/ the next Ubuntu LTS with updates
> > > > > > is better than working on /top/ of it.
> > > > > > 
> > > > > > The expense/cost is that in between we would no longer support compiling
> > > > > > the master branch (or intermediate releases) with the 'current' LTS of
> > > > > > Ubuntu.
> > > > > > 
> > > > > > I could say "Oh well, that probably doesn't matter" ... except ... I use
> > > > > > Ubuntu-22.04 as my main distro ... and I would plan to upgrade at the
> > > > > > next release.
> > > > > > 
> > > > > > I'm aware that I can work around this issue by upgrading meson myself.
> > > > > > The question is what will happen to others ... and maybe it's just
> > > > > > something we should bite and help them upgrade meson in the interim.
> > > > > > 
> > > > > 
> > > > > Well, in a previous life I used to maintain Meson backports for Ubuntu.
> > > > > 
> > > > > I'm happy to provide a package (based on the CentOS 9 one) for Ubuntu
> > > > > 22.04 until 24.04 is released if it would help you:
> > > > > https://software.opensuse.org//download.html?project=home%3APharaoh_Atem%3AMeson&package=meson
> > > > 
> > > > Is there an official Ubuntu channel for that? If you can make
> > > > 'ubuntu-22.04' support a later meson - I have no argument to prevent this
> > > > being merged already!
> > > > 
> > > 
> > > No. At this point, it would be unlikely to get updated unless you know
> > > someone who can ship something in jammy-backports. But even then, with
> > > 24.04 coming in a few months, 22.04 has been in its zombie period for
> > > a while now. Typically, the expectation is that you either use later
> > > Ubuntu STS releases (23.10 is a perfectly fine release, as an example)
> > > or backport what you need while you wait for the next LTS.
> > > 
> > > If you intend to hold back the patch until after 24.04 releases, then
> > > there is no chance for this to be part of Ubuntu 24.04 itself, which I
> > > think would be a shame. I prepared a backport for meson for Ubuntu
> > > 22.04 because you said it would help you for developing on 22.04. I am
> > 
> > I myself am quite capable of updating meson. I was highlighting that
> > there are 'users' of Ubuntu 22.04. Our aim for libcamera has always been
> > to make sure that libcamera can be built on the 'main distributions'.
> > For which we define that as 'the latest LTS of the big distros'.
> > 
> > My question above was because it sounded like you could get that solved
> > by fixing the one remaining stuck-in-the-past distro which is blocking
> > us.
> > 
> > "> Well, in a previous life I used to maintain Meson backports for Ubuntu."
> > 
> > And if you could do that - there would be nothing blocking the patch!
> > 
> 
> Unfortunately, not in Ubuntu proper. I did it outside of the distribution.
> 
> It's actually very hard to get a backport of Meson through because it
> is not behavior-stable across releases. This is incredibly important
> for Debian and Ubuntu, which is likely why Meson almost never sees
> official backports. Even CentOS Meson upgrades required a lot of work
> to bend new releases to be more backward compatible so nothing would
> break.
> 
> > > not about to ask you to move to Fedora (which is what I use) or CentOS
> > > Stream 9 (which would be an analogous LTS that does have a recent
> > > enough Meson).
> > > 
> > > My only argument at this point is that you can choose to include the
> > > patch now and make a release so it can land in Debian sid now, and
> > > thus make it into Ubuntu 24.04 so that Ubuntu users will benefit from
> > > it. From my perspective, I want this so that Fedora users and later
> > > CentOS 10 users will benefit from it. I also think that Debian/Ubuntu
> > 
> > The question for us though is how many people's set ups will we break by
> > updating and merging this patch? I don't know the answer - it could be a
> > handfull or less, which may be worth the 'short term' support cost.
> > Maybe its none (one including me?) Or maybe its more? We don't have a
> > way to know until they shout angrily ...
> > 
> > 
> 
> I think realistically most people use libcamera from the distributions
> themselves. And in Debian and Ubuntu, libcamera is not updated in
> stable releases at all. If people are trying to use updated libcamera
> on those distributions, then they are either 1) building from source
> or 2) installing a third party build. In both scenarios, handling a
> meson upgrade is probably reasonable.
> 
> > > folks would benefit from it because it's one less thing depending on
> > > essentially unsupported versions of Qt.
> > 
> > I don't disagree. Hence earlier - which is the chicken, and which is the
> > egg ...
> 
> 🤷‍♂️
> 
> 

Why not support both Qt5 and Qt6 for about a year? Drop Qt5 then?
Use Qt5 if meson is old, otherwise use Qt6.

>
Neal Gompa Jan. 23, 2024, 1:14 a.m. UTC | #22
On Mon, Jan 22, 2024 at 7:21 PM Gergo Koteles <soyer@irl.hu> wrote:
>
> On Mon, 2024-01-22 at 17:40 -0500, Neal Gompa wrote:
> > On Mon, Jan 22, 2024 at 5:31 PM Kieran Bingham
> > <kieran.bingham@ideasonboard.com> wrote:
> > >
> > > Quoting Neal Gompa (2024-01-22 19:55:20)
> > > > On Mon, Jan 22, 2024 at 11:02 AM Kieran Bingham
> > > > <kieran.bingham@ideasonboard.com> wrote:
> > > > >
> > > > > > > > > > > So it's just Ubuntu/Canonical holding us back here ...
> > > > > > > > > > >
> > > > > > > > > > > Any thoughts anyone?
> > > > > > > > > >
> > > > > > > > > > I was hoping jammy-backports would help us, but that doesn't seem to be
> > > > > > > > > > the case :-(
> > > > > > > > > >
> > > > > > > > > > As there doesn't seem to be an urgency to switch to Qt 6 (unless I'm
> > > > > > > > > > missing something), I'm tempted to propose waiting until Ubuntu 24.04
> > > > > > > > > > gets released.
> > >
> > > Is there an urgency? Is there a requirement to move to QT6 for Fedora or
> > > otherwise?
> > >
> > > > > > > > >
> > > > > > > > > Noble (24.04) will have either 1.2.1 or 1.3.1 (there are different
> > > > > > > > > versions in proposed and Release). Either way it will be > 1.2! :
> > > > > > > > >   https://launchpad.net/ubuntu/noble/+package/meson
> > > > > > > > >
> > > > > > > > > I would propose that the meson version update is separated from the
> > > > > > > > > patch as a preceeding commit, and could already be resent. Then we can
> > > > > > > > > simply pick these in April. I'd probably say we could merge this in
> > > > > > > > > early April, such that we can make a release of libcamera with that
> > > > > > > > > support merged soon after Ubuntu 24.04 is released on April 25th.
> > > > > > > > >
> > > > > > > >
> > > > > > > > On the flip side, if it's merged and released into Debian before the
> > > > > > > > Ubuntu freeze on Feb 29[1], then it would be part of Ubuntu 24.04
> > > > > > > > itself.
> > > > > > >
> > > > > > > That's an interesting take too.
> > > > > > >
> > > > > > > Which one is the chicken and which one is the egg?
> > > > > > >
> > > > > > > Our early requirement for meeting the dependencies in the distributions
> > > > > > > was because the distributions themselves were not including libcamera.
> > > > > > > Therefore, users of libcamera /had/ to be able to build libcamera.
> > > > > > >
> > > > > > > Now that things can be included, perhaps that's reason enough to say
> > > > > > > aiming for integration is better.
> > > > > > >
> > > > > > > > [1]: https://discourse.ubuntu.com/t/noble-numbat-release-schedule/35649
> > > > > > >
> > > > > > > It looks like libcamera-0.2 is already included in the noble release, so
> > > > > > > package updates into debian look like they get into Ubuntu quite 'fast'.
> > > > > > >
> > > > > > > I feel like targetting getting /into/ the next Ubuntu LTS with updates
> > > > > > > is better than working on /top/ of it.
> > > > > > >
> > > > > > > The expense/cost is that in between we would no longer support compiling
> > > > > > > the master branch (or intermediate releases) with the 'current' LTS of
> > > > > > > Ubuntu.
> > > > > > >
> > > > > > > I could say "Oh well, that probably doesn't matter" ... except ... I use
> > > > > > > Ubuntu-22.04 as my main distro ... and I would plan to upgrade at the
> > > > > > > next release.
> > > > > > >
> > > > > > > I'm aware that I can work around this issue by upgrading meson myself.
> > > > > > > The question is what will happen to others ... and maybe it's just
> > > > > > > something we should bite and help them upgrade meson in the interim.
> > > > > > >
> > > > > >
> > > > > > Well, in a previous life I used to maintain Meson backports for Ubuntu.
> > > > > >
> > > > > > I'm happy to provide a package (based on the CentOS 9 one) for Ubuntu
> > > > > > 22.04 until 24.04 is released if it would help you:
> > > > > > https://software.opensuse.org//download.html?project=home%3APharaoh_Atem%3AMeson&package=meson
> > > > >
> > > > > Is there an official Ubuntu channel for that? If you can make
> > > > > 'ubuntu-22.04' support a later meson - I have no argument to prevent this
> > > > > being merged already!
> > > > >
> > > >
> > > > No. At this point, it would be unlikely to get updated unless you know
> > > > someone who can ship something in jammy-backports. But even then, with
> > > > 24.04 coming in a few months, 22.04 has been in its zombie period for
> > > > a while now. Typically, the expectation is that you either use later
> > > > Ubuntu STS releases (23.10 is a perfectly fine release, as an example)
> > > > or backport what you need while you wait for the next LTS.
> > > >
> > > > If you intend to hold back the patch until after 24.04 releases, then
> > > > there is no chance for this to be part of Ubuntu 24.04 itself, which I
> > > > think would be a shame. I prepared a backport for meson for Ubuntu
> > > > 22.04 because you said it would help you for developing on 22.04. I am
> > >
> > > I myself am quite capable of updating meson. I was highlighting that
> > > there are 'users' of Ubuntu 22.04. Our aim for libcamera has always been
> > > to make sure that libcamera can be built on the 'main distributions'.
> > > For which we define that as 'the latest LTS of the big distros'.
> > >
> > > My question above was because it sounded like you could get that solved
> > > by fixing the one remaining stuck-in-the-past distro which is blocking
> > > us.
> > >
> > > "> Well, in a previous life I used to maintain Meson backports for Ubuntu."
> > >
> > > And if you could do that - there would be nothing blocking the patch!
> > >
> >
> > Unfortunately, not in Ubuntu proper. I did it outside of the distribution.
> >
> > It's actually very hard to get a backport of Meson through because it
> > is not behavior-stable across releases. This is incredibly important
> > for Debian and Ubuntu, which is likely why Meson almost never sees
> > official backports. Even CentOS Meson upgrades required a lot of work
> > to bend new releases to be more backward compatible so nothing would
> > break.
> >
> > > > not about to ask you to move to Fedora (which is what I use) or CentOS
> > > > Stream 9 (which would be an analogous LTS that does have a recent
> > > > enough Meson).
> > > >
> > > > My only argument at this point is that you can choose to include the
> > > > patch now and make a release so it can land in Debian sid now, and
> > > > thus make it into Ubuntu 24.04 so that Ubuntu users will benefit from
> > > > it. From my perspective, I want this so that Fedora users and later
> > > > CentOS 10 users will benefit from it. I also think that Debian/Ubuntu
> > >
> > > The question for us though is how many people's set ups will we break by
> > > updating and merging this patch? I don't know the answer - it could be a
> > > handfull or less, which may be worth the 'short term' support cost.
> > > Maybe its none (one including me?) Or maybe its more? We don't have a
> > > way to know until they shout angrily ...
> > >
> > >
> >
> > I think realistically most people use libcamera from the distributions
> > themselves. And in Debian and Ubuntu, libcamera is not updated in
> > stable releases at all. If people are trying to use updated libcamera
> > on those distributions, then they are either 1) building from source
> > or 2) installing a third party build. In both scenarios, handling a
> > meson upgrade is probably reasonable.
> >
> > > > folks would benefit from it because it's one less thing depending on
> > > > essentially unsupported versions of Qt.
> > >
> > > I don't disagree. Hence earlier - which is the chicken, and which is the
> > > egg ...
> >
> > 🤷‍♂️
> >
> >
>
> Why not support both Qt5 and Qt6 for about a year? Drop Qt5 then?
> Use Qt5 if meson is old, otherwise use Qt6.
>

Two problems with it:

1. It's a lot of complexity for the meson scripts
2. Open Source Qt 5 is EOL. It's super-EOL now that both Qt 6.2 LTS
and Qt 6.5 LTS are available. KDE itself requires Qt 6.6 now. Qt 6.7
is coming in March!

If I were going to do anything, I'd make qcam conditional on newer
meson instead until we can drop that once everyone developing
libcamera on Ubuntu 22.04 moves to Ubuntu 24.04.

But I still think we should bite the bullet, land this, and get a
release that can be included in 24.04.




--
真実はいつも一つ!/ Always, there's only one truth!
Laurent Pinchart Jan. 23, 2024, 1:31 a.m. UTC | #23
On Mon, Jan 22, 2024 at 08:14:10PM -0500, Neal Gompa wrote:
> On Mon, Jan 22, 2024 at 7:21 PM Gergo Koteles <soyer@irl.hu> wrote:
> > On Mon, 2024-01-22 at 17:40 -0500, Neal Gompa wrote:
> > > On Mon, Jan 22, 2024 at 5:31 PM Kieran Bingham wrote:
> > > > Quoting Neal Gompa (2024-01-22 19:55:20)
> > > > > On Mon, Jan 22, 2024 at 11:02 AM Kieran Bingham wrote:
> > > > > >
> > > > > > > > > > > > So it's just Ubuntu/Canonical holding us back here ...
> > > > > > > > > > > >
> > > > > > > > > > > > Any thoughts anyone?
> > > > > > > > > > >
> > > > > > > > > > > I was hoping jammy-backports would help us, but that doesn't seem to be
> > > > > > > > > > > the case :-(
> > > > > > > > > > >
> > > > > > > > > > > As there doesn't seem to be an urgency to switch to Qt 6 (unless I'm
> > > > > > > > > > > missing something), I'm tempted to propose waiting until Ubuntu 24.04
> > > > > > > > > > > gets released.
> > > >
> > > > Is there an urgency? Is there a requirement to move to QT6 for Fedora or
> > > > otherwise?
> > > >
> > > > > > > > > >
> > > > > > > > > > Noble (24.04) will have either 1.2.1 or 1.3.1 (there are different
> > > > > > > > > > versions in proposed and Release). Either way it will be > 1.2! :
> > > > > > > > > >   https://launchpad.net/ubuntu/noble/+package/meson
> > > > > > > > > >
> > > > > > > > > > I would propose that the meson version update is separated from the
> > > > > > > > > > patch as a preceeding commit, and could already be resent. Then we can
> > > > > > > > > > simply pick these in April. I'd probably say we could merge this in
> > > > > > > > > > early April, such that we can make a release of libcamera with that
> > > > > > > > > > support merged soon after Ubuntu 24.04 is released on April 25th.
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > > On the flip side, if it's merged and released into Debian before the
> > > > > > > > > Ubuntu freeze on Feb 29[1], then it would be part of Ubuntu 24.04
> > > > > > > > > itself.
> > > > > > > >
> > > > > > > > That's an interesting take too.
> > > > > > > >
> > > > > > > > Which one is the chicken and which one is the egg?
> > > > > > > >
> > > > > > > > Our early requirement for meeting the dependencies in the distributions
> > > > > > > > was because the distributions themselves were not including libcamera.
> > > > > > > > Therefore, users of libcamera /had/ to be able to build libcamera.
> > > > > > > >
> > > > > > > > Now that things can be included, perhaps that's reason enough to say
> > > > > > > > aiming for integration is better.
> > > > > > > >
> > > > > > > > > [1]: https://discourse.ubuntu.com/t/noble-numbat-release-schedule/35649
> > > > > > > >
> > > > > > > > It looks like libcamera-0.2 is already included in the noble release, so
> > > > > > > > package updates into debian look like they get into Ubuntu quite 'fast'.
> > > > > > > >
> > > > > > > > I feel like targetting getting /into/ the next Ubuntu LTS with updates
> > > > > > > > is better than working on /top/ of it.
> > > > > > > >
> > > > > > > > The expense/cost is that in between we would no longer support compiling
> > > > > > > > the master branch (or intermediate releases) with the 'current' LTS of
> > > > > > > > Ubuntu.
> > > > > > > >
> > > > > > > > I could say "Oh well, that probably doesn't matter" ... except ... I use
> > > > > > > > Ubuntu-22.04 as my main distro ... and I would plan to upgrade at the
> > > > > > > > next release.
> > > > > > > >
> > > > > > > > I'm aware that I can work around this issue by upgrading meson myself.
> > > > > > > > The question is what will happen to others ... and maybe it's just
> > > > > > > > something we should bite and help them upgrade meson in the interim.
> > > > > > >
> > > > > > > Well, in a previous life I used to maintain Meson backports for Ubuntu.
> > > > > > >
> > > > > > > I'm happy to provide a package (based on the CentOS 9 one) for Ubuntu
> > > > > > > 22.04 until 24.04 is released if it would help you:
> > > > > > > https://software.opensuse.org//download.html?project=home%3APharaoh_Atem%3AMeson&package=meson
> > > > > >
> > > > > > Is there an official Ubuntu channel for that? If you can make
> > > > > > 'ubuntu-22.04' support a later meson - I have no argument to prevent this
> > > > > > being merged already!
> > > > >
> > > > > No. At this point, it would be unlikely to get updated unless you know
> > > > > someone who can ship something in jammy-backports. But even then, with
> > > > > 24.04 coming in a few months, 22.04 has been in its zombie period for
> > > > > a while now. Typically, the expectation is that you either use later
> > > > > Ubuntu STS releases (23.10 is a perfectly fine release, as an example)
> > > > > or backport what you need while you wait for the next LTS.
> > > > >
> > > > > If you intend to hold back the patch until after 24.04 releases, then
> > > > > there is no chance for this to be part of Ubuntu 24.04 itself, which I
> > > > > think would be a shame. I prepared a backport for meson for Ubuntu
> > > > > 22.04 because you said it would help you for developing on 22.04. I am
> > > >
> > > > I myself am quite capable of updating meson. I was highlighting that
> > > > there are 'users' of Ubuntu 22.04. Our aim for libcamera has always been
> > > > to make sure that libcamera can be built on the 'main distributions'.
> > > > For which we define that as 'the latest LTS of the big distros'.
> > > >
> > > > My question above was because it sounded like you could get that solved
> > > > by fixing the one remaining stuck-in-the-past distro which is blocking
> > > > us.
> > > >
> > > > "> Well, in a previous life I used to maintain Meson backports for Ubuntu."
> > > >
> > > > And if you could do that - there would be nothing blocking the patch!
> > >
> > > Unfortunately, not in Ubuntu proper. I did it outside of the distribution.
> > >
> > > It's actually very hard to get a backport of Meson through because it
> > > is not behavior-stable across releases. This is incredibly important
> > > for Debian and Ubuntu, which is likely why Meson almost never sees
> > > official backports. Even CentOS Meson upgrades required a lot of work
> > > to bend new releases to be more backward compatible so nothing would
> > > break.
> > >
> > > > > not about to ask you to move to Fedora (which is what I use) or CentOS
> > > > > Stream 9 (which would be an analogous LTS that does have a recent
> > > > > enough Meson).
> > > > >
> > > > > My only argument at this point is that you can choose to include the
> > > > > patch now and make a release so it can land in Debian sid now, and
> > > > > thus make it into Ubuntu 24.04 so that Ubuntu users will benefit from
> > > > > it. From my perspective, I want this so that Fedora users and later
> > > > > CentOS 10 users will benefit from it. I also think that Debian/Ubuntu
> > > >
> > > > The question for us though is how many people's set ups will we break by
> > > > updating and merging this patch? I don't know the answer - it could be a
> > > > handfull or less, which may be worth the 'short term' support cost.
> > > > Maybe its none (one including me?) Or maybe its more? We don't have a
> > > > way to know until they shout angrily ...
> > >
> > > I think realistically most people use libcamera from the distributions
> > > themselves. And in Debian and Ubuntu, libcamera is not updated in
> > > stable releases at all. If people are trying to use updated libcamera
> > > on those distributions, then they are either 1) building from source
> > > or 2) installing a third party build. In both scenarios, handling a
> > > meson upgrade is probably reasonable.
> > >
> > > > > folks would benefit from it because it's one less thing depending on
> > > > > essentially unsupported versions of Qt.
> > > >
> > > > I don't disagree. Hence earlier - which is the chicken, and which is the
> > > > egg ...
> > >
> > > 🤷‍♂️
> >
> > Why not support both Qt5 and Qt6 for about a year? Drop Qt5 then?
> > Use Qt5 if meson is old, otherwise use Qt6.
> 
> Two problems with it:
> 
> 1. It's a lot of complexity for the meson scripts
> 2. Open Source Qt 5 is EOL. It's super-EOL now that both Qt 6.2 LTS
> and Qt 6.5 LTS are available. KDE itself requires Qt 6.6 now. Qt 6.7
> is coming in March!
> 
> If I were going to do anything, I'd make qcam conditional on newer
> meson instead until we can drop that once everyone developing
> libcamera on Ubuntu 22.04 moves to Ubuntu 24.04.

meson doesn't allow using features of versions higher than the one
listed in the project() call, even if you make such usage conditional on
the meson version. If we're lucky, we'll only get a warning with older
meson versions, this could be tested if desired.

> But I still think we should bite the bullet, land this, and get a
> release that can be included in 24.04.

I still don't get the urgency to be honest. Yes, Qt5 is EOL, but it will
still be shipped by Ubuntu 24.04, won't it ? Beside, qcam is meant to be
a test application for development only. And if it's really important
for Ubuntu 24.04 to ship a Qt6-based qcam, why can't it bump the
libcamera version later ? And what about users who rely on Qt5, don't
they deserve more than a week notice before we switch ?
Neal Gompa Jan. 23, 2024, 10:01 p.m. UTC | #24
On Mon, Jan 22, 2024 at 8:31 PM Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
>
> On Mon, Jan 22, 2024 at 08:14:10PM -0500, Neal Gompa wrote:
> > On Mon, Jan 22, 2024 at 7:21 PM Gergo Koteles <soyer@irl.hu> wrote:
> > > On Mon, 2024-01-22 at 17:40 -0500, Neal Gompa wrote:
> > > > On Mon, Jan 22, 2024 at 5:31 PM Kieran Bingham wrote:
> > > > > Quoting Neal Gompa (2024-01-22 19:55:20)
> > > > > > On Mon, Jan 22, 2024 at 11:02 AM Kieran Bingham wrote:
> > > > > > >
> > > > > > > > > > > > > So it's just Ubuntu/Canonical holding us back here ...
> > > > > > > > > > > > >
> > > > > > > > > > > > > Any thoughts anyone?
> > > > > > > > > > > >
> > > > > > > > > > > > I was hoping jammy-backports would help us, but that doesn't seem to be
> > > > > > > > > > > > the case :-(
> > > > > > > > > > > >
> > > > > > > > > > > > As there doesn't seem to be an urgency to switch to Qt 6 (unless I'm
> > > > > > > > > > > > missing something), I'm tempted to propose waiting until Ubuntu 24.04
> > > > > > > > > > > > gets released.
> > > > >
> > > > > Is there an urgency? Is there a requirement to move to QT6 for Fedora or
> > > > > otherwise?
> > > > >
> > > > > > > > > > >
> > > > > > > > > > > Noble (24.04) will have either 1.2.1 or 1.3.1 (there are different
> > > > > > > > > > > versions in proposed and Release). Either way it will be > 1.2! :
> > > > > > > > > > >   https://launchpad.net/ubuntu/noble/+package/meson
> > > > > > > > > > >
> > > > > > > > > > > I would propose that the meson version update is separated from the
> > > > > > > > > > > patch as a preceeding commit, and could already be resent. Then we can
> > > > > > > > > > > simply pick these in April. I'd probably say we could merge this in
> > > > > > > > > > > early April, such that we can make a release of libcamera with that
> > > > > > > > > > > support merged soon after Ubuntu 24.04 is released on April 25th.
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > On the flip side, if it's merged and released into Debian before the
> > > > > > > > > > Ubuntu freeze on Feb 29[1], then it would be part of Ubuntu 24.04
> > > > > > > > > > itself.
> > > > > > > > >
> > > > > > > > > That's an interesting take too.
> > > > > > > > >
> > > > > > > > > Which one is the chicken and which one is the egg?
> > > > > > > > >
> > > > > > > > > Our early requirement for meeting the dependencies in the distributions
> > > > > > > > > was because the distributions themselves were not including libcamera.
> > > > > > > > > Therefore, users of libcamera /had/ to be able to build libcamera.
> > > > > > > > >
> > > > > > > > > Now that things can be included, perhaps that's reason enough to say
> > > > > > > > > aiming for integration is better.
> > > > > > > > >
> > > > > > > > > > [1]: https://discourse.ubuntu.com/t/noble-numbat-release-schedule/35649
> > > > > > > > >
> > > > > > > > > It looks like libcamera-0.2 is already included in the noble release, so
> > > > > > > > > package updates into debian look like they get into Ubuntu quite 'fast'.
> > > > > > > > >
> > > > > > > > > I feel like targetting getting /into/ the next Ubuntu LTS with updates
> > > > > > > > > is better than working on /top/ of it.
> > > > > > > > >
> > > > > > > > > The expense/cost is that in between we would no longer support compiling
> > > > > > > > > the master branch (or intermediate releases) with the 'current' LTS of
> > > > > > > > > Ubuntu.
> > > > > > > > >
> > > > > > > > > I could say "Oh well, that probably doesn't matter" ... except ... I use
> > > > > > > > > Ubuntu-22.04 as my main distro ... and I would plan to upgrade at the
> > > > > > > > > next release.
> > > > > > > > >
> > > > > > > > > I'm aware that I can work around this issue by upgrading meson myself.
> > > > > > > > > The question is what will happen to others ... and maybe it's just
> > > > > > > > > something we should bite and help them upgrade meson in the interim.
> > > > > > > >
> > > > > > > > Well, in a previous life I used to maintain Meson backports for Ubuntu.
> > > > > > > >
> > > > > > > > I'm happy to provide a package (based on the CentOS 9 one) for Ubuntu
> > > > > > > > 22.04 until 24.04 is released if it would help you:
> > > > > > > > https://software.opensuse.org//download.html?project=home%3APharaoh_Atem%3AMeson&package=meson
> > > > > > >
> > > > > > > Is there an official Ubuntu channel for that? If you can make
> > > > > > > 'ubuntu-22.04' support a later meson - I have no argument to prevent this
> > > > > > > being merged already!
> > > > > >
> > > > > > No. At this point, it would be unlikely to get updated unless you know
> > > > > > someone who can ship something in jammy-backports. But even then, with
> > > > > > 24.04 coming in a few months, 22.04 has been in its zombie period for
> > > > > > a while now. Typically, the expectation is that you either use later
> > > > > > Ubuntu STS releases (23.10 is a perfectly fine release, as an example)
> > > > > > or backport what you need while you wait for the next LTS.
> > > > > >
> > > > > > If you intend to hold back the patch until after 24.04 releases, then
> > > > > > there is no chance for this to be part of Ubuntu 24.04 itself, which I
> > > > > > think would be a shame. I prepared a backport for meson for Ubuntu
> > > > > > 22.04 because you said it would help you for developing on 22.04. I am
> > > > >
> > > > > I myself am quite capable of updating meson. I was highlighting that
> > > > > there are 'users' of Ubuntu 22.04. Our aim for libcamera has always been
> > > > > to make sure that libcamera can be built on the 'main distributions'.
> > > > > For which we define that as 'the latest LTS of the big distros'.
> > > > >
> > > > > My question above was because it sounded like you could get that solved
> > > > > by fixing the one remaining stuck-in-the-past distro which is blocking
> > > > > us.
> > > > >
> > > > > "> Well, in a previous life I used to maintain Meson backports for Ubuntu."
> > > > >
> > > > > And if you could do that - there would be nothing blocking the patch!
> > > >
> > > > Unfortunately, not in Ubuntu proper. I did it outside of the distribution.
> > > >
> > > > It's actually very hard to get a backport of Meson through because it
> > > > is not behavior-stable across releases. This is incredibly important
> > > > for Debian and Ubuntu, which is likely why Meson almost never sees
> > > > official backports. Even CentOS Meson upgrades required a lot of work
> > > > to bend new releases to be more backward compatible so nothing would
> > > > break.
> > > >
> > > > > > not about to ask you to move to Fedora (which is what I use) or CentOS
> > > > > > Stream 9 (which would be an analogous LTS that does have a recent
> > > > > > enough Meson).
> > > > > >
> > > > > > My only argument at this point is that you can choose to include the
> > > > > > patch now and make a release so it can land in Debian sid now, and
> > > > > > thus make it into Ubuntu 24.04 so that Ubuntu users will benefit from
> > > > > > it. From my perspective, I want this so that Fedora users and later
> > > > > > CentOS 10 users will benefit from it. I also think that Debian/Ubuntu
> > > > >
> > > > > The question for us though is how many people's set ups will we break by
> > > > > updating and merging this patch? I don't know the answer - it could be a
> > > > > handfull or less, which may be worth the 'short term' support cost.
> > > > > Maybe its none (one including me?) Or maybe its more? We don't have a
> > > > > way to know until they shout angrily ...
> > > >
> > > > I think realistically most people use libcamera from the distributions
> > > > themselves. And in Debian and Ubuntu, libcamera is not updated in
> > > > stable releases at all. If people are trying to use updated libcamera
> > > > on those distributions, then they are either 1) building from source
> > > > or 2) installing a third party build. In both scenarios, handling a
> > > > meson upgrade is probably reasonable.
> > > >
> > > > > > folks would benefit from it because it's one less thing depending on
> > > > > > essentially unsupported versions of Qt.
> > > > >
> > > > > I don't disagree. Hence earlier - which is the chicken, and which is the
> > > > > egg ...
> > > >
> > > > 🤷‍♂️
> > >
> > > Why not support both Qt5 and Qt6 for about a year? Drop Qt5 then?
> > > Use Qt5 if meson is old, otherwise use Qt6.
> >
> > Two problems with it:
> >
> > 1. It's a lot of complexity for the meson scripts
> > 2. Open Source Qt 5 is EOL. It's super-EOL now that both Qt 6.2 LTS
> > and Qt 6.5 LTS are available. KDE itself requires Qt 6.6 now. Qt 6.7
> > is coming in March!
> >
> > If I were going to do anything, I'd make qcam conditional on newer
> > meson instead until we can drop that once everyone developing
> > libcamera on Ubuntu 22.04 moves to Ubuntu 24.04.
>
> meson doesn't allow using features of versions higher than the one
> listed in the project() call, even if you make such usage conditional on
> the meson version. If we're lucky, we'll only get a warning with older
> meson versions, this could be tested if desired.
>

I've done it before in libportal, it's not out of the question. Mesa
does this too for some features. It's awkward to do, but it's
possible.

> > But I still think we should bite the bullet, land this, and get a
> > release that can be included in 24.04.
>
> I still don't get the urgency to be honest. Yes, Qt5 is EOL, but it will
> still be shipped by Ubuntu 24.04, won't it ? Beside, qcam is meant to be
> a test application for development only. And if it's really important
> for Ubuntu 24.04 to ship a Qt6-based qcam, why can't it bump the
> libcamera version later ? And what about users who rely on Qt5, don't
> they deserve more than a week notice before we switch ?
>

That assumes that Ubuntu updates libcamera post-freeze. Judging by
what they did with PipeWire, I don't think that will happen.

https://packages.ubuntu.com/search?suite=all&section=all&arch=any&keywords=pipewire&searchon=sourcenames

I'm saying it's important to everyone *using* Ubuntu, but that doesn't
mean that Ubuntu *itself* cares about it. Right now, nobody uses
libcamera for anything meaningful in the main Linux distributions.
Someday, that will change as applications use PipeWire for camera
access.

I don't think the switch from Qt5 to Qt6 for qcam would be
game-breaking for people, it should generally be an improvement,
especially since Qt 6 has significantly better Wayland support.
Fedora, RHEL/CentOS, Ubuntu, and Debian have desktops that default or
exclusively use Wayland too.

The main issue brought up in this thread isn't about Qt though, it's
about Meson.






--
真実はいつも一つ!/ Always, there's only one truth!
Neal Gompa Jan. 25, 2024, 12:50 a.m. UTC | #25
On Tue, Jan 23, 2024 at 5:01 PM Neal Gompa <neal@gompa.dev> wrote:
>
> On Mon, Jan 22, 2024 at 8:31 PM Laurent Pinchart
> <laurent.pinchart@ideasonboard.com> wrote:
> >
> > On Mon, Jan 22, 2024 at 08:14:10PM -0500, Neal Gompa wrote:
> > > On Mon, Jan 22, 2024 at 7:21 PM Gergo Koteles <soyer@irl.hu> wrote:
> > > > On Mon, 2024-01-22 at 17:40 -0500, Neal Gompa wrote:
> > > > > On Mon, Jan 22, 2024 at 5:31 PM Kieran Bingham wrote:
> > > > > > Quoting Neal Gompa (2024-01-22 19:55:20)
> > > > > > > On Mon, Jan 22, 2024 at 11:02 AM Kieran Bingham wrote:
> > > > > > > >
> > > > > > > > > > > > > > So it's just Ubuntu/Canonical holding us back here ...
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > Any thoughts anyone?
> > > > > > > > > > > > >
> > > > > > > > > > > > > I was hoping jammy-backports would help us, but that doesn't seem to be
> > > > > > > > > > > > > the case :-(
> > > > > > > > > > > > >
> > > > > > > > > > > > > As there doesn't seem to be an urgency to switch to Qt 6 (unless I'm
> > > > > > > > > > > > > missing something), I'm tempted to propose waiting until Ubuntu 24.04
> > > > > > > > > > > > > gets released.
> > > > > >
> > > > > > Is there an urgency? Is there a requirement to move to QT6 for Fedora or
> > > > > > otherwise?
> > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > Noble (24.04) will have either 1.2.1 or 1.3.1 (there are different
> > > > > > > > > > > > versions in proposed and Release). Either way it will be > 1.2! :
> > > > > > > > > > > >   https://launchpad.net/ubuntu/noble/+package/meson
> > > > > > > > > > > >
> > > > > > > > > > > > I would propose that the meson version update is separated from the
> > > > > > > > > > > > patch as a preceeding commit, and could already be resent. Then we can
> > > > > > > > > > > > simply pick these in April. I'd probably say we could merge this in
> > > > > > > > > > > > early April, such that we can make a release of libcamera with that
> > > > > > > > > > > > support merged soon after Ubuntu 24.04 is released on April 25th.
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > On the flip side, if it's merged and released into Debian before the
> > > > > > > > > > > Ubuntu freeze on Feb 29[1], then it would be part of Ubuntu 24.04
> > > > > > > > > > > itself.
> > > > > > > > > >
> > > > > > > > > > That's an interesting take too.
> > > > > > > > > >
> > > > > > > > > > Which one is the chicken and which one is the egg?
> > > > > > > > > >
> > > > > > > > > > Our early requirement for meeting the dependencies in the distributions
> > > > > > > > > > was because the distributions themselves were not including libcamera.
> > > > > > > > > > Therefore, users of libcamera /had/ to be able to build libcamera.
> > > > > > > > > >
> > > > > > > > > > Now that things can be included, perhaps that's reason enough to say
> > > > > > > > > > aiming for integration is better.
> > > > > > > > > >
> > > > > > > > > > > [1]: https://discourse.ubuntu.com/t/noble-numbat-release-schedule/35649
> > > > > > > > > >
> > > > > > > > > > It looks like libcamera-0.2 is already included in the noble release, so
> > > > > > > > > > package updates into debian look like they get into Ubuntu quite 'fast'.
> > > > > > > > > >
> > > > > > > > > > I feel like targetting getting /into/ the next Ubuntu LTS with updates
> > > > > > > > > > is better than working on /top/ of it.
> > > > > > > > > >
> > > > > > > > > > The expense/cost is that in between we would no longer support compiling
> > > > > > > > > > the master branch (or intermediate releases) with the 'current' LTS of
> > > > > > > > > > Ubuntu.
> > > > > > > > > >
> > > > > > > > > > I could say "Oh well, that probably doesn't matter" ... except ... I use
> > > > > > > > > > Ubuntu-22.04 as my main distro ... and I would plan to upgrade at the
> > > > > > > > > > next release.
> > > > > > > > > >
> > > > > > > > > > I'm aware that I can work around this issue by upgrading meson myself.
> > > > > > > > > > The question is what will happen to others ... and maybe it's just
> > > > > > > > > > something we should bite and help them upgrade meson in the interim.
> > > > > > > > >
> > > > > > > > > Well, in a previous life I used to maintain Meson backports for Ubuntu.
> > > > > > > > >
> > > > > > > > > I'm happy to provide a package (based on the CentOS 9 one) for Ubuntu
> > > > > > > > > 22.04 until 24.04 is released if it would help you:
> > > > > > > > > https://software.opensuse.org//download.html?project=home%3APharaoh_Atem%3AMeson&package=meson
> > > > > > > >
> > > > > > > > Is there an official Ubuntu channel for that? If you can make
> > > > > > > > 'ubuntu-22.04' support a later meson - I have no argument to prevent this
> > > > > > > > being merged already!
> > > > > > >
> > > > > > > No. At this point, it would be unlikely to get updated unless you know
> > > > > > > someone who can ship something in jammy-backports. But even then, with
> > > > > > > 24.04 coming in a few months, 22.04 has been in its zombie period for
> > > > > > > a while now. Typically, the expectation is that you either use later
> > > > > > > Ubuntu STS releases (23.10 is a perfectly fine release, as an example)
> > > > > > > or backport what you need while you wait for the next LTS.
> > > > > > >
> > > > > > > If you intend to hold back the patch until after 24.04 releases, then
> > > > > > > there is no chance for this to be part of Ubuntu 24.04 itself, which I
> > > > > > > think would be a shame. I prepared a backport for meson for Ubuntu
> > > > > > > 22.04 because you said it would help you for developing on 22.04. I am
> > > > > >
> > > > > > I myself am quite capable of updating meson. I was highlighting that
> > > > > > there are 'users' of Ubuntu 22.04. Our aim for libcamera has always been
> > > > > > to make sure that libcamera can be built on the 'main distributions'.
> > > > > > For which we define that as 'the latest LTS of the big distros'.
> > > > > >
> > > > > > My question above was because it sounded like you could get that solved
> > > > > > by fixing the one remaining stuck-in-the-past distro which is blocking
> > > > > > us.
> > > > > >
> > > > > > "> Well, in a previous life I used to maintain Meson backports for Ubuntu."
> > > > > >
> > > > > > And if you could do that - there would be nothing blocking the patch!
> > > > >
> > > > > Unfortunately, not in Ubuntu proper. I did it outside of the distribution.
> > > > >
> > > > > It's actually very hard to get a backport of Meson through because it
> > > > > is not behavior-stable across releases. This is incredibly important
> > > > > for Debian and Ubuntu, which is likely why Meson almost never sees
> > > > > official backports. Even CentOS Meson upgrades required a lot of work
> > > > > to bend new releases to be more backward compatible so nothing would
> > > > > break.
> > > > >
> > > > > > > not about to ask you to move to Fedora (which is what I use) or CentOS
> > > > > > > Stream 9 (which would be an analogous LTS that does have a recent
> > > > > > > enough Meson).
> > > > > > >
> > > > > > > My only argument at this point is that you can choose to include the
> > > > > > > patch now and make a release so it can land in Debian sid now, and
> > > > > > > thus make it into Ubuntu 24.04 so that Ubuntu users will benefit from
> > > > > > > it. From my perspective, I want this so that Fedora users and later
> > > > > > > CentOS 10 users will benefit from it. I also think that Debian/Ubuntu
> > > > > >
> > > > > > The question for us though is how many people's set ups will we break by
> > > > > > updating and merging this patch? I don't know the answer - it could be a
> > > > > > handfull or less, which may be worth the 'short term' support cost.
> > > > > > Maybe its none (one including me?) Or maybe its more? We don't have a
> > > > > > way to know until they shout angrily ...
> > > > >
> > > > > I think realistically most people use libcamera from the distributions
> > > > > themselves. And in Debian and Ubuntu, libcamera is not updated in
> > > > > stable releases at all. If people are trying to use updated libcamera
> > > > > on those distributions, then they are either 1) building from source
> > > > > or 2) installing a third party build. In both scenarios, handling a
> > > > > meson upgrade is probably reasonable.
> > > > >
> > > > > > > folks would benefit from it because it's one less thing depending on
> > > > > > > essentially unsupported versions of Qt.
> > > > > >
> > > > > > I don't disagree. Hence earlier - which is the chicken, and which is the
> > > > > > egg ...
> > > > >
> > > > > 🤷‍♂️
> > > >
> > > > Why not support both Qt5 and Qt6 for about a year? Drop Qt5 then?
> > > > Use Qt5 if meson is old, otherwise use Qt6.
> > >
> > > Two problems with it:
> > >
> > > 1. It's a lot of complexity for the meson scripts
> > > 2. Open Source Qt 5 is EOL. It's super-EOL now that both Qt 6.2 LTS
> > > and Qt 6.5 LTS are available. KDE itself requires Qt 6.6 now. Qt 6.7
> > > is coming in March!
> > >
> > > If I were going to do anything, I'd make qcam conditional on newer
> > > meson instead until we can drop that once everyone developing
> > > libcamera on Ubuntu 22.04 moves to Ubuntu 24.04.
> >
> > meson doesn't allow using features of versions higher than the one
> > listed in the project() call, even if you make such usage conditional on
> > the meson version. If we're lucky, we'll only get a warning with older
> > meson versions, this could be tested if desired.
> >
>
> I've done it before in libportal, it's not out of the question. Mesa
> does this too for some features. It's awkward to do, but it's
> possible.
>
> > > But I still think we should bite the bullet, land this, and get a
> > > release that can be included in 24.04.
> >
> > I still don't get the urgency to be honest. Yes, Qt5 is EOL, but it will
> > still be shipped by Ubuntu 24.04, won't it ? Beside, qcam is meant to be
> > a test application for development only. And if it's really important
> > for Ubuntu 24.04 to ship a Qt6-based qcam, why can't it bump the
> > libcamera version later ? And what about users who rely on Qt5, don't
> > they deserve more than a week notice before we switch ?
> >
>
> That assumes that Ubuntu updates libcamera post-freeze. Judging by
> what they did with PipeWire, I don't think that will happen.
>
> https://packages.ubuntu.com/search?suite=all&section=all&arch=any&keywords=pipewire&searchon=sourcenames
>
> I'm saying it's important to everyone *using* Ubuntu, but that doesn't
> mean that Ubuntu *itself* cares about it. Right now, nobody uses
> libcamera for anything meaningful in the main Linux distributions.
> Someday, that will change as applications use PipeWire for camera
> access.
>
> I don't think the switch from Qt5 to Qt6 for qcam would be
> game-breaking for people, it should generally be an improvement,
> especially since Qt 6 has significantly better Wayland support.
> Fedora, RHEL/CentOS, Ubuntu, and Debian have desktops that default or
> exclusively use Wayland too.
>
> The main issue brought up in this thread isn't about Qt though, it's
> about Meson.
>

In any case, you can choose to wait as long as you like. I've
backported this to Fedora's package. I was hoping it'd land now, but
I'm fine with you waiting until after Ubuntu 24.04 releases if you
wish to do so.




--
真実はいつも一つ!/ Always, there's only one truth!
Kieran Bingham April 16, 2024, 6:14 p.m. UTC | #26
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@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

Having installed these packages - I still can't enable qcam. So we must
be missing some more dependencies that need to be listed here.


--
Kieran


>  
>  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)
> -- 
> 2.43.0
>
Laurent Pinchart April 17, 2024, 3:41 p.m. UTC | #27
On Tue, Apr 16, 2024 at 07:14:35PM +0100, Kieran Bingham wrote:
> 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.

Unless I'm mistaken, Ubuntu will still ship Qt5, so there's no urgency.
I'm not opposed to this patch though (once fixed), as Qt6 seems to be
available everywhere.

> However ...
> 
> > Signed-off-by: Neal Gompa <neal@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
> 
> Having installed these packages - I still can't enable qcam. So we must
> be missing some more dependencies that need to be listed here.
> 
> 
> --
> Kieran
> 
> 
> >  
> >  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)
Neal Gompa April 17, 2024, 7:58 p.m. UTC | #28
On Wed, Apr 17, 2024 at 11:42 AM Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
>
> On Tue, Apr 16, 2024 at 07:14:35PM +0100, Kieran Bingham wrote:
> > 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.
>
> Unless I'm mistaken, Ubuntu will still ship Qt5, so there's no urgency.
> I'm not opposed to this patch though (once fixed), as Qt6 seems to be
> available everywhere.
>

This patch isn't broken. I just was able to build it on Ubuntu 24.04
just fine: https://download.opensuse.org/repositories/home:/Pharaoh_Atem:/libcamera/xUbuntu_24.04/amd64/

The build dependencies I used were the ones in the readme.

You can see for yourself in the "debbuild" conditional for
buildrequires: https://build.opensuse.org/projects/home:Pharaoh_Atem:libcamera/packages/libcamera/files/libcamera.spec?expand=1
Kieran Bingham April 17, 2024, 8:26 p.m. UTC | #29
Quoting Neal Gompa (2024-04-17 20:58:16)
> On Wed, Apr 17, 2024 at 11:42 AM Laurent Pinchart
> <laurent.pinchart@ideasonboard.com> wrote:
> >
> > On Tue, Apr 16, 2024 at 07:14:35PM +0100, Kieran Bingham wrote:
> > > 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.
> >
> > Unless I'm mistaken, Ubuntu will still ship Qt5, so there's no urgency.
> > I'm not opposed to this patch though (once fixed), as Qt6 seems to be
> > available everywhere.
> >
> 
> This patch isn't broken. I just was able to build it on Ubuntu 24.04
> just fine: https://download.opensuse.org/repositories/home:/Pharaoh_Atem:/libcamera/xUbuntu_24.04/amd64/

I don't think the patch is broken, Just that there must be some
additional dependency required which may have been implicitly installed
in your case, but seems not to have been in my case. 

I'm not going to merge a patch that will prevent me from using qcam
until I know how to correctly build it again.


--
Kieran


> 
> The build dependencies I used were the ones in the readme.
> 
> You can see for yourself in the "debbuild" conditional for
> buildrequires: https://build.opensuse.org/projects/home:Pharaoh_Atem:libcamera/packages/libcamera/files/libcamera.spec?expand=1
> 
> 
> 
> -- 
> 真実はいつも一つ!/ Always, there's only one truth!
Kieran Bingham April 17, 2024, 8:34 p.m. UTC | #30
Quoting Kieran Bingham (2024-04-17 21:26:24)
> Quoting Neal Gompa (2024-04-17 20:58:16)
> > On Wed, Apr 17, 2024 at 11:42 AM Laurent Pinchart
> > <laurent.pinchart@ideasonboard.com> wrote:
> > >
> > > On Tue, Apr 16, 2024 at 07:14:35PM +0100, Kieran Bingham wrote:
> > > > 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.
> > >
> > > Unless I'm mistaken, Ubuntu will still ship Qt5, so there's no urgency.
> > > I'm not opposed to this patch though (once fixed), as Qt6 seems to be
> > > available everywhere.
> > >
> > 
> > This patch isn't broken. I just was able to build it on Ubuntu 24.04
> > just fine: https://download.opensuse.org/repositories/home:/Pharaoh_Atem:/libcamera/xUbuntu_24.04/amd64/
> 
> I don't think the patch is broken, Just that there must be some
> additional dependency required which may have been implicitly installed
> in your case, but seems not to have been in my case. 
> 
> I'm not going to merge a patch that will prevent me from using qcam
> until I know how to correctly build it again.

"""
for qcam: [optional]
        libtiff-dev qt6-base-dev qt6-tools-dev-tools
"""
kbingham@Monstersaurus:~/iob/libcamera/libcamera$ sudo apt install libtiff-dev qt6-base-dev qt6-tools-dev-tools
[sudo] password for kbingham:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
qt6-tools-dev-tools is already the newest version (6.2.4-1).
libtiff-dev is already the newest version (4.3.0-6ubuntu0.8).
libtiff-dev set to manually installed.
qt6-base-dev is already the newest version (6.2.4+dfsg-2ubuntu1.1).


Then:

================================================================================
kbingham@Monstersaurus:~/iob/libcamera/libcamera$ meson setup qt6-test -Dqcam=enabled
The Meson build system
Version: 1.4.0
Source dir: /home/kbingham/iob/libcamera/libcamera
Build dir: /home/kbingham/iob/libcamera/libcamera/qt6-test
Build type: native build
WARNING: failed to process netrc file: ~/.netrc access too permissive: access permissions must restrict access to only the owner (/home/kbingham/.netrc, line 3).
Project name: libcamera
Project version: 0.2.0
C compiler for the host machine: ccache cc (gcc 11.4.0 "cc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0")
C linker for the host machine: cc ld.bfd 2.38
C++ compiler for the host machine: ccache c++ (gcc 11.4.0 "c++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0")
C++ linker for the host machine: c++ ld.bfd 2.38
Host machine cpu family: x86_64
Host machine cpu: x86_64
Header "unistd.h" has symbol "issetugid" : NO
Header "locale.h" has symbol "locale_t" : YES
Header "stdlib.h" has symbol "secure_getenv" : YES
Compiler for C supports arguments -Wno-c99-designator: NO
Found pkg-config: YES (/usr/bin/pkg-config) 0.29.2
Run-time dependency lttng-ust found: YES 2.13.1
Program ./parser.py found: YES (/home/kbingham/iob/libcamera/libcamera/utils/ipc/./parser.py)
Program ./generate.py found: YES (/home/kbingham/iob/libcamera/libcamera/utils/ipc/./generate.py)
Program ./extract-docs.py found: YES (/home/kbingham/iob/libcamera/libcamera/utils/ipc/./extract-docs.py)
Program ./gen-tp-header.py found: YES (/home/kbingham/iob/libcamera/libcamera/utils/tracepoints/./gen-tp-header.py)
Configuring version.h using configuration
Program openssl found: YES (/usr/bin/openssl)
Library atomic found: YES
Run-time dependency threads found: YES
Run-time dependency libdw found: YES 0.186
Run-time dependency libunwind found: YES 1.3.2
Header "execinfo.h" has symbol "backtrace" : YES
Checking for function "dlopen" : YES
Run-time dependency libudev found: YES 249
Run-time dependency yaml-0.1 found: YES 0.2.2
Run-time dependency gnutls found: YES 3.7.3
Dependency libexif skipped: feature android disabled
Dependency libjpeg skipped: feature android disabled
Run-time dependency libevent_pthreads found: YES 2.1.12-stable
Run-time dependency libtiff-4 found: YES 4.3.0
Run-time dependency GTest found: YES 1.11.0
Run-time dependency libdrm found: YES 2.4.113
Run-time dependency libjpeg found: YES 2.1.2
Run-time dependency sdl2 found: YES 2.0.20
Run-time dependency qt6 (modules: Core, Gui, OpenGL, OpenGLWidgets, Widgets) found: NO (tried pkgconfig)

src/apps/qcam/meson.build:4:10: ERROR: Dependency "qt6" not found, tried pkgconfig

A full log can be found at /home/kbingham/iob/libcamera/libcamera/qt6-test/meson-logs/meson-log.txt
================================================================================

I wonder if the modules have been implicitly installed, or used before
and now need to be explicitly listed as a dependency.


---
Regards

Kieran




> --
> Kieran
> 
> 
> > 
> > The build dependencies I used were the ones in the readme.
> > 
> > You can see for yourself in the "debbuild" conditional for
> > buildrequires: https://build.opensuse.org/projects/home:Pharaoh_Atem:libcamera/packages/libcamera/files/libcamera.spec?expand=1
> > 
> > 
> > 
> > -- 
> > 真実はいつも一つ!/ Always, there's only one truth!
Neal Gompa April 17, 2024, 8:41 p.m. UTC | #31
On Wed, Apr 17, 2024 at 4:34 PM Kieran Bingham
<kieran.bingham@ideasonboard.com> wrote:
>
> Quoting Kieran Bingham (2024-04-17 21:26:24)
> > Quoting Neal Gompa (2024-04-17 20:58:16)
> > > On Wed, Apr 17, 2024 at 11:42 AM Laurent Pinchart
> > > <laurent.pinchart@ideasonboard.com> wrote:
> > > >
> > > > On Tue, Apr 16, 2024 at 07:14:35PM +0100, Kieran Bingham wrote:
> > > > > 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.
> > > >
> > > > Unless I'm mistaken, Ubuntu will still ship Qt5, so there's no urgency.
> > > > I'm not opposed to this patch though (once fixed), as Qt6 seems to be
> > > > available everywhere.
> > > >
> > >
> > > This patch isn't broken. I just was able to build it on Ubuntu 24.04
> > > just fine: https://download.opensuse.org/repositories/home:/Pharaoh_Atem:/libcamera/xUbuntu_24.04/amd64/
> >
> > I don't think the patch is broken, Just that there must be some
> > additional dependency required which may have been implicitly installed
> > in your case, but seems not to have been in my case.
> >
> > I'm not going to merge a patch that will prevent me from using qcam
> > until I know how to correctly build it again.
>
> """
> for qcam: [optional]
>         libtiff-dev qt6-base-dev qt6-tools-dev-tools
> """
> kbingham@Monstersaurus:~/iob/libcamera/libcamera$ sudo apt install libtiff-dev qt6-base-dev qt6-tools-dev-tools
> [sudo] password for kbingham:
> Reading package lists... Done
> Building dependency tree... Done
> Reading state information... Done
> qt6-tools-dev-tools is already the newest version (6.2.4-1).
> libtiff-dev is already the newest version (4.3.0-6ubuntu0.8).
> libtiff-dev set to manually installed.
> qt6-base-dev is already the newest version (6.2.4+dfsg-2ubuntu1.1).
>
>
> Then:
>
> ================================================================================
> kbingham@Monstersaurus:~/iob/libcamera/libcamera$ meson setup qt6-test -Dqcam=enabled
> The Meson build system
> Version: 1.4.0
> Source dir: /home/kbingham/iob/libcamera/libcamera
> Build dir: /home/kbingham/iob/libcamera/libcamera/qt6-test
> Build type: native build
> WARNING: failed to process netrc file: ~/.netrc access too permissive: access permissions must restrict access to only the owner (/home/kbingham/.netrc, line 3).
> Project name: libcamera
> Project version: 0.2.0
> C compiler for the host machine: ccache cc (gcc 11.4.0 "cc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0")
> C linker for the host machine: cc ld.bfd 2.38
> C++ compiler for the host machine: ccache c++ (gcc 11.4.0 "c++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0")
> C++ linker for the host machine: c++ ld.bfd 2.38
> Host machine cpu family: x86_64
> Host machine cpu: x86_64
> Header "unistd.h" has symbol "issetugid" : NO
> Header "locale.h" has symbol "locale_t" : YES
> Header "stdlib.h" has symbol "secure_getenv" : YES
> Compiler for C supports arguments -Wno-c99-designator: NO
> Found pkg-config: YES (/usr/bin/pkg-config) 0.29.2
> Run-time dependency lttng-ust found: YES 2.13.1
> Program ./parser.py found: YES (/home/kbingham/iob/libcamera/libcamera/utils/ipc/./parser.py)
> Program ./generate.py found: YES (/home/kbingham/iob/libcamera/libcamera/utils/ipc/./generate.py)
> Program ./extract-docs.py found: YES (/home/kbingham/iob/libcamera/libcamera/utils/ipc/./extract-docs.py)
> Program ./gen-tp-header.py found: YES (/home/kbingham/iob/libcamera/libcamera/utils/tracepoints/./gen-tp-header.py)
> Configuring version.h using configuration
> Program openssl found: YES (/usr/bin/openssl)
> Library atomic found: YES
> Run-time dependency threads found: YES
> Run-time dependency libdw found: YES 0.186
> Run-time dependency libunwind found: YES 1.3.2
> Header "execinfo.h" has symbol "backtrace" : YES
> Checking for function "dlopen" : YES
> Run-time dependency libudev found: YES 249
> Run-time dependency yaml-0.1 found: YES 0.2.2
> Run-time dependency gnutls found: YES 3.7.3
> Dependency libexif skipped: feature android disabled
> Dependency libjpeg skipped: feature android disabled
> Run-time dependency libevent_pthreads found: YES 2.1.12-stable
> Run-time dependency libtiff-4 found: YES 4.3.0
> Run-time dependency GTest found: YES 1.11.0
> Run-time dependency libdrm found: YES 2.4.113
> Run-time dependency libjpeg found: YES 2.1.2
> Run-time dependency sdl2 found: YES 2.0.20
> Run-time dependency qt6 (modules: Core, Gui, OpenGL, OpenGLWidgets, Widgets) found: NO (tried pkgconfig)
>
> src/apps/qcam/meson.build:4:10: ERROR: Dependency "qt6" not found, tried pkgconfig
>
> A full log can be found at /home/kbingham/iob/libcamera/libcamera/qt6-test/meson-logs/meson-log.txt
> ================================================================================
>
> I wonder if the modules have been implicitly installed, or used before
> and now need to be explicitly listed as a dependency.
>

Something doesn't seem right here. Out of curiosity, what happens if
you also install cmake and run the build? I'm wondering if something
is busted with pkgconfig on your system somehow. I can build it in
containers, in package build environments, and locally just fine with
the instructions in the README.

Basically, Meson is saying that the pkgconfig files for Qt6 modules
cannot be found, which is incredibly bizarre.




--
真実はいつも一つ!/ Always, there's only one truth!
Kieran Bingham April 17, 2024, 9:01 p.m. UTC | #32
Quoting Neal Gompa (2024-04-17 21:41:55)
> On Wed, Apr 17, 2024 at 4:34 PM Kieran Bingham
> <kieran.bingham@ideasonboard.com> wrote:
> >
> > Quoting Kieran Bingham (2024-04-17 21:26:24)
> > > Quoting Neal Gompa (2024-04-17 20:58:16)
> > > > On Wed, Apr 17, 2024 at 11:42 AM Laurent Pinchart
> > > > <laurent.pinchart@ideasonboard.com> wrote:
> > > > >
> > > > > On Tue, Apr 16, 2024 at 07:14:35PM +0100, Kieran Bingham wrote:
> > > > > > 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.
> > > > >
> > > > > Unless I'm mistaken, Ubuntu will still ship Qt5, so there's no urgency.
> > > > > I'm not opposed to this patch though (once fixed), as Qt6 seems to be
> > > > > available everywhere.
> > > > >
> > > >
> > > > This patch isn't broken. I just was able to build it on Ubuntu 24.04
> > > > just fine: https://download.opensuse.org/repositories/home:/Pharaoh_Atem:/libcamera/xUbuntu_24.04/amd64/
> > >
> > > I don't think the patch is broken, Just that there must be some
> > > additional dependency required which may have been implicitly installed
> > > in your case, but seems not to have been in my case.
> > >
> > > I'm not going to merge a patch that will prevent me from using qcam
> > > until I know how to correctly build it again.
> >
> > """
> > for qcam: [optional]
> >         libtiff-dev qt6-base-dev qt6-tools-dev-tools
> > """
> > kbingham@Monstersaurus:~/iob/libcamera/libcamera$ sudo apt install libtiff-dev qt6-base-dev qt6-tools-dev-tools
> > [sudo] password for kbingham:
> > Reading package lists... Done
> > Building dependency tree... Done
> > Reading state information... Done
> > qt6-tools-dev-tools is already the newest version (6.2.4-1).
> > libtiff-dev is already the newest version (4.3.0-6ubuntu0.8).
> > libtiff-dev set to manually installed.
> > qt6-base-dev is already the newest version (6.2.4+dfsg-2ubuntu1.1).
> >
> >
> > Then:
> >
> > ================================================================================
> > kbingham@Monstersaurus:~/iob/libcamera/libcamera$ meson setup qt6-test -Dqcam=enabled
> > The Meson build system
> > Version: 1.4.0
> > Source dir: /home/kbingham/iob/libcamera/libcamera
> > Build dir: /home/kbingham/iob/libcamera/libcamera/qt6-test
> > Build type: native build
> > WARNING: failed to process netrc file: ~/.netrc access too permissive: access permissions must restrict access to only the owner (/home/kbingham/.netrc, line 3).
> > Project name: libcamera
> > Project version: 0.2.0
> > C compiler for the host machine: ccache cc (gcc 11.4.0 "cc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0")
> > C linker for the host machine: cc ld.bfd 2.38
> > C++ compiler for the host machine: ccache c++ (gcc 11.4.0 "c++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0")
> > C++ linker for the host machine: c++ ld.bfd 2.38
> > Host machine cpu family: x86_64
> > Host machine cpu: x86_64
> > Header "unistd.h" has symbol "issetugid" : NO
> > Header "locale.h" has symbol "locale_t" : YES
> > Header "stdlib.h" has symbol "secure_getenv" : YES
> > Compiler for C supports arguments -Wno-c99-designator: NO
> > Found pkg-config: YES (/usr/bin/pkg-config) 0.29.2
> > Run-time dependency lttng-ust found: YES 2.13.1
> > Program ./parser.py found: YES (/home/kbingham/iob/libcamera/libcamera/utils/ipc/./parser.py)
> > Program ./generate.py found: YES (/home/kbingham/iob/libcamera/libcamera/utils/ipc/./generate.py)
> > Program ./extract-docs.py found: YES (/home/kbingham/iob/libcamera/libcamera/utils/ipc/./extract-docs.py)
> > Program ./gen-tp-header.py found: YES (/home/kbingham/iob/libcamera/libcamera/utils/tracepoints/./gen-tp-header.py)
> > Configuring version.h using configuration
> > Program openssl found: YES (/usr/bin/openssl)
> > Library atomic found: YES
> > Run-time dependency threads found: YES
> > Run-time dependency libdw found: YES 0.186
> > Run-time dependency libunwind found: YES 1.3.2
> > Header "execinfo.h" has symbol "backtrace" : YES
> > Checking for function "dlopen" : YES
> > Run-time dependency libudev found: YES 249
> > Run-time dependency yaml-0.1 found: YES 0.2.2
> > Run-time dependency gnutls found: YES 3.7.3
> > Dependency libexif skipped: feature android disabled
> > Dependency libjpeg skipped: feature android disabled
> > Run-time dependency libevent_pthreads found: YES 2.1.12-stable
> > Run-time dependency libtiff-4 found: YES 4.3.0
> > Run-time dependency GTest found: YES 1.11.0
> > Run-time dependency libdrm found: YES 2.4.113
> > Run-time dependency libjpeg found: YES 2.1.2
> > Run-time dependency sdl2 found: YES 2.0.20
> > Run-time dependency qt6 (modules: Core, Gui, OpenGL, OpenGLWidgets, Widgets) found: NO (tried pkgconfig)
> >
> > src/apps/qcam/meson.build:4:10: ERROR: Dependency "qt6" not found, tried pkgconfig
> >
> > A full log can be found at /home/kbingham/iob/libcamera/libcamera/qt6-test/meson-logs/meson-log.txt
> > ================================================================================
> >
> > I wonder if the modules have been implicitly installed, or used before
> > and now need to be explicitly listed as a dependency.
> >
> 
> Something doesn't seem right here. Out of curiosity, what happens if
> you also install cmake and run the build? I'm wondering if something
> is busted with pkgconfig on your system somehow. I can build it in
> containers, in package build environments, and locally just fine with
> the instructions in the README.
> 
> Basically, Meson is saying that the pkgconfig files for Qt6 modules
> cannot be found, which is incredibly bizarre.
> 

I'm on Ubuntu 22.04 (i.e. current Ubuntu LTS stable) if that is relevant ...

Of course it all works for QT5 ...
--
Kieran
Neal Gompa April 18, 2024, 2:20 a.m. UTC | #33
On Wed, Apr 17, 2024 at 5:02 PM Kieran Bingham
<kieran.bingham@ideasonboard.com> wrote:
>
> Quoting Neal Gompa (2024-04-17 21:41:55)
> > On Wed, Apr 17, 2024 at 4:34 PM Kieran Bingham
> > <kieran.bingham@ideasonboard.com> wrote:
> > >
> > > Quoting Kieran Bingham (2024-04-17 21:26:24)
> > > > Quoting Neal Gompa (2024-04-17 20:58:16)
> > > > > On Wed, Apr 17, 2024 at 11:42 AM Laurent Pinchart
> > > > > <laurent.pinchart@ideasonboard.com> wrote:
> > > > > >
> > > > > > On Tue, Apr 16, 2024 at 07:14:35PM +0100, Kieran Bingham wrote:
> > > > > > > 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.
> > > > > >
> > > > > > Unless I'm mistaken, Ubuntu will still ship Qt5, so there's no urgency.
> > > > > > I'm not opposed to this patch though (once fixed), as Qt6 seems to be
> > > > > > available everywhere.
> > > > > >
> > > > >
> > > > > This patch isn't broken. I just was able to build it on Ubuntu 24.04
> > > > > just fine: https://download.opensuse.org/repositories/home:/Pharaoh_Atem:/libcamera/xUbuntu_24.04/amd64/
> > > >
> > > > I don't think the patch is broken, Just that there must be some
> > > > additional dependency required which may have been implicitly installed
> > > > in your case, but seems not to have been in my case.
> > > >
> > > > I'm not going to merge a patch that will prevent me from using qcam
> > > > until I know how to correctly build it again.
> > >
> > > """
> > > for qcam: [optional]
> > >         libtiff-dev qt6-base-dev qt6-tools-dev-tools
> > > """
> > > kbingham@Monstersaurus:~/iob/libcamera/libcamera$ sudo apt install libtiff-dev qt6-base-dev qt6-tools-dev-tools
> > > [sudo] password for kbingham:
> > > Reading package lists... Done
> > > Building dependency tree... Done
> > > Reading state information... Done
> > > qt6-tools-dev-tools is already the newest version (6.2.4-1).
> > > libtiff-dev is already the newest version (4.3.0-6ubuntu0.8).
> > > libtiff-dev set to manually installed.
> > > qt6-base-dev is already the newest version (6.2.4+dfsg-2ubuntu1.1).
> > >
> > >
> > > Then:
> > >
> > > ================================================================================
> > > kbingham@Monstersaurus:~/iob/libcamera/libcamera$ meson setup qt6-test -Dqcam=enabled
> > > The Meson build system
> > > Version: 1.4.0
> > > Source dir: /home/kbingham/iob/libcamera/libcamera
> > > Build dir: /home/kbingham/iob/libcamera/libcamera/qt6-test
> > > Build type: native build
> > > WARNING: failed to process netrc file: ~/.netrc access too permissive: access permissions must restrict access to only the owner (/home/kbingham/.netrc, line 3).
> > > Project name: libcamera
> > > Project version: 0.2.0
> > > C compiler for the host machine: ccache cc (gcc 11.4.0 "cc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0")
> > > C linker for the host machine: cc ld.bfd 2.38
> > > C++ compiler for the host machine: ccache c++ (gcc 11.4.0 "c++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0")
> > > C++ linker for the host machine: c++ ld.bfd 2.38
> > > Host machine cpu family: x86_64
> > > Host machine cpu: x86_64
> > > Header "unistd.h" has symbol "issetugid" : NO
> > > Header "locale.h" has symbol "locale_t" : YES
> > > Header "stdlib.h" has symbol "secure_getenv" : YES
> > > Compiler for C supports arguments -Wno-c99-designator: NO
> > > Found pkg-config: YES (/usr/bin/pkg-config) 0.29.2
> > > Run-time dependency lttng-ust found: YES 2.13.1
> > > Program ./parser.py found: YES (/home/kbingham/iob/libcamera/libcamera/utils/ipc/./parser.py)
> > > Program ./generate.py found: YES (/home/kbingham/iob/libcamera/libcamera/utils/ipc/./generate.py)
> > > Program ./extract-docs.py found: YES (/home/kbingham/iob/libcamera/libcamera/utils/ipc/./extract-docs.py)
> > > Program ./gen-tp-header.py found: YES (/home/kbingham/iob/libcamera/libcamera/utils/tracepoints/./gen-tp-header.py)
> > > Configuring version.h using configuration
> > > Program openssl found: YES (/usr/bin/openssl)
> > > Library atomic found: YES
> > > Run-time dependency threads found: YES
> > > Run-time dependency libdw found: YES 0.186
> > > Run-time dependency libunwind found: YES 1.3.2
> > > Header "execinfo.h" has symbol "backtrace" : YES
> > > Checking for function "dlopen" : YES
> > > Run-time dependency libudev found: YES 249
> > > Run-time dependency yaml-0.1 found: YES 0.2.2
> > > Run-time dependency gnutls found: YES 3.7.3
> > > Dependency libexif skipped: feature android disabled
> > > Dependency libjpeg skipped: feature android disabled
> > > Run-time dependency libevent_pthreads found: YES 2.1.12-stable
> > > Run-time dependency libtiff-4 found: YES 4.3.0
> > > Run-time dependency GTest found: YES 1.11.0
> > > Run-time dependency libdrm found: YES 2.4.113
> > > Run-time dependency libjpeg found: YES 2.1.2
> > > Run-time dependency sdl2 found: YES 2.0.20
> > > Run-time dependency qt6 (modules: Core, Gui, OpenGL, OpenGLWidgets, Widgets) found: NO (tried pkgconfig)
> > >
> > > src/apps/qcam/meson.build:4:10: ERROR: Dependency "qt6" not found, tried pkgconfig
> > >
> > > A full log can be found at /home/kbingham/iob/libcamera/libcamera/qt6-test/meson-logs/meson-log.txt
> > > ================================================================================
> > >
> > > I wonder if the modules have been implicitly installed, or used before
> > > and now need to be explicitly listed as a dependency.
> > >
> >
> > Something doesn't seem right here. Out of curiosity, what happens if
> > you also install cmake and run the build? I'm wondering if something
> > is busted with pkgconfig on your system somehow. I can build it in
> > containers, in package build environments, and locally just fine with
> > the instructions in the README.
> >
> > Basically, Meson is saying that the pkgconfig files for Qt6 modules
> > cannot be found, which is incredibly bizarre.
> >
>
> I'm on Ubuntu 22.04 (i.e. current Ubuntu LTS stable) if that is relevant ...
>
> Of course it all works for QT5 ...

Oh, I know what's wrong: there are no pkgconfig files for Qt 6 in Ubuntu 22.04.

This was fixed in 6.2.5, but it hasn't been backported to Ubuntu's
package: https://codereview.qt-project.org/gitweb?p=qt/qtbase.git;a=commit;h=205ec2bb36b0a52d0dfa6729876eb18bcdbef512

I'm trying to see if I can get this backported...
Kieran Bingham April 22, 2024, 11:31 a.m. UTC | #34
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.

It seems that the upgrade to Qt6 also breaks the positioning of the 'No
Image' background in qcam when you stop the camera.

Could you check that please?

--
Kieran


> 
> Signed-off-by: Neal Gompa <neal@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',
>      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
>
Eric Curtin April 22, 2024, 11:38 a.m. UTC | #35
On Mon, 22 Apr 2024 at 12:31, Kieran Bingham
<kieran.bingham@ideasonboard.com> wrote:
>
> 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.
>
> It seems that the upgrade to Qt6 also breaks the positioning of the 'No
> Image' background in qcam when you stop the camera.

Shooting in the dark here, but I can see:

export PKG_CONFIG_PATH="/usr/lib64/pkgconfig/"

in one of my libcamera related build scripts. Can't remember exactly
what was failing or why I added it or for what platform though.

Is mise le meas/Regards,

Eric Curtin

>
> Could you check that please?
>
> --
> Kieran
>
>
> >
> > Signed-off-by: Neal Gompa <neal@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',
> >      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
> >
>
Neal Gompa May 14, 2024, 11:13 p.m. UTC | #36
On Mon, Apr 22, 2024 at 5:31 AM Kieran Bingham
<kieran.bingham@ideasonboard.com> wrote:
>
> 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.
>
> It seems that the upgrade to Qt6 also breaks the positioning of the 'No
> Image' background in qcam when you stop the camera.
>
> Could you check that please?
>

Sorry it took me a while to get back to this, but I could not
reproduce this issue.

Here's what I see: https://i.imgur.com/6YMrBWm.png
Neal Gompa June 23, 2024, 7:10 a.m. UTC | #37
On Wed, May 15, 2024 at 1:13 AM Neal Gompa <neal@gompa.dev> wrote:
>
> On Mon, Apr 22, 2024 at 5:31 AM Kieran Bingham
> <kieran.bingham@ideasonboard.com> wrote:
> >
> > 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.
> >
> > It seems that the upgrade to Qt6 also breaks the positioning of the 'No
> > Image' background in qcam when you stop the camera.
> >
> > Could you check that please?
> >
>
> Sorry it took me a while to get back to this, but I could not
> reproduce this issue.
>
> Here's what I see: https://i.imgur.com/6YMrBWm.png
>

Ping to get this patch landed. It's been six months now...
Kieran Bingham June 24, 2024, 1:15 p.m. UTC | #38
Quoting Neal Gompa (2024-06-23 08:10:06)
> On Wed, May 15, 2024 at 1:13 AM Neal Gompa <neal@gompa.dev> wrote:
> >
> > On Mon, Apr 22, 2024 at 5:31 AM Kieran Bingham
> > <kieran.bingham@ideasonboard.com> wrote:
> > >
> > > 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.
> > >
> > > It seems that the upgrade to Qt6 also breaks the positioning of the 'No
> > > Image' background in qcam when you stop the camera.
> > >
> > > Could you check that please?
> > >
> >
> > Sorry it took me a while to get back to this, but I could not
> > reproduce this issue.
> >
> > Here's what I see: https://i.imgur.com/6YMrBWm.png
> >

I don't know what happened with my previous testing of the image
centering, but I can't reproduce it now either so lets assume that was
just a problem somewhere between my keyboard and chair :D

> Ping to get this patch landed. It's been six months now...

Well - before we were gated by the fact that we still had to support
Ubuntu 22.04 LTS while it was current...

Retesting now...

sudo apt-get install libtiff-dev qt6-base-dev qt6-tools-dev-tools
qt6-tools-dev-tools is already the newest version (6.2.4-1).
libtiff-dev is already the newest version (4.3.0-6ubuntu0.9).
qt6-base-dev is already the newest version (6.2.4+dfsg-2ubuntu1.1).

Run-time dependency qt6 (modules: Core, Gui, OpenGL, OpenGLWidgets, Widgets) found: NO (tried pkgconfig)

src/apps/qcam/meson.build:4:10: ERROR: Dependency "qt6" not found, tried pkgconfig

Checking the meson-log:

env[PKG_CONFIG]: /usr/bin/pkg-config
-----------
Called: `/usr/bin/pkg-config --modversion Qt6Core` -> 1
stderr:
Package Qt6Core was not found in the pkg-config search path.
Perhaps you should add the directory containing `Qt6Core.pc'
to the PKG_CONFIG_PATH environment variable
No package 'Qt6Core' found
-----------
detected Qt6 None pkg-config dependency does not have proper tools support, ignoring
Run-time dependency qt6 (modules: Core, Gui, OpenGL, OpenGLWidgets, Widgets) found: NO (tried pkgconfig)

src/apps/qcam/meson.build:4:10: ERROR: Dependency "qt6" not found, tried pkgconfig

Argh ... so Ubuntu-22.04 is still broken... But 'perhaps' we can ignore
that if 22.04 is no longer supported - except it breaks /my/ build/usage
of qcam :-(

--
Kieran
Kieran Bingham June 24, 2024, 1:23 p.m. UTC | #39
Quoting Neal Gompa (2024-04-18 03:20:10)
> On Wed, Apr 17, 2024 at 5:02 PM Kieran Bingham
> <kieran.bingham@ideasonboard.com> wrote:
> >
> > Quoting Neal Gompa (2024-04-17 21:41:55)
> > > On Wed, Apr 17, 2024 at 4:34 PM Kieran Bingham
> > > <kieran.bingham@ideasonboard.com> wrote:
> > > >
> > > > Quoting Kieran Bingham (2024-04-17 21:26:24)
> > > > > Quoting Neal Gompa (2024-04-17 20:58:16)
> > > > > > On Wed, Apr 17, 2024 at 11:42 AM Laurent Pinchart
> > > > > > <laurent.pinchart@ideasonboard.com> wrote:
> > > > > > >
> > > > > > > On Tue, Apr 16, 2024 at 07:14:35PM +0100, Kieran Bingham wrote:
> > > > > > > > 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.
> > > > > > >
> > > > > > > Unless I'm mistaken, Ubuntu will still ship Qt5, so there's no urgency.
> > > > > > > I'm not opposed to this patch though (once fixed), as Qt6 seems to be
> > > > > > > available everywhere.
> > > > > > >
> > > > > >
> > > > > > This patch isn't broken. I just was able to build it on Ubuntu 24.04
> > > > > > just fine: https://download.opensuse.org/repositories/home:/Pharaoh_Atem:/libcamera/xUbuntu_24.04/amd64/
> > > > >
> > > > > I don't think the patch is broken, Just that there must be some
> > > > > additional dependency required which may have been implicitly installed
> > > > > in your case, but seems not to have been in my case.
> > > > >
> > > > > I'm not going to merge a patch that will prevent me from using qcam
> > > > > until I know how to correctly build it again.
> > > >
> > > > """
> > > > for qcam: [optional]
> > > >         libtiff-dev qt6-base-dev qt6-tools-dev-tools
> > > > """
> > > > kbingham@Monstersaurus:~/iob/libcamera/libcamera$ sudo apt install libtiff-dev qt6-base-dev qt6-tools-dev-tools
> > > > [sudo] password for kbingham:
> > > > Reading package lists... Done
> > > > Building dependency tree... Done
> > > > Reading state information... Done
> > > > qt6-tools-dev-tools is already the newest version (6.2.4-1).
> > > > libtiff-dev is already the newest version (4.3.0-6ubuntu0.8).
> > > > libtiff-dev set to manually installed.
> > > > qt6-base-dev is already the newest version (6.2.4+dfsg-2ubuntu1.1).
> > > >
> > > >
> > > > Then:
> > > >
> > > > ================================================================================
> > > > kbingham@Monstersaurus:~/iob/libcamera/libcamera$ meson setup qt6-test -Dqcam=enabled
> > > > The Meson build system
> > > > Version: 1.4.0
> > > > Source dir: /home/kbingham/iob/libcamera/libcamera
> > > > Build dir: /home/kbingham/iob/libcamera/libcamera/qt6-test
> > > > Build type: native build
> > > > WARNING: failed to process netrc file: ~/.netrc access too permissive: access permissions must restrict access to only the owner (/home/kbingham/.netrc, line 3).
> > > > Project name: libcamera
> > > > Project version: 0.2.0
> > > > C compiler for the host machine: ccache cc (gcc 11.4.0 "cc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0")
> > > > C linker for the host machine: cc ld.bfd 2.38
> > > > C++ compiler for the host machine: ccache c++ (gcc 11.4.0 "c++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0")
> > > > C++ linker for the host machine: c++ ld.bfd 2.38
> > > > Host machine cpu family: x86_64
> > > > Host machine cpu: x86_64
> > > > Header "unistd.h" has symbol "issetugid" : NO
> > > > Header "locale.h" has symbol "locale_t" : YES
> > > > Header "stdlib.h" has symbol "secure_getenv" : YES
> > > > Compiler for C supports arguments -Wno-c99-designator: NO
> > > > Found pkg-config: YES (/usr/bin/pkg-config) 0.29.2
> > > > Run-time dependency lttng-ust found: YES 2.13.1
> > > > Program ./parser.py found: YES (/home/kbingham/iob/libcamera/libcamera/utils/ipc/./parser.py)
> > > > Program ./generate.py found: YES (/home/kbingham/iob/libcamera/libcamera/utils/ipc/./generate.py)
> > > > Program ./extract-docs.py found: YES (/home/kbingham/iob/libcamera/libcamera/utils/ipc/./extract-docs.py)
> > > > Program ./gen-tp-header.py found: YES (/home/kbingham/iob/libcamera/libcamera/utils/tracepoints/./gen-tp-header.py)
> > > > Configuring version.h using configuration
> > > > Program openssl found: YES (/usr/bin/openssl)
> > > > Library atomic found: YES
> > > > Run-time dependency threads found: YES
> > > > Run-time dependency libdw found: YES 0.186
> > > > Run-time dependency libunwind found: YES 1.3.2
> > > > Header "execinfo.h" has symbol "backtrace" : YES
> > > > Checking for function "dlopen" : YES
> > > > Run-time dependency libudev found: YES 249
> > > > Run-time dependency yaml-0.1 found: YES 0.2.2
> > > > Run-time dependency gnutls found: YES 3.7.3
> > > > Dependency libexif skipped: feature android disabled
> > > > Dependency libjpeg skipped: feature android disabled
> > > > Run-time dependency libevent_pthreads found: YES 2.1.12-stable
> > > > Run-time dependency libtiff-4 found: YES 4.3.0
> > > > Run-time dependency GTest found: YES 1.11.0
> > > > Run-time dependency libdrm found: YES 2.4.113
> > > > Run-time dependency libjpeg found: YES 2.1.2
> > > > Run-time dependency sdl2 found: YES 2.0.20
> > > > Run-time dependency qt6 (modules: Core, Gui, OpenGL, OpenGLWidgets, Widgets) found: NO (tried pkgconfig)
> > > >
> > > > src/apps/qcam/meson.build:4:10: ERROR: Dependency "qt6" not found, tried pkgconfig
> > > >
> > > > A full log can be found at /home/kbingham/iob/libcamera/libcamera/qt6-test/meson-logs/meson-log.txt
> > > > ================================================================================
> > > >
> > > > I wonder if the modules have been implicitly installed, or used before
> > > > and now need to be explicitly listed as a dependency.
> > > >
> > >
> > > Something doesn't seem right here. Out of curiosity, what happens if
> > > you also install cmake and run the build? I'm wondering if something
> > > is busted with pkgconfig on your system somehow. I can build it in
> > > containers, in package build environments, and locally just fine with
> > > the instructions in the README.
> > >
> > > Basically, Meson is saying that the pkgconfig files for Qt6 modules
> > > cannot be found, which is incredibly bizarre.
> > >
> >
> > I'm on Ubuntu 22.04 (i.e. current Ubuntu LTS stable) if that is relevant ...
> >
> > Of course it all works for QT5 ...
> 
> Oh, I know what's wrong: there are no pkgconfig files for Qt 6 in Ubuntu 22.04.
> 
> This was fixed in 6.2.5, but it hasn't been backported to Ubuntu's
> package: https://codereview.qt-project.org/gitweb?p=qt/qtbase.git;a=commit;h=205ec2bb36b0a52d0dfa6729876eb18bcdbef512
> 
> I'm trying to see if I can get this backported...

Did you have any luck here? Where did you attempt this?

This does indeed look like what's blocking me currently.

--
Kieran
Laurent Pinchart June 26, 2024, 7:16 a.m. UTC | #40
On Mon, Jun 24, 2024 at 02:15:22PM +0100, Kieran Bingham wrote:
> Quoting Neal Gompa (2024-06-23 08:10:06)
> > On Wed, May 15, 2024 at 1:13 AM Neal Gompa wrote:
> > > On Mon, Apr 22, 2024 at 5:31 AM Kieran Bingham wrote:
> > > > 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.
> > > >
> > > > It seems that the upgrade to Qt6 also breaks the positioning of the 'No
> > > > Image' background in qcam when you stop the camera.
> > > >
> > > > Could you check that please?
> > >
> > > Sorry it took me a while to get back to this, but I could not
> > > reproduce this issue.
> > >
> > > Here's what I see: https://i.imgur.com/6YMrBWm.png
> 
> I don't know what happened with my previous testing of the image
> centering, but I can't reproduce it now either so lets assume that was
> just a problem somewhere between my keyboard and chair :D
> 
> > Ping to get this patch landed. It's been six months now...
> 
> Well - before we were gated by the fact that we still had to support
> Ubuntu 22.04 LTS while it was current...
> 
> Retesting now...
> 
> sudo apt-get install libtiff-dev qt6-base-dev qt6-tools-dev-tools
> qt6-tools-dev-tools is already the newest version (6.2.4-1).
> libtiff-dev is already the newest version (4.3.0-6ubuntu0.9).
> qt6-base-dev is already the newest version (6.2.4+dfsg-2ubuntu1.1).
> 
> Run-time dependency qt6 (modules: Core, Gui, OpenGL, OpenGLWidgets, Widgets) found: NO (tried pkgconfig)
> 
> src/apps/qcam/meson.build:4:10: ERROR: Dependency "qt6" not found, tried pkgconfig
> 
> Checking the meson-log:
> 
> env[PKG_CONFIG]: /usr/bin/pkg-config
> -----------
> Called: `/usr/bin/pkg-config --modversion Qt6Core` -> 1
> stderr:
> Package Qt6Core was not found in the pkg-config search path.
> Perhaps you should add the directory containing `Qt6Core.pc'
> to the PKG_CONFIG_PATH environment variable
> No package 'Qt6Core' found
> -----------
> detected Qt6 None pkg-config dependency does not have proper tools support, ignoring
> Run-time dependency qt6 (modules: Core, Gui, OpenGL, OpenGLWidgets, Widgets) found: NO (tried pkgconfig)
> 
> src/apps/qcam/meson.build:4:10: ERROR: Dependency "qt6" not found, tried pkgconfig
> 
> Argh ... so Ubuntu-22.04 is still broken... But 'perhaps' we can ignore
> that if 22.04 is no longer supported - except it breaks /my/ build/usage
> of qcam :-(

Ubuntu 24.04 has just been released, and 22.04 has standard support
until April 2027. I'd like to support it for a bit longer *if possible*,
at least to give users some more time to upgrade.

Is there a way to get the Qt 6 pkgconfig fix backported to Ubuntu 22.04,
or is that a pipe dream ?
Laurent Pinchart June 26, 2024, 12:26 p.m. UTC | #41
On Wed, Jun 26, 2024 at 10:16:41AM +0300, Laurent Pinchart wrote:
> On Mon, Jun 24, 2024 at 02:15:22PM +0100, Kieran Bingham wrote:
> > Quoting Neal Gompa (2024-06-23 08:10:06)
> > > On Wed, May 15, 2024 at 1:13 AM Neal Gompa wrote:
> > > > On Mon, Apr 22, 2024 at 5:31 AM Kieran Bingham wrote:
> > > > > 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.
> > > > >
> > > > > It seems that the upgrade to Qt6 also breaks the positioning of the 'No
> > > > > Image' background in qcam when you stop the camera.
> > > > >
> > > > > Could you check that please?
> > > >
> > > > Sorry it took me a while to get back to this, but I could not
> > > > reproduce this issue.
> > > >
> > > > Here's what I see: https://i.imgur.com/6YMrBWm.png
> > 
> > I don't know what happened with my previous testing of the image
> > centering, but I can't reproduce it now either so lets assume that was
> > just a problem somewhere between my keyboard and chair :D
> > 
> > > Ping to get this patch landed. It's been six months now...
> > 
> > Well - before we were gated by the fact that we still had to support
> > Ubuntu 22.04 LTS while it was current...
> > 
> > Retesting now...
> > 
> > sudo apt-get install libtiff-dev qt6-base-dev qt6-tools-dev-tools
> > qt6-tools-dev-tools is already the newest version (6.2.4-1).
> > libtiff-dev is already the newest version (4.3.0-6ubuntu0.9).
> > qt6-base-dev is already the newest version (6.2.4+dfsg-2ubuntu1.1).
> > 
> > Run-time dependency qt6 (modules: Core, Gui, OpenGL, OpenGLWidgets, Widgets) found: NO (tried pkgconfig)
> > 
> > src/apps/qcam/meson.build:4:10: ERROR: Dependency "qt6" not found, tried pkgconfig
> > 
> > Checking the meson-log:
> > 
> > env[PKG_CONFIG]: /usr/bin/pkg-config
> > -----------
> > Called: `/usr/bin/pkg-config --modversion Qt6Core` -> 1
> > stderr:
> > Package Qt6Core was not found in the pkg-config search path.
> > Perhaps you should add the directory containing `Qt6Core.pc'
> > to the PKG_CONFIG_PATH environment variable
> > No package 'Qt6Core' found
> > -----------
> > detected Qt6 None pkg-config dependency does not have proper tools support, ignoring
> > Run-time dependency qt6 (modules: Core, Gui, OpenGL, OpenGLWidgets, Widgets) found: NO (tried pkgconfig)
> > 
> > src/apps/qcam/meson.build:4:10: ERROR: Dependency "qt6" not found, tried pkgconfig
> > 
> > Argh ... so Ubuntu-22.04 is still broken... But 'perhaps' we can ignore
> > that if 22.04 is no longer supported - except it breaks /my/ build/usage
> > of qcam :-(
> 
> Ubuntu 24.04 has just been released, and 22.04 has standard support
> until April 2027. I'd like to support it for a bit longer *if possible*,
> at least to give users some more time to upgrade.
> 
> Is there a way to get the Qt 6 pkgconfig fix backported to Ubuntu 22.04,
> or is that a pipe dream ?

Additionally, I'm getting the following error with clang-17:

clang++-17 -Isrc/apps/qcam/qcam.p -Isrc/apps/qcam -I../../src/apps/qcam -Iinclude -I../../include -Iinclude/libcamera -I/usr/include/webp -I/usr/include/qt6/QtCore -I/usr/include/qt6 -I/usr/lib64/qt6/mkspecs/linux-g++ -I/usr/include/qt6/QtGui -I/usr/include/qt6/QtOpenGL -I/usr/include/qt6/QtOpenGLWidgets -I/usr/include/qt6/QtWidgets -fdiagnostics-color=always -fsanitize=address -fno-omit-frame-pointer -D_GLIBCXX_ASSERTIONS=1 -D_LIBCPP_ENABLE_ASSERTIONS=1 -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Werror -std=c++17 -O0 -g -stdlib=libc++ -Wextra-semi -Wthread-safety -Wshadow -include /home/laurent/src/iob/oss/libcamera/libcamera/build/x86-clang-17/config.h -Wno-c99-designator -DQT_OPENGLWIDGETS_LIB -DQT_WIDGETS_LIB -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -fPIC -DHAVE_TIFF -DQT_NO_KEYWORDS -MD -MQ src/apps/qcam/qcam.p/main_window.cpp.o -MF src/apps/qcam/qcam.p/main_window.cpp.o.d -o src/apps/qcam/qcam.p/main_window.cpp.o -c ../../src/apps/qcam/main_window.cpp
In file included from ../../src/apps/qcam/main_window.cpp:8:
In file included from ../../src/apps/qcam/main_window.h:23:
In file included from /usr/include/qt6/QtWidgets/QMainWindow:1:
In file included from /usr/include/qt6/QtWidgets/qmainwindow.h:8:
In file included from /usr/include/qt6/QtWidgets/qwidget.h:12:
In file included from /usr/include/qt6/QtGui/qaction.h:9:
/usr/include/qt6/QtGui/qkeysequence.h:139:26: error: extra ';' after member function definition [-Werror,-Wextra-semi]
  139 |     Q_ENUM(SequenceMatch);
      |                          ^
1 error generated.

Looks like a bug in Qt. Not the end of the world, we can work around
this either with a pragma to ignore the warning around the inclusion of
the Qt headers, or disabling it overall for qcam. The pragma would be
nicer as we would still catch issues in the qcam code itself, but if
that becomes too annoying, we can just disable the warning.
Kieran Bingham July 22, 2024, 2:13 p.m. UTC | #42
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@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
> 
> 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@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.

--
Kieran



> 
> 
> --
> Kieran
> 
> 
> >  
> >  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)
> > -- 
> > 2.43.0
> >
Kieran Bingham July 22, 2024, 3:01 p.m. UTC | #43
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@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 ... 


> > 
> > 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@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.
> 
> --
> Kieran
> 
> 
> 
> > 
> > 
> > --
> > Kieran
> > 
> > 
> > >  
> > >  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)
> > > -- 
> > > 2.43.0
> > >
Laurent Pinchart July 22, 2024, 3:13 p.m. UTC | #44
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@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@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)
Kieran Bingham July 23, 2024, 5:11 p.m. UTC | #45
Quoting Laurent Pinchart (2024-07-22 16:13:57)
> 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@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 :-)

This must be the hardest patch I've ever tried to land.

So ... The CI builders now have QT6 packages, provided through backports
in the case of debian-bullseye.

We have:

- Debian 11 : Bullsye  : QT 6.4.2 
- Debian 12 : Bookworm : QT 6.4.2 
- Debian 13 : Trixie   : QT 6.6.2


But this QT6 qcam patch now has a set of failures:

 - https://gitlab.freedesktop.org/camera/libcamera/-/pipelines/1230127/

Debian 11 : gcc 9 : https://gitlab.freedesktop.org/camera/libcamera/-/jobs/61356458
  - [358/622] Compiling C++ object src/ipa/rpi/controller/librpi_ipa_controller.a.p/rpi_awb.cpp.o

In file included from ../src/ipa/libipa/pwl.h:18,
                 from ../src/ipa/rpi/controller/rpi/awb.h:19,
                 from ../src/ipa/rpi/controller/rpi/awb.cpp:16:
../src/ipa/libipa/vector.h: In instantiation of ‘constexpr libcamera::ipa::Vector<T, Rows> libcamera::ipa::Vector<T, Rows, <anonymous> >::operator-(const libcamera::ipa::Vector<T, Rows>&) const [with T = double; unsigned int Rows = 2; std::enable_if_t<is_arithmetic_v<T> >* <anonymous> = 0; std::enable_if_t<is_arithmetic_v<T> > = void]’:
../src/ipa/rpi/controller/rpi/awb.cpp:506:27:   required from here

(This makes no sense to me at all)


Debian 11 : gcc 10 : 

In file included from src/apps/qcam/qcam.p/moc_viewfinder_gl.cpp:10:
src/apps/qcam/qcam.p/../../../../../src/apps/qcam/viewfinder_gl.h:15:10: fatal error: QOpenGLBuffer: No such file or directory
   15 | #include <QOpenGLBuffer>
      |          ^~~~~~~~~~~~~~~
compilation terminated.

(At least this looks related)


Debian 12 : clang ... in fact all the Debian 12's have this error:

In file included from src/apps/qcam/qcam.p/moc_viewfinder_gl.cpp:10:
src/apps/qcam/qcam.p/../../../../../src/apps/qcam/viewfinder_gl.h:15:10: fatal error: 'QOpenGLBuffer' file not found
#include <QOpenGLBuffer>
         ^~~~~~~~~~~~~~~


And Buildhistory job also fails as it's based on Debian 12.


So ... there's a crazy-how-can-it-be-related-but-consistently-repeatable
failure on Debian 11 : gcc 9, and a missing QOpenGLBuffer on all the
other failures.


Does anyone know if QOpenGLBuffer is just missing from QT 6.4.2 or is
this just some spurious build configuration corner case failure we're
hitting?

--
Kieran



> 
> > > > 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@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
Laurent Pinchart July 23, 2024, 6:53 p.m. UTC | #46
On Tue, Jul 23, 2024 at 06:11:19PM +0100, Kieran Bingham wrote:
> Quoting Laurent Pinchart (2024-07-22 16:13:57)
> > 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@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 :-)
> 
> This must be the hardest patch I've ever tried to land.
> 
> So ... The CI builders now have QT6 packages, provided through backports
> in the case of debian-bullseye.
> 
> We have:
> 
> - Debian 11 : Bullsye  : QT 6.4.2 
> - Debian 12 : Bookworm : QT 6.4.2 
> - Debian 13 : Trixie   : QT 6.6.2
> 
> 
> But this QT6 qcam patch now has a set of failures:
> 
>  - https://gitlab.freedesktop.org/camera/libcamera/-/pipelines/1230127/
> 
> Debian 11 : gcc 9 : https://gitlab.freedesktop.org/camera/libcamera/-/jobs/61356458
>   - [358/622] Compiling C++ object src/ipa/rpi/controller/librpi_ipa_controller.a.p/rpi_awb.cpp.o
> 
> In file included from ../src/ipa/libipa/pwl.h:18,
>                  from ../src/ipa/rpi/controller/rpi/awb.h:19,
>                  from ../src/ipa/rpi/controller/rpi/awb.cpp:16:
> ../src/ipa/libipa/vector.h: In instantiation of ‘constexpr libcamera::ipa::Vector<T, Rows> libcamera::ipa::Vector<T, Rows, <anonymous> >::operator-(const libcamera::ipa::Vector<T, Rows>&) const [with T = double; unsigned int Rows = 2; std::enable_if_t<is_arithmetic_v<T> >* <anonymous> = 0; std::enable_if_t<is_arithmetic_v<T> > = void]’:
> ../src/ipa/rpi/controller/rpi/awb.cpp:506:27:   required from here
> 
> (This makes no sense to me at all)

That's a note, not an error. I don't think it's related or new.

> Debian 11 : gcc 10 : 
> 
> In file included from src/apps/qcam/qcam.p/moc_viewfinder_gl.cpp:10:
> src/apps/qcam/qcam.p/../../../../../src/apps/qcam/viewfinder_gl.h:15:10: fatal error: QOpenGLBuffer: No such file or directory
>    15 | #include <QOpenGLBuffer>
>       |          ^~~~~~~~~~~~~~~
> compilation terminated.
> 
> (At least this looks related)
>
> Debian 12 : clang ... in fact all the Debian 12's have this error:
> 
> In file included from src/apps/qcam/qcam.p/moc_viewfinder_gl.cpp:10:
> src/apps/qcam/qcam.p/../../../../../src/apps/qcam/viewfinder_gl.h:15:10: fatal error: 'QOpenGLBuffer' file not found
> #include <QOpenGLBuffer>
>          ^~~~~~~~~~~~~~~
> 
> 
> And Buildhistory job also fails as it's based on Debian 12.
> 
> 
> So ... there's a crazy-how-can-it-be-related-but-consistently-repeatable
> failure on Debian 11 : gcc 9, and a missing QOpenGLBuffer on all the
> other failures.
> 
> 
> Does anyone know if QOpenGLBuffer is just missing from QT 6.4.2 or is
> this just some spurious build configuration corner case failure we're
> hitting?

Aren't you just missing the libqt6opengl6-dev package ?

> > > > > 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@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)
Kieran Bingham July 24, 2024, 10:38 a.m. UTC | #47
Quoting Laurent Pinchart (2024-07-23 19:53:52)
> On Tue, Jul 23, 2024 at 06:11:19PM +0100, Kieran Bingham wrote:
> > Quoting Laurent Pinchart (2024-07-22 16:13:57)
> > > 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@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 :-)
> > 
> > This must be the hardest patch I've ever tried to land.
> > 
> > So ... The CI builders now have QT6 packages, provided through backports
> > in the case of debian-bullseye.
> > 
> > We have:
> > 
> > - Debian 11 : Bullsye  : QT 6.4.2 
> > - Debian 12 : Bookworm : QT 6.4.2 
> > - Debian 13 : Trixie   : QT 6.6.2
> > 
> > 
> > But this QT6 qcam patch now has a set of failures:
> > 
> >  - https://gitlab.freedesktop.org/camera/libcamera/-/pipelines/1230127/
> > 
> > Debian 11 : gcc 9 : https://gitlab.freedesktop.org/camera/libcamera/-/jobs/61356458
> >   - [358/622] Compiling C++ object src/ipa/rpi/controller/librpi_ipa_controller.a.p/rpi_awb.cpp.o
> > 
> > In file included from ../src/ipa/libipa/pwl.h:18,
> >                  from ../src/ipa/rpi/controller/rpi/awb.h:19,
> >                  from ../src/ipa/rpi/controller/rpi/awb.cpp:16:
> > ../src/ipa/libipa/vector.h: In instantiation of ‘constexpr libcamera::ipa::Vector<T, Rows> libcamera::ipa::Vector<T, Rows, <anonymous> >::operator-(const libcamera::ipa::Vector<T, Rows>&) const [with T = double; unsigned int Rows = 2; std::enable_if_t<is_arithmetic_v<T> >* <anonymous> = 0; std::enable_if_t<is_arithmetic_v<T> > = void]’:
> > ../src/ipa/rpi/controller/rpi/awb.cpp:506:27:   required from here
> > 
> > (This makes no sense to me at all)
> 
> That's a note, not an error. I don't think it's related or new.

Argh! I hadn't realised that. I thought we had a 'clean' build with no
warnings. I didn't see it was a 'note' (it really looks like a warning)
... so I put more into this than it deserved.

Ignored ...

> 
> > Debian 11 : gcc 10 : 
> > 
> > In file included from src/apps/qcam/qcam.p/moc_viewfinder_gl.cpp:10:
> > src/apps/qcam/qcam.p/../../../../../src/apps/qcam/viewfinder_gl.h:15:10: fatal error: QOpenGLBuffer: No such file or directory
> >    15 | #include <QOpenGLBuffer>
> >       |          ^~~~~~~~~~~~~~~
> > compilation terminated.
> > 
> > (At least this looks related)
> >
> > Debian 12 : clang ... in fact all the Debian 12's have this error:
> > 
> > In file included from src/apps/qcam/qcam.p/moc_viewfinder_gl.cpp:10:
> > src/apps/qcam/qcam.p/../../../../../src/apps/qcam/viewfinder_gl.h:15:10: fatal error: 'QOpenGLBuffer' file not found
> > #include <QOpenGLBuffer>
> >          ^~~~~~~~~~~~~~~
> > 
> > 
> > And Buildhistory job also fails as it's based on Debian 12.
> > 
> > 
> > So ... there's a crazy-how-can-it-be-related-but-consistently-repeatable
> > failure on Debian 11 : gcc 9, and a missing QOpenGLBuffer on all the
> > other failures.
> > 
> > 
> > Does anyone know if QOpenGLBuffer is just missing from QT 6.4.2 or is
> > this just some spurious build configuration corner case failure we're
> > hitting?
> 
> Aren't you just missing the libqt6opengl6-dev package ?

Ok - so yes - that bit was that simple. I've added libqt6opengl6-dev to
the CI explicitly.

I think that means the README needs to be updated again to reference
libqt6opengl6-dev in this patch too.


On to the next (final please?) failure:


https://gitlab.freedesktop.org/camera/libcamera/-/jobs/61434092

[424/606] Linking target src/apps/qcam/qcam
FAILED: src/apps/qcam/qcam 
clang++  -o src/apps/qcam/qcam src/apps/qcam/qcam.p/meson-generated_.._qt6-feathericons_qrc.cpp.o src/apps/qcam/qcam.p/meson-generated_.._qt6-shaders_qrc.cpp.o src/apps/qcam/qcam.p/meson-generated_moc_cam_select_dialog.cpp.o src/apps/qcam/qcam.p/meson-generated_moc_main_window.cpp.o src/apps/qcam/qcam.p/meson-generated_moc_viewfinder_gl.cpp.o src/apps/qcam/qcam.p/meson-generated_moc_viewfinder_qt.cpp.o src/apps/qcam/qcam.p/cam_select_dialog.cpp.o src/apps/qcam/qcam.p/format_converter.cpp.o src/apps/qcam/qcam.p/main.cpp.o src/apps/qcam/qcam.p/main_window.cpp.o src/apps/qcam/qcam.p/message_handler.cpp.o src/apps/qcam/qcam.p/viewfinder_gl.cpp.o src/apps/qcam/qcam.p/viewfinder_qt.cpp.o -Wl,--as-needed -Wl,--no-undefined -stdlib=libc++ -Wextra-semi -Wthread-safety -Wmissing-declarations -Wshadow -include /builds/camera/libcamera/build/config.h -Wno-c99-designator '-Wl,-rpath,$ORIGIN/../../libcamera:$ORIGIN/../../libcamera/base' -Wl,-rpath-link,/builds/camera/libcamera/build/src/libcamera -Wl,-rpath-link,/builds/camera/libcamera/build/src/libcamera/base -Wl,--start-group src/apps/common/libapps.a src/libcamera/libcamera.so.0.3.0 src/libcamera/base/libcamera-base.so.0.3.0 -latomic /usr/lib/x86_64-linux-gnu/libtiff.so /usr/lib/x86_64-linux-gnu/libQt6Core.so /usr/lib/x86_64-linux-gnu/libQt6Gui.so /usr/lib/x86_64-linux-gnu/libQt6OpenGL.so /usr/lib/x86_64-linux-gnu/libQt6OpenGLWidgets.so /usr/lib/x86_64-linux-gnu/libQt6Widgets.so -Wl,--end-group
/usr/bin/ld: src/apps/qcam/qcam.p/cam_select_dialog.cpp.o: in function `QString::toStdString() const':
/usr/include/x86_64-linux-gnu/qt6/QtCore/qstring.h:1477: undefined reference to `QByteArray::toStdString() const'
clang: error: linker command failed with exit code 1 (use -v to see invocation)


on the clang builds of debian-12 though gcc-12 builds fine there!

digging ...

--
Kieran



> 
> > > > > > 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@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
Kieran Bingham July 24, 2024, 1:55 p.m. UTC | #48
Quoting Kieran Bingham (2024-07-24 11:38:07)
> Quoting Laurent Pinchart (2024-07-23 19:53:52)
> > On Tue, Jul 23, 2024 at 06:11:19PM +0100, Kieran Bingham wrote:
> > > Quoting Laurent Pinchart (2024-07-22 16:13:57)
> > > > 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@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 :-)
> > > 
> > > This must be the hardest patch I've ever tried to land.
> > > 
> > > So ... The CI builders now have QT6 packages, provided through backports
> > > in the case of debian-bullseye.
> > > 
> > > We have:
> > > 
> > > - Debian 11 : Bullsye  : QT 6.4.2 
> > > - Debian 12 : Bookworm : QT 6.4.2 
> > > - Debian 13 : Trixie   : QT 6.6.2
> > > 
> > > 
> > > But this QT6 qcam patch now has a set of failures:
> > > 
> > >  - https://gitlab.freedesktop.org/camera/libcamera/-/pipelines/1230127/
> > > 
> > > Debian 11 : gcc 9 : https://gitlab.freedesktop.org/camera/libcamera/-/jobs/61356458
> > >   - [358/622] Compiling C++ object src/ipa/rpi/controller/librpi_ipa_controller.a.p/rpi_awb.cpp.o
> > > 
> > > In file included from ../src/ipa/libipa/pwl.h:18,
> > >                  from ../src/ipa/rpi/controller/rpi/awb.h:19,
> > >                  from ../src/ipa/rpi/controller/rpi/awb.cpp:16:
> > > ../src/ipa/libipa/vector.h: In instantiation of ‘constexpr libcamera::ipa::Vector<T, Rows> libcamera::ipa::Vector<T, Rows, <anonymous> >::operator-(const libcamera::ipa::Vector<T, Rows>&) const [with T = double; unsigned int Rows = 2; std::enable_if_t<is_arithmetic_v<T> >* <anonymous> = 0; std::enable_if_t<is_arithmetic_v<T> > = void]’:
> > > ../src/ipa/rpi/controller/rpi/awb.cpp:506:27:   required from here
> > > 
> > > (This makes no sense to me at all)
> > 
> > That's a note, not an error. I don't think it's related or new.
> 
> Argh! I hadn't realised that. I thought we had a 'clean' build with no
> warnings. I didn't see it was a 'note' (it really looks like a warning)
> ... so I put more into this than it deserved.
> 
> Ignored ...
> 
> > 
> > > Debian 11 : gcc 10 : 
> > > 
> > > In file included from src/apps/qcam/qcam.p/moc_viewfinder_gl.cpp:10:
> > > src/apps/qcam/qcam.p/../../../../../src/apps/qcam/viewfinder_gl.h:15:10: fatal error: QOpenGLBuffer: No such file or directory
> > >    15 | #include <QOpenGLBuffer>
> > >       |          ^~~~~~~~~~~~~~~
> > > compilation terminated.
> > > 
> > > (At least this looks related)
> > >
> > > Debian 12 : clang ... in fact all the Debian 12's have this error:
> > > 
> > > In file included from src/apps/qcam/qcam.p/moc_viewfinder_gl.cpp:10:
> > > src/apps/qcam/qcam.p/../../../../../src/apps/qcam/viewfinder_gl.h:15:10: fatal error: 'QOpenGLBuffer' file not found
> > > #include <QOpenGLBuffer>
> > >          ^~~~~~~~~~~~~~~
> > > 
> > > 
> > > And Buildhistory job also fails as it's based on Debian 12.
> > > 
> > > 
> > > So ... there's a crazy-how-can-it-be-related-but-consistently-repeatable
> > > failure on Debian 11 : gcc 9, and a missing QOpenGLBuffer on all the
> > > other failures.
> > > 
> > > 
> > > Does anyone know if QOpenGLBuffer is just missing from QT 6.4.2 or is
> > > this just some spurious build configuration corner case failure we're
> > > hitting?
> > 
> > Aren't you just missing the libqt6opengl6-dev package ?
> 
> Ok - so yes - that bit was that simple. I've added libqt6opengl6-dev to
> the CI explicitly.
> 
> I think that means the README needs to be updated again to reference
> libqt6opengl6-dev in this patch too.
> 
> 
> On to the next (final please?) failure:
> 
> 
> https://gitlab.freedesktop.org/camera/libcamera/-/jobs/61434092
> 
> [424/606] Linking target src/apps/qcam/qcam
> FAILED: src/apps/qcam/qcam 
> clang++  -o src/apps/qcam/qcam src/apps/qcam/qcam.p/meson-generated_.._qt6-feathericons_qrc.cpp.o src/apps/qcam/qcam.p/meson-generated_.._qt6-shaders_qrc.cpp.o src/apps/qcam/qcam.p/meson-generated_moc_cam_select_dialog.cpp.o src/apps/qcam/qcam.p/meson-generated_moc_main_window.cpp.o src/apps/qcam/qcam.p/meson-generated_moc_viewfinder_gl.cpp.o src/apps/qcam/qcam.p/meson-generated_moc_viewfinder_qt.cpp.o src/apps/qcam/qcam.p/cam_select_dialog.cpp.o src/apps/qcam/qcam.p/format_converter.cpp.o src/apps/qcam/qcam.p/main.cpp.o src/apps/qcam/qcam.p/main_window.cpp.o src/apps/qcam/qcam.p/message_handler.cpp.o src/apps/qcam/qcam.p/viewfinder_gl.cpp.o src/apps/qcam/qcam.p/viewfinder_qt.cpp.o -Wl,--as-needed -Wl,--no-undefined -stdlib=libc++ -Wextra-semi -Wthread-safety -Wmissing-declarations -Wshadow -include /builds/camera/libcamera/build/config.h -Wno-c99-designator '-Wl,-rpath,$ORIGIN/../../libcamera:$ORIGIN/../../libcamera/base' -Wl,-rpath-link,/builds/camera/libcamera/build/src/libcamera -Wl,-rpath-link,/builds/camera/libcamera/build/src/libcamera/base -Wl,--start-group src/apps/common/libapps.a src/libcamera/libcamera.so.0.3.0 src/libcamera/base/libcamera-base.so.0.3.0 -latomic /usr/lib/x86_64-linux-gnu/libtiff.so /usr/lib/x86_64-linux-gnu/libQt6Core.so /usr/lib/x86_64-linux-gnu/libQt6Gui.so /usr/lib/x86_64-linux-gnu/libQt6OpenGL.so /usr/lib/x86_64-linux-gnu/libQt6OpenGLWidgets.so /usr/lib/x86_64-linux-gnu/libQt6Widgets.so -Wl,--end-group
> /usr/bin/ld: src/apps/qcam/qcam.p/cam_select_dialog.cpp.o: in function `QString::toStdString() const':
> /usr/include/x86_64-linux-gnu/qt6/QtCore/qstring.h:1477: undefined reference to `QByteArray::toStdString() const'
> clang: error: linker command failed with exit code 1 (use -v to see invocation)
> 
> 
> on the clang builds of debian-12 though gcc-12 builds fine there!
> 
> digging ...

I took Laurent's suggestion and disabled Qcam builds on debian-12 with
clang.

From the looks of this, the compilation of 'QByteArray::toStdString()
const' in this specific version of qt6 on debian-12 ends up binary
incompatible with the libstdc++ abi ... and thus fails to link.

I expect users who want to build qcam on debian-12 with clang and
libstdc++ to be ... quite rare so I think we can ignore this.

https://gitlab.freedesktop.org/camera/libcamera/-/pipelines/1231737

is now green - so I think I can finally merge this !

--
Kieran


> 
> --
> Kieran
> 
> 
> 
> > 
> > > > > > > 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@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
Laurent Pinchart July 24, 2024, 6:59 p.m. UTC | #49
On Wed, Jul 24, 2024 at 02:55:43PM +0100, Kieran Bingham wrote:
> Quoting Kieran Bingham (2024-07-24 11:38:07)
> > Quoting Laurent Pinchart (2024-07-23 19:53:52)
> > > On Tue, Jul 23, 2024 at 06:11:19PM +0100, Kieran Bingham wrote:
> > > > Quoting Laurent Pinchart (2024-07-22 16:13:57)
> > > > > 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@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 :-)
> > > > 
> > > > This must be the hardest patch I've ever tried to land.
> > > > 
> > > > So ... The CI builders now have QT6 packages, provided through backports
> > > > in the case of debian-bullseye.
> > > > 
> > > > We have:
> > > > 
> > > > - Debian 11 : Bullsye  : QT 6.4.2 
> > > > - Debian 12 : Bookworm : QT 6.4.2 
> > > > - Debian 13 : Trixie   : QT 6.6.2
> > > > 
> > > > 
> > > > But this QT6 qcam patch now has a set of failures:
> > > > 
> > > >  - https://gitlab.freedesktop.org/camera/libcamera/-/pipelines/1230127/
> > > > 
> > > > Debian 11 : gcc 9 : https://gitlab.freedesktop.org/camera/libcamera/-/jobs/61356458
> > > >   - [358/622] Compiling C++ object src/ipa/rpi/controller/librpi_ipa_controller.a.p/rpi_awb.cpp.o
> > > > 
> > > > In file included from ../src/ipa/libipa/pwl.h:18,
> > > >                  from ../src/ipa/rpi/controller/rpi/awb.h:19,
> > > >                  from ../src/ipa/rpi/controller/rpi/awb.cpp:16:
> > > > ../src/ipa/libipa/vector.h: In instantiation of ‘constexpr libcamera::ipa::Vector<T, Rows> libcamera::ipa::Vector<T, Rows, <anonymous> >::operator-(const libcamera::ipa::Vector<T, Rows>&) const [with T = double; unsigned int Rows = 2; std::enable_if_t<is_arithmetic_v<T> >* <anonymous> = 0; std::enable_if_t<is_arithmetic_v<T> > = void]’:
> > > > ../src/ipa/rpi/controller/rpi/awb.cpp:506:27:   required from here
> > > > 
> > > > (This makes no sense to me at all)
> > > 
> > > That's a note, not an error. I don't think it's related or new.
> > 
> > Argh! I hadn't realised that. I thought we had a 'clean' build with no
> > warnings. I didn't see it was a 'note' (it really looks like a warning)
> > ... so I put more into this than it deserved.
> > 
> > Ignored ...
> > 
> > > 
> > > > Debian 11 : gcc 10 : 
> > > > 
> > > > In file included from src/apps/qcam/qcam.p/moc_viewfinder_gl.cpp:10:
> > > > src/apps/qcam/qcam.p/../../../../../src/apps/qcam/viewfinder_gl.h:15:10: fatal error: QOpenGLBuffer: No such file or directory
> > > >    15 | #include <QOpenGLBuffer>
> > > >       |          ^~~~~~~~~~~~~~~
> > > > compilation terminated.
> > > > 
> > > > (At least this looks related)
> > > >
> > > > Debian 12 : clang ... in fact all the Debian 12's have this error:
> > > > 
> > > > In file included from src/apps/qcam/qcam.p/moc_viewfinder_gl.cpp:10:
> > > > src/apps/qcam/qcam.p/../../../../../src/apps/qcam/viewfinder_gl.h:15:10: fatal error: 'QOpenGLBuffer' file not found
> > > > #include <QOpenGLBuffer>
> > > >          ^~~~~~~~~~~~~~~
> > > > 
> > > > 
> > > > And Buildhistory job also fails as it's based on Debian 12.
> > > > 
> > > > 
> > > > So ... there's a crazy-how-can-it-be-related-but-consistently-repeatable
> > > > failure on Debian 11 : gcc 9, and a missing QOpenGLBuffer on all the
> > > > other failures.
> > > > 
> > > > 
> > > > Does anyone know if QOpenGLBuffer is just missing from QT 6.4.2 or is
> > > > this just some spurious build configuration corner case failure we're
> > > > hitting?
> > > 
> > > Aren't you just missing the libqt6opengl6-dev package ?
> > 
> > Ok - so yes - that bit was that simple. I've added libqt6opengl6-dev to
> > the CI explicitly.
> > 
> > I think that means the README needs to be updated again to reference
> > libqt6opengl6-dev in this patch too.
> > 
> > 
> > On to the next (final please?) failure:
> > 
> > 
> > https://gitlab.freedesktop.org/camera/libcamera/-/jobs/61434092
> > 
> > [424/606] Linking target src/apps/qcam/qcam
> > FAILED: src/apps/qcam/qcam 
> > clang++  -o src/apps/qcam/qcam src/apps/qcam/qcam.p/meson-generated_.._qt6-feathericons_qrc.cpp.o src/apps/qcam/qcam.p/meson-generated_.._qt6-shaders_qrc.cpp.o src/apps/qcam/qcam.p/meson-generated_moc_cam_select_dialog.cpp.o src/apps/qcam/qcam.p/meson-generated_moc_main_window.cpp.o src/apps/qcam/qcam.p/meson-generated_moc_viewfinder_gl.cpp.o src/apps/qcam/qcam.p/meson-generated_moc_viewfinder_qt.cpp.o src/apps/qcam/qcam.p/cam_select_dialog.cpp.o src/apps/qcam/qcam.p/format_converter.cpp.o src/apps/qcam/qcam.p/main.cpp.o src/apps/qcam/qcam.p/main_window.cpp.o src/apps/qcam/qcam.p/message_handler.cpp.o src/apps/qcam/qcam.p/viewfinder_gl.cpp.o src/apps/qcam/qcam.p/viewfinder_qt.cpp.o -Wl,--as-needed -Wl,--no-undefined -stdlib=libc++ -Wextra-semi -Wthread-safety -Wmissing-declarations -Wshadow -include /builds/camera/libcamera/build/config.h -Wno-c99-designator '-Wl,-rpath,$ORIGIN/../../libcamera:$ORIGIN/../../libcamera/base' -Wl,-rpath-link,/builds/camera/libcamera/build/src/libcamera -Wl,-rpath-link,/builds/camera/libcamera/build/src/libcamera/base -Wl,--start-group src/apps/common/libapps.a src/libcamera/libcamera.so.0.3.0 src/libcamera/base/libcamera-base.so.0.3.0 -latomic /usr/lib/x86_64-linux-gnu/libtiff.so /usr/lib/x86_64-linux-gnu/libQt6Core.so /usr/lib/x86_64-linux-gnu/libQt6Gui.so /usr/lib/x86_64-linux-gnu/libQt6OpenGL.so /usr/lib/x86_64-linux-gnu/libQt6OpenGLWidgets.so /usr/lib/x86_64-linux-gnu/libQt6Widgets.so -Wl,--end-group
> > /usr/bin/ld: src/apps/qcam/qcam.p/cam_select_dialog.cpp.o: in function `QString::toStdString() const':
> > /usr/include/x86_64-linux-gnu/qt6/QtCore/qstring.h:1477: undefined reference to `QByteArray::toStdString() const'
> > clang: error: linker command failed with exit code 1 (use -v to see invocation)
> > 
> > 
> > on the clang builds of debian-12 though gcc-12 builds fine there!
> > 
> > digging ...
> 
> I took Laurent's suggestion and disabled Qcam builds on debian-12 with
> clang.
> 
> From the looks of this, the compilation of 'QByteArray::toStdString()
> const' in this specific version of qt6 on debian-12 ends up binary
> incompatible with the libstdc++ abi ... and thus fails to link.

Did you mean libc++ ? libstdc++ is the library that comes with gcc. Does
Debian 12 compile packages with gcc + libc++ ?

> I expect users who want to build qcam on debian-12 with clang and
> libstdc++ to be ... quite rare so I think we can ignore this.
> 
> https://gitlab.freedesktop.org/camera/libcamera/-/pipelines/1231737
> 
> is now green - so I think I can finally merge this !
> 
> > > > > > > > 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@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)
Neal Gompa July 28, 2024, 3:03 p.m. UTC | #50
On Wed, Jul 24, 2024 at 3:00 PM Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
>
> On Wed, Jul 24, 2024 at 02:55:43PM +0100, Kieran Bingham wrote:
> > Quoting Kieran Bingham (2024-07-24 11:38:07)
> > > Quoting Laurent Pinchart (2024-07-23 19:53:52)
> > > > On Tue, Jul 23, 2024 at 06:11:19PM +0100, Kieran Bingham wrote:
> > > > > Quoting Laurent Pinchart (2024-07-22 16:13:57)
> > > > > > 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@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 :-)
> > > > >
> > > > > This must be the hardest patch I've ever tried to land.
> > > > >
> > > > > So ... The CI builders now have QT6 packages, provided through backports
> > > > > in the case of debian-bullseye.
> > > > >
> > > > > We have:
> > > > >
> > > > > - Debian 11 : Bullsye  : QT 6.4.2
> > > > > - Debian 12 : Bookworm : QT 6.4.2
> > > > > - Debian 13 : Trixie   : QT 6.6.2
> > > > >
> > > > >
> > > > > But this QT6 qcam patch now has a set of failures:
> > > > >
> > > > >  - https://gitlab.freedesktop.org/camera/libcamera/-/pipelines/1230127/
> > > > >
> > > > > Debian 11 : gcc 9 : https://gitlab.freedesktop.org/camera/libcamera/-/jobs/61356458
> > > > >   - [358/622] Compiling C++ object src/ipa/rpi/controller/librpi_ipa_controller.a.p/rpi_awb.cpp.o
> > > > >
> > > > > In file included from ../src/ipa/libipa/pwl.h:18,
> > > > >                  from ../src/ipa/rpi/controller/rpi/awb.h:19,
> > > > >                  from ../src/ipa/rpi/controller/rpi/awb.cpp:16:
> > > > > ../src/ipa/libipa/vector.h: In instantiation of ‘constexpr libcamera::ipa::Vector<T, Rows> libcamera::ipa::Vector<T, Rows, <anonymous> >::operator-(const libcamera::ipa::Vector<T, Rows>&) const [with T = double; unsigned int Rows = 2; std::enable_if_t<is_arithmetic_v<T> >* <anonymous> = 0; std::enable_if_t<is_arithmetic_v<T> > = void]’:
> > > > > ../src/ipa/rpi/controller/rpi/awb.cpp:506:27:   required from here
> > > > >
> > > > > (This makes no sense to me at all)
> > > >
> > > > That's a note, not an error. I don't think it's related or new.
> > >
> > > Argh! I hadn't realised that. I thought we had a 'clean' build with no
> > > warnings. I didn't see it was a 'note' (it really looks like a warning)
> > > ... so I put more into this than it deserved.
> > >
> > > Ignored ...
> > >
> > > >
> > > > > Debian 11 : gcc 10 :
> > > > >
> > > > > In file included from src/apps/qcam/qcam.p/moc_viewfinder_gl.cpp:10:
> > > > > src/apps/qcam/qcam.p/../../../../../src/apps/qcam/viewfinder_gl.h:15:10: fatal error: QOpenGLBuffer: No such file or directory
> > > > >    15 | #include <QOpenGLBuffer>
> > > > >       |          ^~~~~~~~~~~~~~~
> > > > > compilation terminated.
> > > > >
> > > > > (At least this looks related)
> > > > >
> > > > > Debian 12 : clang ... in fact all the Debian 12's have this error:
> > > > >
> > > > > In file included from src/apps/qcam/qcam.p/moc_viewfinder_gl.cpp:10:
> > > > > src/apps/qcam/qcam.p/../../../../../src/apps/qcam/viewfinder_gl.h:15:10: fatal error: 'QOpenGLBuffer' file not found
> > > > > #include <QOpenGLBuffer>
> > > > >          ^~~~~~~~~~~~~~~
> > > > >
> > > > >
> > > > > And Buildhistory job also fails as it's based on Debian 12.
> > > > >
> > > > >
> > > > > So ... there's a crazy-how-can-it-be-related-but-consistently-repeatable
> > > > > failure on Debian 11 : gcc 9, and a missing QOpenGLBuffer on all the
> > > > > other failures.
> > > > >
> > > > >
> > > > > Does anyone know if QOpenGLBuffer is just missing from QT 6.4.2 or is
> > > > > this just some spurious build configuration corner case failure we're
> > > > > hitting?
> > > >
> > > > Aren't you just missing the libqt6opengl6-dev package ?
> > >
> > > Ok - so yes - that bit was that simple. I've added libqt6opengl6-dev to
> > > the CI explicitly.
> > >
> > > I think that means the README needs to be updated again to reference
> > > libqt6opengl6-dev in this patch too.
> > >
> > >
> > > On to the next (final please?) failure:
> > >
> > >
> > > https://gitlab.freedesktop.org/camera/libcamera/-/jobs/61434092
> > >
> > > [424/606] Linking target src/apps/qcam/qcam
> > > FAILED: src/apps/qcam/qcam
> > > clang++  -o src/apps/qcam/qcam src/apps/qcam/qcam.p/meson-generated_.._qt6-feathericons_qrc.cpp.o src/apps/qcam/qcam.p/meson-generated_.._qt6-shaders_qrc.cpp.o src/apps/qcam/qcam.p/meson-generated_moc_cam_select_dialog.cpp.o src/apps/qcam/qcam.p/meson-generated_moc_main_window.cpp.o src/apps/qcam/qcam.p/meson-generated_moc_viewfinder_gl.cpp.o src/apps/qcam/qcam.p/meson-generated_moc_viewfinder_qt.cpp.o src/apps/qcam/qcam.p/cam_select_dialog.cpp.o src/apps/qcam/qcam.p/format_converter.cpp.o src/apps/qcam/qcam.p/main.cpp.o src/apps/qcam/qcam.p/main_window.cpp.o src/apps/qcam/qcam.p/message_handler.cpp.o src/apps/qcam/qcam.p/viewfinder_gl.cpp.o src/apps/qcam/qcam.p/viewfinder_qt.cpp.o -Wl,--as-needed -Wl,--no-undefined -stdlib=libc++ -Wextra-semi -Wthread-safety -Wmissing-declarations -Wshadow -include /builds/camera/libcamera/build/config.h -Wno-c99-designator '-Wl,-rpath,$ORIGIN/../../libcamera:$ORIGIN/../../libcamera/base' -Wl,-rpath-link,/builds/camera/libcamera/build/src/libcamera -Wl,-rpath-link,/builds/camera/libcamera/build/src/libcamera/base -Wl,--start-group src/apps/common/libapps.a src/libcamera/libcamera.so.0.3.0 src/libcamera/base/libcamera-base.so.0.3.0 -latomic /usr/lib/x86_64-linux-gnu/libtiff.so /usr/lib/x86_64-linux-gnu/libQt6Core.so /usr/lib/x86_64-linux-gnu/libQt6Gui.so /usr/lib/x86_64-linux-gnu/libQt6OpenGL.so /usr/lib/x86_64-linux-gnu/libQt6OpenGLWidgets.so /usr/lib/x86_64-linux-gnu/libQt6Widgets.so -Wl,--end-group
> > > /usr/bin/ld: src/apps/qcam/qcam.p/cam_select_dialog.cpp.o: in function `QString::toStdString() const':
> > > /usr/include/x86_64-linux-gnu/qt6/QtCore/qstring.h:1477: undefined reference to `QByteArray::toStdString() const'
> > > clang: error: linker command failed with exit code 1 (use -v to see invocation)
> > >
> > >
> > > on the clang builds of debian-12 though gcc-12 builds fine there!
> > >
> > > digging ...
> >
> > I took Laurent's suggestion and disabled Qcam builds on debian-12 with
> > clang.
> >
> > From the looks of this, the compilation of 'QByteArray::toStdString()
> > const' in this specific version of qt6 on debian-12 ends up binary
> > incompatible with the libstdc++ abi ... and thus fails to link.
>
> Did you mean libc++ ? libstdc++ is the library that comes with gcc. Does
> Debian 12 compile packages with gcc + libc++ ?
>

It is fairly common to have clang built against and linked to
libstdc++. That ensures that you can use clang for some things and gcc
for other things and they can be combined into a single executable.
Laurent Pinchart July 28, 2024, 3:28 p.m. UTC | #51
On Sun, Jul 28, 2024 at 11:03:11AM -0400, Neal Gompa wrote:
> On Wed, Jul 24, 2024 at 3:00 PM Laurent Pinchart wrote:
> > On Wed, Jul 24, 2024 at 02:55:43PM +0100, Kieran Bingham wrote:
> > > Quoting Kieran Bingham (2024-07-24 11:38:07)
> > > > Quoting Laurent Pinchart (2024-07-23 19:53:52)
> > > > > On Tue, Jul 23, 2024 at 06:11:19PM +0100, Kieran Bingham wrote:
> > > > > > Quoting Laurent Pinchart (2024-07-22 16:13:57)
> > > > > > > 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@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 :-)
> > > > > >
> > > > > > This must be the hardest patch I've ever tried to land.
> > > > > >
> > > > > > So ... The CI builders now have QT6 packages, provided through backports
> > > > > > in the case of debian-bullseye.
> > > > > >
> > > > > > We have:
> > > > > >
> > > > > > - Debian 11 : Bullsye  : QT 6.4.2
> > > > > > - Debian 12 : Bookworm : QT 6.4.2
> > > > > > - Debian 13 : Trixie   : QT 6.6.2
> > > > > >
> > > > > >
> > > > > > But this QT6 qcam patch now has a set of failures:
> > > > > >
> > > > > >  - https://gitlab.freedesktop.org/camera/libcamera/-/pipelines/1230127/
> > > > > >
> > > > > > Debian 11 : gcc 9 : https://gitlab.freedesktop.org/camera/libcamera/-/jobs/61356458
> > > > > >   - [358/622] Compiling C++ object src/ipa/rpi/controller/librpi_ipa_controller.a.p/rpi_awb.cpp.o
> > > > > >
> > > > > > In file included from ../src/ipa/libipa/pwl.h:18,
> > > > > >                  from ../src/ipa/rpi/controller/rpi/awb.h:19,
> > > > > >                  from ../src/ipa/rpi/controller/rpi/awb.cpp:16:
> > > > > > ../src/ipa/libipa/vector.h: In instantiation of ‘constexpr libcamera::ipa::Vector<T, Rows> libcamera::ipa::Vector<T, Rows, <anonymous> >::operator-(const libcamera::ipa::Vector<T, Rows>&) const [with T = double; unsigned int Rows = 2; std::enable_if_t<is_arithmetic_v<T> >* <anonymous> = 0; std::enable_if_t<is_arithmetic_v<T> > = void]’:
> > > > > > ../src/ipa/rpi/controller/rpi/awb.cpp:506:27:   required from here
> > > > > >
> > > > > > (This makes no sense to me at all)
> > > > >
> > > > > That's a note, not an error. I don't think it's related or new.
> > > >
> > > > Argh! I hadn't realised that. I thought we had a 'clean' build with no
> > > > warnings. I didn't see it was a 'note' (it really looks like a warning)
> > > > ... so I put more into this than it deserved.
> > > >
> > > > Ignored ...
> > > >
> > > > >
> > > > > > Debian 11 : gcc 10 :
> > > > > >
> > > > > > In file included from src/apps/qcam/qcam.p/moc_viewfinder_gl.cpp:10:
> > > > > > src/apps/qcam/qcam.p/../../../../../src/apps/qcam/viewfinder_gl.h:15:10: fatal error: QOpenGLBuffer: No such file or directory
> > > > > >    15 | #include <QOpenGLBuffer>
> > > > > >       |          ^~~~~~~~~~~~~~~
> > > > > > compilation terminated.
> > > > > >
> > > > > > (At least this looks related)
> > > > > >
> > > > > > Debian 12 : clang ... in fact all the Debian 12's have this error:
> > > > > >
> > > > > > In file included from src/apps/qcam/qcam.p/moc_viewfinder_gl.cpp:10:
> > > > > > src/apps/qcam/qcam.p/../../../../../src/apps/qcam/viewfinder_gl.h:15:10: fatal error: 'QOpenGLBuffer' file not found
> > > > > > #include <QOpenGLBuffer>
> > > > > >          ^~~~~~~~~~~~~~~
> > > > > >
> > > > > >
> > > > > > And Buildhistory job also fails as it's based on Debian 12.
> > > > > >
> > > > > >
> > > > > > So ... there's a crazy-how-can-it-be-related-but-consistently-repeatable
> > > > > > failure on Debian 11 : gcc 9, and a missing QOpenGLBuffer on all the
> > > > > > other failures.
> > > > > >
> > > > > >
> > > > > > Does anyone know if QOpenGLBuffer is just missing from QT 6.4.2 or is
> > > > > > this just some spurious build configuration corner case failure we're
> > > > > > hitting?
> > > > >
> > > > > Aren't you just missing the libqt6opengl6-dev package ?
> > > >
> > > > Ok - so yes - that bit was that simple. I've added libqt6opengl6-dev to
> > > > the CI explicitly.
> > > >
> > > > I think that means the README needs to be updated again to reference
> > > > libqt6opengl6-dev in this patch too.
> > > >
> > > >
> > > > On to the next (final please?) failure:
> > > >
> > > >
> > > > https://gitlab.freedesktop.org/camera/libcamera/-/jobs/61434092
> > > >
> > > > [424/606] Linking target src/apps/qcam/qcam
> > > > FAILED: src/apps/qcam/qcam
> > > > clang++  -o src/apps/qcam/qcam src/apps/qcam/qcam.p/meson-generated_.._qt6-feathericons_qrc.cpp.o src/apps/qcam/qcam.p/meson-generated_.._qt6-shaders_qrc.cpp.o src/apps/qcam/qcam.p/meson-generated_moc_cam_select_dialog.cpp.o src/apps/qcam/qcam.p/meson-generated_moc_main_window.cpp.o src/apps/qcam/qcam.p/meson-generated_moc_viewfinder_gl.cpp.o src/apps/qcam/qcam.p/meson-generated_moc_viewfinder_qt.cpp.o src/apps/qcam/qcam.p/cam_select_dialog.cpp.o src/apps/qcam/qcam.p/format_converter.cpp.o src/apps/qcam/qcam.p/main.cpp.o src/apps/qcam/qcam.p/main_window.cpp.o src/apps/qcam/qcam.p/message_handler.cpp.o src/apps/qcam/qcam.p/viewfinder_gl.cpp.o src/apps/qcam/qcam.p/viewfinder_qt.cpp.o -Wl,--as-needed -Wl,--no-undefined -stdlib=libc++ -Wextra-semi -Wthread-safety -Wmissing-declarations -Wshadow -include /builds/camera/libcamera/build/config.h -Wno-c99-designator '-Wl,-rpath,$ORIGIN/../../libcamera:$ORIGIN/../../libcamera/base' -Wl,-rpath-link,/builds/camera/libcamera/build/src/libcamera -Wl,-rpath-link,/builds/camera/libcamera/build/src/libcamera/base -Wl,--start-group src/apps/common/libapps.a src/libcamera/libcamera.so.0.3.0 src/libcamera/base/libcamera-base.so.0.3.0 -latomic /usr/lib/x86_64-linux-gnu/libtiff.so /usr/lib/x86_64-linux-gnu/libQt6Core.so /usr/lib/x86_64-linux-gnu/libQt6Gui.so /usr/lib/x86_64-linux-gnu/libQt6OpenGL.so /usr/lib/x86_64-linux-gnu/libQt6OpenGLWidgets.so /usr/lib/x86_64-linux-gnu/libQt6Widgets.so -Wl,--end-group
> > > > /usr/bin/ld: src/apps/qcam/qcam.p/cam_select_dialog.cpp.o: in function `QString::toStdString() const':
> > > > /usr/include/x86_64-linux-gnu/qt6/QtCore/qstring.h:1477: undefined reference to `QByteArray::toStdString() const'
> > > > clang: error: linker command failed with exit code 1 (use -v to see invocation)
> > > >
> > > >
> > > > on the clang builds of debian-12 though gcc-12 builds fine there!
> > > >
> > > > digging ...
> > >
> > > I took Laurent's suggestion and disabled Qcam builds on debian-12 with
> > > clang.
> > >
> > > From the looks of this, the compilation of 'QByteArray::toStdString()
> > > const' in this specific version of qt6 on debian-12 ends up binary
> > > incompatible with the libstdc++ abi ... and thus fails to link.
> >
> > Did you mean libc++ ? libstdc++ is the library that comes with gcc. Does
> > Debian 12 compile packages with gcc + libc++ ?
> 
> It is fairly common to have clang built against and linked to
> libstdc++. That ensures that you can use clang for some things and gcc
> for other things and they can be combined into a single executable.

Yes, it's the other way around that would puzzle me. Kieran mention a
Debian Qt 6 package incompatible with the *libstdc++* ABI.

Patch
diff mbox series

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',
     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)