diff mbox series

support/dependencies: requires cmake >= 3.19

Message ID 20230527211144.2136991-1-romain.naour@gmail.com
State Superseded
Headers show
Series support/dependencies: requires cmake >= 3.19 | expand

Commit Message

Romain Naour May 27, 2023, 9:11 p.m. UTC
libjxl requires cmake 3.19 since version v0.7 due to the
new behavior of cmake [1].

-- Configuring done
CMake Error at cmake/FindLCMS2.cmake:40 (add_library):
  INTERFACE_LIBRARY targets may only have whitelisted properties.  The
  property "INCLUDE_DIRECTORIES" is not allowed.
Call Stack (most recent call first):
  third_party/CMakeLists.txt:114 (find_package)

The portability issue has already been reported upstream [2].

Fixes:
https://gitlab.com/buildroot.org/buildroot/-/jobs/4322819095

[1] https://gitlab.kitware.com/cmake/cmake/-/commit/afb998704e67d3d3ce5b24c112cb06e770fca78d
[2] https://github.com/libjxl/libjxl/issues/1425

Signed-off-by: Romain Naour <romain.naour@gmail.com>
Cc: Julien Olivain <ju.o@free.fr>
---
This will increase the build time in gitlab-ci since
our docker image provide cmake 3.18.
---
 support/dependencies/check-host-cmake.mk | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Peter Korsgaard May 28, 2023, 6:34 p.m. UTC | #1
>>>>> "Romain" == Romain Naour <romain.naour@gmail.com> writes:

 > libjxl requires cmake 3.19 since version v0.7 due to the
 > new behavior of cmake [1].

 > -- Configuring done
 > CMake Error at cmake/FindLCMS2.cmake:40 (add_library):
 >   INTERFACE_LIBRARY targets may only have whitelisted properties.  The
 >   property "INCLUDE_DIRECTORIES" is not allowed.
 > Call Stack (most recent call first):
 >   third_party/CMakeLists.txt:114 (find_package)

 > The portability issue has already been reported upstream [2].

 > Fixes:
 > https://gitlab.com/buildroot.org/buildroot/-/jobs/4322819095

 > [1] https://gitlab.kitware.com/cmake/cmake/-/commit/afb998704e67d3d3ce5b24c112cb06e770fca78d
 > [2] https://github.com/libjxl/libjxl/issues/1425

 > Signed-off-by: Romain Naour <romain.naour@gmail.com>
 > Cc: Julien Olivain <ju.o@free.fr>
 > ---
 > This will increase the build time in gitlab-ci since
 > our docker image provide cmake 3.18.

Not only that, also users on E.G. Debian stable. Libjxl was added back
in November, so we will also need to backport this to 2023.02.x :/

Do we have any alternatives?
Romain Naour May 31, 2023, 4:21 p.m. UTC | #2
Hello Peter,

Le 28/05/2023 à 20:34, Peter Korsgaard a écrit :
>>>>>> "Romain" == Romain Naour <romain.naour@gmail.com> writes:
> 
>  > libjxl requires cmake 3.19 since version v0.7 due to the
>  > new behavior of cmake [1].
> 
>  > -- Configuring done
>  > CMake Error at cmake/FindLCMS2.cmake:40 (add_library):
>  >   INTERFACE_LIBRARY targets may only have whitelisted properties.  The
>  >   property "INCLUDE_DIRECTORIES" is not allowed.
>  > Call Stack (most recent call first):
>  >   third_party/CMakeLists.txt:114 (find_package)
> 
>  > The portability issue has already been reported upstream [2].
> 
>  > Fixes:
>  > https://gitlab.com/buildroot.org/buildroot/-/jobs/4322819095
> 
>  > [1] https://gitlab.kitware.com/cmake/cmake/-/commit/afb998704e67d3d3ce5b24c112cb06e770fca78d
>  > [2] https://github.com/libjxl/libjxl/issues/1425
> 
>  > Signed-off-by: Romain Naour <romain.naour@gmail.com>
>  > Cc: Julien Olivain <ju.o@free.fr>
>  > ---
>  > This will increase the build time in gitlab-ci since
>  > our docker image provide cmake 3.18.
> 
> Not only that, also users on E.G. Debian stable. Libjxl was added back
> in November, so we will also need to backport this to 2023.02.x :/
> 
> Do we have any alternatives?
> 

Maybe we have to change the rule to update the cmake minimum version.

We updated the cmake minimum when at least one package required a new cmake version:

https://gitlab.com/buildroot.org/buildroot/-/commit/ee860ce3dc3dada4ee4af41dd0d0eee7c0489a28

https://gitlab.com/buildroot.org/buildroot/-/commit/3ab8aefa87f9e6bc451e98b89d63d018fac603df

In support/dependencies/check-host-cmake.mk we can do something like
(simple but not great...):

ifeq ($(BR2_PACKAGE_LIBJXL),y)
BR2_CMAKE_VERSION_MIN = 3.19
else
BR2_CMAKE_VERSION_MIN = 3.18
endif

or add a new Kconfig BR2_HOST_CMAKE_AT_LEAST_3.19 and make BR2_CMAKE_VERSION_MIN
configurable (not great either).

Best regards,
Romain
Arnout Vandecappelle June 3, 2023, 7:11 p.m. UTC | #3
On 31/05/2023 18:21, Romain Naour wrote:
> Hello Peter,
> 
> Le 28/05/2023 à 20:34, Peter Korsgaard a écrit :
>>>>>>> "Romain" == Romain Naour <romain.naour@gmail.com> writes:
>>
>>   > libjxl requires cmake 3.19 since version v0.7 due to the
>>   > new behavior of cmake [1].
>>
>>   > -- Configuring done
>>   > CMake Error at cmake/FindLCMS2.cmake:40 (add_library):
>>   >   INTERFACE_LIBRARY targets may only have whitelisted properties.  The
>>   >   property "INCLUDE_DIRECTORIES" is not allowed.
>>   > Call Stack (most recent call first):
>>   >   third_party/CMakeLists.txt:114 (find_package)
>>
>>   > The portability issue has already been reported upstream [2].
>>
>>   > Fixes:
>>   > https://gitlab.com/buildroot.org/buildroot/-/jobs/4322819095
>>
>>   > [1] https://gitlab.kitware.com/cmake/cmake/-/commit/afb998704e67d3d3ce5b24c112cb06e770fca78d
>>   > [2] https://github.com/libjxl/libjxl/issues/1425
>>
>>   > Signed-off-by: Romain Naour <romain.naour@gmail.com>
>>   > Cc: Julien Olivain <ju.o@free.fr>
>>   > ---
>>   > This will increase the build time in gitlab-ci since
>>   > our docker image provide cmake 3.18.

  We could get cmake 3.25 from bullseye-backports.


>> Not only that, also users on E.G. Debian stable. Libjxl was added back
>> in November, so we will also need to backport this to 2023.02.x :/
>>
>> Do we have any alternatives?
>>
> 
> Maybe we have to change the rule to update the cmake minimum version.
> 
> We updated the cmake minimum when at least one package required a new cmake version:
> 
> https://gitlab.com/buildroot.org/buildroot/-/commit/ee860ce3dc3dada4ee4af41dd0d0eee7c0489a28
> 
> https://gitlab.com/buildroot.org/buildroot/-/commit/3ab8aefa87f9e6bc451e98b89d63d018fac603df
> 
> In support/dependencies/check-host-cmake.mk we can do something like
> (simple but not great...):
> 
> ifeq ($(BR2_PACKAGE_LIBJXL),y)
> BR2_CMAKE_VERSION_MIN = 3.19
> else
> BR2_CMAKE_VERSION_MIN = 3.18
> endif
> 
> or add a new Kconfig BR2_HOST_CMAKE_AT_LEAST_3.19 and make BR2_CMAKE_VERSION_MIN
> configurable (not great either).

  I honestly think that such an option wouldn't be a bad idea. It would allow us 
to lower the absolute minimum version again (at least a bit, based on the last 
update or two).

  Regards,
  Arnout

> 
> Best regards,
> Romain
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
diff mbox series

Patch

diff --git a/support/dependencies/check-host-cmake.mk b/support/dependencies/check-host-cmake.mk
index 5760e4ded1..516f55908e 100644
--- a/support/dependencies/check-host-cmake.mk
+++ b/support/dependencies/check-host-cmake.mk
@@ -1,9 +1,9 @@ 
-# Set this to either 3.18 or higher, depending on the highest minimum
+# Set this to either 3.19 or higher, depending on the highest minimum
 # version required by any of the packages bundled in Buildroot. If a
 # package is bumped or a new one added, and it requires a higher
 # version, our cmake infra will catch it and build its own.
 #
-BR2_CMAKE_VERSION_MIN = 3.18
+BR2_CMAKE_VERSION_MIN = 3.19
 
 BR2_CMAKE_CANDIDATES ?= cmake cmake3
 BR2_CMAKE ?= $(call suitable-host-package,cmake,\