Closed undergraver closed 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
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.
I have no idea, see the file I mentioned, that is the script used as far as I know
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.
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.
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.
Yes, that sounds logical, please create a PR
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!