Closed n-ando closed 9 months ago
サンプルRTCに修正を入れてdebパッケージを生成し、依存関係を確認してみました。 修正は一番トップCMakeLists.txtに追記します。現在のOpenRTMバージョン以降ということで「>=」で指定しました。 C++とPythonで動作を確認し、下記修正でよいと思えます。Java RTCは独自IDLを持つ場合のcpack動作に問題がありIssueを作成しておりますが未対応なので今回は対象から外しました。
C++ RTCの場合・・・MyServiceConsumerで確認
message(STATUS "Package manager is ${PKGMGR}. Arch is ${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.")
set(CPACK_DEBIAN_PACKAGE_DEPENDS "openrtm2 (>= ${OPENRTM_VERSION_MAJOR}.${OPENRTM_VERSION_MINOR}.${OPENRTM_VERSION_PATCH})")
$ less myserviceconsumer_2.0.0_amd64.deb | grep Depends
Depends: openrtm2 (>= 2.0.1)
message(STATUS "Package manager is ${PKGMGR}. Arch is ${CPACK_RPM_PACKAGE_ARCHITECTURE}.")
set(CPACK_RPM_PACKAGE_REQUIRES "openrtm2 (>= ${OPENRTM_VERSION_MAJOR}.${OPENRTM_VERSION_MINOR}.${OPENRTM_VERSION_PATCH})")``
Python RTCの場合・・・ImageProcessingのTkCalibGUIで確認
set(CPACK_DEBIAN_PACKAGE_DEPENDS "openrtm2-python3 (>= ${OPENRTM_VERSION_MAJOR}.${OPENRTM_VERSION_MINOR}.${OPENRTM_VERSION_PATCH})")
or
set(CPACK_RPM_PACKAGE_REQUIRES "openrtm2-python3 (>= ${OPENRTM_VERSION_MAJOR}.${OPENRTM_VERSION_MINOR}.${OPENRTM_VERSION_PATCH})")
$ less tkcalibgui_2.0.0_amd64.deb | grep Depends
Depends: openrtm2-python3 (>= 2.0.1)
生成したdebパッケージをOpenRTMがインストールされていない環境でインストールして動作確認。
$ sudo dpkg -i myserviceconsumer_2.0.0_amd64.deb
:
myserviceconsumer depends on openrtm2 (>= 2.0.1); however:
Package openrtm2 is not installed.
$ sudo dpkg -i tkcalibgui_2.0.0_amd64.deb : tkcalibgui depends on openrtm2-python3 (>= 2.0.1); however: Package openrtm2-python3 is not installed.
Is your feature request related to a problem? Please describe. 現状 cpack などでRTCをパッケージ化する際に、依存関係は全く指定されてない。 cpackでパッケージ化した際に少なくともopenrtm自体は依存関係に追加する。
Describe the solution you'd like C++のRTCのdebパッケージであれば
などをcmake/cpack--- に指定しておく。
Describe alternatives you've considered rpmパッケージも同様に CPACK_RPM_PACKAGE_REQUIRES
のように指定する。