操作
バグ #2404
完了RtORBでコンパイルが通らない
ステータス:
終了
優先度:
通常
担当者:
-
対象バージョン:
-
開始日:
2012/04/08
期日:
進捗率:
100%
予定工数:
説明
trunk (r2330時点) でRtORB (1.0) モードでコンパイルが通らない。
これを修正する。
n-ando さんが12年以上前に更新
RtORBではIDLが1ファイルしか使えないため、すべてのrtm/idl以下のIDLをOpenRTM-aist.idlというファイルにマージしている。
整合性のために*Skel.hをMakefile.amで生成するようにしているが、Stub.hは生成されていなかったので、いくつかのファイルでコンパイルエラーが発生。
Makefile.amを修正し、*Stub.hも生成するようにした。
Index: idl/Makefile.am =================================================================== --- idl/Makefile.am ($(O*c吾с(B 2335) +++ idl/Makefile.am (篏罐$(O-c潟(B) @@ -81,6 +81,15 @@ DataPortSkel.h \ ExtendedDataTypesSkel.h \ InterfaceDataTypesSkel.h +DUMMY_STUBS = \ + SDOPackageStub.h \ + RTCStub.h \ + OpenRTMStub.h \ + ManagerStub.h \ + BasicDataTypeStub.h \ + DataPortStub.h \ + ExtendedDataTypesStub.h \ + InterfaceDataTypesStub.h ORB_SRC = $(RTORB_SRC) endif @@ -170,8 +179,14 @@ $(top_srcdir)/build/makewrapper.py $$f ; \ done ; @for f in $(DUMMY_SKELS) ; do \ + echo cp OpenRTM-aistSkel.h $$f ; \ + cp OpenRTM-aistStub.h $$f ; \ cp OpenRTM-aistSkel.h $$f ; \ - done + done ; + @for f in $(DUMMY_STUBS) ; do \ + echo cp OpenRTM-aistSkel.h $$f ; \ + cp OpenRTM-aistSkel.h $$f ; \ + done ;
n-ando さんが12年以上前に更新
ExecutionContextProfile.cpp内でCORBA_SeqUtil::push_back を使用している所がコンパイルエラーになる。
とりあえず、意味はおなじになるように以下のように修正。
--- src/lib/rtm/ExecutionContextProfile.cpp (revision 2335) +++ src/lib/rtm/ExecutionContextProfile.cpp (working copy) @@ -270,7 +270,12 @@ return RTC::RTC_ERROR; } Guard guard(m_profileMutex); +#ifndef ORB_IS_RTORB CORBA_SeqUtil::push_back(m_profile.participants, rtobj._retn()); +#else + CORBA_SeqUtil::push_back(m_profile.participants, + RTC::RTObject::_duplicate(rtobj.in())); +#endif return RTC::RTC_OK; }
n-ando さんが12年以上前に更新
RtORBでは bool != CORBA::Boolean か?
とりあえず、以下のように修正。 <pre> Index: src/lib/rtm/ExecutionContextWorker.h =================================================================== --- src/lib/rtm/ExecutionContextWorker.h (revision 2335) +++ src/lib/rtm/ExecutionContextWorker.h (working copy) @@ -138,7 +138,7 @@ * * @endif */ - bool isRunning(void); + CORBA::Boolean isRunning(void); /*! * @if jp </pre>
n-ando さんが12年以上前に更新
/FileNameservice.cpp内で、CORBA::Object_var にRTObject代入するとエラーになる。以下のように変更。
Index: src/ext/local_service/nameservice_file/FileNameservice.cpp =================================================================== --- src/ext/local_service/nameservice_file/FileNameservice.cpp (revision 2335) +++ src/ext/local_service/nameservice_file/FileNameservice.cpp (working copy) @@ -404,8 +404,13 @@ NamingAction::preBind(RTC::RTObject_impl* rtobj, coil::vstring& name_) { coil::vstring name = name_; +#ifndef ORB_IS_RTORB CORBA::Object_var objref = RTC::RTObject::_duplicate(rtobj->getObjRef()); +#else + RTC::RTObject_var objref = + RTC::RTObject::_duplicate(rtobj->getObjRef()); +#endif // ORB_IS_RTORB CORBA::String_var ior = RTC::Manager::instance().getORB()->object_to_string(objref); coil::vstring ns_info;
n-ando さんが12年以上前に更新
toRepositoryIdが使えない。代わりに、toRepositoryIdOfObjectを使用するように変更。
Index: src/ext/sdo/observer/ComponentObserverConsumer.cpp =================================================================== --- src/ext/sdo/observer/ComponentObserverConsumer.cpp (revision 2335) +++ src/ext/sdo/observer/ComponentObserverConsumer.cpp (working copy) @@ -684,7 +684,12 @@ { RTC::SdoServiceConsumerFactory& factory = RTC::SdoServiceConsumerFactory::instance(); +#ifndef ORB_IS_RTORB factory.addFactory(CORBA_Util::toRepositoryId<OpenRTM::ComponentObserver>(), +#else + factory.addFactory(CORBA_Util:: + toRepositoryIdOfObject<OpenRTM::ComponentObserver>(), +#endif ::coil::Creator< ::RTC::SdoServiceConsumerBase, ::RTC::ComponentObserverConsumer>, ::coil::Destructor< ::RTC::SdoServiceConsumerBase,
n-ando さんが12年以上前に更新
ローカルにIDLを持っている、ObserverやLogicalTimeECなどのモジュールで、RtORBのIDLコンパイラが生成するスタブのヘッダが*.hとなるため、既存のファイルとぶつかる。生成ファイルはidlディレクトリに入れるように変更。
Index: src/ext/sdo/observer/Makefile.am =================================================================== --- src/ext/sdo/observer/Makefile.am (revision 2335) +++ src/ext/sdo/observer/Makefile.am (working copy) @@ -8,7 +8,7 @@ AUTOMAKE_OPTIONS = 1.9 IDLC = @IDLC@ -IDLFLAGS = @IDL_FLAGS@ -I$(top_srcdir)/src/lib/rtm/idl +IDLFLAGS = @IDL_FLAGS@ -I../$(top_srcdir)/src/lib/rtm/idl LIBS = @LIBS@ AM_CPPFLAGS=-I$(top_srcdir)/src/lib -I$(top_srcdir)/src/lib/coil/include -I$(top_srcdir)/src/lib/rtm/idl @@ -24,16 +24,20 @@ .idlSkel.cpp: echo $(PROVIDER_OBJ) - $(IDLC) $(IDLFLAGS) $< + mkdir -p idl + cp $< idl/ + (cd idl ; $(IDLC) $(IDLFLAGS) $< ) PYTHONPATH="$(top_srcdir)/build:$(PYTHONPATH)" \ PATH="$(top_srcdir)/utils/rtm-config:$(PATH)" \ - $(WRAPPER) $(WRAPPER_FLAGS) --idl-file=$< + $(WRAPPER) $(WRAPPER_FLAGS) --idl-file=$< --include-dir=idl/ .idlStub.cpp: - $(IDLC) $(IDLFLAGS) $< + mkdir -p idl + cp $< idl/ + (cd idl ; $(IDLC) $(IDLFLAGS) $< ) PYTHONPATH="$(PYTHONPATH):$(top_srcdir)/build" \ PATH="$(top_srcdir)/utils/rtm-config:$(PATH)" \ - $(WRAPPER) $(WRAPPER_FLAGS) --idl-file=$< + $(WRAPPER) $(WRAPPER_FLAGS) --idl-file=$< --include-dir=idl/ #------------------------------------------------------------ # Source list @@ -41,7 +45,7 @@ IDL_SOURCES = ComponentObserver.idl OBSERVER_DIST_SRC = ComponentObserverConsumer.cpp -OBSERVER_NODIST_SRC = $(IDL_SOURCES:.idl=Stub.cpp) +OBSERVER_NODIST_SRC = idl/$(IDL_SOURCES:.idl=Stub.cpp) OBSERVER_SRC = $(OBSERVER_DIST_SRC) $(OBSERVER_NODIST_SRC) OBSERVER_DIST_H = $(OBSERVER_DIST_SRC:.cpp=.h) @@ -143,6 +147,7 @@ clean_skelstub: rm -f *Skel.h *Skel.cpp rm -f *Stub.h *Stub.cpp + rm -rf idl rm -f *.hh *SK.cc rm -f *C.cpp *C.h *S.cpp *S.h *_T.cpp *_T.h *.inl
さらに、インクルードパスが変更されるため、skel_wrapper.pyに変更を加えて、生成ファイルのインクルードパスのみ、--include-dirオプションで書き換えられるようにした。
Index: utils/rtm-skelwrapper/skel_wrapper.py =================================================================== --- utils/rtm-skelwrapper/skel_wrapper.py (revision 2335) +++ utils/rtm-skelwrapper/skel_wrapper.py (working copy) @@ -86,7 +86,7 @@ * */ -#include "[include_dir][skel_h]" +#include "[skel_h]" #if defined ORB_IS_TAO # include "[include_dir][basename]C.cpp" @@ -139,7 +139,7 @@ [config_inc] #if defined ORB_IS_TAO -# include "[include_dir][basename]C.h" +# include "[basename]C.h" #elif defined ORB_IS_OMNIORB # if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__) # undef USE_stub_in_nt_dll @@ -175,7 +175,7 @@ * */ -#include "[include_dir][stub_h]" +#include "[stub_h]" #if defined ORB_IS_TAO # include "[include_dir][basename]C.cpp"
操作