Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

/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

Open
undergraver opened this issue Oct 2, 2024 · 7 comments

Comments

@undergraver
Copy link

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.

[email protected]:~ # 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:

  • 8.0.1 ACE/TAO doesn't include SSL* headers when in openSUSE 15.6 Linux distro
  • 7.1.4 ACE/TAO includes SSL* headers when in openSUSE 15.6 Linux distro (same machine)
  • 8.0.1 ACE/TAO includes SSL* headers when in openSUSE Tumbleweed distro

Thank you!

@jwillemsen
Copy link
Member

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
Copy link
Author

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
Copy link
Member

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

@undergraver
Copy link
Author

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
Copy link
Author

undergraver commented Oct 2, 2024

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
Copy link
Author

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
Copy link
Member

Yes, that sounds logical, please create a PR

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

2 participants