dcmtk fails on Fedora 12 openssl 1.0

Compilation and installation of DCMTK

Moderator: Moderator Team

Post Reply
Message
Author
Vrenn
Posts: 11
Joined: Fri, 2008-12-19, 11:29

dcmtk fails on Fedora 12 openssl 1.0

#1 Post by Vrenn »

Hello dear dcmtk-developers and first thanks for the great software I can use.

But I faced an problem.
I wanted to build dcmtk-rpms/debs again on the opensuse build server which failed on Fedora 12 host:

Code: Select all

make[2]: Entering directory `/home/stephan/dcmtk-original/dcmtk-3.5.4/dcmtls/libsrc'
c++     -DHAVE_CONFIG_H  -DDEBUG  -c -I. -I. -I../include -I../../config/include -I../../ofstd/include -I../../dcmdata/include -I../../dcmnet/include  \
                 -g -I/usr/include/libxml2 -D_REENTRANT -D_XOPEN_SOURCE_EXTENDED -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -D_BSD_COMPAT -D_OSF_SOURCE -D_POSIX_C_SOURCE=199506L -Wall  tlslayer.cc
tlslayer.cc: In constructor ‘DcmTLSTransportLayer::DcmTLSTransportLayer(int, const char*)’:
tlslayer.cc:195: error: invalid conversion from ‘const SSL_METHOD*’ to ‘SSL_METHOD*’
tlslayer.cc:198: error: invalid conversion from ‘const SSL_METHOD*’ to ‘SSL_METHOD*’
tlslayer.cc:201: error: invalid conversion from ‘const SSL_METHOD*’ to ‘SSL_METHOD*’
make[2]: *** [tlslayer.o] Error 1
Seems that the cange of openssl-0.9.x to openssl-1.0.0-0.13.beta4.fc12.i686 caused TLSv1_... methods to become constant.
Happened on dcmtk-3.5.4 and 3.5.5-20090818.
Perhaps see http://lists-archives.org/git/703845-im ... const.html
Because I want my dcmtk copy work with both I eliminated the variable and made following:

Code: Select all

   //by Vrenn
   if ( networkRole == DICOM_APPLICATION_ACCEPTOR )
   {
     transportLayerContext = SSL_CTX_new( TLSv1_server_method() );
   } else if ( networkRole == DICOM_APPLICATION_REQUESTOR ) {
     transportLayerContext = SSL_CTX_new( TLSv1_client_method() );
   } else {
     transportLayerContext = SSL_CTX_new( TLSv1_method() );
   }
//    SSL_METHOD *method = NULL; //changed by Vrenn
//    switch (networkRole)
//    {
//      case DICOM_APPLICATION_ACCEPTOR: 
//        method = TLSv1_server_method(); //changed by Vrenn
//        break;
//      case DICOM_APPLICATION_REQUESTOR:
//        method = TLSv1_client_method(); //changed by Vrenn
//        break;
//      default:
//        method = TLSv1_method(); //changed by Vrenn
//        break;
//    }
//    transportLayerContext = SSL_CTX_new(method);
The second porblem was this:

Code: Select all

dcmqridx.cc: In function ‘int main(int, char**)’:
dcmqridx.cc:179: error: ‘DB_getDebugLevel’ was not declared in this scope
dcmqridx.cc:182: error: ‘DB_makeNewStoreFileName’ was not declared in this scope
and

Code: Select all

../include/dcmtk/dcmimgle/diinpxt.h:368: error: there are no arguments to ‘isSigned’ that depend on a template parameter, so a declaration of ‘isSigned’ must be available
This seems to be handled at http://forum.dicom-cd.de/viewtopic.php? ... e309d9dcf7
I just commented it out and wanted to mention it here because it is a problem for Fedora 12 users too.

I hope these changes don't affect my rpm/debs in any harmful way. What do you think?

Jörg Riesmeier
ICSMED DICOM Services
ICSMED DICOM Services
Posts: 2217
Joined: Fri, 2004-10-29, 21:38
Location: Oldenburg, Germany

#2 Post by Jörg Riesmeier »

Seems that the cange of openssl-0.9.x to openssl-1.0.0-0.13.beta4.fc12.i686 caused TLSv1_... methods to become constant.
Thank you for the report and suggested fix. The required changes will be part of the next snapshot.

For the other two issues, I agree that they should have already been fixed in the current development version.

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest