Skip to content

TAOのSSLIOP、HTIOP、SHMIOP対応のための修正#1013

Open
Nobu19800 wants to merge 15 commits intoOpenRTM:masterfrom
Nobu19800:feature/tao_install
Open

TAOのSSLIOP、HTIOP、SHMIOP対応のための修正#1013
Nobu19800 wants to merge 15 commits intoOpenRTM:masterfrom
Nobu19800:feature/tao_install

Conversation

@Nobu19800
Copy link
Copy Markdown

@Nobu19800 Nobu19800 commented Jan 20, 2022

Identify the Bug

Description of the Change

TAOのSSLIOP、HTIOP、SHMIOP通信対応のために以下の修正を行った。

  • CMakeでのインストール時に各種設定ファイルの自動生成
    • SHMIOP用設定ファイル:rtc.shmiop.confsvc.conf
    • SSLIOP用設定ファイル:rtc.ssliop.confsvc.conf
    • HTIOP用設定ファイル:rtc.htiop.confsvc.confHT_Config.conf
  • SSLIOP対応のためのAccessDecisionオブジェクトの設定を追加。TAOのSSLIOP機能ではSSL通信以外でのCORBAオブジェクトへのアクセスを拒否する設定ができる。プロセス内部からのCORBAオブジェクトの操作もSSL通信ではないためデフォルトで拒否するようになっている。このため、AccessDecisionオブジェクトのdefault_collocated_decision関数でプロセス内部からの操作は許可するようにしている。

Verification

  • Did you succeed the build?
  • No warnings for the build?
  • Have you passed the unit tests?

@Nobu19800 Nobu19800 added the enhancement New feature or request label Jan 20, 2022
@Nobu19800 Nobu19800 requested a review from n-ando January 20, 2022 15:17
@Nobu19800 Nobu19800 self-assigned this Jan 20, 2022
n-ando
n-ando previously approved these changes Jan 24, 2022
@n-kawauchi n-kawauchi marked this pull request as ready for review August 30, 2024 09:06
Copy link
Copy Markdown

@n-kawauchi n-kawauchi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ubuntu24.04環境での確認で、ビルドエラーになります。
まずTAOのインストールですが、下記ドキュメントの手順(TAO7.0.6利用)に従うと下記エラーになったため、最新の8.0.1を使いました。
https://openrtm.org/openrtm/ja/node/7131#ubuntu

cd TAO
make
 :
../../tao/Any_Insert_Policy_T.h:42:14: error: ‘void CORBA::Any::operator<<=(unsigned char)’ is private within this context
   42 |         (*p) <<= x;
      |         ~~~~~^~~~~

OpenRTMのビルドは下記手順に従うとcmakeエラーになりました。
https://openrtm.org/openrtm/ja/doc/installation/install_2_0/cpp_2_0/build_2_0/openrtm_cpp_cmake_build#toc4

CMake Error at /usr/share/cmake-3.28/Modules/FindPkgConfig.cmake:619 (message):
  The following required packages were not found:

   - TAO_Svc_Utils

そこで、cmake直前にTAOインストール先のpkgconfigを指定したところcmakeは通りました。

export PKG_CONFIG_PATH=${ACE_INSTALL_DIR}/lib/pkgconfig:$PKG_CONFIG_PATH

しかしビルドエラーになります。

cmake --build . --config Release -- -j$(nproc)
  :
/home/vagrant/work/ace_install/include/tao/ParameterModeC.h:47:2: error: #error This file should be regenerated with TAO_IDL
   47 | #error This file should be regenerated with TAO_IDL
      |  ^~~~~
In file included from /home/vagrant/work/ace_install/include/tao/IOPC.h:58:
/home/vagrant/work/ace_install/include/tao/OctetSeqC.h:56:2: error: #error This file should be regenerated with TAO_IDL
   56 | #error This file should be regenerated with TAO_IDL
      |  ^~~~~
/home/vagrant/work/ace_install/include/tao/IOPC.h:61:2: error: #error This file should be regenerated with TAO_IDL
   61 | #error This file should be regenerated with TAO_IDL
      |  ^~~~~
  :以下、同様のエラーが続く

@n-kawauchi n-kawauchi marked this pull request as draft September 2, 2024 05:34
@Nobu19800
Copy link
Copy Markdown
Author

以下のエラーはACE+TAO-8.0.5ではUbuntu、Winodowsのどちらでも確認できませんでした。
ビルドはできるようになったはずなので、ACE+TAO-8.0.5でビルド、動作の確認をお願いします。

cmake --build . --config Release -- -j$(nproc)
  :
/home/vagrant/work/ace_install/include/tao/ParameterModeC.h:47:2: error: #error This file should be regenerated with TAO_IDL
   47 | #error This file should be regenerated with TAO_IDL
      |  ^~~~~
In file included from /home/vagrant/work/ace_install/include/tao/IOPC.h:58:
/home/vagrant/work/ace_install/include/tao/OctetSeqC.h:56:2: error: #error This file should be regenerated with TAO_IDL
   56 | #error This file should be regenerated with TAO_IDL
      |  ^~~~~
/home/vagrant/work/ace_install/include/tao/IOPC.h:61:2: error: #error This file should be regenerated with TAO_IDL
   61 | #error This file should be regenerated with TAO_IDL
      |  ^~~~~
  :以下、同様のエラーが続く

@n-kawauchi

@n-kawauchi n-kawauchi marked this pull request as ready for review March 26, 2026 01:54
@n-kawauchi
Copy link
Copy Markdown

@Nobu19800

Ubuntu24.04、ACE+TAO-8.0.5環境で、最新masterブランチをマージしてビルドしたところOpenrtmNamesPlugin.cppでエラーになります。cmake --build . --config Release -- -j$(nproc) でビルドしたところ詳細が全く出力されなかったので、オプションを変更してビルドしました。

$ cmake --build . --config Release -- VERBOSE=1 -j1
   :
/home/vagrant/PR/1013/OpenRTM-aist/utils/openrtmNames/OpenrtmNamesPlugin.cpp:58:53: error: ‘nameservice’ was not declared in this scope; did you mean ‘m_nameservice’?
   58 |       CORBA::String_var ior = orb->object_to_string(nameservice->_this());
      |                                                     ^~~~~~~~~~~
      |                                                     m_nameservice
/home/vagrant/PR/1013/OpenRTM-aist/utils/openrtmNames/OpenrtmNamesPlugin.cpp: In member function ‘virtual void OpenRTMNames::ManagerActionListener::preShutdown()’:
/home/vagrant/PR/1013/OpenRTM-aist/utils/openrtmNames/OpenrtmNamesPlugin.cpp:99:64: error: invalid user-defined conversion from ‘PortableServer::Servant_var<RTM::NamingContext>’ to ‘PortableServer::Servant’ {aka ‘TAO_ServantBase*’} [-fpermissive]
   99 |     PortableServer::ObjectId_var oid = root_poa->servant_to_id(m_nameservice);
      |                                                                ^~~~~~~~~~~~~
  :
/home/vagrant/PR/1013/OpenRTM-aist/utils/openrtmNames/OpenrtmNamesPlugin.cpp:114:39: error: request for member ‘theORB’ in ‘((OpenRTMNames::ManagerActionListener*)this)->OpenRTMNames::ManagerActionListener::m_manager’, which is of pointer type ‘RTC::Manager*’ (maybe you meant to use ‘->’ ?)
  114 |     CORBA::Object_var obj = m_manager.theORB()->resolve_initial_references("IORTable");
      |                                       ^~~~~~
/home/vagrant/PR/1013/OpenRTM-aist/utils/openrtmNames/OpenrtmNamesPlugin.cpp:118:39: error: request for member ‘getConfig’ in ‘((OpenRTMNames::ManagerActionListener*)this)->OpenRTMNames::ManagerActionListener::m_manager’, which is of pointer type ‘RTC::Manager*’ (maybe you meant to use ‘->’ ?)
  118 |     coil::Properties config(m_manager.getConfig());
      |                                       ^~~~~~~~~

@Nobu19800
Copy link
Copy Markdown
Author

修正しました。
@n-kawauchi

Copy link
Copy Markdown

@n-kawauchi n-kawauchi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cmakeでのインストール先を $ACE_INSTALL_DIR に指定しての動作確認で、各種confファイルの存在を確認した。(Ubuntu24.04環境にて)

  • SHMIOP用設定ファイル
    $ACE_INSTALL_DIR/etc/tao_shmiop/svc.shmiop.conf
    $ACE_INSTALL_DIR/etc/tao_shmiop/rtc.shmiop.conf
  • SSLIOP用設定ファイル
    $ACE_INSTALL_DIR/etc/tao_ssliop/rtc.ssliop.conf
    $ACE_INSTALL_DIR/etc/tao_ssliop/svc.ssliop.conf
  • HTIOP用設定ファイル
    $ACE_INSTALL_DIR/etc/tao_htiop/HT_Config.conf
    $ACE_INSTALL_DIR/etc/tao_htiop/svc.htiop.conf
    $ACE_INSTALL_DIR/etc/tao_htiop/rtc.htiop.conf

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

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants