Skip to content

Installation issue: qt@5 ^icu4u@75: requires cxxstd=17 #3283

@Chrismarsh

Description

@Chrismarsh

Steps to reproduce the issue

$ spack spec -I qt@5 ^icu4u@75:

doesn't build as cxxstd=14 is being used by moc (?), as auto used in this template location is a C++17 features
https://en.cppreference.com/w/cpp/language/template_parameters.html#Constant_template_parameter

I am using gcc@14 which should default to c++17, but looking through the log shows a bunch of c++1y being invoked, so moc must be be using an older standard. I'm not super familiar with qt to know where exactly

Error message

In file included from /spack/opt/linux-icelake/icu4c-76.1-ory254wyuu2esx3wgnbp5vmxk23o7wai/include/unicode/ubidi.h:26,
                 from platform/default/bidi.cpp:4:
/spack/opt/linux-icelake/icu4c-76.1-ory254wyuu2esx3wgnbp5vmxk23o7wai/include/unicode/localpointer.h:561:26: error: 'auto' parameter not permitted in this context
  561 | template <typename Type, auto closeFunction>
      |                          ^~~~
/spack/opt/linux-icelake/icu4c-76.1-ory254wyuu2esx3wgnbp5vmxk23o7wai/include/unicode/localpointer.h:573:76: error: template argument 2 is invalid
  573 |     explicit LocalOpenPointer(std::unique_ptr<Type, decltype(closeFunction)> &&p)
      |                                                                            ^
/spack/opt/linux-icelake/icu4c-76.1-ory254wyuu2esx3wgnbp5vmxk23o7wai/include/unicode/localpointer.h:583:78: error: template argument 2 is invalid
  583 |     LocalOpenPointer &operator=(std::unique_ptr<Type, decltype(closeFunction)> &&p) {
      |                                                                              ^
/spack/opt/linux-icelake/icu4c-76.1-ory254wyuu2esx3wgnbp5vmxk23o7wai/include/unicode/localpointer.h:599:59: error: template argument 2 is invalid
  599 |     operator std::unique_ptr<Type, decltype(closeFunction)> () && {
      |                                                           ^
/spack/opt/linux-icelake/icu4c-76.1-ory254wyuu2esx3wgnbp5vmxk23o7wai/include/unicode/localpointer.h:551:81: note: invalid template non-type parameter
  551 |     using LocalPointerClassName = internal::LocalOpenPointer<Type, closeFunction>
      |                                                                                 ^
/spack/opt/linux-icelake/icu4c-76.1-ory254wyuu2esx3wgnbp5vmxk23o7wai/include/unicode/ubidi.h:579:1: note: in expansion of macro 'U_DEFINE_LOCAL_OPEN_POINTER'
  579 | U_DEFINE_LOCAL_OPEN_POINTER(LocalUBiDiPointer, UBiDi, ubidi_close);
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~

Information on your system

spack debug report
* **Spack:** 1.2.0.dev0 (https://github.com/spack/spack/commit/3ba5b7658b21b265a4973788bc16266471a7aa93)
* **Builtin repo:** https://github.com/spack/spack-packages/commit/2bd9d1fea9ad61845cd3533acca60c4764431e02
* **Python:** 3.6.8
* **Platform:** linux-rhel8-icelake

Additional information

icu4c@75: requires cxxstd=17 to compile, 9b61cbe. However, there is no cxxstd propagation to qt, resulting in qt using a mismatched cxxstd to compile newer icu4c.

Given the complexity of qt , I am not sure what the repercussions of adding cxxstd variants to qt are. Or what is the most spack-way to model this correctly.

Hit list of recent contributors:
@AlexanderRichert-NOAA @johnwparent @adamjstewart @wdconinc @haampie

General information

  • I have run spack debug report and reported the version of Spack/Python/Platform
  • I have run spack maintainers <name-of-the-package> and @mentioned any maintainers
  • I have uploaded the build log and environment files
  • I have searched the issues of this repo and believe this is not a duplicate

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions