DOCGroup / ACE_TAO

ACE and TAO
https://www.dre.vanderbilt.edu/~schmidt/TAO.html
704 stars 380 forks source link

/usr/include/ace/SSL/SSL_Context.h not present in 8.0.1 ace-devel packages (it is present in 7.1.4 when built on the same machine) #2286

Closed undergraver closed 1 month ago

undergraver commented 1 month ago

Version

8.0.1

Host machine and operating system

OpenSUSE 15.6 64bit (same target)

Compiler name and version (including patch level)

gcc --version

gcc (SUSE Linux) 7.5.0 Copyright (C) 2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

iulians@dock-v11r1.4-build:~ # g++ --version g++ (SUSE Linux) 7.5.0 Copyright (C) 2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. #

The $ACE_ROOT/ace/config.h file

Using the default one from tar.gz.

I am building using the .tar.gz file via: "rpmbuild -ta ACE+TAO-src-8.0.1.tar.gz" (tar.gz is taken from github releases and renamed with src in its name)

The $ACE_ROOT/include/makeinclude/platform_macros.GNU file

Using the default one from tar.gz. See above how I build.

Contents of $ACE_ROOT/bin/MakeProjectCreator/config/default.features

Using the default one from tar.gz. See above.

AREA/CLASS/EXAMPLE AFFECTED:

ace-devel doesn't contain SSL_Context.h header file.

rpm -qlp /usr/src/packages/RPMS/x86_64/ace-devel-8.0.1-1.x86_64.rpm | grep SSL

/usr/include/ace/SSL /usr/include/ace/SSL/SSL_Asynch_BIO.h /usr/include/ace/SSL/SSL_Export.h /usr/include/ace/SSL/sslconf.h /usr/lib64/libACE_INet_SSL.so /usr/lib64/libACE_SSL.so #

compiling on the same machine latest 7 verson (7.1.4) results in a proper ace-devel package like it can be seen below:

rpm -qlp /home/iulians/rpmbuild/RPMS/x86_64/ace-devel-7.1.4-1.x86_64.rpm | grep SSL

/usr/include/ace/SSL /usr/include/ace/SSL/SSL_Asynch_BIO.h /usr/include/ace/SSL/SSL_Asynch_Stream.h /usr/include/ace/SSL/SSL_Asynch_Stream.inl /usr/include/ace/SSL/SSL_Context.h /usr/include/ace/SSL/SSL_Context.inl /usr/include/ace/SSL/SSL_Export.h /usr/include/ace/SSL/SSL_Initializer.h /usr/include/ace/SSL/SSL_SOCK.h /usr/include/ace/SSL/SSL_SOCK.inl /usr/include/ace/SSL/SSL_SOCK_Acceptor.h /usr/include/ace/SSL/SSL_SOCK_Acceptor.inl /usr/include/ace/SSL/SSL_SOCK_Connector.h /usr/include/ace/SSL/SSL_SOCK_Connector.inl /usr/include/ace/SSL/SSL_SOCK_Stream.h /usr/include/ace/SSL/SSL_SOCK_Stream.inl /usr/include/ace/SSL/sslconf.h /usr/lib64/libACE_INet_SSL.so /usr/lib64/libACE_SSL.so #

Another note here: on openSUSE Tumbleweed (rolling release with latest software) 8.0.1 works as expected by including the SSL headers in ace-devel (That system has gcc 14.2).

The problem effects:

Our projects that cannot properly compile with the resulted ace-devel rpm package.

Synopsis

The ace-devel doesn't contain many of the /usr/include/ace/SSL/SSL_* header files. See above.

Description

Our code cannot compile as it cannot find some SSL* headers that should be in the ace-devel package.

Repeat by

Started the compilation of some modules that were using ACE/TAO libraries. The missing header resulted in compilation error.

Sample fix/ workaround

Use older version - 7.1.4 in our case - haven't tried with 8.0.0.

Please let us know if we can perform some tests on the machines in order to help you. As a summary:

Thank you!

jwillemsen commented 1 month ago

No idea why this happens, maybe something that has changed in the underlying OS to handle the rpm build. See https://github.com/DOCGroup/ACE_TAO/blob/master/ACE/rpmbuild/ace-tao.spec for the spec file which I think is used by rpmbuild

undergraver commented 1 month ago

I've checked the github code in a local clone for changes between the two releases and I don't see anything apparently important.

Could you point me in the right place to investigate "the decision" to include or not those files in the ace-devel?

I am willing to test and make a pull request.

jwillemsen commented 1 month ago

I have no idea, see the file I mentioned, that is the script used as far as I know

undergraver commented 1 month ago

I have no idea, see the file I mentioned, that is the script used as far as I know

I saw that file, no changes there except the version.

The weird thing it that it is the same operating system showing the problem between the two versions, so I assume this to be related to the library.

undergraver commented 1 month ago

Here is the diff of files in the ace-devel packages between 8.0.1 and 7.1.4

` localhost:~ # diff devel801_os156.txt devel714_os156.txt 86a87,89

/usr/include/ace/Auto_Ptr.cpp /usr/include/ace/Auto_Ptr.h /usr/include/ace/Auto_Ptr.inl 143a147,148 /usr/include/ace/Compression/Compressor.h /usr/include/ace/Compression/Compressor.inl 145a151 /usr/include/ace/Compression/rle/RLECompressor.h 224a231,232 /usr/include/ace/ETCL/ETCL_Constraint.h /usr/include/ace/ETCL/ETCL_Constraint.inl 225a234 /usr/include/ace/ETCL/ETCL_Interpreter.h 283a293 /usr/include/ace/FlReactor/FlReactor.h 288a299 /usr/include/ace/FoxReactor/FoxReactor.h 315a327,333 /usr/include/ace/HTBP /usr/include/ace/HTBP/HTBP_Addr.h /usr/include/ace/HTBP/HTBP_Export.h /usr/include/ace/HTBP/HTBP_Filter.h /usr/include/ace/HTBP/HTBP_Filter.inl /usr/include/ace/HTBP/HTBP_Notifier.h /usr/include/ace/HTBP/HTBP_Stream.h 415a434 /usr/include/ace/Log_Msg_Backend.cpp 416a436 /usr/include/ace/Log_Msg_Callback.cpp 512a533,543 /usr/include/ace/Monitor_Control/Auto_Update_Starter.h /usr/include/ace/Monitor_Control/BSD_Network_Interface_Monitor.h /usr/include/ace/Monitor_Control/Bytes_Received_Monitor.h /usr/include/ace/Monitor_Control/Bytes_Sent_Monitor.h /usr/include/ace/Monitor_Control/CPU_Load_Monitor.h /usr/include/ace/Monitor_Control/Constraint_Interpreter.h /usr/include/ace/Monitor_Control/Constraint_Visitor.h /usr/include/ace/Monitor_Control/FreeBSD_Network_Interface_Monitor.h /usr/include/ace/Monitor_Control/Linux_Network_Interface_Monitor.h /usr/include/ace/Monitor_Control/Memory_Usage_Monitor.h /usr/include/ace/Monitor_Control/Monitor_Control.h 514a546,547 /usr/include/ace/Monitor_Control/Monitor_Group.h /usr/include/ace/Monitor_Control/Monitor_Query.h 515a549,553 /usr/include/ace/Monitor_Control/Num_Threads_Monitor.h /usr/include/ace/Monitor_Control/Packets_Received_Monitor.h /usr/include/ace/Monitor_Control/Packets_Sent_Monitor.h /usr/include/ace/Monitor_Control/Windows_Monitor.h /usr/include/ace/Monitor_Control/Windows_Multi_Instance_Monitor.h 746a785,792 /usr/include/ace/QoS/QoS_Decorator.h /usr/include/ace/QoS/QoS_Manager.h /usr/include/ace/QoS/QoS_Session.h /usr/include/ace/QoS/QoS_Session_Factory.h /usr/include/ace/QoS/QoS_Session_Impl.h /usr/include/ace/QoS/QoS_Session_Impl.inl /usr/include/ace/QoS/SOCK_Dgram_Mcast_QoS.h /usr/include/ace/QoS/SOCK_Dgram_Mcast_QoS.inl 748a795 /usr/include/ace/QtReactor/QtReactor.h 854a902,905 /usr/include/ace/SSL/SSL_Asynch_Stream.h /usr/include/ace/SSL/SSL_Asynch_Stream.inl /usr/include/ace/SSL/SSL_Context.h /usr/include/ace/SSL/SSL_Context.inl 855a907,915 /usr/include/ace/SSL/SSL_Initializer.h /usr/include/ace/SSL/SSL_SOCK.h /usr/include/ace/SSL/SSL_SOCK.inl /usr/include/ace/SSL/SSL_SOCK_Acceptor.h /usr/include/ace/SSL/SSL_SOCK_Acceptor.inl /usr/include/ace/SSL/SSL_SOCK_Connector.h /usr/include/ace/SSL/SSL_SOCK_Connector.inl /usr/include/ace/SSL/SSL_SOCK_Stream.h /usr/include/ace/SSL/SSL_SOCK_Stream.inl 1068a1129 /usr/include/ace/TkReactor/TkReactor.h 1142a1204,1205 /usr/include/ace/XML_Utils/XML_Helper.h /usr/include/ace/XML_Utils/XML_Helper.tpp 1151a1215 /usr/include/ace/XtReactor/XtReactor.h 1418a1483,1495 /usr/share/ace/bin/MakeProjectCreator/config/vc10.features /usr/share/ace/bin/MakeProjectCreator/config/vc10nmake.mpb /usr/share/ace/bin/MakeProjectCreator/config/vc11.features /usr/share/ace/bin/MakeProjectCreator/config/vc11nmake.mpb /usr/share/ace/bin/MakeProjectCreator/config/vc12.features /usr/share/ace/bin/MakeProjectCreator/config/vc12nmake.mpb /usr/share/ace/bin/MakeProjectCreator/config/vc14.features /usr/share/ace/bin/MakeProjectCreator/config/vc14nmake.mpb /usr/share/ace/bin/MakeProjectCreator/config/vc71.features /usr/share/ace/bin/MakeProjectCreator/config/vc8.features /usr/share/ace/bin/MakeProjectCreator/config/vc8nmake.mpb /usr/share/ace/bin/MakeProjectCreator/config/vc9.features /usr/share/ace/bin/MakeProjectCreator/config/vc9nmake.mpb 1428,1429d1504 < /usr/share/ace/bin/MakeProjectCreator/config/vs2022.features < /usr/share/ace/bin/MakeProjectCreator/config/vs2022nmake.mpb 1456a1532,1534 /usr/share/ace/bin/PerlACE/PerlACE_vs2017.sln /usr/share/ace/bin/PerlACE/PerlACE_vs2017.vcxproj /usr/share/ace/bin/PerlACE/PerlACE_vs2017.vcxproj.filters 1460,1462d1537 < /usr/share/ace/bin/PerlACE/PerlACE_vs2022.sln < /usr/share/ace/bin/PerlACE/PerlACE_vs2022.vcxproj < /usr/share/ace/bin/PerlACE/PerlACE_vs2022.vcxproj.filters localhost:~ #

`

If it offers some hints I would be happy to continue looking into it.

undergraver commented 1 month ago

Since it's raining today I had some time to discover the problem why some of the headers are not included. It is caused by the fact that C++17 is required, even though everything builds fine - which is rather confusing.

The problem is in this place of the ace-tao.spec

` for j in $BASEHDR; do echo $j >> rawhdrs.log echo '#include <'$j'>' | \ g++ %{inline} \ -I . \ -I protocols \ $TAO_MM_OPTS \ -x c++ - -MM -MF mmout 2>> rawhdrs.log && cat mmout || true; done > mmraw.list

` The problem is the headers that are missing are failing to compile and that "cat mmout" is never executed, therefore the name of the file is not in the mmraw.list.

I would say that a "-std=c++17" needs to be added but I am not the expert here. It might be that the compilation flags should be taken from other place.

Please let me know if you have other ideas to test here.

jwillemsen commented 1 month ago

Yes, that sounds logical, please create a PR