On ARM systems, (armhf-linux, aarch64-linux), the catch2 package fails to build, due to a compilation warning treated as an error: [ 90%] Building CXX object CMakeFiles/SelfTest.dir/include/reporters/catch_reporter_xml.cpp.o /gnu/store/ap7hgyv4rjqmhg4a6cb6cypsh3g1f5q4-gcc-7.5.0/bin/c++ -I/tmp/guix-build-catch2-2.1.2.drv-0/source/include -O2 -g -DNDEBUG -Wall -Wextra -Wunreachable-code -Wpedantic -Werror -std=c++11 -o CMakeFiles/SelfTest.dir/include/reporters/catch_reporter_xml.cpp.o -c /tmp/guix-build-catch2-2.1.2.drv-0/source/include/reporters/catch_reporter_xml.cpp /tmp/guix-build-catch2-2.1.2.drv-0/source/include/internal/catch_tostring.cpp: In static member function ‘static std::__cxx11::string Catch::StringMaker<char>::convert(char)’: /tmp/guix-build-catch2-2.1.2.drv-0/source/include/internal/catch_tostring.cpp:202:21: error: comparison is always true due to limited range of data type [-Werror=type-limits] } else if ('\0' <= value && value < ' ') { ~~~~~^~~~~~~~
maxim.cournoyer@gmail.com writes:
> On ARM systems, (armhf-linux, aarch64-linux), the catch2 package fails to build, due to a
> compilation warning treated as an error:
>
> [ 90%] Building CXX object CMakeFiles/SelfTest.dir/include/reporters/catch_reporter_xml.cpp.o
> /gnu/store/ap7hgyv4rjqmhg4a6cb6cypsh3g1f5q4-gcc-7.5.0/bin/c++ -I/tmp/guix-build-catch2-2.1.2.drv-0/source/include -O2 -g -DNDEBUG -Wall -Wextra -Wunreachable-code -Wpedantic -Werror -std=c++11 -o CMakeFiles/SelfTest.dir/include/reporters/catch_reporter_xml.cpp.o -c /tmp/guix-build-catch2-2.1.2.drv-0/source/include/reporters/catch_reporter_xml.cpp
> /tmp/guix-build-catch2-2.1.2.drv-0/source/include/internal/catch_tostring.cpp: In static member function ‘static std::__cxx11::string Catch::StringMaker<char>::convert(char)’:
> /tmp/guix-build-catch2-2.1.2.drv-0/source/include/internal/catch_tostring.cpp:202:21: error: comparison is always true due to limited range of data type [-Werror=type-limits]
> } else if ('\0' <= value && value < ' ') {
> ~~~~~^~~~~~~~
This is also the case for i686-linux.
[-- Attachment #1: Type: text/plain, Size: 452 bytes --] Hi Maxim, On Mon, 03 Aug 2020 14:22:21 -0400 maxim.cournoyer@gmail.com wrote: > } else if ('\0' <= value && value < ' ') { > ~~~~~^~~~~~~~ I think that this tries to find non-printable characters, so those with ASCII codes 0 < value < 32 and 128 < value < 255. But char is unsigned on ARM, so it won't do that with the code above. Therefore, this IS an error and treating it as a warning would be very, very, bad. [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 488 bytes --]
[-- Attachment #1: Type: text/plain, Size: 1444 bytes --] On Mon, Aug 03, 2020 at 02:22:21PM -0400, maxim.cournoyer@gmail.com wrote: > On ARM systems, (armhf-linux, aarch64-linux), the catch2 package fails to build, due to a > compilation warning treated as an error: > > [ 90%] Building CXX object CMakeFiles/SelfTest.dir/include/reporters/catch_reporter_xml.cpp.o > /gnu/store/ap7hgyv4rjqmhg4a6cb6cypsh3g1f5q4-gcc-7.5.0/bin/c++ -I/tmp/guix-build-catch2-2.1.2.drv-0/source/include -O2 -g -DNDEBUG -Wall -Wextra -Wunreachable-code -Wpedantic -Werror -std=c++11 -o CMakeFiles/SelfTest.dir/include/reporters/catch_reporter_xml.cpp.o -c /tmp/guix-build-catch2-2.1.2.drv-0/source/include/reporters/catch_reporter_xml.cpp > /tmp/guix-build-catch2-2.1.2.drv-0/source/include/internal/catch_tostring.cpp: In static member function ‘static std::__cxx11::string Catch::StringMaker<char>::convert(char)’: > /tmp/guix-build-catch2-2.1.2.drv-0/source/include/internal/catch_tostring.cpp:202:21: error: comparison is always true due to limited range of data type [-Werror=type-limits] > } else if ('\0' <= value && value < ' ') { > ~~~~~^~~~~~~~ Fixed in 7f101e7ceb869882b9a959cb7801aea64c26704d Do note that this breaks libfive, which has no dependants. -- Efraim Flashner <efraim@flashner.co.il> אפרים פלשנר GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --]
Hello,
[...]
> From: Efraim Flashner <efraim@flashner.co.il>
> Subject: Re: bug#42702: catch2 build failure on ARM
> To: maxim.cournoyer@gmail.com
> Cc: 42702-done@debbugs.gnu.org
> Date: Tue, 4 Aug 2020 10:44:32 +0300 (2 weeks, 5 days, 19 hours ago)
>
> On Mon, Aug 03, 2020 at 02:22:21PM -0400, maxim.cournoyer@gmail.com wrote:
>> On ARM systems, (armhf-linux, aarch64-linux), the catch2 package fails to build, due to a
>> compilation warning treated as an error:
>>
>> [ 90%] Building CXX object CMakeFiles/SelfTest.dir/include/reporters/catch_reporter_xml.cpp.o
>> /gnu/store/ap7hgyv4rjqmhg4a6cb6cypsh3g1f5q4-gcc-7.5.0/bin/c++ -I/tmp/guix-build-catch2-2.1.2.drv-0/source/include -O2 -g -DNDEBUG -Wall -Wextra -Wunreachable-code -Wpedantic -Werror -std=c++11 -o CMakeFiles/SelfTest.dir/include/reporters/catch_reporter_xml.cpp.o -c /tmp/guix-build-catch2-2.1.2.drv-0/source/include/reporters/catch_reporter_xml.cpp
>> /tmp/guix-build-catch2-2.1.2.drv-0/source/include/internal/catch_tostring.cpp: In static member function ‘static std::__cxx11::string Catch::StringMaker<char>::convert(char)’:
>> /tmp/guix-build-catch2-2.1.2.drv-0/source/include/internal/catch_tostring.cpp:202:21: error: comparison is always true due to limited range of data type [-Werror=type-limits]
>> } else if ('\0' <= value && value < ' ') {
>> ~~~~~^~~~~~~~
>
> Fixed in 7f101e7ceb869882b9a959cb7801aea64c26704d
>
> Do note that this breaks libfive, which has no dependants.
Thank you for fixing it! :-)
Maxim
[-- Attachment #1: Type: text/plain, Size: 236 bytes --] Closing this bug :) -- Efraim Flashner <efraim@flashner.co.il> אפרים פלשנר GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --]