[libcamera-ci] WIP: Drop support for Debian 11
diff mbox series

Message ID 20260611160354.1900259-1-laurent.pinchart@ideasonboard.com
State New
Headers show
Series
  • [libcamera-ci] WIP: Drop support for Debian 11
Related show

Commit Message

Laurent Pinchart June 11, 2026, 4:03 p.m. UTC
Debian 11 (Bullseye) will reach end of LTS life on 2026-08-31. Drop it
from the CI.

The main effect is dropping compilation testing on gcc 9 and 10. gcc
10.1 has been released 6 years ago, and the last minor release (10.5) 3
years ago. It is not shipped as the default compiler by any LTS of the
major distributions we support.

gcc 11, on the other hand, is the default compiler on Ubuntu 22.04 LTS,
supported until May 2027. Add it to the Debian 12 builds to ensure
coverage of the whole range of compilers that libcamera supports.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
I'm sending this patch for early review, my plan is to delay merging it
until end of August when LTS support for Bullseye ends.
---
 .gitlab-ci/setup-container.sh | 44 ++++-------------------------------
 gitlab-ci.yml                 | 29 +++--------------------
 2 files changed, 7 insertions(+), 66 deletions(-)


base-commit: fc3798d77d07ae71c6d0e9b6c6957694a8170cd3

Comments

Barnabás Pőcze June 15, 2026, 8:50 a.m. UTC | #1
2026. 06. 11. 18:03 keltezéssel, Laurent Pinchart írta:
> Debian 11 (Bullseye) will reach end of LTS life on 2026-08-31. Drop it
> from the CI.
> 
> The main effect is dropping compilation testing on gcc 9 and 10. gcc
> 10.1 has been released 6 years ago, and the last minor release (10.5) 3
> years ago. It is not shipped as the default compiler by any LTS of the
> major distributions we support.
> 
> gcc 11, on the other hand, is the default compiler on Ubuntu 22.04 LTS,
> supported until May 2027. Add it to the Debian 12 builds to ensure
> coverage of the whole range of compilers that libcamera supports.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> ---
> I'm sending this patch for early review, my plan is to delay merging it
> until end of August when LTS support for Bullseye ends.

I'd be happy if this could be merged as soon as possible.


> ---
>   .gitlab-ci/setup-container.sh | 44 ++++-------------------------------
>   gitlab-ci.yml                 | 29 +++--------------------
>   2 files changed, 7 insertions(+), 66 deletions(-)
> 
> diff --git a/.gitlab-ci/setup-container.sh b/.gitlab-ci/setup-container.sh
> index 6c4b439b887b..bb00895c1888 100755
> --- a/.gitlab-ci/setup-container.sh
> +++ b/.gitlab-ci/setup-container.sh
> @@ -67,6 +67,7 @@ PKGS_LIBCAMERA_RUNTIME_MULTIARCH=(
>   	libudev-dev
>   	libunwind-dev
>   	libyaml-dev
> +	libyuv-dev
>   	lttng-tools
>   	nlohmann-json3-dev
>   	qt6-base-dev
> @@ -109,15 +110,11 @@ declare -A components
>   
>   # Install additional packages on a per distribution version basis.
>   case $FDO_DISTRIBUTION_VERSION in
> -'bullseye')
> -	# gcc 9 to expand compilation testing coverage.
> -	PKGS_LIBCAMERA_RUNTIME+=( g++-9 )
> -	;;
>   'bookworm')
> +	# gcc 11 to expand compilation testing coverage.
> +	PKGS_LIBCAMERA_RUNTIME+=( g++-11 )
>   	# libclang-rt-dev for the clang ASan runtime.
>   	PKGS_LIBCAMERA_RUNTIME_MULTIARCH+=( libclang-rt-dev )
> -	# For the Android camera HAL and the virtual pipeline handler.
> -	PKGS_LIBCAMERA_RUNTIME_MULTIARCH+=( libyuv-dev )
>   	;;
>   'trixie')
>   	# gcc 13 to expand compilation testing coverage.
> @@ -138,8 +135,6 @@ case $FDO_DISTRIBUTION_VERSION in
>   	PKGS_LIBCAMERA_RUNTIME+=( clang-format jq python3-autopep8 reuse shellcheck )
>   	# libclang-rt-dev for the clang ASan runtime.
>   	PKGS_LIBCAMERA_RUNTIME_MULTIARCH+=( libclang-rt-19-dev )
> -	# For the Android camera HAL and the virtual pipeline handler.
> -	PKGS_LIBCAMERA_RUNTIME_MULTIARCH+=( libyuv-dev )
>   	# For lc-compliance in the `test-lc-compliance:virtual` job
>   	# libevent-dev cannot be used here, see build-libcamera-common.sh
>   	PKGS_LIBCAMERA_RUNTIME_MULTIARCH+=( libevent-2.1-7t64 libevent-pthreads-2.1-7t64 )
> @@ -170,14 +165,6 @@ cbuild_install_pkgs() {
>   
>   	local arch
>   
> -	# The qt6-tools-dev-tools package is only available for bullseye in the
> -	# backports repository. Enable backports only for that version.
> -	if [[ $FDO_DISTRIBUTION_VERSION == 'bullseye' ]] ; then
> -		echo "deb http://archive.debian.org/debian bullseye-backports main" \
> -		       > /etc/apt/sources.list.d/bullseye-backports.list
> -		apt update
> -	fi
> -
>   	apt install -y ${pkgs_cbuild[@]}
>   	apt-mark auto ${pkgs_cbuild[@]}
>   
> @@ -220,13 +207,8 @@ dpkg_check_version() {
>   cbuild_fixups() {
>   	echo "Applying miscellaneous fixups"
>   
> -	local pip3_options
>   	local pkg
>   
> -	if [[ $FDO_DISTRIBUTION_VERSION != 'bullseye' ]] ; then
> -		pip3_options=--break-system-packages
> -	fi
> -
>   	# Install packages from pip to ensure minimum versions.
>   	for pkg in "${PKGS_PIP_MIN_VERSIONS[@]}" ; do
>   		pkg=($pkg)
> @@ -254,27 +236,9 @@ cbuild_fixups() {
>   			fi
>   
>   			apt install -y python3-pip
> -			pip3 install ${pip3_options} ${pip_name}==${min_version}
> +			pip3 install --break-system-packages ${pip_name}==${min_version}
>   		fi
>   	done
> -
> -	# Create pybind11.pc manually if not provided by the distribution
> -	# package.
> -	if [[ ! -f /usr/share/pkgconfig/pybind11.pc ]] ; then
> -		echo "pybind11-dev package not providing pybind11.pc, creating file manually"
> -
> -		version=$(dpkg_version pybind11-dev)
> -
> -		cat <<EOF > /usr/share/pkgconfig/pybind11.pc
> -prefix=/usr
> -includedir=\${prefix}/include
> -
> -Name: pybind11
> -Description: Seamless operability between C++11 and Python
> -Version: ${version}
> -Cflags: -I\${includedir}
> -EOF
> -	fi
>   }
>   
>   cbuild_cleanup_pkgs() {
> diff --git a/gitlab-ci.yml b/gitlab-ci.yml
> index 427f2d2516dc..d01ee87d3325 100644
> --- a/gitlab-ci.yml
> +++ b/gitlab-ci.yml
> @@ -62,11 +62,6 @@ include:
>       ref: *templates_sha
>       file: '/templates/debian.yml'
>   
> -.libcamera-ci.debian:11:
> -  variables:
> -    FDO_DISTRIBUTION_VERSION: 'bullseye'
> -    FDO_DISTRIBUTION_TAG: '2026-04-05.0'
> -
>   .libcamera-ci.debian:12:
>     variables:
>       FDO_DISTRIBUTION_VERSION: 'bookworm'

`FDO_DISTRIBUTION_TAG` needs an update here.


> @@ -92,11 +87,6 @@ include:
>         fi ;
>         .gitlab-ci/setup-container.sh
>   
> -container-debian:11:
> -  extends:
> -    - .container-debian
> -    - .libcamera-ci.debian:11
> -
>   container-debian:12:
>     extends:
>       - .container-debian
> @@ -152,22 +142,6 @@ container-debian:13:
>       BUILD_TYPE: debug
>       MESON_OPTIONS: ${MESON_ALL_OPTIONS}
>   
> -build-full:debian:11:
> -  extends:
> -    - .libcamera-ci.debian:11
> -    - .build-full:debian
> -  needs:
> -    - job: container-debian:11
> -      artifacts: false
> -  parallel:
> -    matrix:
> -      - ARCH: amd64
> -        CC: gcc-9
> -        CXX: g++-9
> -      - ARCH: amd64
> -        CC: gcc-10
> -        CXX: g++-10
> -
>   build-full:debian:12:
>     extends:
>       - .libcamera-ci.debian:12
> @@ -180,6 +154,9 @@ build-full:debian:12:
>         ${MESON_ALL_OPTIONS}
>     parallel:
>       matrix:
> +      - ARCH: amd64
> +        CC: gcc-11
> +        CXX: g++-11
>         - ARCH: amd64
>           CC: gcc-12
>           CXX: g++-12
> 
> base-commit: fc3798d77d07ae71c6d0e9b6c6957694a8170cd3
Laurent Pinchart June 15, 2026, 8:57 a.m. UTC | #2
On Mon, Jun 15, 2026 at 10:50:06AM +0200, Barnabás Pőcze wrote:
> 2026. 06. 11. 18:03 keltezéssel, Laurent Pinchart írta:
> > Debian 11 (Bullseye) will reach end of LTS life on 2026-08-31. Drop it
> > from the CI.
> > 
> > The main effect is dropping compilation testing on gcc 9 and 10. gcc
> > 10.1 has been released 6 years ago, and the last minor release (10.5) 3
> > years ago. It is not shipped as the default compiler by any LTS of the
> > major distributions we support.
> > 
> > gcc 11, on the other hand, is the default compiler on Ubuntu 22.04 LTS,
> > supported until May 2027. Add it to the Debian 12 builds to ensure
> > coverage of the whole range of compilers that libcamera supports.
> > 
> > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > ---
> > I'm sending this patch for early review, my plan is to delay merging it
> > until end of August when LTS support for Bullseye ends.
> 
> I'd be happy if this could be merged as soon as possible.

I've already been tempted a few times to merge this already, and drop
support for gcc 9 and 10.

> > ---
> >   .gitlab-ci/setup-container.sh | 44 ++++-------------------------------
> >   gitlab-ci.yml                 | 29 +++--------------------
> >   2 files changed, 7 insertions(+), 66 deletions(-)
> > 
> > diff --git a/.gitlab-ci/setup-container.sh b/.gitlab-ci/setup-container.sh
> > index 6c4b439b887b..bb00895c1888 100755
> > --- a/.gitlab-ci/setup-container.sh
> > +++ b/.gitlab-ci/setup-container.sh
> > @@ -67,6 +67,7 @@ PKGS_LIBCAMERA_RUNTIME_MULTIARCH=(
> >   	libudev-dev
> >   	libunwind-dev
> >   	libyaml-dev
> > +	libyuv-dev
> >   	lttng-tools
> >   	nlohmann-json3-dev
> >   	qt6-base-dev
> > @@ -109,15 +110,11 @@ declare -A components
> >   
> >   # Install additional packages on a per distribution version basis.
> >   case $FDO_DISTRIBUTION_VERSION in
> > -'bullseye')
> > -	# gcc 9 to expand compilation testing coverage.
> > -	PKGS_LIBCAMERA_RUNTIME+=( g++-9 )
> > -	;;
> >   'bookworm')
> > +	# gcc 11 to expand compilation testing coverage.
> > +	PKGS_LIBCAMERA_RUNTIME+=( g++-11 )
> >   	# libclang-rt-dev for the clang ASan runtime.
> >   	PKGS_LIBCAMERA_RUNTIME_MULTIARCH+=( libclang-rt-dev )
> > -	# For the Android camera HAL and the virtual pipeline handler.
> > -	PKGS_LIBCAMERA_RUNTIME_MULTIARCH+=( libyuv-dev )
> >   	;;
> >   'trixie')
> >   	# gcc 13 to expand compilation testing coverage.
> > @@ -138,8 +135,6 @@ case $FDO_DISTRIBUTION_VERSION in
> >   	PKGS_LIBCAMERA_RUNTIME+=( clang-format jq python3-autopep8 reuse shellcheck )
> >   	# libclang-rt-dev for the clang ASan runtime.
> >   	PKGS_LIBCAMERA_RUNTIME_MULTIARCH+=( libclang-rt-19-dev )
> > -	# For the Android camera HAL and the virtual pipeline handler.
> > -	PKGS_LIBCAMERA_RUNTIME_MULTIARCH+=( libyuv-dev )
> >   	# For lc-compliance in the `test-lc-compliance:virtual` job
> >   	# libevent-dev cannot be used here, see build-libcamera-common.sh
> >   	PKGS_LIBCAMERA_RUNTIME_MULTIARCH+=( libevent-2.1-7t64 libevent-pthreads-2.1-7t64 )
> > @@ -170,14 +165,6 @@ cbuild_install_pkgs() {
> >   
> >   	local arch
> >   
> > -	# The qt6-tools-dev-tools package is only available for bullseye in the
> > -	# backports repository. Enable backports only for that version.
> > -	if [[ $FDO_DISTRIBUTION_VERSION == 'bullseye' ]] ; then
> > -		echo "deb http://archive.debian.org/debian bullseye-backports main" \
> > -		       > /etc/apt/sources.list.d/bullseye-backports.list
> > -		apt update
> > -	fi
> > -
> >   	apt install -y ${pkgs_cbuild[@]}
> >   	apt-mark auto ${pkgs_cbuild[@]}
> >   
> > @@ -220,13 +207,8 @@ dpkg_check_version() {
> >   cbuild_fixups() {
> >   	echo "Applying miscellaneous fixups"
> >   
> > -	local pip3_options
> >   	local pkg
> >   
> > -	if [[ $FDO_DISTRIBUTION_VERSION != 'bullseye' ]] ; then
> > -		pip3_options=--break-system-packages
> > -	fi
> > -
> >   	# Install packages from pip to ensure minimum versions.
> >   	for pkg in "${PKGS_PIP_MIN_VERSIONS[@]}" ; do
> >   		pkg=($pkg)
> > @@ -254,27 +236,9 @@ cbuild_fixups() {
> >   			fi
> >   
> >   			apt install -y python3-pip
> > -			pip3 install ${pip3_options} ${pip_name}==${min_version}
> > +			pip3 install --break-system-packages ${pip_name}==${min_version}
> >   		fi
> >   	done
> > -
> > -	# Create pybind11.pc manually if not provided by the distribution
> > -	# package.
> > -	if [[ ! -f /usr/share/pkgconfig/pybind11.pc ]] ; then
> > -		echo "pybind11-dev package not providing pybind11.pc, creating file manually"
> > -
> > -		version=$(dpkg_version pybind11-dev)
> > -
> > -		cat <<EOF > /usr/share/pkgconfig/pybind11.pc
> > -prefix=/usr
> > -includedir=\${prefix}/include
> > -
> > -Name: pybind11
> > -Description: Seamless operability between C++11 and Python
> > -Version: ${version}
> > -Cflags: -I\${includedir}
> > -EOF
> > -	fi
> >   }
> >   
> >   cbuild_cleanup_pkgs() {
> > diff --git a/gitlab-ci.yml b/gitlab-ci.yml
> > index 427f2d2516dc..d01ee87d3325 100644
> > --- a/gitlab-ci.yml
> > +++ b/gitlab-ci.yml
> > @@ -62,11 +62,6 @@ include:
> >       ref: *templates_sha
> >       file: '/templates/debian.yml'
> >   
> > -.libcamera-ci.debian:11:
> > -  variables:
> > -    FDO_DISTRIBUTION_VERSION: 'bullseye'
> > -    FDO_DISTRIBUTION_TAG: '2026-04-05.0'
> > -
> >   .libcamera-ci.debian:12:
> >     variables:
> >       FDO_DISTRIBUTION_VERSION: 'bookworm'
> 
> `FDO_DISTRIBUTION_TAG` needs an update here.

Oops. I'll also bump the tag for the Trixie container, just to be on the
safe side.

> > @@ -92,11 +87,6 @@ include:
> >         fi ;
> >         .gitlab-ci/setup-container.sh
> >   
> > -container-debian:11:
> > -  extends:
> > -    - .container-debian
> > -    - .libcamera-ci.debian:11
> > -
> >   container-debian:12:
> >     extends:
> >       - .container-debian
> > @@ -152,22 +142,6 @@ container-debian:13:
> >       BUILD_TYPE: debug
> >       MESON_OPTIONS: ${MESON_ALL_OPTIONS}
> >   
> > -build-full:debian:11:
> > -  extends:
> > -    - .libcamera-ci.debian:11
> > -    - .build-full:debian
> > -  needs:
> > -    - job: container-debian:11
> > -      artifacts: false
> > -  parallel:
> > -    matrix:
> > -      - ARCH: amd64
> > -        CC: gcc-9
> > -        CXX: g++-9
> > -      - ARCH: amd64
> > -        CC: gcc-10
> > -        CXX: g++-10
> > -
> >   build-full:debian:12:
> >     extends:
> >       - .libcamera-ci.debian:12
> > @@ -180,6 +154,9 @@ build-full:debian:12:
> >         ${MESON_ALL_OPTIONS}
> >     parallel:
> >       matrix:
> > +      - ARCH: amd64
> > +        CC: gcc-11
> > +        CXX: g++-11
> >         - ARCH: amd64
> >           CC: gcc-12
> >           CXX: g++-12
> > 
> > base-commit: fc3798d77d07ae71c6d0e9b6c6957694a8170cd3
Kieran Bingham June 15, 2026, 9:38 a.m. UTC | #3
Quoting Laurent Pinchart (2026-06-15 09:57:39)
> On Mon, Jun 15, 2026 at 10:50:06AM +0200, Barnabás Pőcze wrote:
> > 2026. 06. 11. 18:03 keltezéssel, Laurent Pinchart írta:
> > > Debian 11 (Bullseye) will reach end of LTS life on 2026-08-31. Drop it
> > > from the CI.
> > > 
> > > The main effect is dropping compilation testing on gcc 9 and 10. gcc
> > > 10.1 has been released 6 years ago, and the last minor release (10.5) 3
> > > years ago. It is not shipped as the default compiler by any LTS of the
> > > major distributions we support.
> > > 
> > > gcc 11, on the other hand, is the default compiler on Ubuntu 22.04 LTS,
> > > supported until May 2027. Add it to the Debian 12 builds to ensure
> > > coverage of the whole range of compilers that libcamera supports.
> > > 
> > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > ---
> > > I'm sending this patch for early review, my plan is to delay merging it
> > > until end of August when LTS support for Bullseye ends.
> > 
> > I'd be happy if this could be merged as soon as possible.
> 
> I've already been tempted a few times to merge this already, and drop
> support for gcc 9 and 10.

Then lets do it.?

There's no way we expect Bullseye to get updated to the latest
libcamera anyway... and maybe there's no specific benefit waiting to
August ?


--
Kieran
Laurent Pinchart June 15, 2026, 12:44 p.m. UTC | #4
On Mon, Jun 15, 2026 at 10:38:56AM +0100, Kieran Bingham wrote:
> Quoting Laurent Pinchart (2026-06-15 09:57:39)
> > On Mon, Jun 15, 2026 at 10:50:06AM +0200, Barnabás Pőcze wrote:
> > > 2026. 06. 11. 18:03 keltezéssel, Laurent Pinchart írta:
> > > > Debian 11 (Bullseye) will reach end of LTS life on 2026-08-31. Drop it
> > > > from the CI.
> > > > 
> > > > The main effect is dropping compilation testing on gcc 9 and 10. gcc
> > > > 10.1 has been released 6 years ago, and the last minor release (10.5) 3
> > > > years ago. It is not shipped as the default compiler by any LTS of the
> > > > major distributions we support.
> > > > 
> > > > gcc 11, on the other hand, is the default compiler on Ubuntu 22.04 LTS,
> > > > supported until May 2027. Add it to the Debian 12 builds to ensure
> > > > coverage of the whole range of compilers that libcamera supports.
> > > > 
> > > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > > ---
> > > > I'm sending this patch for early review, my plan is to delay merging it
> > > > until end of August when LTS support for Bullseye ends.
> > > 
> > > I'd be happy if this could be merged as soon as possible.
> > 
> > I've already been tempted a few times to merge this already, and drop
> > support for gcc 9 and 10.
> 
> Then lets do it.?
> 
> There's no way we expect Bullseye to get updated to the latest
> libcamera anyway... and maybe there's no specific benefit waiting to
> August ?

We have some form of semi-official policy that we support the current
and previous LTS versions of major distributions, and do our best to
also support older LTS versions that haven't reached EOL.

The oldest Debian LTS is Bullseye, with an EOL planned for end of August
2026. It ships gcc 10 by default and also includes gcc 9. gcc 9 is a bit
annoying to support as it has required quite a few workarounds, but it's
not (in my opinion) a major pain, more of an itch that I'd be happy to
get rid of.

We could merge this patch right away, but we'll then have to answer the
question of what "best effort" means. Should we drop support for
anything but the current and previous LTS versions ?

Note that the oldest Ubuntu LTS is 22.04, with a scheduled EOL at end
of May 2027. I don't think we should keep running Debian Bullseye in CI
until then to keep testing on gcc 9 and 10.
Barnabás Pőcze June 15, 2026, 2:45 p.m. UTC | #5
2026. 06. 15. 14:44 keltezéssel, Laurent Pinchart írta:
> On Mon, Jun 15, 2026 at 10:38:56AM +0100, Kieran Bingham wrote:
>> Quoting Laurent Pinchart (2026-06-15 09:57:39)
>>> On Mon, Jun 15, 2026 at 10:50:06AM +0200, Barnabás Pőcze wrote:
>>>> 2026. 06. 11. 18:03 keltezéssel, Laurent Pinchart írta:
>>>>> Debian 11 (Bullseye) will reach end of LTS life on 2026-08-31. Drop it
>>>>> from the CI.
>>>>>
>>>>> The main effect is dropping compilation testing on gcc 9 and 10. gcc
>>>>> 10.1 has been released 6 years ago, and the last minor release (10.5) 3
>>>>> years ago. It is not shipped as the default compiler by any LTS of the
>>>>> major distributions we support.
>>>>>
>>>>> gcc 11, on the other hand, is the default compiler on Ubuntu 22.04 LTS,
>>>>> supported until May 2027. Add it to the Debian 12 builds to ensure
>>>>> coverage of the whole range of compilers that libcamera supports.
>>>>>
>>>>> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
>>>>> ---
>>>>> I'm sending this patch for early review, my plan is to delay merging it
>>>>> until end of August when LTS support for Bullseye ends.
>>>>
>>>> I'd be happy if this could be merged as soon as possible.
>>>
>>> I've already been tempted a few times to merge this already, and drop
>>> support for gcc 9 and 10.
>>
>> Then lets do it.?
>>
>> There's no way we expect Bullseye to get updated to the latest
>> libcamera anyway... and maybe there's no specific benefit waiting to
>> August ?
> 
> We have some form of semi-official policy that we support the current
> and previous LTS versions of major distributions, and do our best to
> also support older LTS versions that haven't reached EOL.
> 
> The oldest Debian LTS is Bullseye, with an EOL planned for end of August
> 2026. It ships gcc 10 by default and also includes gcc 9. gcc 9 is a bit
> annoying to support as it has required quite a few workarounds, but it's
> not (in my opinion) a major pain, more of an itch that I'd be happy to
> get rid of.
> 
> We could merge this patch right away, but we'll then have to answer the
> question of what "best effort" means. Should we drop support for
> anything but the current and previous LTS versions ?

Given that there was a switch to C++20, I think it makes sense to do a larger
"reset" of supported versions. C++20 support in GCC 9 is very limited, and most
of it needs `-fconcepts`, so I would like to drop it as soon as possible.
GCC 10 is better, but going to GCC 11 looks even better.

I think "best effort" could mean that it will be dropped when it causes any
inconvenience for the development process (e.g. having workarounds just for
that version, etc.).


> 
> Note that the oldest Ubuntu LTS is 22.04, with a scheduled EOL at end
> of May 2027. I don't think we should keep running Debian Bullseye in CI
> until then to keep testing on gcc 9 and 10.
> 
> --
> Regards,
> 
> Laurent Pinchart
Laurent Pinchart June 15, 2026, 3:11 p.m. UTC | #6
On Mon, Jun 15, 2026 at 04:45:07PM +0200, Barnabás Pőcze wrote:
> 2026. 06. 15. 14:44 keltezéssel, Laurent Pinchart írta:
> > On Mon, Jun 15, 2026 at 10:38:56AM +0100, Kieran Bingham wrote:
> >> Quoting Laurent Pinchart (2026-06-15 09:57:39)
> >>> On Mon, Jun 15, 2026 at 10:50:06AM +0200, Barnabás Pőcze wrote:
> >>>> 2026. 06. 11. 18:03 keltezéssel, Laurent Pinchart írta:
> >>>>> Debian 11 (Bullseye) will reach end of LTS life on 2026-08-31. Drop it
> >>>>> from the CI.
> >>>>>
> >>>>> The main effect is dropping compilation testing on gcc 9 and 10. gcc
> >>>>> 10.1 has been released 6 years ago, and the last minor release (10.5) 3
> >>>>> years ago. It is not shipped as the default compiler by any LTS of the
> >>>>> major distributions we support.
> >>>>>
> >>>>> gcc 11, on the other hand, is the default compiler on Ubuntu 22.04 LTS,
> >>>>> supported until May 2027. Add it to the Debian 12 builds to ensure
> >>>>> coverage of the whole range of compilers that libcamera supports.
> >>>>>
> >>>>> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> >>>>> ---
> >>>>> I'm sending this patch for early review, my plan is to delay merging it
> >>>>> until end of August when LTS support for Bullseye ends.
> >>>>
> >>>> I'd be happy if this could be merged as soon as possible.
> >>>
> >>> I've already been tempted a few times to merge this already, and drop
> >>> support for gcc 9 and 10.
> >>
> >> Then lets do it.?
> >>
> >> There's no way we expect Bullseye to get updated to the latest
> >> libcamera anyway... and maybe there's no specific benefit waiting to
> >> August ?
> > 
> > We have some form of semi-official policy that we support the current
> > and previous LTS versions of major distributions, and do our best to
> > also support older LTS versions that haven't reached EOL.
> > 
> > The oldest Debian LTS is Bullseye, with an EOL planned for end of August
> > 2026. It ships gcc 10 by default and also includes gcc 9. gcc 9 is a bit
> > annoying to support as it has required quite a few workarounds, but it's
> > not (in my opinion) a major pain, more of an itch that I'd be happy to
> > get rid of.
> > 
> > We could merge this patch right away, but we'll then have to answer the
> > question of what "best effort" means. Should we drop support for
> > anything but the current and previous LTS versions ?
> 
> Given that there was a switch to C++20, I think it makes sense to do a larger
> "reset" of supported versions. C++20 support in GCC 9 is very limited, and most
> of it needs `-fconcepts`, so I would like to drop it as soon as possible.
> GCC 10 is better, but going to GCC 11 looks even better.
> 
> I think "best effort" could mean that it will be dropped when it causes any
> inconvenience for the development process (e.g. having workarounds just for
> that version, etc.).

I'm fine with that. The question is if keeping gcc 9 (and 10) support
until end of August is an important inconvenience. I'm happy to let
people who suffer from it more than I do make a decision here :-)

> > Note that the oldest Ubuntu LTS is 22.04, with a scheduled EOL at end
> > of May 2027. I don't think we should keep running Debian Bullseye in CI
> > until then to keep testing on gcc 9 and 10.
Paul Elder June 19, 2026, 9:34 a.m. UTC | #7
Quoting Laurent Pinchart (2026-06-16 00:11:30)
> On Mon, Jun 15, 2026 at 04:45:07PM +0200, Barnabás Pőcze wrote:
> > 2026. 06. 15. 14:44 keltezéssel, Laurent Pinchart írta:
> > > On Mon, Jun 15, 2026 at 10:38:56AM +0100, Kieran Bingham wrote:
> > >> Quoting Laurent Pinchart (2026-06-15 09:57:39)
> > >>> On Mon, Jun 15, 2026 at 10:50:06AM +0200, Barnabás Pőcze wrote:
> > >>>> 2026. 06. 11. 18:03 keltezéssel, Laurent Pinchart írta:
> > >>>>> Debian 11 (Bullseye) will reach end of LTS life on 2026-08-31. Drop it
> > >>>>> from the CI.
> > >>>>>
> > >>>>> The main effect is dropping compilation testing on gcc 9 and 10. gcc
> > >>>>> 10.1 has been released 6 years ago, and the last minor release (10.5) 3
> > >>>>> years ago. It is not shipped as the default compiler by any LTS of the
> > >>>>> major distributions we support.
> > >>>>>
> > >>>>> gcc 11, on the other hand, is the default compiler on Ubuntu 22.04 LTS,
> > >>>>> supported until May 2027. Add it to the Debian 12 builds to ensure
> > >>>>> coverage of the whole range of compilers that libcamera supports.
> > >>>>>
> > >>>>> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > >>>>> ---
> > >>>>> I'm sending this patch for early review, my plan is to delay merging it
> > >>>>> until end of August when LTS support for Bullseye ends.
> > >>>>
> > >>>> I'd be happy if this could be merged as soon as possible.
> > >>>
> > >>> I've already been tempted a few times to merge this already, and drop
> > >>> support for gcc 9 and 10.
> > >>
> > >> Then lets do it.?
> > >>
> > >> There's no way we expect Bullseye to get updated to the latest
> > >> libcamera anyway... and maybe there's no specific benefit waiting to
> > >> August ?
> > > 
> > > We have some form of semi-official policy that we support the current
> > > and previous LTS versions of major distributions, and do our best to
> > > also support older LTS versions that haven't reached EOL.
> > > 
> > > The oldest Debian LTS is Bullseye, with an EOL planned for end of August
> > > 2026. It ships gcc 10 by default and also includes gcc 9. gcc 9 is a bit
> > > annoying to support as it has required quite a few workarounds, but it's
> > > not (in my opinion) a major pain, more of an itch that I'd be happy to
> > > get rid of.
> > > 
> > > We could merge this patch right away, but we'll then have to answer the
> > > question of what "best effort" means. Should we drop support for
> > > anything but the current and previous LTS versions ?
> > 
> > Given that there was a switch to C++20, I think it makes sense to do a larger
> > "reset" of supported versions. C++20 support in GCC 9 is very limited, and most
> > of it needs `-fconcepts`, so I would like to drop it as soon as possible.
> > GCC 10 is better, but going to GCC 11 looks even better.
> > 
> > I think "best effort" could mean that it will be dropped when it causes any
> > inconvenience for the development process (e.g. having workarounds just for
> > that version, etc.).
> 
> I'm fine with that. The question is if keeping gcc 9 (and 10) support
> until end of August is an important inconvenience. I'm happy to let
> people who suffer from it more than I do make a decision here :-)

My opinion is that two months probably doesn't make too much of a difference.
As in, the set of people that would complain "today" is probably a complete
subset of the set of people that would complain in two months. Anybody in a
critical situation would've upgraded already anyway, probably.


Paul

> 
> > > Note that the oldest Ubuntu LTS is 22.04, with a scheduled EOL at end
> > > of May 2027. I don't think we should keep running Debian Bullseye in CI
> > > until then to keep testing on gcc 9 and 10.
> 
> -- 
> Regards,
> 
> Laurent Pinchart

Patch
diff mbox series

diff --git a/.gitlab-ci/setup-container.sh b/.gitlab-ci/setup-container.sh
index 6c4b439b887b..bb00895c1888 100755
--- a/.gitlab-ci/setup-container.sh
+++ b/.gitlab-ci/setup-container.sh
@@ -67,6 +67,7 @@  PKGS_LIBCAMERA_RUNTIME_MULTIARCH=(
 	libudev-dev
 	libunwind-dev
 	libyaml-dev
+	libyuv-dev
 	lttng-tools
 	nlohmann-json3-dev
 	qt6-base-dev
@@ -109,15 +110,11 @@  declare -A components
 
 # Install additional packages on a per distribution version basis.
 case $FDO_DISTRIBUTION_VERSION in
-'bullseye')
-	# gcc 9 to expand compilation testing coverage.
-	PKGS_LIBCAMERA_RUNTIME+=( g++-9 )
-	;;
 'bookworm')
+	# gcc 11 to expand compilation testing coverage.
+	PKGS_LIBCAMERA_RUNTIME+=( g++-11 )
 	# libclang-rt-dev for the clang ASan runtime.
 	PKGS_LIBCAMERA_RUNTIME_MULTIARCH+=( libclang-rt-dev )
-	# For the Android camera HAL and the virtual pipeline handler.
-	PKGS_LIBCAMERA_RUNTIME_MULTIARCH+=( libyuv-dev )
 	;;
 'trixie')
 	# gcc 13 to expand compilation testing coverage.
@@ -138,8 +135,6 @@  case $FDO_DISTRIBUTION_VERSION in
 	PKGS_LIBCAMERA_RUNTIME+=( clang-format jq python3-autopep8 reuse shellcheck )
 	# libclang-rt-dev for the clang ASan runtime.
 	PKGS_LIBCAMERA_RUNTIME_MULTIARCH+=( libclang-rt-19-dev )
-	# For the Android camera HAL and the virtual pipeline handler.
-	PKGS_LIBCAMERA_RUNTIME_MULTIARCH+=( libyuv-dev )
 	# For lc-compliance in the `test-lc-compliance:virtual` job
 	# libevent-dev cannot be used here, see build-libcamera-common.sh
 	PKGS_LIBCAMERA_RUNTIME_MULTIARCH+=( libevent-2.1-7t64 libevent-pthreads-2.1-7t64 )
@@ -170,14 +165,6 @@  cbuild_install_pkgs() {
 
 	local arch
 
-	# The qt6-tools-dev-tools package is only available for bullseye in the
-	# backports repository. Enable backports only for that version.
-	if [[ $FDO_DISTRIBUTION_VERSION == 'bullseye' ]] ; then
-		echo "deb http://archive.debian.org/debian bullseye-backports main" \
-		       > /etc/apt/sources.list.d/bullseye-backports.list
-		apt update
-	fi
-
 	apt install -y ${pkgs_cbuild[@]}
 	apt-mark auto ${pkgs_cbuild[@]}
 
@@ -220,13 +207,8 @@  dpkg_check_version() {
 cbuild_fixups() {
 	echo "Applying miscellaneous fixups"
 
-	local pip3_options
 	local pkg
 
-	if [[ $FDO_DISTRIBUTION_VERSION != 'bullseye' ]] ; then
-		pip3_options=--break-system-packages
-	fi
-
 	# Install packages from pip to ensure minimum versions.
 	for pkg in "${PKGS_PIP_MIN_VERSIONS[@]}" ; do
 		pkg=($pkg)
@@ -254,27 +236,9 @@  cbuild_fixups() {
 			fi
 
 			apt install -y python3-pip
-			pip3 install ${pip3_options} ${pip_name}==${min_version}
+			pip3 install --break-system-packages ${pip_name}==${min_version}
 		fi
 	done
-
-	# Create pybind11.pc manually if not provided by the distribution
-	# package.
-	if [[ ! -f /usr/share/pkgconfig/pybind11.pc ]] ; then
-		echo "pybind11-dev package not providing pybind11.pc, creating file manually"
-
-		version=$(dpkg_version pybind11-dev)
-
-		cat <<EOF > /usr/share/pkgconfig/pybind11.pc
-prefix=/usr
-includedir=\${prefix}/include
-
-Name: pybind11
-Description: Seamless operability between C++11 and Python
-Version: ${version}
-Cflags: -I\${includedir}
-EOF
-	fi
 }
 
 cbuild_cleanup_pkgs() {
diff --git a/gitlab-ci.yml b/gitlab-ci.yml
index 427f2d2516dc..d01ee87d3325 100644
--- a/gitlab-ci.yml
+++ b/gitlab-ci.yml
@@ -62,11 +62,6 @@  include:
     ref: *templates_sha
     file: '/templates/debian.yml'
 
-.libcamera-ci.debian:11:
-  variables:
-    FDO_DISTRIBUTION_VERSION: 'bullseye'
-    FDO_DISTRIBUTION_TAG: '2026-04-05.0'
-
 .libcamera-ci.debian:12:
   variables:
     FDO_DISTRIBUTION_VERSION: 'bookworm'
@@ -92,11 +87,6 @@  include:
       fi ;
       .gitlab-ci/setup-container.sh
 
-container-debian:11:
-  extends:
-    - .container-debian
-    - .libcamera-ci.debian:11
-
 container-debian:12:
   extends:
     - .container-debian
@@ -152,22 +142,6 @@  container-debian:13:
     BUILD_TYPE: debug
     MESON_OPTIONS: ${MESON_ALL_OPTIONS}
 
-build-full:debian:11:
-  extends:
-    - .libcamera-ci.debian:11
-    - .build-full:debian
-  needs:
-    - job: container-debian:11
-      artifacts: false
-  parallel:
-    matrix:
-      - ARCH: amd64
-        CC: gcc-9
-        CXX: g++-9
-      - ARCH: amd64
-        CC: gcc-10
-        CXX: g++-10
-
 build-full:debian:12:
   extends:
     - .libcamera-ci.debian:12
@@ -180,6 +154,9 @@  build-full:debian:12:
       ${MESON_ALL_OPTIONS}
   parallel:
     matrix:
+      - ARCH: amd64
+        CC: gcc-11
+        CXX: g++-11
       - ARCH: amd64
         CC: gcc-12
         CXX: g++-12