Skip to content

Unable to compile on Arch with GCC and Clang #106

@szymonj99

Description

@szymonj99

GCC

Running command:

meson setup build -Drequire-nvidia=true -Drequire-amd=false -Drequire-python-hwdata=true -Ddaemon=true -Dplugins=true --prefix=$(pwd)/inst -Dlibdir=lib

Then I do cd build, followed by ninja.

➜  tuxclocker git:(4c2ca06) gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/15.1.1/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /build/gcc/src/gcc/configure --enable-languages=ada,c,c++,d,fortran,go,lto,m2,objc,obj-c++,rust,cobol --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://gitlab.archlinux.org/archlinux/packaging/packages/gcc/-/issues --with-build-config=bootstrap-lto --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-libstdcxx-backtrace --enable-link-serialization=1 --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 15.1.1 20250425 (GCC)

ninja error:

/usr/include/c++/15.1.1/bits/stl_construct.h:208:51: error: static assertion failed: value type is destructible
  208 |       static_assert(is_destructible<_Value_type>::value,
      |                                                   ^~~~~
/usr/include/c++/15.1.1/bits/stl_construct.h:208:51: note: ‘std::integral_constant<bool, false>::value’ evaluates to false
/usr/include/c++/15.1.1/bits/stl_construct.h:210:22: error: invalid use of incomplete type ‘_Value_type’ {aka ‘class boost::shared_ptr<TuxClocker::Plugin::DevicePlugin>’}
  210 |       if constexpr (!__has_trivial_destructor(_Value_type))
      |                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/boost/exception/exception.hpp:17:44: note: declaration of ‘_Value_type’ {aka ‘class boost::shared_ptr<TuxClocker::Plugin::DevicePlugin>’}
   17 | namespace boost { template <class T> class shared_ptr; }
      |                                            ^~~~~~~~~~
/usr/include/c++/15.1.1/bits/stl_construct.h:211:37: error: cannot increment a pointer to incomplete type ‘boost::shared_ptr<TuxClocker::Plugin::DevicePlugin>’
  211 |         for (; __first != __last; ++__first)
      |                                     ^~~~~~~
/usr/include/c++/15.1.1/bits/new_allocator.h:165:13: error: invalid application of ‘__alignof__’ to incomplete type ‘boost::shared_ptr<TuxClocker::Plugin::DevicePlugin>’
  165 |         if (alignof(_Tp) > __STDCPP_DEFAULT_NEW_ALIGNMENT__)
      |             ^~~~~~~~~~~~
/usr/include/c++/15.1.1/bits/new_allocator.h:167:38: error: invalid application of ‘sizeof’ to incomplete type ‘boost::shared_ptr<TuxClocker::Plugin::DevicePlugin>’
  167 |             _GLIBCXX_OPERATOR_DELETE(_GLIBCXX_SIZED_DEALLOC(__p, __n),
      |                                      ^~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/15.1.1/bits/new_allocator.h:168:55: error: invalid application of ‘__alignof__’ to incomplete type ‘boost::shared_ptr<TuxClocker::Plugin::DevicePlugin>’
  168 |                                      std::align_val_t(alignof(_Tp)));
      |                                                       ^~~~~~~~~~~~
/usr/include/c++/15.1.1/bits/new_allocator.h:172:34: error: invalid application of ‘sizeof’ to incomplete type ‘boost::shared_ptr<TuxClocker::Plugin::DevicePlugin>’
  172 |         _GLIBCXX_OPERATOR_DELETE(_GLIBCXX_SIZED_DEALLOC(__p, __n));
      |                                  ^~~~~~~~~~~~~~~~~~~~~~

Clang++

Running command:

CXX=$(which clang++) meson setup build -Drequire-nvidia=true -Drequire-amd=false -Drequire-python-hwdata=true -Ddaemon=true -Dplugins=true --prefix=$(pwd)/inst -Dlibdir=lib
➜  build git:(4c2ca06) clang++ -v
clang version 19.1.7
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-pc-linux-gnu/13.3.1
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-pc-linux-gnu/14.2.1
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-pc-linux-gnu/15.1.1
Found candidate GCC installation: /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.3.1
Found candidate GCC installation: /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1
Found candidate GCC installation: /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/15.1.1
Selected GCC installation: /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/15.1.1
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Selected multilib: .;@m64

Errors

Then cd build and CXX=$(which clang++) ninja:

../src/plugins/CPU.cpp:705:46: error: non-constant-expression cannot be narrowed from type 'int' to 'uint' (aka 'unsigned int') in initializer list [-Wc++11-narrowing-const-reference]
  705 |                         auto e = Enumeration{fromSysFsName(word), enumId};
      |                                                                   ^~~~~~
../src/plugins/CPU.cpp:792:55: error: non-constant-expression cannot be narrowed from type 'int' to 'uint' (aka 'unsigned int') in initializer list [-Wc++11-narrowing-const-reference]
  792 |                         auto e = Enumeration{fromSysFsName(sysFsNames[i]), i};
      |                                                                            ^
../src/plugins/Nvidia.cpp:156:19: error: non-constant-expression cannot be narrowed from type 'int64_t' (aka 'long') to 'int' in initializer list [-Wc++11-narrowing-const-reference]
  156 |         Range<int> range{values.u.range.min / 2, values.u.range.max / 2};
      |                          ^~~~~~~~~~~~~~~~~~~~~~
../src/plugins/Nvidia.cpp:156:43: error: non-constant-expression cannot be narrowed from type 'int64_t' (aka 'long') to 'int' in initializer list [-Wc++11-narrowing-const-reference]
  156 |         Range<int> range{values.u.range.min / 2, values.u.range.max / 2};
      |                                                  ^~~~~~~~~~~~~~~~~~~~~~
../src/plugins/Nvidia.cpp:231:19: error: non-constant-expression cannot be narrowed from type 'int64_t' (aka 'long') to 'int' in initializer list [-Wc++11-narrowing-const-reference]
  231 |         Range<int> range{values.u.range.min, values.u.range.max};
      |                          ^~~~~~~~~~~~~~~~~~
../src/plugins/Nvidia.cpp:231:39: error: non-constant-expression cannot be narrowed from type 'int64_t' (aka 'long') to 'int' in initializer list [-Wc++11-narrowing-const-reference]
  231 |         Range<int> range{values.u.range.min, values.u.range.max};
      |                                              ^~~~~~~~~~~~~~~~~~
../src/plugins/Nvidia.cpp:780:19: error: non-constant-expression cannot be narrowed from type 'int64_t' (aka 'long') to 'int' in initializer list [-Wc++11-narrowing-const-reference]
  780 |         Range<int> range{values.u.range.min / 1000, values.u.range.max / 1000};
      |                          ^~~~~~~~~~~~~~~~~~~~~~~~~
../src/plugins/Nvidia.cpp:780:46: error: non-constant-expression cannot be narrowed from type 'int64_t' (aka 'long') to 'int' in initializer list [-Wc++11-narrowing-const-reference]
  780 |         Range<int> range{values.u.range.min / 1000, values.u.range.max / 1000};
      |                                                     ^~~~~~~~~~~~~~~~~~~~~~~~~

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions