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

Message ID 20240121224052.1049989-2-neal@gompa.dev
State New
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
> >
>

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)