Bug 480662 - kdesrc-build prison fails because -fexceptions is disabled
Summary: kdesrc-build prison fails because -fexceptions is disabled
Status: RESOLVED FIXED
Alias: None
Product: frameworks-prison
Classification: Frameworks and Libraries
Component: general (show other bugs)
Version: 5.248.0
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: Sune Vuorela
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-02-01 08:38 UTC by Raphaël Jakse
Modified: 2024-02-01 21:22 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Raphaël Jakse 2024-02-01 08:38:28 UTC
I am trying to build prison on an updated openSUSE Tumbleweed using kdesrc-build prison. It fails with the following. Apparently, my version of g++ (g++ (SUSE Linux) 13.2.1 20240125 [revision fc7d87e0ffadca49bec29b2107c1efd0da6b6ded]) wants -fexceptions:

FAILED: src/scanner/CMakeFiles/KF6PrisonScanner.dir/videoscannerworker.cpp.o 
/usr/bin/c++ -DKF6PrisonScanner_EXPORTS -DPRISONSCANNER_DEPRECATED_WARNINGS_SINCE=0x0 -DPRISONSCANNER_DISABLE_DEPRECATED_BEFORE_AND_AT=0x0 -DQT_CORE_LIB -DQT_DEPRECATED_WARNINGS_SINCE=0x70000 -DQT_DISABLE_DEPRECATED_BEFORE=0x60500 -DQT_GUI_LIB -DQT_MULTIMEDIA_LIB -DQT_NETWORK_LIB -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_FROM_BYTEARRAY -DQT_NO_CAST_TO_ASCII -DQT_NO_DEBUG -DQT_NO_FOREACH -DQT_NO_KEYWORDS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_URL_CAST_FROM_STRING -DQT_STRICT_ITERATORS -DQT_USE_QSTRINGBUILDER -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -I/home/raph/kde/build/prison/src/scanner -I/home/raph/kde/src/prison/src/scanner -I/home/raph/kde/build/prison/src/scanner/KF6PrisonScanner_autogen/include -I/home/raph/kde/build/prison -isystem /usr/include/qt6/QtMultimedia -isystem /usr/include/qt6 -isystem /usr/include/qt6/QtCore -isystem /usr/lib64/qt6/mkspecs/linux-g++ -isystem /usr/include/qt6/QtGui -isystem /usr/include/qt6/QtNetwork -isystem /home/raph/kde/usr/include -pipe -fno-operator-names -fno-exceptions -Wall -Wextra -Wcast-align -Wchar-subscripts -Wformat-security -Wno-long-long -Wpointer-arith -Wundef -Wnon-virtual-dtor -Woverloaded-virtual -Werror=return-type -Werror=init-self -Werror=undef -Wvla -Wdate-time -Wsuggest-override -Wlogical-op -pedantic -Wzero-as-null-pointer-constant -Wmissing-include-dirs -fdiagnostics-color=always -O2 -g -DNDEBUG -std=c++20 -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -MD -MT src/scanner/CMakeFiles/KF6PrisonScanner.dir/videoscannerworker.cpp.o -MF src/scanner/CMakeFiles/KF6PrisonScanner.dir/videoscannerworker.cpp.o.d -o src/scanner/CMakeFiles/KF6PrisonScanner.dir/videoscannerworker.cpp.o -c /home/raph/kde/src/prison/src/scanner/videoscannerworker.cpp
In file included from /home/raph/kde/usr/include/ZXing/ReadBarcode.h:9,
                 from /home/raph/kde/src/prison/src/scanner/videoscannerworker.cpp:17:
/home/raph/kde/usr/include/ZXing/ImageView.h: In constructor ‘ZXing::ImageView::ImageView(const uint8_t*, int, int, ZXing::ImageFormat, int, int)’:
/home/raph/kde/usr/include/ZXing/ImageView.h:80:105: error: exception handling disabled, use ‘-fexceptions’ to enable
   80 |                         throw std::invalid_argument("Can not construct an ImageView from a NULL pointer");
      |                                                                                                         ^
/home/raph/kde/src/prison/src/scanner/videoscannerworker.cpp: In member function ‘void Prison::VideoScannerWorker::slotScanFrame(Prison::VideoScannerFrame)’:
/home/raph/kde/src/prison/src/scanner/videoscannerworker.cpp:35:24: warning: ‘using ZXing::DecodeHints = class ZXing::ReaderOptions’ is deprecated [-Wdeprecated-declarations]
   35 |     ZXing::DecodeHints hints;
      |                        ^~~~~
In file included from /home/raph/kde/usr/include/ZXing/ReadBarcode.h:8:
/home/raph/kde/usr/include/ZXing/ReaderOptions.h:176:7: note: declared here
  176 | using DecodeHints [[deprecated]] = ReaderOptions;
      |       ^~~~~~~~~~~
[33/84] Linking CXX shared module bin/org/kde/prison/libprisonquickplugin.so
[34/84] Building CXX object autotests/CMakeFiles/prison-aztecbarcodetest.dir/__/src/lib/aztecbarcode.cpp.o
In file included from /usr/include/c++/13/variant:44,
                 from /usr/include/qt6/QtCore/qtypeinfo.h:11,
                 from /usr/include/qt6/QtCore/qglobal.h:47,
                 from /home/raph/kde/src/prison/src/lib/barcode.h:13,
                 from /home/raph/kde/src/prison/src/lib/abstractbarcode_p.h:10,
                 from /home/raph/kde/src/prison/src/lib/aztecbarcode_p.h:10,
                 from /home/raph/kde/src/prison/src/lib/aztecbarcode.cpp:7:
In function ‘constexpr decltype (::new(void*(0)) _Tp) std::construct_at(_Tp*, _Args&& ...) [with _Tp = aztec_code_t; _Args = {aztec_code_t}]’,
    inlined from ‘static constexpr void std::allocator_traits<std::allocator<_Up> >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up = aztec_code_t; _Args = {aztec_code_t}; _Tp = aztec_code_t]’ at /usr/include/c++/13/bits/alloc_traits.h:540:21,
    inlined from ‘constexpr void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {aztec_code_t}; _Tp = aztec_code_t; _Alloc = std::allocator<aztec_code_t>]’ at /usr/include/c++/13/bits/vector.tcc:468:28,
    inlined from ‘constexpr std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {aztec_code_t}; _Tp = aztec_code_t; _Alloc = std::allocator<aztec_code_t>]’ at /usr/include/c++/13/bits/vector.tcc:123:21,
    inlined from ‘constexpr void std::vector<_Tp, _Alloc>::push_back(value_type&&) [with _Tp = aztec_code_t; _Alloc = std::allocator<aztec_code_t>]’ at /usr/include/c++/13/bits/stl_vector.h:1296:21,
    inlined from ‘Prison::BitVector Prison::AztecBarcode::aztecEncode(const QByteArray&) const’ at /home/raph/kde/src/prison/src/lib/aztecbarcode.cpp:415:28:
/usr/include/c++/13/bits/stl_construct.h:97:14: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=]
   97 |     { return ::new((void*)__location) _Tp(std::forward<_Args>(__args)...); }
      |              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/13/x86_64-suse-linux/bits/c++allocator.h:33,
                 from /usr/include/c++/13/bits/allocator.h:46,
                 from /usr/include/c++/13/memory:65,
                 from /home/raph/kde/src/prison/src/lib/barcode.h:15:
In member function ‘_Tp* std::__new_allocator<_Tp>::allocate(size_type, const void*) [with _Tp = aztec_code_t]’,
    inlined from ‘constexpr _Tp* std::allocator< <template-parameter-1-1> >::allocate(std::size_t) [with _Tp = aztec_code_t]’ at /usr/include/c++/13/bits/allocator.h:198:40,
    inlined from ‘static constexpr _Tp* std::allocator_traits<std::allocator<_Up> >::allocate(allocator_type&, size_type) [with _Tp = aztec_code_t]’ at /usr/include/c++/13/bits/alloc_traits.h:482:28,
    inlined from ‘constexpr std::_Vector_base<_Tp, _Alloc>::pointer std::_Vector_base<_Tp, _Alloc>::_M_allocate(std::size_t) [with _Tp = aztec_code_t; _Alloc = std::allocator<aztec_code_t>]’ at /usr/include/c++/13/bits/stl_vector.h:378:33,
    inlined from ‘constexpr std::_Vector_base<_Tp, _Alloc>::pointer std::_Vector_base<_Tp, _Alloc>::_M_allocate(std::size_t) [with _Tp = aztec_code_t; _Alloc = std::allocator<aztec_code_t>]’ at /usr/include/c++/13/bits/stl_vector.h:375:7,
    inlined from ‘constexpr void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {aztec_code_t}; _Tp = aztec_code_t; _Alloc = std::allocator<aztec_code_t>]’ at /usr/include/c++/13/bits/vector.tcc:459:44,
    inlined from ‘constexpr std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {aztec_code_t}; _Tp = aztec_code_t; _Alloc = std::allocator<aztec_code_t>]’ at /usr/include/c++/13/bits/vector.tcc:123:21,
    inlined from ‘constexpr void std::vector<_Tp, _Alloc>::push_back(value_type&&) [with _Tp = aztec_code_t; _Alloc = std::allocator<aztec_code_t>]’ at /usr/include/c++/13/bits/stl_vector.h:1296:21,
    inlined from ‘Prison::BitVector Prison::AztecBarcode::aztecEncode(const QByteArray&) const’ at /home/raph/kde/src/prison/src/lib/aztecbarcode.cpp:415:28:
/usr/include/c++/13/bits/new_allocator.h:151:55: note: at offset -2 into destination object of size 9223372036854775806 allocated by ‘operator new’
  151 |         return static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__n * sizeof(_Tp)));
      |                                                       ^
In function ‘constexpr decltype (::new(void*(0)) _Tp) std::construct_at(_Tp*, _Args&& ...) [with _Tp = aztec_code_t; _Args = {aztec_code_t}]’,
    inlined from ‘static constexpr void std::allocator_traits<std::allocator<_Up> >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up = aztec_code_t; _Args = {aztec_code_t}; _Tp = aztec_code_t]’ at /usr/include/c++/13/bits/alloc_traits.h:540:21,
    inlined from ‘constexpr void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {aztec_code_t}; _Tp = aztec_code_t; _Alloc = std::allocator<aztec_code_t>]’ at /usr/include/c++/13/bits/vector.tcc:468:28,
    inlined from ‘constexpr std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {aztec_code_t}; _Tp = aztec_code_t; _Alloc = std::allocator<aztec_code_t>]’ at /usr/include/c++/13/bits/vector.tcc:123:21,
    inlined from ‘constexpr void std::vector<_Tp, _Alloc>::push_back(value_type&&) [with _Tp = aztec_code_t; _Alloc = std::allocator<aztec_code_t>]’ at /usr/include/c++/13/bits/stl_vector.h:1296:21,
    inlined from ‘Prison::BitVector Prison::AztecBarcode::aztecEncode(const QByteArray&) const’ at /home/raph/kde/src/prison/src/lib/aztecbarcode.cpp:415:28:
/usr/include/c++/13/bits/stl_construct.h:97:14: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=]
   97 |     { return ::new((void*)__location) _Tp(std::forward<_Args>(__args)...); }
      |              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In member function ‘_Tp* std::__new_allocator<_Tp>::allocate(size_type, const void*) [with _Tp = aztec_code_t]’,
    inlined from ‘constexpr _Tp* std::allocator< <template-parameter-1-1> >::allocate(std::size_t) [with _Tp = aztec_code_t]’ at /usr/include/c++/13/bits/allocator.h:198:40,
    inlined from ‘static constexpr _Tp* std::allocator_traits<std::allocator<_Up> >::allocate(allocator_type&, size_type) [with _Tp = aztec_code_t]’ at /usr/include/c++/13/bits/alloc_traits.h:482:28,
    inlined from ‘constexpr std::_Vector_base<_Tp, _Alloc>::pointer std::_Vector_base<_Tp, _Alloc>::_M_allocate(std::size_t) [with _Tp = aztec_code_t; _Alloc = std::allocator<aztec_code_t>]’ at /usr/include/c++/13/bits/stl_vector.h:378:33,
    inlined from ‘constexpr std::_Vector_base<_Tp, _Alloc>::pointer std::_Vector_base<_Tp, _Alloc>::_M_allocate(std::size_t) [with _Tp = aztec_code_t; _Alloc = std::allocator<aztec_code_t>]’ at /usr/include/c++/13/bits/stl_vector.h:375:7,
    inlined from ‘constexpr void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {aztec_code_t}; _Tp = aztec_code_t; _Alloc = std::allocator<aztec_code_t>]’ at /usr/include/c++/13/bits/vector.tcc:459:44,
    inlined from ‘constexpr std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {aztec_code_t}; _Tp = aztec_code_t; _Alloc = std::allocator<aztec_code_t>]’ at /usr/include/c++/13/bits/vector.tcc:123:21,
    inlined from ‘constexpr void std::vector<_Tp, _Alloc>::push_back(value_type&&) [with _Tp = aztec_code_t; _Alloc = std::allocator<aztec_code_t>]’ at /usr/include/c++/13/bits/stl_vector.h:1296:21,
    inlined from ‘Prison::BitVector Prison::AztecBarcode::aztecEncode(const QByteArray&) const’ at /home/raph/kde/src/prison/src/lib/aztecbarcode.cpp:415:28:
/usr/include/c++/13/bits/new_allocator.h:151:55: note: at offset -1 into destination object of size 9223372036854775806 allocated by ‘operator new’
  151 |         return static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__n * sizeof(_Tp)));
      |                                                       ^
Comment 1 Sune Vuorela 2024-02-01 08:51:03 UTC
This is https://github.com/zxing-cpp/zxing-cpp/issues/708 - we need to figure out if we should fix it in prison, in zxing or both.
Comment 2 Bug Janitor Service 2024-02-01 15:48:01 UTC
A possibly relevant merge request was started @ https://invent.kde.org/sdk/kdesrc-build/-/merge_requests/364
Comment 3 Nate Graham 2024-02-01 15:53:43 UTC
Git commit a8f8d9a6ad804876aafc2f0b627163c5b1e30661 by Nate Graham, on behalf of Volker Krause.
Committed on 01/02/2024 at 15:53.
Pushed by ngraham into branch 'master'.

Don't build ZXing

That's a dependency that practically all distros have in a sufficiently
new version, and which doesn't depend on Qt, so there is no need to build
this yourself. Furthermore, building the master branch of that has caused
problems a few times as that can contain source incompatible changes our
code isn't prepared for yet.

M  +0    -8    data/build-include/custom-qt5-libs.ksb
M  +0    -8    data/build-include/custom-qt6-libs.ksb

https://invent.kde.org/sdk/kdesrc-build/-/commit/a8f8d9a6ad804876aafc2f0b627163c5b1e30661
Comment 4 Nicolas Fella 2024-02-01 21:22:29 UTC
Fixed with https://invent.kde.org/frameworks/prison/-/merge_requests/71