koolkdev / wfs-tools

WFS (WiiU File System) Tools
MIT License
55 stars 5 forks source link

Build fails on debian 12 on aarch64 and intel x86_64 #18

Closed danielhoherd closed 7 months ago

danielhoherd commented 9 months ago

I first got this error on a raspberry pi debian 12. I tried building on an intel i7 with debian 12 and got the same error.

Build error

dho@pi4b:~/code/wfs-tools $ cmake --build --preset release
[22/23] Building CXX object wfs-info/CMakeFiles/wfs-info.dir/Release/src/main.cpp.o
FAILED: wfs-info/CMakeFiles/wfs-info.dir/Release/src/main.cpp.o
/usr/bin/c++ -DCMAKE_INTDIR=\"Release\" -I/home/dho/code/wfs-tools/wfslib/include -I/home/dho/code/wfs-tools/wfslib/src -I/home/dho/code/wfs-tools/wfslib/include/wfslib -isystem /home/dho/code/wfs-tools/build/default/vcpkg_installed/arm64-linux/include -O3 -DNDEBUG -Wall -Wextra -Wpedantic -Werror -std=gnu++20 -MD -MT wfs-info/CMakeFiles/wfs-info.dir/Release/src/main.cpp.o -MF wfs-info/CMakeFiles/wfs-info.dir/Release/src/main.cpp.o.d -o wfs-info/CMakeFiles/wfs-info.dir/Release/src/main.cpp.o -c /home/dho/code/wfs-tools/wfs-info/src/main.cpp
In file included from /usr/include/c++/12/string:40,
                 from /usr/include/c++/12/bits/locale_classes.h:40,
                 from /usr/include/c++/12/locale:39,
                 from /home/dho/code/wfs-tools/build/default/vcpkg_installed/arm64-linux/include/boost/algorithm/string/case_conv.hpp:16,
                 from /home/dho/code/wfs-tools/wfs-info/src/main.cpp:8:
In static member function ‘static constexpr std::char_traits<char>::char_type* std::char_traits<char>::copy(char_type*, const char_type*, std::size_t)’,
    inlined from ‘static constexpr void std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::_S_copy(_CharT*, const _CharT*, size_type) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12/bits/basic_string.h:423:21,
    inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Allocator>& std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::_M_replace(size_type, size_type, const _CharT*, size_type) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12/bits/basic_string.tcc:532:22,
    inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Alloc>& std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::replace(size_type, size_type, const _CharT*, size_type) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12/bits/basic_string.h:2171:19,
    inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Alloc>& std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::insert(size_type, const _CharT*) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12/bits/basic_string.h:1928:22,
    inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Allocator> std::operator+(const _CharT*, __cxx11::basic_string<_CharT, _Traits, _Allocator>&&) [with _CharT = char; _Traits = char_traits<char>; _Alloc = allocator<char>]’ at /usr/include/c++/12/bits/basic_string.h:3541:36,
    inlined from ‘std::string pretify_path(const std::filesystem::__cxx11::path&)’ at /home/dho/code/wfs-tools/wfs-info/src/main.cpp:22:36:
/usr/include/c++/12/bits/char_traits.h:431:56: error: ‘void* __builtin_memcpy(void*, const void*, long unsigned int)’ accessing 9223372036854775810 or more bytes at offsets [2, 9223372036854775807] and 1 may overlap up to 9223372036854775813 bytes at offset -3 [-Werror=restrict]
  431 |         return static_cast<char_type*>(__builtin_memcpy(__s1, __s2, __n));
      |                                        ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
cc1plus: all warnings being treated as errors
ninja: build stopped: subcommand failed.

Rasbperry Pi environment info

$ uname -a
Linux pi4b 6.1.0-rpi4-rpi-v8 #1 SMP PREEMPT Debian 1:6.1.54-1+rpt2 (2023-10-05) aarch64 GNU/Linux
$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
$ dpkg -l git g++ cmake ninja-build pkg-config libfuse-dev
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name              Version      Architecture Description
+++-=================-============-============-==================================================================
ii  cmake             3.25.1-1     arm64        cross-platform, open-source make system
ii  g++               4:12.2.0-3   arm64        GNU C++ compiler
ii  git               1:2.39.2-1.1 arm64        fast, scalable, distributed revision control system
ii  libfuse-dev:arm64 2.9.9-6+b1   arm64        Filesystem in Userspace (development)
ii  ninja-build       1.11.1-1     arm64        small build system closest in spirit to Make
ii  pkg-config:arm64  1.8.1-1      arm64        manage compile and link flags for libraries (transitional package)

Intel i7 environment info

$ uname -a
Linux litten 6.1.0-13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.55-1 (2023-09-29) x86_64 GNU/Linux
$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
$ dpkg -l git g++ cmake ninja-build pkg-config libfuse-dev zip
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name              Version      Architecture Description
+++-=================-============-============-==================================================================
ii  cmake             3.25.1-1     amd64        cross-platform, open-source make system
ii  g++               4:12.2.0-3   amd64        GNU C++ compiler
ii  git               1:2.39.2-1.1 amd64        fast, scalable, distributed revision control system
ii  libfuse-dev:amd64 2.9.9-6+b1   amd64        Filesystem in Userspace (development)
ii  ninja-build       1.11.1-1     amd64        small build system closest in spirit to Make
ii  pkg-config:amd64  1.8.1-1      amd64        manage compile and link flags for libraries (transitional package)
ii  zip               3.0-13       amd64        Archiver for .zip files

Git version info

$ git rev-parse HEAD
17ddd3abf9102ab9b85062ff113c736449ab8192
$ git submodule status
 9edb1b8e590cc086563301d735cae4b6e732d2d2 vcpkg (2022.02.02-4363-g9edb1b8e5)
 fa95ad9cd0cfa1783a6d0111d09d0b43a3b80dcb wfslib (v1.0-9-gfa95ad9)
koolkdev commented 7 months ago

Seems to be a gcc bug? https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105651 Maybe a newer 12.3.0 include this fix, or use you can use gcc 13.2 or llvm instead.