Build failures on all architectures other than x86_64 and i686
Cross-platform DICOM implementation
Brought to you by:
malat
Hello,
I was updating the Fedora package to 3.0.1, but the builds fail on all architectures other than x86_64 and i686:
This is the URL of the failed build: https://koji.fedoraproject.org/koji/taskinfo?taskID=37508546
The error appears to be common to all of these architectures:
CMakeFiles/gdcmCommonTests.dir/TestString2.cxx.o -c /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx
make[2]: Leaving directory '/builddir/build/BUILD/GDCM-3.0.1/ppc64le-redhat-linux-gnu'
BUILDSTDERR: /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx: In function 'int TestString2(int, char**)':
BUILDSTDERR: /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx:29:24: error: narrowing conversion of '-1' from 'int' to 'char' [-Wnarrowing]
BUILDSTDERR: 29 | gdcm::String<EOF,64,0> s3 = "coucou";
BUILDSTDERR: | ^
BUILDSTDERR: /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx:29:31: error: invalid conversion from 'const char*' to 'int' [-fpermissive]
BUILDSTDERR: 29 | gdcm::String<EOF,64,0> s3 = "coucou";
BUILDSTDERR: | ^~~~~~~~
BUILDSTDERR: | |
BUILDSTDERR: | const char*
BUILDSTDERR: /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx:30:19: error: request for member 'c_str' in 's3', which is of non-class type 'int'
BUILDSTDERR: 30 | std::cout << s3.c_str() << " -> " << s3.size() << std::endl;
BUILDSTDERR: | ^~~~~
BUILDSTDERR: /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx:30:43: error: request for member 'size' in 's3', which is of non-class type 'int'
BUILDSTDERR: 30 | std::cout << s3.c_str() << " -> " << s3.size() << std::endl;
BUILDSTDERR: | ^~~~
BUILDSTDERR: /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx:32:24: error: narrowing conversion of '-1' from 'int' to 'char' [-Wnarrowing]
BUILDSTDERR: 32 | gdcm::String<EOF,64,0> s4 = "coucou!";
BUILDSTDERR: | ^
BUILDSTDERR: /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx:32:31: error: invalid conversion from 'const char*' to 'int' [-fpermissive]
BUILDSTDERR: 32 | gdcm::String<EOF,64,0> s4 = "coucou!";
BUILDSTDERR: | ^~~~~~~~~
BUILDSTDERR: | |
BUILDSTDERR: | const char*
BUILDSTDERR: /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx:33:19: error: request for member 'c_str' in 's4', which is of non-class type 'int'
BUILDSTDERR: 33 | std::cout << s4.c_str() << " -> " << s4.size() << std::endl;
BUILDSTDERR: | ^~~~~
BUILDSTDERR: /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx:33:43: error: request for member 'size' in 's4', which is of non-class type 'int'
BUILDSTDERR: 33 | std::cout << s4.c_str() << " -> " << s4.size() << std::endl;
BUILDSTDERR: | ^~~~
BUILDSTDERR: /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx:36:24: error: narrowing conversion of '-1' from 'int' to 'char' [-Wnarrowing]
BUILDSTDERR: 36 | gdcm::String<EOF,64,0> s5( s, strlen(s) );
BUILDSTDERR: | ^
BUILDSTDERR: /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx:36:43: error: expression list treated as compound expression in initializer [-fpermissive]
BUILDSTDERR: 36 | gdcm::String<EOF,64,0> s5( s, strlen(s) );
BUILDSTDERR: | ^
BUILDSTDERR: /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx:36:30: warning: left operand of comma operator has no effect [-Wunused-value]
BUILDSTDERR: 36 | gdcm::String<EOF,64,0> s5( s, strlen(s) );
BUILDSTDERR: | ^
BUILDSTDERR: /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx:37:19: error: request for member 'c_str' in 's5', which is of non-class type 'int'
BUILDSTDERR: 37 | std::cout << s5.c_str() << " -> " << s5.size() << std::endl;
BUILDSTDERR: | ^~~~~
BUILDSTDERR: /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx:37:43: error: request for member 'size' in 's5', which is of non-class type 'int'
BUILDSTDERR: 37 | std::cout << s5.c_str() << " -> " << s5.size() << std::endl;
BUILDSTDERR: | ^~~~
BUILDSTDERR: /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx:40:24: error: narrowing conversion of '-1' from 'int' to 'char' [-Wnarrowing]
BUILDSTDERR: 40 | gdcm::String<EOF,64,0> s6( ss );
BUILDSTDERR: | ^
BUILDSTDERR: /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx:40:30: error: cannot convert 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'int' in initialization
BUILDSTDERR: 40 | gdcm::String<EOF,64,0> s6( ss );
BUILDSTDERR: | ^~
BUILDSTDERR: | |
BUILDSTDERR: | std::string {aka std::__cxx11::basic_string<char>}
BUILDSTDERR: /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx:41:19: error: request for member 'c_str' in 's6', which is of non-class type 'int'
BUILDSTDERR: 41 | std::cout << s6.c_str() << " -> " << s6.size() << std::endl;
BUILDSTDERR: | ^~~~~
BUILDSTDERR: /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx:41:43: error: request for member 'size' in 's6', which is of non-class type 'int'
BUILDSTDERR: 41 | std::cout << s6.c_str() << " -> " << s6.size() << std::endl;
BUILDSTDERR: | ^~~~
BUILDSTDERR: /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx:43:24: error: narrowing conversion of '-1' from 'int' to 'char' [-Wnarrowing]
BUILDSTDERR: 43 | gdcm::String<EOF,64,0> s7( ss, 1, 5 );
BUILDSTDERR: | ^
BUILDSTDERR: /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx:43:39: error: expression list treated as compound expression in initializer [-fpermissive]
BUILDSTDERR: 43 | gdcm::String<EOF,64,0> s7( ss, 1, 5 );
BUILDSTDERR: | ^
BUILDSTDERR: /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx:43:30: warning: left operand of comma operator has no effect [-Wunused-value]
BUILDSTDERR: 43 | gdcm::String<EOF,64,0> s7( ss, 1, 5 );
BUILDSTDERR: | ^~
BUILDSTDERR: /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx:43:39: warning: right operand of comma operator has no effect [-Wunused-value]
BUILDSTDERR: 43 | gdcm::String<EOF,64,0> s7( ss, 1, 5 );
BUILDSTDERR: | ^
BUILDSTDERR: /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx:44:19: error: request for member 'c_str' in 's7', which is of non-class type 'int'
BUILDSTDERR: 44 | std::cout << s7.c_str() << " -> " << s7.size() << std::endl;
BUILDSTDERR: | ^~~~~
BUILDSTDERR: /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx:44:43: error: request for member 'size' in 's7', which is of non-class type 'int'
BUILDSTDERR: 44 | std::cout << s7.c_str() << " -> " << s7.size() << std::endl;
BUILDSTDERR: | ^~~~
BUILDSTDERR: /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx:46:24: error: narrowing conversion of '-1' from 'int' to 'char' [-Wnarrowing]
BUILDSTDERR: 46 | gdcm::String<EOF,64,0> s8( ss, 1, 6 );
BUILDSTDERR: | ^
BUILDSTDERR: /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx:46:39: error: expression list treated as compound expression in initializer [-fpermissive]
BUILDSTDERR: 46 | gdcm::String<EOF,64,0> s8( ss, 1, 6 );
BUILDSTDERR: | ^
BUILDSTDERR: /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx:46:30: warning: left operand of comma operator has no effect [-Wunused-value]
BUILDSTDERR: 46 | gdcm::String<EOF,64,0> s8( ss, 1, 6 );
BUILDSTDERR: | ^~
BUILDSTDERR: /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx:46:39: warning: right operand of comma operator has no effect [-Wunused-value]
BUILDSTDERR: 46 | gdcm::String<EOF,64,0> s8( ss, 1, 6 );
BUILDSTDERR: | ^
BUILDSTDERR: /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx:47:19: error: request for member 'c_str' in 's8', which is of non-class type 'int'
BUILDSTDERR: 47 | std::cout << s8.c_str() << " -> " << s8.size() << std::endl;
BUILDSTDERR: | ^~~~~
BUILDSTDERR: /builddir/build/BUILD/GDCM-3.0.1/Testing/Source/Common/Cxx/TestString2.cxx:47:43: error: request for member 'size' in 's8', which is of non-class type 'int'
BUILDSTDERR: 47 | std::cout << s8.c_str() << " -> " << s8.size() << std::endl;
BUILDSTDERR: | ^~~~
BUILDSTDERR: make[2]: *** [Testing/Source/Common/Cxx/CMakeFiles/gdcmCommonTests.dir/build.make:209: Testing/Source/Common/Cxx/CMakeFiles/gdcmCommonTests.dir/TestString2.cxx.o] Error 1
BUILDSTDERR: make[2]: *** Waiting for unfinished jobs....
All the build logs are attached. If there's anything else we Fedora maintainers can help with here, please let us know.
Cheers,
Ankur
We're carrying a patch that fixes this issue also for 3.0.1. Attached.
The complete story of the patch begins here [1] Florain said "Using EOF as a character is pretty much always wrong"
But final patch came from [2] where I replace EOF by '\0'
[1]
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/QEUN5K7BMOOJ5EYQ6JZBV2VLNNWCZWIJ/?sort=date
[2]
https://bugzilla.redhat.com/show_bug.cgi?id=1670036
Thanks for the patch. See 435e5452a460093f6ea5404e7f042464eb83a43d