Coder Social home page Coder Social logo

pyopendds's Introduction

PyOpenDDS

PyOpenDDS is a framework for using OpenDDS from Python. It has the goal of providing the standard full DDS API in OpenDDS in a Pythonic form.

This project is still a work in progress though. It currently only supports what is necessary for tests/basic_test and little else. See the GitHub issues for the current status of the limitations.

Requirements

  • Tested on Linux, macOS, and Windows
  • CPython >= 3.7
    • This uses the C API of CPython, so other Python implementations like PyPy are not offically supported.
    • If building Python from source, make sure to run the configure script with --enable-shared. PyOpenDDS doesn't currently support building with the statically-linkable Python library.
  • OpenDDS >= 3.16
  • CMake >= 3.12
  • A compiler that supports C++14 or later.

Building PyOpenDDS and Running the Basic Test

Once $DDS_ROOT/setenv.sh has been sourced or the equivalent, run the commands below in this directory.

# Build and Install PyOpenDDS
pip install .

# Build Basic Test
cd tests/basic_test
mkdir build
cd build
cmake ..
make

# Build and Install Basic Test Python Type Support
itl2py -o basic_output basic_idl opendds_generated/basic.itl
# If using OpenDDS 3.19 or before, then just specify basic.itl
cd basic_output
pip install .

# Run Basic Test
cd ../..
bash run_test.sh

pyopendds's People

Contributors

dependabot[bot] avatar iguessthislldo avatar jwillemsen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pyopendds's Issues

Failed to build pyopendds: Undefined symbols for architecture arm64

Faild information:

[ 11%] Linking CXX shared library libbasic_idl.dylib
Undefined symbols for architecture arm64:
  "OpenDDS::DCPS::ValueReader::read_int64_array(long long*, unsigned long)", referenced from:
      vtable for OpenDDS::DCPS::JsonValueReader<rapidjson::GenericStringStream<rapidjson::UTF8<char> > > in basicTypeSupportImpl.cpp.o
  "OpenDDS::DCPS::ValueReader::read_uint64_array(unsigned long long*, unsigned long)", referenced from:
      vtable for OpenDDS::DCPS::JsonValueReader<rapidjson::GenericStringStream<rapidjson::UTF8<char> > > in basicTypeSupportImpl.cpp.o
  "OpenDDS::DCPS::ValueWriter::write_int64_array(long long const*, unsigned int)", referenced from:
      vtable for OpenDDS::DCPS::JsonValueWriter<rapidjson::Writer<rapidjson::GenericStringBuffer<rapidjson::UTF8<char>, rapidjson::CrtAllocator>, rapidjson::UTF8<char>, rapidjson::UTF8<char>, rapidjson::CrtAllocator, 0u> > in basicTypeSupportImpl.cpp.o
  "OpenDDS::DCPS::ValueWriter::write_uint64_array(unsigned long long const*, unsigned int)", referenced from:
      vtable for OpenDDS::DCPS::JsonValueWriter<rapidjson::Writer<rapidjson::GenericStringBuffer<rapidjson::UTF8<char>, rapidjson::CrtAllocator>, rapidjson::UTF8<char>, rapidjson::UTF8<char>, rapidjson::CrtAllocator, 0u> > in basicTypeSupportImpl.cpp.o
  "OpenDDS::DCPS::DataWriterImpl::send_control(OpenDDS::DCPS::DataSampleHeader const&, std::__1::unique_ptr<ACE_Message_Block, OpenDDS::DCPS::Message_Block_Deleter>)", referenced from:
      vtable for OpenDDS::DCPS::DataWriterImpl_T<basic::Reading> in basicTypeSupportImpl.cpp.o
      construction vtable for OpenDDS::DCPS::DataWriterImpl-in-OpenDDS::DCPS::DataWriterImpl_T<basic::Reading> in basicTypeSupportImpl.cpp.o
  "OpenDDS::DCPS::DataWriterImpl::control_dropped(std::__1::unique_ptr<ACE_Message_Block, OpenDDS::DCPS::Message_Block_Deleter> const&, bool)", referenced from:
      vtable for OpenDDS::DCPS::DataWriterImpl_T<basic::Reading> in basicTypeSupportImpl.cpp.o
      construction vtable for OpenDDS::DCPS::DataWriterImpl-in-OpenDDS::DCPS::DataWriterImpl_T<basic::Reading> in basicTypeSupportImpl.cpp.o
  "OpenDDS::DCPS::DataWriterImpl::control_delivered(std::__1::unique_ptr<ACE_Message_Block, OpenDDS::DCPS::Message_Block_Deleter> const&)", referenced from:
      vtable for OpenDDS::DCPS::DataWriterImpl_T<basic::Reading> in basicTypeSupportImpl.cpp.o
      construction vtable for OpenDDS::DCPS::DataWriterImpl-in-OpenDDS::DCPS::DataWriterImpl_T<basic::Reading> in basicTypeSupportImpl.cpp.o
  "OpenDDS::DCPS::bitmask_to_string(unsigned long long, OpenDDS::DCPS::BitmaskHelper const&)", referenced from:
      OpenDDS::DCPS::JsonValueWriter<rapidjson::Writer<rapidjson::GenericStringBuffer<rapidjson::UTF8<char>, rapidjson::CrtAllocator>, rapidjson::UTF8<char>, rapidjson::UTF8<char>, rapidjson::CrtAllocator, 0u> >::write_bitmask(unsigned long long, OpenDDS::DCPS::BitmaskHelper const&) in basicTypeSupportImpl.cpp.o
  "OpenDDS::DCPS::TransportSendListener::control_dropped(std::__1::unique_ptr<ACE_Message_Block, OpenDDS::DCPS::Message_Block_Deleter> const&, bool)", referenced from:
      construction vtable for OpenDDS::DCPS::TransportSendListener-in-OpenDDS::DCPS::DataWriterImpl_T<basic::Reading> in basicTypeSupportImpl.cpp.o
  "OpenDDS::DCPS::TransportSendListener::control_delivered(std::__1::unique_ptr<ACE_Message_Block, OpenDDS::DCPS::Message_Block_Deleter> const&)", referenced from:
      construction vtable for OpenDDS::DCPS::TransportSendListener-in-OpenDDS::DCPS::DataWriterImpl_T<basic::Reading> in basicTypeSupportImpl.cpp.o
  "OpenDDS::XTypes::DynamicDataBase::get_int64_value(long long&, unsigned int)", referenced from:
      vtable for OpenDDS::XTypes::DynamicDataAdapterImpl<basic::Reading, basic::Reading> in basicTypeSupportImpl.cpp.o
      construction vtable for OpenDDS::XTypes::DynamicDataAdapter_T<basic::Reading>-in-OpenDDS::XTypes::DynamicDataAdapterImpl<basic::Reading, basic::Reading> in basicTypeSupportImpl.cpp.o
      construction vtable for OpenDDS::XTypes::DynamicDataAdapter-in-OpenDDS::XTypes::DynamicDataAdapterImpl<basic::Reading, basic::Reading> in basicTypeSupportImpl.cpp.o
      construction vtable for OpenDDS::XTypes::DynamicDataBase-in-OpenDDS::XTypes::DynamicDataAdapterImpl<basic::Reading, basic::Reading> in basicTypeSupportImpl.cpp.o
  "OpenDDS::XTypes::DynamicDataBase::get_uint64_value(unsigned long long&, unsigned int)", referenced from:
      vtable for OpenDDS::XTypes::DynamicDataAdapterImpl<basic::Reading, basic::Reading> in basicTypeSupportImpl.cpp.o
      construction vtable for OpenDDS::XTypes::DynamicDataAdapter_T<basic::Reading>-in-OpenDDS::XTypes::DynamicDataAdapterImpl<basic::Reading, basic::Reading> in basicTypeSupportImpl.cpp.o
      construction vtable for OpenDDS::XTypes::DynamicDataAdapter-in-OpenDDS::XTypes::DynamicDataAdapterImpl<basic::Reading, basic::Reading> in basicTypeSupportImpl.cpp.o
      construction vtable for OpenDDS::XTypes::DynamicDataBase-in-OpenDDS::XTypes::DynamicDataAdapterImpl<basic::Reading, basic::Reading> in basicTypeSupportImpl.cpp.o
  "virtual thunk to OpenDDS::DCPS::DataWriterImpl::control_delivered(std::__1::unique_ptr<ACE_Message_Block, OpenDDS::DCPS::Message_Block_Deleter> const&)", referenced from:
      vtable for OpenDDS::DCPS::DataWriterImpl_T<basic::Reading> in basicTypeSupportImpl.cpp.o
      construction vtable for OpenDDS::DCPS::DataWriterImpl-in-OpenDDS::DCPS::DataWriterImpl_T<basic::Reading> in basicTypeSupportImpl.cpp.o
  "virtual thunk to OpenDDS::DCPS::DataWriterImpl::control_dropped(std::__1::unique_ptr<ACE_Message_Block, OpenDDS::DCPS::Message_Block_Deleter> const&, bool)", referenced from:
      vtable for OpenDDS::DCPS::DataWriterImpl_T<basic::Reading> in basicTypeSupportImpl.cpp.o
      construction vtable for OpenDDS::DCPS::DataWriterImpl-in-OpenDDS::DCPS::DataWriterImpl_T<basic::Reading> in basicTypeSupportImpl.cpp.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [libbasic_idl.dylib] Error 1
make[1]: *** [CMakeFiles/basic_idl.dir/all] Error 2
make: *** [all] Error 2

ERROR: Failed building wheel for pyopendds

While trying to install pyopendds using the command pip install . , I am encountering the below issue.
ERROR: Failed building wheel for pyopendds

Failed to build pyopendds

ERROR: Could not build wheels for pyopendds, which is required to install pyproject.toml-based projects

Is there any solution for this.

pyopendds version 0.1.0 version make problem

i have successfully installed DDS version 3.17 using ./configure and make and was trying for pyopendds but on the make command given in this tutorial given below
https://pyopendds.readthedocs.io/en/latest/getting_started.html gave me this error

python version was 3.8.10
pyopendds version is 0.1.0

error:
make
[ 11%] Generating basicTypeSupportImpl.h, basicTypeSupportImpl.cpp, basicTypeSupport.idl
[ 22%] Generating basicTypeSupportC.h, basicTypeSupportC.inl, basicTypeSupportS.h, basicTypeSupportC.cpp
[ 33%] Generating basicC.h, basicC.inl, basicS.h, basicC.cpp
Scanning dependencies of target basic_idl
[ 44%] Building CXX object CMakeFiles/basic_idl.dir/basicTypeSupportImpl.cpp.o
In file included from /home/crl-ai/anaconda3/envs/Ben_VA/x86_64-conda-linux-gnu/include/c++/9.3.0/bits/locale_facets_nonio.h:39,
from /home/crl-ai/anaconda3/envs/Ben_VA/x86_64-conda-linux-gnu/include/c++/9.3.0/locale:41,
from /home/crl-ai/anaconda3/envs/Ben_VA/x86_64-conda-linux-gnu/include/c++/9.3.0/iomanip:43,
from /home/crl-ai/IPSS/OpenDDS-3.17/dds/DCPS/SafetyProfileStreams.h:13,
from /home/crl-ai/IPSS/OpenDDS-3.17/dds/DCPS/TypeSupportImpl.h:15,
from /home/crl-ai/IPSS/OpenDDS-3.17/dds/DCPS/XTypes/TypeLookupService.h:13,
from /home/crl-ai/IPSS/OpenDDS-3.17/dds/DCPS/Discovery.h:16,
from /home/crl-ai/IPSS/OpenDDS-3.17/dds/DCPS/Service_Participant.h:13,
from /home/crl-ai/IPSS/pyopendds-master/tests/basic_test/build/basicTypeSupportImpl.h:14,
from /home/crl-ai/IPSS/pyopendds-master/tests/basic_test/build/basicTypeSupportImpl.cpp:2:
/home/crl-ai/anaconda3/envs/Ben_VA/x86_64-conda-linux-gnu/include/c++/9.3.0/ctime:80:11: error: '::timespec_get' has not been declared
80 | using ::timespec_get;
| ^~~~~~~~~~~~
make[2]: *** [CMakeFiles/basic_idl.dir/build.make:124: CMakeFiles/basic_idl.dir/basicTypeSupportImpl.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:97: CMakeFiles/basic_idl.dir/all] Error 2
make: *** [Makefile:103: all] Error 2

Use pyopendds will throw Segmentation fault (core dumped) at some env.

./publisher -DCPSConfigFile ../rtps.ini
(538547|538550) WARNING: MulticastManager::process: failed to join group 239.255.0.1:15902 on veth0643a40/0.0.0.0 (0x557594c04fd8 joined count 3): Unknown error -3
(538547|538550) WARNING: MulticastManager::process: failed to join group 239.255.0.1:15900 on veth0643a40/0.0.0.0 (0x557594b99e58 joined count 3): Unknown error -3
Segmentation fault (core dumped)

I have tested from dds-3.18 to dds-3.24 .

Test at ubuntu 20.04, g++ 9.3

The Segmentation fault at :
DDS::DataWriter_var writer =
publisher->create_datawriter(topic.in(), qos, 0, OpenDDS::DCPS::DEFAULT_STATUS_MASK);

But I have test use docker image objectcomputing/opendds_ros2 and ghcr.io/objectcomputing/opendds:latest-release, the error is not exist.

I don't know which cause the error.

build.sh Fails Because of IDL Library

I read the installation instructions and installed the corresponding OPENDDS and python3.6.this error occurs when bash build.sh is executed:

(.venv) llll@ubuntu:~/DDS/py/pyopendds$ bash build.sh 
Obtaining file:///home/llll/DDS/py/pyopendds
Installing collected packages: pyopendds
  Running setup.py develop for pyopendds
    ERROR: Complete output from command ~/.venv/bin/python -c 'import setuptools, tokenize;__file__='"'"'~/DDS/py/pyopendds/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' develop --no-deps:
    ERROR: running develop
    running egg_info
    writing pyopendds.egg-info/PKG-INFO
    writing dependency_links to pyopendds.egg-info/dependency_links.txt
    writing top-level names to pyopendds.egg-info/top_level.txt
    file pyopendds.py (for module pyopendds) not found
    reading manifest file 'pyopendds.egg-info/SOURCES.txt'
    writing manifest file 'pyopendds.egg-info/SOURCES.txt'
    running build_ext
    cmake version 3.9.2
    
    CMake suite maintained and supported by Kitware (kitware.com/cmake).
    -- The C compiler identification is GNU 5.4.0
    -- The CXX compiler identification is GNU 5.4.0
    -- Check for working C compiler: /usr/bin/cc
    -- Check for working C compiler: /usr/bin/cc -- works
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- Check for working CXX compiler: /usr/bin/c++
    -- Check for working CXX compiler: /usr/bin/c++ -- works
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Found PythonInterp: /home/llll/.venv/bin/python (found version "3.6.2")
    -- Found PythonLibs: /usr/local/lib/libpython3.6m.a (found version "3.6.2")
    find find find find
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /home/llll/DDS/py/pyopendds/build/temp.linux-x86_64-3.6
    [ 33%] Generating _pyopendds_export.h
    Scanning dependencies of target _pyopendds
    [ 66%] Building CXX object CMakeFiles/_pyopendds.dir/_pyopendds.cpp.o
    make[2]: *** No rule to make target '../../test/build/libreading.so', needed by '../lib.linux-x86_64-3.6/_pyopendds.cpython-36m-x86_64-linux-gnu.so'.  Stop.
    CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/_pyopendds.dir/all' failed
    make[1]: *** [CMakeFiles/_pyopendds.dir/all] Error 2
    Makefile:83: recipe for target 'all' failed
    make: *** [all] Error 2
    error: "cmake --build . --config Debug" returned non-zero result: 2
    ----------------------------------------
ERROR: Command "~/.venv/bin/python -c 'import setuptools, tokenize;__file__='"'"'~/DDS/py/pyopendds/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' develop --no-deps" failed with error code 1 in /home/llll/DDS/py/pyopendds/

Error after typing "make" command

Hello,

I have the following error after I type the make command:

dannyguest@Dannys-MacBook-Pro OpenDDS-3.18 % make

GNUmakefile: /Users/dannyguest/OpenDDS-3.18/dds/DCPS/GNUmakefile.OpenDDS_Util MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/dds/idl/GNUmakefile.opendds_idl MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/dds/GNUmakefile.OpenDDS_Dcps MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/DevGuideExamples/DCPS/Messenger.minimal/GNUmakefile.MessengerMinimal_Idl MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/tools/modeling/codegen/model/GNUmakefile.Model_Lib MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/dds/DCPS/transport/tcp/GNUmakefile.OpenDDS_Tcp MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/dds/DCPS/InfoRepoDiscovery/GNUmakefile.OpenDDS_InfoRepoDiscovery MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/DevGuideExamples/DCPS/Messenger.minimal/GNUmakefile.MessengerMinimal_Publisher MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/DevGuideExamples/DCPS/Messenger.minimal/GNUmakefile.MessengerMinimal_Subscriber MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/DevGuideExamples/DCPS/Messenger/GNUmakefile.Messenger_Idl MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/dds/DCPS/RTPS/GNUmakefile.OpenDDS_Rtps MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/dds/DCPS/transport/rtps_udp/GNUmakefile.OpenDDS_Rtps_Udp MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/DevGuideExamples/DCPS/Messenger/GNUmakefile.Messenger_Publisher MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/DevGuideExamples/DCPS/Messenger/GNUmakefile.Messenger_Subscriber MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/DevGuideExamples/DCPS/Messenger_ZeroCopy/GNUmakefile.Messenger_ZeroCopy_Idl MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/DevGuideExamples/DCPS/Messenger_ZeroCopy/GNUmakefile.Messenger_ZeroCopy_Publisher MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/DevGuideExamples/DCPS/Messenger_ZeroCopy/GNUmakefile.Messenger_ZeroCopy_Subscriber MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/dds/FACE/GNUmakefile.OpenDDS_FACE MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/DevGuideExamples/FACE/Simple/GNUmakefile.FaceMessenger_Idl MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/DevGuideExamples/FACE/Simple/GNUmakefile.FaceMessenger_Callbacksubscriber MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/DevGuideExamples/FACE/Simple/GNUmakefile.FaceMessenger_Publisher MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/DevGuideExamples/FACE/Simple/GNUmakefile.FaceMessenger_Subscriber MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/dds/DCPS/transport/multicast/GNUmakefile.OpenDDS_Multicast MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/dds/DCPS/transport/shmem/GNUmakefile.OpenDDS_Shmem MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/dds/DCPS/transport/udp/GNUmakefile.OpenDDS_Udp MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/dds/InfoRepo/GNUmakefile.DCPSInfoRepo_Lib MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/dds/InfoRepo/GNUmakefile.DCPSInfoRepo_Federator MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/dds/InfoRepo/GNUmakefile.DCPSInfoRepo_Serv MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/dds/InfoRepo/GNUmakefile.DCPSInfoRepo_Main MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/dds/monitor/GNUmakefile.OpenDDS_monitor MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/tools/dcpsinfo_dump/GNUmakefile.dcpsinfo_dump MAKEFLAGS=


GNUmakefile: /Users/dannyguest/OpenDDS-3.18/tools/repoctl/GNUmakefile.repoctl MAKEFLAGS=

dannyguest@Dannys-MacBook-Pro OpenDDS-3.18 % cd /Users/dannyguest/Downloads/pyopendds-master
dannyguest@Dannys-MacBook-Pro pyopendds-master % cd tests/basic_test
dannyguest@Dannys-MacBook-Pro basic_test % mkdir build                       
mkdir: build: File exists
dannyguest@Dannys-MacBook-Pro basic_test % cd build                          
dannyguest@Dannys-MacBook-Pro build % cmake ..                          
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/dannyguest/Downloads/pyopendds-master/tests/basic_test/build
dannyguest@Dannys-MacBook-Pro build % make
Consolidate compiler generated dependencies of target basic_idl
[ 11%] Building CXX object CMakeFiles/basic_idl.dir/basicTypeSupportImpl.cpp.o
In file included from /Users/dannyguest/Downloads/pyopendds-master/tests/basic_test/build/basicTypeSupportImpl.cpp:2:
In file included from /Users/dannyguest/Downloads/pyopendds-master/tests/basic_test/build/basicTypeSupportImpl.h:10:
In file included from /Users/dannyguest/OpenDDS-3.18/dds/DCPS/Definitions.h:9:
In file included from /Users/dannyguest/OpenDDS-3.18/dds/DCPS/Cached_Allocator_With_Overflow_T.h:16:
In file included from /Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Malloc_T.h:16:
In file included from /Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Malloc.h:22:
In file included from /Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Log_Category.h:17:
In file included from /Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Log_Msg.h:21:
/Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Global_Macros.h:61:3: error: ACE/TAO require C++11 compliance, please upgrade your compiler and/or fix the platform configuration for your environment
# error ACE/TAO require C++11 compliance, please upgrade your compiler and/or fix the platform configuration for your environment
  ^
In file included from /Users/dannyguest/Downloads/pyopendds-master/tests/basic_test/build/basicTypeSupportImpl.cpp:2:
In file included from /Users/dannyguest/Downloads/pyopendds-master/tests/basic_test/build/basicTypeSupportImpl.h:10:
In file included from /Users/dannyguest/OpenDDS-3.18/dds/DCPS/Definitions.h:9:
In file included from /Users/dannyguest/OpenDDS-3.18/dds/DCPS/Cached_Allocator_With_Overflow_T.h:16:
In file included from /Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Malloc_T.h:16:
In file included from /Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Malloc.h:22:
In file included from /Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Log_Category.h:17:
In file included from /Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Log_Msg.h:938:
In file included from /Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Log_Msg.inl:3:
In file included from /Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/OS_NS_unistd.h:25:
/Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Time_Value.h:121:33: error: expected ';' at end of declaration
    std::chrono::seconds const s {
                                ^
/Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Time_Value.h:124:41: error: expected ';' at end of declaration
    std::chrono::microseconds const usec {
                                        ^
In file included from /Users/dannyguest/Downloads/pyopendds-master/tests/basic_test/build/basicTypeSupportImpl.cpp:2:
In file included from /Users/dannyguest/Downloads/pyopendds-master/tests/basic_test/build/basicTypeSupportImpl.h:10:
In file included from /Users/dannyguest/OpenDDS-3.18/dds/DCPS/Definitions.h:9:
In file included from /Users/dannyguest/OpenDDS-3.18/dds/DCPS/Cached_Allocator_With_Overflow_T.h:16:
In file included from /Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Malloc_T.h:16:
In file included from /Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Malloc.h:22:
In file included from /Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Log_Category.h:17:
In file included from /Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Log_Msg.h:938:
In file included from /Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Log_Msg.inl:3:
In file included from /Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/OS_NS_unistd.h:25:
In file included from /Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Time_Value.h:521:
/Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Time_Value.inl:408:46: error: expected '(' for function-style cast or type construction
      ns = duration_cast<nanoseconds>(seconds{tv.sec ()}) +
                                      ~~~~~~~^
/Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Time_Value.inl:409:48: error: expected '(' for function-style cast or type construction
        duration_cast<nanoseconds>(microseconds{tv.usec()});
                                   ~~~~~~~~~~~~^
/Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Time_Value.inl:416:46: error: expected '(' for function-style cast or type construction
      us= duration_cast<microseconds>(seconds{tv.sec ()}) +
                                      ~~~~~~~^
/Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Time_Value.inl:417:21: error: expected '(' for function-style cast or type construction
        microseconds{tv.usec()};
        ~~~~~~~~~~~~^
/Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Time_Value.inl:424:47: error: expected '(' for function-style cast or type construction
      ms = duration_cast<milliseconds>(seconds{tv.sec ()}) +
                                       ~~~~~~~^
/Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Time_Value.inl:425:49: error: expected '(' for function-style cast or type construction
        duration_cast<milliseconds>(microseconds{tv.usec()});
                                    ~~~~~~~~~~~~^
/Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Time_Value.inl:432:18: error: expected '(' for function-style cast or type construction
      s = seconds{tv.sec ()} +
          ~~~~~~~^
/Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Time_Value.inl:440:41: error: expected '(' for function-style cast or type construction
      m = duration_cast<minutes>(seconds{tv.sec ()}) +
                                 ~~~~~~~^
/Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Time_Value.inl:441:44: error: expected '(' for function-style cast or type construction
        duration_cast<minutes>(microseconds{tv.usec()});
                               ~~~~~~~~~~~~^
/Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Time_Value.inl:448:39: error: expected '(' for function-style cast or type construction
      h = duration_cast<hours>(seconds{tv.sec ()}) +
                               ~~~~~~~^
/Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Time_Value.inl:449:42: error: expected '(' for function-style cast or type construction
        duration_cast<hours>(microseconds{tv.usec()});
                             ~~~~~~~~~~~~^
/Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Time_Value.inl:457:47: error: expected '(' for function-style cast or type construction
      ns += duration_cast<nanoseconds>(seconds{tv.sec ()}) +
                                       ~~~~~~~^
/Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Time_Value.inl:458:48: error: expected '(' for function-style cast or type construction
        duration_cast<nanoseconds>(microseconds{tv.usec()});
                                   ~~~~~~~~~~~~^
/Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Time_Value.inl:465:48: error: expected '(' for function-style cast or type construction
      us += duration_cast<microseconds>(seconds{tv.sec ()}) +
                                        ~~~~~~~^
/Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Time_Value.inl:466:21: error: expected '(' for function-style cast or type construction
        microseconds{tv.usec()};
        ~~~~~~~~~~~~^
/Users/dannyguest/OpenDDS-3.18/ACE_wrappers/ace/Time_Value.inl:473:48: error: expected '(' for function-style cast or type construction
      ms += duration_cast<milliseconds>(seconds{tv.sec ()}) +
                                        ~~~~~~~^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make[2]: *** [CMakeFiles/basic_idl.dir/basicTypeSupportImpl.cpp.o] Error 1
make[1]: *** [CMakeFiles/basic_idl.dir/all] Error 2
make: *** [all] Error 2

Is there any way to solve it?

Thank you in advance!

Windows and macOS in Actions

Right now I'm just testing Ubuntu 18.04 (will be 20.04 after #34). macOS and Windows would be great. There are two problems I see with this:

  • I've never tested on Windows. macOS has had limited testing now even though I don't have real access to macOS. For Windows it's just that I've never sat down and tried it. After #34 the script for running the basic test will be in Python so that will help.

  • Another problem is that right now there's no infrastructure to get OpenDDS for macOS and Windows. Right now I'm using a .deb file build and committed in https://github.com/iguessthislldo/OpenDDS-Debian. It be great if there were regular prebuilt binaries that could just be pulled in. It could be hosted somewhere in the scoreboard instead of a git repo which is less than ideal. The alternative could be building and caching OpenDDS like ACE/TAO and other dependencies are cached in the OpenDDS Actions. However this shouldn't be something PyOpenDDS should be concerned with. This could also be related to #29.

Better Support Multiple Participants with RTPS

OpenDDS participants can't share RTPS transports. Right now I'm just creating one transport, so it would be problematic if more than one participant was created. It would be nice if PyOpenDDS handled this for you.

`wait_for` is Holding Up `SIGINT`

While reviewing #20 where a wait_for currently times out after a minute, I noticed that hitting control-c didn't do anything. Well it did work eventually after the timeout happened.

Waiting for Subscriber...
^C^C^C^C^C^C^C^C^C^C^C^CTraceback (most recent call last):
  File "publisher.py", line 20, in <module>
    writer.wait_for(StatusKind.PUBLICATION_MATCHED, timedelta(seconds=60))
  File ".../pyopendds/pyopendds/DataWriter.py", line 26, in wait_for
    return datareader_wait_for(self, status, *normalize_time_duration(timeout))
  File ".../pyopendds/pyopendds/exceptions.py", line 34, in check
    @classmethod
KeyboardInterrupt

I'd have to research this more, but it looks like what ever signal handler CPython has doesn't interrupt native extension code. This makes sense because it has to handle it by making a KeyboardInterrupt in Python, but is annoying since it's different from how a C++ OpenDDS application would behave. The correct solution probably involves avoiding OpenDDS's implementation of wait_for and creating an implementation in Python.

Support C++11 IDL Mapping

Will need to get logic with deciding on what mapping is being used. Maybe also add that information into OpenDDS is not already there, so PyOpenDDS can select automatically.

Provide OpenDDS and CMake?

There are packages like cmake that can provide prebuilt binaries. Maybe it's possible to provide OpenDDS libraries and binaries using a Python wheel, in pyopendds itself or maybe better in a separate opendds package. Also maybe cmake should be added to the dependencies so the user doesn't have to worry about having it.

If PyOpenDDS provides OpenDDS and CMake it should be easy or even automatic detected to not use ones from the Python packages.

DDS API Implementation

This is a rough list for tracking what parts of the DDS API that have been implemented so far.

  • QOS
  • Builtin Topics
  • Listeners
    • I will actually have to figure out what is the best way to do this in Python
  • DomainParticipantFactory
    • create_participant
    • delete_participant
    • get_instance
    • lookup_participant
    • set_default_participant_qos
    • get_default_participant_qos
    • get_qos
    • set_qos
  • DomainParticipant
    • on_inconsistent_topic
    • on_liveliness_lost
    • on_offered_deadline_missed
    • on_offered_incompatible_qos
    • on_data_on_readers
    • on_sample_lost
    • on_data_available
    • on_sample_rejected
    • on_liveliness_changed
    • on_requested_deadline_missed
    • on_requested_incompatible_qos
    • on_publication_matched
    • on_subscription_matched
  • Subscriber
    • get_qos
    • set_qos
    • get_listener
    • set_listener
    • create_datareader
      • Works, but still need to be able to set QOS, listener, and mask.
    • delete_datareader
    • lookup_datareader
    • begin_access
    • end_access
    • get_datareaders
    • notify_datareaders
    • get_participant
    • delete_contained_entities
    • set_default_datareader_qos
    • get_default_datareader_qos
    • copy_from_topic_qos
  • DataReader
    • get_qos
    • set_qos
    • get_listener
    • set_listener
    • read
    • take
    • read_w_condition
    • take_w_condition
    • read_next_sample
    • take_next_sample
      • Works, but does not handle invalid data or anything else to do with SampleInfo
    • read_instance
    • take_instance
    • read_next_instance
    • take_next_instance
    • read_next_instance_w_condition
    • take_next_instance_w_condition
    • return_loan
    • get_key_value
    • lookup_instance
    • create_readcondition
    • create_querycondition
    • delete_readcondition
    • get_liveliness_changed_status
    • get_requested_deadline_missed_status
    • get_requested_incompatible_qos_status
    • get_sample_lost_status
    • get_sample_rejected_status
    • get_subscription_matched_status
    • get_topicdescription
    • get_subscriber
    • delete_contained_entities
    • wait_for_historical_data
    • get_matched_publication_data
    • get_matched_publications
  • Publisher
  • DataWriter
  • MultiTopic
  • ContentFilteredTopic
  • Topic

Failed to build pyopendds

Hi i tried the following method you suggested.But still facing the same issue.

set CMAKE_PREFIX_PATH=D:\OpenDDS\OpenDDS-3.25

C:\Users\1037591>cd pyopendds
C:\Users\1037591\pyopendds>pip install pyopendds

Defaulting to user installation because normal site-packages is not writeable

Collecting pyopendds

Using cached pyopendds-0.2.0.tar.gz (37 kB)

Installing build dependencies ... done

Getting requirements to build wheel ... done

Installing backend dependencies ... done

Preparing metadata (pyproject.toml) ... done

Collecting jinja2 (from pyopendds)

Using cached Jinja2-3.1.2-py3-none-any.whl (133 kB)

Collecting cmake-build-extension (from pyopendds)

Using cached cmake_build_extension-0.5.1-py3-none-any.whl (13 kB)

Collecting cmake (from cmake-build-extension->pyopendds)

Obtaining dependency information for cmake from https://files.pythonhosted.org/packages/d4/f3/cc82bb2ef5e9d3396007a18ce2c4b5fa57d37ff95e36174b478df6fc0918/cmake-3.27.5-py2.py3-none-win_amd64.whl.metadata

Using cached cmake-3.27.5-py2.py3-none-win_amd64.whl.metadata (6.8 kB)

Collecting ninja (from cmake-build-extension->pyopendds)

Using cached ninja-1.11.1-py2.py3-none-win_amd64.whl (313 kB)

Collecting GitPython (from cmake-build-extension->pyopendds)

Obtaining dependency information for GitPython from https://files.pythonhosted.org/packages/8a/7e/20f7e45878b5aed34320fbeeae8f78acc806e7bd708d00b1c6e64b016f5b/GitPython-3.1.37-py3-none-any.whl.metadata

Using cached GitPython-3.1.37-py3-none-any.whl.metadata (12 kB)

Collecting setuptools-scm (from cmake-build-extension->pyopendds)

Obtaining dependency information for setuptools-scm from https://files.pythonhosted.org/packages/ca/04/4ea91c627355ae6d976bf7f1fc2815372a96b1b87bf290c8d726d10a08a1/setuptools_scm-8.0.3-py3-none-any.whl.metadata

Using cached setuptools_scm-8.0.3-py3-none-any.whl.metadata (6.1 kB)

Collecting MarkupSafe>=2.0 (from jinja2->pyopendds)

Obtaining dependency information for MarkupSafe>=2.0 from https://files.pythonhosted.org/packages/be/bb/08b85bc194034efbf572e70c3951549c8eca0ada25363afc154386b5390a/MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl.metadata

Using cached MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl.metadata (3.1 kB)

Collecting gitdb<5,>=4.0.1 (from GitPython->cmake-build-extension->pyopendds)

Using cached gitdb-4.0.10-py3-none-any.whl (62 kB)

Collecting packaging>=20 (from setuptools-scm->cmake-build-extension->pyopendds)

Using cached packaging-23.1-py3-none-any.whl (48 kB)

Requirement already satisfied: setuptools in c:\users\1037591\appdata\roaming\python\python311\site-packages (from setuptools-scm->cmake-build-extension->pyopendds) (68.2.2)

Collecting smmap<6,>=3.0.1 (from gitdb<5,>=4.0.1->GitPython->cmake-build-extension->pyopendds)

Obtaining dependency information for smmap<6,>=3.0.1 from https://files.pythonhosted.org/packages/a7/a5/10f97f73544edcdef54409f1d839f6049a0d79df68adbc1ceb24d1aaca42/smmap-5.0.1-py3-none-any.whl.metadata

Using cached smmap-5.0.1-py3-none-any.whl.metadata (4.3 kB)

Using cached MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl (17 kB)

Using cached cmake-3.27.5-py2.py3-none-win_amd64.whl (34.6 MB)

Using cached GitPython-3.1.37-py3-none-any.whl (190 kB)

Using cached setuptools_scm-8.0.3-py3-none-any.whl (41 kB)

Using cached smmap-5.0.1-py3-none-any.whl (24 kB)

Building wheels for collected packages: pyopendds

Building wheel for pyopendds (pyproject.toml) ... error

error: subprocess-exited-with-error

× Building wheel for pyopendds (pyproject.toml) did not run successfully.

│ exit code: 1

╰─> [214 lines of output]

  ERROR setuptools_scm._integration.setuptools pyproject.toml does not contain a tool.setuptools_scm section

  Traceback (most recent call last):

    File "C:\Users\1037591\AppData\Local\Temp\pip-build-env-ewu2s8xp\overlay\Lib\site-packages\setuptools_scm\_integration\pyproject_reading.py", line 53, in read_pyproject

      section = defn.get("tool", {})[tool_name]

                ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^

  KeyError: 'setuptools_scm'



  The above exception was the direct cause of the following exception:



  Traceback (most recent call last):

    File "C:\Users\1037591\AppData\Local\Temp\pip-build-env-ewu2s8xp\overlay\Lib\site-packages\setuptools_scm\_integration\setuptools.py", line 121, in infer_version

      config = _config.Configuration.from_file(dist_name=dist_name)

               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    File "C:\Users\1037591\AppData\Local\Temp\pip-build-env-ewu2s8xp\overlay\Lib\site-packages\setuptools_scm\_config.py", line 128, in from_file

      pyproject_data = _read_pyproject(name, _load_toml=_load_toml)

                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    File "C:\Users\1037591\AppData\Local\Temp\pip-build-env-ewu2s8xp\overlay\Lib\site-packages\setuptools_scm\_integration\pyproject_reading.py", line 55, in read_pyproject

      raise LookupError(f"{name} does not contain a tool.{tool_name} section") from e

  LookupError: pyproject.toml does not contain a tool.setuptools_scm section

  C:\Users\1037591\AppData\Local\Temp\pip-build-env-ewu2s8xp\overlay\Lib\site-packages\setuptools\config\setupcfg.py:293: _DeprecatedConfig: Deprecated config in `setup.cfg`

  !!



          ********************************************************************************

          The license_file parameter is deprecated, use license_files instead.



          By 2023-Oct-30, you need to update your project and remove deprecated calls

          or your builds will no longer be supported.



          See https://setuptools.pypa.io/en/latest/userguide/declarative_config.html for details.

          ********************************************************************************



  !!

    parsed = self.parsers.get(option_name, lambda x: x)(value)

  running bdist_wheel

  running build

  running build_py

  creating build

  creating build\lib.win-amd64-cpython-311

  creating build\lib.win-amd64-cpython-311\pyopendds

  copying pyopendds\constants.py -> build\lib.win-amd64-cpython-311\pyopendds

  copying pyopendds\DataReader.py -> build\lib.win-amd64-cpython-311\pyopendds

  copying pyopendds\DataWriter.py -> build\lib.win-amd64-cpython-311\pyopendds

  copying pyopendds\DomainParticipant.py -> build\lib.win-amd64-cpython-311\pyopendds

  copying pyopendds\exceptions.py -> build\lib.win-amd64-cpython-311\pyopendds

  copying pyopendds\init_opendds.py -> build\lib.win-amd64-cpython-311\pyopendds

 copying pyopendds\Publisher.py -> build\lib.win-amd64-cpython-311\pyopendds

  copying pyopendds\Subscriber.py -> build\lib.win-amd64-cpython-311\pyopendds

  copying pyopendds\Topic.py -> build\lib.win-amd64-cpython-311\pyopendds

  copying pyopendds\util.py -> build\lib.win-amd64-cpython-311\pyopendds

  copying pyopendds\__init__.py -> build\lib.win-amd64-cpython-311\pyopendds

  creating build\lib.win-amd64-cpython-311\pyopendds\dev

  copying pyopendds\dev\util.py -> build\lib.win-amd64-cpython-311\pyopendds\dev

  copying pyopendds\dev\__init__.py -> build\lib.win-amd64-cpython-311\pyopendds\dev

  creating build\lib.win-amd64-cpython-311\pyopendds\dev\itl2py

  copying pyopendds\dev\itl2py\ast.py -> build\lib.win-amd64-cpython-311\pyopendds\dev\itl2py

  copying pyopendds\dev\itl2py\CppOutput.py -> build\lib.win-amd64-cpython-311\pyopendds\dev\itl2py

  copying pyopendds\dev\itl2py\generate.py -> build\lib.win-amd64-cpython-311\pyopendds\dev\itl2py

  copying pyopendds\dev\itl2py\itl.py -> build\lib.win-amd64-cpython-311\pyopendds\dev\itl2py

  copying pyopendds\dev\itl2py\Output.py -> build\lib.win-amd64-cpython-311\pyopendds\dev\itl2py

  copying pyopendds\dev\itl2py\PythonOutput.py -> build\lib.win-amd64-cpython-311\pyopendds\dev\itl2py

  copying pyopendds\dev\itl2py\__init__.py -> build\lib.win-amd64-cpython-311\pyopendds\dev\itl2py

  copying pyopendds\dev\itl2py\__main__.py -> build\lib.win-amd64-cpython-311\pyopendds\dev\itl2py

  creating build\lib.win-amd64-cpython-311\pyopendds\dev\include

  creating build\lib.win-amd64-cpython-311\pyopendds\dev\include\pyopendds

  copying pyopendds\dev\include\pyopendds\common.hpp -> build\lib.win-amd64-cpython-311\pyopendds\dev\include\pyopendds

  copying pyopendds\dev\include\pyopendds\user.hpp -> build\lib.win-amd64-cpython-311\pyopendds\dev\include\pyopendds

  creating build\lib.win-amd64-cpython-311\pyopendds\dev\itl2py\templates

  copying pyopendds\dev\itl2py\templates\CMakeLists.txt -> build\lib.win-amd64-cpython-311\pyopendds\dev\itl2py\templates

  copying pyopendds\dev\itl2py\templates\setup.py -> build\lib.win-amd64-cpython-311\pyopendds\dev\itl2py\templates

  copying pyopendds\dev\itl2py\templates\user.cpp -> build\lib.win-amd64-cpython-311\pyopendds\dev\itl2py\templates

  copying pyopendds\dev\itl2py\templates\user.py -> build\lib.win-amd64-cpython-311\pyopendds\dev\itl2py\templates

  running build_ext

  -- The CXX compiler identification is GNU 8.3.0

  -- Detecting CXX compiler ABI info

  -- Detecting CXX compiler ABI info - done

  -- Check for working CXX compiler: C:/Strawberry/c/bin/c++.exe - skipped

  -- Detecting CXX compile features

  -- Detecting CXX compile features - done

  -- Found Python3: C:/Program Files/Python311/libs/python311.lib (found version "3.11.5") found components: Development Development.Module Development.Embed

  -- Found Perl: C:/Strawberry/perl/bin/perl.exe (found version "5.32.1")

  CMake Deprecation Warning at D:/OpenDDS/OpenDDS-3.25/cmake/OpenDDSConfig.cmake:4 (cmake_minimum_required):

    Compatibility with CMake < 3.5 will be removed from a future version of

    CMake.



    Update the VERSION argument <min> value or use a ...<max> suffix to tell

    CMake that the project does not need compatibility with older versions.

  Call Stack (most recent call first):

    CMakeLists.txt:6 (find_package)





  CMake Deprecation Warning at D:/OpenDDS/OpenDDS-3.25/cmake/ace_group.cmake:4 (cmake_minimum_required):

    Compatibility with CMake < 3.5 will be removed from a future version of

    CMake.



    Update the VERSION argument <min> value or use a ...<max> suffix to tell

    CMake that the project does not need compatibility with older versions.

  Call Stack (most recent call first):

    D:/OpenDDS/OpenDDS-3.25/cmake/OpenDDSConfig.cmake:12 (include)

    CMakeLists.txt:6 (find_package)





  CMake Deprecation Warning at D:/OpenDDS/OpenDDS-3.25/cmake/import_common.cmake:11 (cmake_minimum_required):

    Compatibility with CMake < 3.5 will be removed from a future version of

    CMake.



    Update the VERSION argument <min> value or use a ...<max> suffix to tell

    CMake that the project does not need compatibility with older versions.

  Call Stack (most recent call first):

    D:/OpenDDS/OpenDDS-3.25/cmake/ace_group.cmake:11 (include)

    D:/OpenDDS/OpenDDS-3.25/cmake/OpenDDSConfig.cmake:12 (include)

    CMakeLists.txt:6 (find_package)





  --   The C compiler identification is GNU 8.3.0

  --   Detecting C compiler ABI info

  --   Detecting C compiler ABI info - done

  --   Check for working C compiler: C:/Strawberry/c/bin/gcc.exe - skipped

  --   Detecting C compile features

  --   Detecting C compile features - done

  --   Performing Test CMAKE_HAVE_LIBC_PTHREAD

  --   Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success

  --   Found Threads: TRUE

  CMake Deprecation Warning at D:/OpenDDS/OpenDDS-3.25/cmake/tao_group.cmake:4 (cmake_minimum_required):

    Compatibility with CMake < 3.5 will be removed from a future version of

    CMake.



    Update the VERSION argument <min> value or use a ...<max> suffix to tell

    CMake that the project does not need compatibility with older versions.

  Call Stack (most recent call first):

    D:/OpenDDS/OpenDDS-3.25/cmake/OpenDDSConfig.cmake:13 (include)

    CMakeLists.txt:6 (find_package)





  CMake Error at D:/OpenDDS/OpenDDS-3.25/cmake/import_common.cmake:250 (message):

    Missing required dependencies ACE_LIBRARY

  Call Stack (most recent call first):

    D:/OpenDDS/OpenDDS-3.25/cmake/OpenDDSConfig.cmake:202 (_opendds_found_required_deps)

    CMakeLists.txt:6 (find_package)





  CMake Error at CMakeLists.txt:6 (find_package):

    Found package configuration file:



      D:/OpenDDS/OpenDDS-3.25/cmake/OpenDDSConfig.cmake



    but it set OpenDDS_FOUND to FALSE so package "OpenDDS" is considered to be

    NOT FOUND.





  -- Configuring incomplete, errors occurred!



  ==> Configuring:

  $ cmake -S C:\Users\1037591\AppData\Local\Temp\pip-install-yk3q9vy9\pyopendds_1f9a3e71e43b4fe7971dfa02aa9c2858\pyopendds\ext -B C:\Users\1037591\AppData\Local\Temp\pip-install-yk3q9vy9\pyopendds_1f9a3e71e43b4fe7971dfa02aa9c2858\build\temp.win-amd64-cpython-311\Release__pyopendds -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=C:\Users\1037591\AppData\Local\Temp\pip-install-yk3q9vy9\pyopendds_1f9a3e71e43b4fe7971dfa02aa9c2858\build\lib.win-amd64-cpython-311\_pyopendds -DCMAKE_MAKE_PROGRAM=C:\Users\1037591\AppData\Local\Temp\pip-build-env-ewu2s8xp\overlay\Scripts\ninja.EXE -DPython3_ROOT_DIR=C:\Program Files\Python311 -DCALL_FROM_SETUP_PY:BOOL=ON -DPYOPENDDS_INCLUDE=C:\Users\1037591\AppData\Local\Temp\pip-install-yk3q9vy9\pyopendds_1f9a3e71e43b4fe7971dfa02aa9c2858\pyopendds\dev\include -DCMAKE_MAKE_PROGRAM=C:\Users\1037591\AppData\Local\Temp\pip-build-env-ewu2s8xp\overlay\Scripts\ninja.EXE



  ==> Building:

  $ cmake --build C:\Users\1037591\AppData\Local\Temp\pip-install-yk3q9vy9\pyopendds_1f9a3e71e43b4fe7971dfa02aa9c2858\build\temp.win-amd64-cpython-311\Release__pyopendds --config Release



  ==> Installing:

  $ cmake --install C:\Users\1037591\AppData\Local\Temp\pip-install-yk3q9vy9\pyopendds_1f9a3e71e43b4fe7971dfa02aa9c2858\build\temp.win-amd64-cpython-311\Release__pyopendds



  Traceback (most recent call last):

    File "C:\Program Files\Python311\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 353, in <module>

      main()

    File "C:\Program Files\Python311\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 335, in main

      json_out['return_val'] = hook(**hook_input['kwargs'])

                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

   File "C:\Program Files\Python311\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 251, in build_wheel

      return _build_backend().build_wheel(wheel_directory, config_settings,

             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    File "C:\Users\1037591\AppData\Local\Temp\pip-build-env-ewu2s8xp\overlay\Lib\site-packages\setuptools\build_meta.py", line 434, in build_wheel

      return self._build_with_temp_dir(

             ^^^^^^^^^^^^^^^^^^^^^^^^^^

    File "C:\Users\1037591\AppData\Local\Temp\pip-build-env-ewu2s8xp\overlay\Lib\site-packages\setuptools\build_meta.py", line 419, in _build_with_temp_dir

      self.run_setup()

    File "C:\Users\1037591\AppData\Local\Temp\pip-build-env-ewu2s8xp\overlay\Lib\site-packages\setuptools\build_meta.py", line 341, in run_setup

      exec(code, locals())

    File "<string>", line 19, in <module>

    File "C:\Users\1037591\AppData\Local\Temp\pip-build-env-ewu2s8xp\overlay\Lib\site-packages\setuptools\__init__.py", line 103, in setup

      return distutils.core.setup(**attrs)

             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    File "C:\Users\1037591\AppData\Local\Temp\pip-build-env-ewu2s8xp\overlay\Lib\site-packages\setuptools\_distutils\core.py", line 185, in setup

      return run_commands(dist)

             ^^^^^^^^^^^^^^^^^^

    File "C:\Users\1037591\AppData\Local\Temp\pip-build-env-ewu2s8xp\overlay\Lib\site-packages\setuptools\_distutils\core.py", line 201, in run_commands

      dist.run_commands()

    File "C:\Users\1037591\AppData\Local\Temp\pip-build-env-ewu2s8xp\overlay\Lib\site-packages\setuptools\_distutils\dist.py", line 969, in run_commands

      self.run_command(cmd)

    File "C:\Users\1037591\AppData\Local\Temp\pip-build-env-ewu2s8xp\overlay\Lib\site-packages\setuptools\dist.py", line 989, in run_command

      super().run_command(command)

    File "C:\Users\1037591\AppData\Local\Temp\pip-build-env-ewu2s8xp\overlay\Lib\site-packages\setuptools\_distutils\dist.py", line 988, in run_command

      cmd_obj.run()

    File "C:\Users\1037591\AppData\Local\Temp\pip-build-env-ewu2s8xp\normal\Lib\site-packages\wheel\bdist_wheel.py", line 364, in run

      self.run_command("build")

    File "C:\Users\1037591\AppData\Local\Temp\pip-build-env-ewu2s8xp\overlay\Lib\site-packages\setuptools\_distutils\cmd.py", line 318, in run_command

      self.distribution.run_command(command)

    File "C:\Users\1037591\AppData\Local\Temp\pip-build-env-ewu2s8xp\overlay\Lib\site-packages\setuptools\dist.py", line 989, in run_command

      super().run_command(command)

    File "C:\Users\1037591\AppData\Local\Temp\pip-build-env-ewu2s8xp\overlay\Lib\site-packages\setuptools\_distutils\dist.py", line 988, in run_command

      cmd_obj.run()

    File "C:\Users\1037591\AppData\Local\Temp\pip-build-env-ewu2s8xp\overlay\Lib\site-packages\setuptools\_distutils\command\build.py", line 131, in run

      self.run_command(cmd_name)

    File "C:\Users\1037591\AppData\Local\Temp\pip-build-env-ewu2s8xp\overlay\Lib\site-packages\setuptools\_distutils\cmd.py", line 318, in run_command

      self.distribution.run_command(command)

    File "C:\Users\1037591\AppData\Local\Temp\pip-build-env-ewu2s8xp\overlay\Lib\site-packages\setuptools\dist.py", line 989, in run_command

      super().run_command(command)

    File "C:\Users\1037591\AppData\Local\Temp\pip-build-env-ewu2s8xp\overlay\Lib\site-packages\setuptools\_distutils\dist.py", line 988, in run_command

      cmd_obj.run()

    File "C:\Users\1037591\AppData\Local\Temp\pip-build-env-ewu2s8xp\overlay\Lib\site-packages\cmake_build_extension\build_extension.py", line 113, in run

      self.build_extension(ext)

    File "C:\Users\1037591\AppData\Local\Temp\pip-build-env-ewu2s8xp\overlay\Lib\site-packages\cmake_build_extension\build_extension.py", line 229, in build_extension

      subprocess.check_call(configure_command)

    File "C:\Program Files\Python311\Lib\subprocess.py", line 413, in check_call

      raise CalledProcessError(retcode, cmd)

  subprocess.CalledProcessError: Command '['cmake', '-S', 'C:\\Users\\1037591\\AppData\\Local\\Temp\\pip-install-yk3q9vy9\\pyopendds_1f9a3e71e43b4fe7971dfa02aa9c2858\\pyopendds\\ext', '-B', 'C:\\Users\\1037591\\AppData\\Local\\Temp\\pip-install-yk3q9vy9\\pyopendds_1f9a3e71e43b4fe7971dfa02aa9c2858\\build\\temp.win-amd64-cpython-311\\Release__pyopendds', '-GNinja', '-DCMAKE_BUILD_TYPE=Release', '-DCMAKE_INSTALL_PREFIX:PATH=C:\\Users\\1037591\\AppData\\Local\\Temp\\pip-install-yk3q9vy9\\pyopendds_1f9a3e71e43b4fe7971dfa02aa9c2858\\build\\lib.win-amd64-cpython-311\\_pyopendds', '-DCMAKE_MAKE_PROGRAM=C:\\Users\\1037591\\AppData\\Local\\Temp\\pip-build-env-ewu2s8xp\\overlay\\Scripts\\ninja.EXE', '-DPython3_ROOT_DIR=C:\\Program Files\\Python311', '-DCALL_FROM_SETUP_PY:BOOL=ON', '-DPYOPENDDS_INCLUDE=C:\\Users\\1037591\\AppData\\Local\\Temp\\pip-install-yk3q9vy9\\pyopendds_1f9a3e71e43b4fe7971dfa02aa9c2858\\pyopendds\\dev\\include', '-DCMAKE_MAKE_PROGRAM=C:\\Users\\1037591\\AppData\\Local\\Temp\\pip-build-env-ewu2s8xp\\overlay\\Scripts\\ninja.EXE']' returned non-zero exit status 1.

  [end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.

ERROR: Failed building wheel for pyopendds

ERROR: Could not build wheels for pyopendds, which is required to install pyproject.toml-based projects

hi I am having very interested in pyopendds

Hi my name is hyein, uni student in South Korea. I'm here submitting new issue to ask you something about this project.
I am working in a lab and my professor told me to use opendds using python.
From searching Internet Your code was the only code for pyopendds.
I have read lots of code u have updated . It was really amazing.
Now i'm trying to study from this code and got some questions.
It will be really helpful for me if you reply me back.
The first thing i am curious is this . Do I have to be downloaded opendds before using this code? and if it has to be, the readme was little difficault for me to understand. Could you explain more details?(like sort of routes or files location )
The second thing is that i couldnt find about the publisher. In Readme it says that i have to use the code in test file but in that file there is only subscriber.py but the publisher was c++. Is there a publisher.py to use with subscriber.py?
Final thing is about the whole program. It could be a similar question with the first one. Dose this program work alone? or work with OpenDDS. If it works with OpenDDS how do i have to connect with it??

PyOpenDDS is really hard project for me as i am only third grade in university.
If you give me reply it will be realllllllly helpful more than else.
I will wait for it. Thank you for reading. :)

Document and Automate the Release Process

The release process for PyOpenDDS is small compared to OpenDDS, but it took me a bit longer than I'd like to figure out how to do it for 0.2 and even then I still made a mistake: https://pyopendds.readthedocs.io/_/downloads/en/v0.2.0/pdf/ says it's "0.2.0-dev". So it would help a lot to document and automate much of the release like OpenDDS already does. This should include:

  • Create a document in the sphinx docs that documents how to do a release.
  • Have Sphinx and the Python package use the same source for what the version is.
  • Create or use an existing system for recording the changes made between releases and compiling those changes into a changelog for the release.
  • Create or use a script that automates most, if not all of the release. Something like https://zestreleaser.readthedocs.io/en/latest/ maybe that exactly. It would have to:
    • Update the changelog (created in previous task)
    • Update the single version definition (created in previous task)
    • Commit those changes to git, create a release tag, and push
    • Create the source distribution and upload it to PyPi
    • Create the release in GitHub using their API
    • Activate the tag on Readthedocs using their API
    • Update files to the next version
    • Commit those changes to git and push

Some of these like the changelog (NEWS in OpenDDS) and readthedocs could be prototypes for OpenDDS, which lack automation for those tasks.

make error in MacOS 12.4 Macbook Pro 2021 M1x

I got the error in my Mac, how to solve the problem?

make
...
"virtual thunk to OpenDDS::DCPS::DataWriterImpl::notify_publication_lost(OpenDDS::DCPS::ReaderIdSeq const&)", referenced from:
vtable for OpenDDS::DCPS::DataWriterImpl_Tbasic::Reading in basicTypeSupportImpl.cpp.o
construction vtable for OpenDDS::DCPS::DataWriterImpl-in-OpenDDS::DCPS::DataWriterImpl_Tbasic::Reading in basicTypeSupportImpl.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [libbasic_idl.dylib] Error 1
make[1]: *** [CMakeFiles/basic_idl.dir/all] Error 2
make: *** [all] Error 2

Error after running command "basic_idl_DIR=$(realpath ..) pip install ."

I'm getting the following error after running this command: "basic_idl_DIR=$(realpath ..) pip install .":

dannyguest@Dannys-MacBook-Pro build % itl2py -o basic_output basic_idl basic.itl
dannyguest@Dannys-MacBook-Pro build % cd basic_output
dannyguest@Dannys-MacBook-Pro basic_output % basic_idl_DIR=$(realpath ..) pip install .
zsh: command not found: realpath
Processing /Users/dannyguest/Downloads/pyopendds/tests/basic_test/build/basic_output
  DEPRECATION: A future pip version will change local packages to be built in-place without first copying to a temporary directory. We recommend you use --use-feature=in-tree-build to test your packages with this new behavior before it becomes the default.
   pip 21.3 will remove support for this functionality. You can find discussion regarding this at https://github.com/pypa/pip/issues/7555.
Requirement already satisfied: pyopendds in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from pybasic==0.0.0) (0.1.0)
Requirement already satisfied: jinja2 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from pyopendds->pybasic==0.0.0) (3.0.1)
Requirement already satisfied: MarkupSafe>=2.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from jinja2->pyopendds->pybasic==0.0.0) (2.0.1)
Building wheels for collected packages: pybasic
  Building wheel for pybasic (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /Library/Frameworks/Python.framework/Versions/3.9/bin/python3.9 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/zr/2_q9sztd3rgcyn9ztx1r5_7c0000gn/T/pip-req-build-5nx8fd0e/setup.py'"'"'; __file__='"'"'/private/var/folders/zr/2_q9sztd3rgcyn9ztx1r5_7c0000gn/T/pip-req-build-5nx8fd0e/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /private/var/folders/zr/2_q9sztd3rgcyn9ztx1r5_7c0000gn/T/pip-wheel-8wvnvr0m
       cwd: /private/var/folders/zr/2_q9sztd3rgcyn9ztx1r5_7c0000gn/T/pip-req-build-5nx8fd0e/
  Complete output (43 lines):
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.macosx-10.9-x86_64-3.9
  creating build/lib.macosx-10.9-x86_64-3.9/pybasic
  copying pybasic/__init__.py -> build/lib.macosx-10.9-x86_64-3.9/pybasic
  creating build/lib.macosx-10.9-x86_64-3.9/pybasic/basic
  copying pybasic/basic/__init__.py -> build/lib.macosx-10.9-x86_64-3.9/pybasic/basic
  running build_ext
  -- The CXX compiler identification is AppleClang 12.0.5.12050022
  -- Detecting CXX compiler ABI info
  -- Detecting CXX compiler ABI info - done
  -- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ - skipped
  -- Detecting CXX compile features
  -- Detecting CXX compile features - done
  -- Found Python3: /Library/Frameworks/Python.framework/Versions/3.9/include/python3.9 (found suitable exact version "3.9.2") found components: Development Development.Module Development.Embed
  -- Looking for C++ include pthread.h
  -- Looking for C++ include pthread.h - found
  -- Performing Test CMAKE_HAVE_LIBC_PTHREAD
  -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
  -- Found Threads: TRUE
  CMake Error at CMakeLists.txt:11 (find_package):
    By not providing "Findbasic_idl.cmake" in CMAKE_MODULE_PATH this project
    has asked CMake to find a package configuration file provided by
    "basic_idl", but CMake did not find one.
  
    Could not find a package configuration file provided by "basic_idl" with
    any of the following names:
  
      basic_idlConfig.cmake
      basic_idl-config.cmake
  
    Add the installation prefix of "basic_idl" to CMAKE_PREFIX_PATH or set
    "basic_idl_DIR" to a directory containing one of the above files.  If
    "basic_idl" provides a separate development package or SDK, be sure it has
    been installed.
  
  
  -- Configuring incomplete, errors occurred!
  See also "/private/var/folders/zr/2_q9sztd3rgcyn9ztx1r5_7c0000gn/T/pip-req-build-5nx8fd0e/build/temp.macosx-10.9-x86_64-3.9/CMakeFiles/CMakeOutput.log".
  See also "/private/var/folders/zr/2_q9sztd3rgcyn9ztx1r5_7c0000gn/T/pip-req-build-5nx8fd0e/build/temp.macosx-10.9-x86_64-3.9/CMakeFiles/CMakeError.log".
  error: "cmake /private/var/folders/zr/2_q9sztd3rgcyn9ztx1r5_7c0000gn/T/pip-req-build-5nx8fd0e -DCMAKE_BUILD_TYPE=Debug -DCMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG=/private/var/folders/zr/2_q9sztd3rgcyn9ztx1r5_7c0000gn/T/pip-req-build-5nx8fd0e/build/lib.macosx-10.9-x86_64-3.9 -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG=build/temp.macosx-10.9-x86_64-3.9 -DPYOPENDDS_PYTHON_VERSION=3.9.2 -DPYOPENDDS_INCLUDE=/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pyopendds/dev/include" returned non-zero result: 1
  ----------------------------------------
  ERROR: Failed building wheel for pybasic
  Running setup.py clean for pybasic
Failed to build pybasic
Installing collected packages: pybasic
    Running setup.py install for pybasic ... error
    ERROR: Command errored out with exit status 1:
     command: /Library/Frameworks/Python.framework/Versions/3.9/bin/python3.9 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/zr/2_q9sztd3rgcyn9ztx1r5_7c0000gn/T/pip-req-build-5nx8fd0e/setup.py'"'"'; __file__='"'"'/private/var/folders/zr/2_q9sztd3rgcyn9ztx1r5_7c0000gn/T/pip-req-build-5nx8fd0e/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/zr/2_q9sztd3rgcyn9ztx1r5_7c0000gn/T/pip-record-mlhhfny2/install-record.txt --single-version-externally-managed --compile --install-headers /Library/Frameworks/Python.framework/Versions/3.9/include/python3.9/pybasic
         cwd: /private/var/folders/zr/2_q9sztd3rgcyn9ztx1r5_7c0000gn/T/pip-req-build-5nx8fd0e/
    Complete output (43 lines):
    running install
    running build
    running build_py
    creating build
    creating build/lib.macosx-10.9-x86_64-3.9
    creating build/lib.macosx-10.9-x86_64-3.9/pybasic
    copying pybasic/__init__.py -> build/lib.macosx-10.9-x86_64-3.9/pybasic
    creating build/lib.macosx-10.9-x86_64-3.9/pybasic/basic
    copying pybasic/basic/__init__.py -> build/lib.macosx-10.9-x86_64-3.9/pybasic/basic
    running build_ext
    -- The CXX compiler identification is AppleClang 12.0.5.12050022
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ - skipped
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Found Python3: /Library/Frameworks/Python.framework/Versions/3.9/include/python3.9 (found suitable exact version "3.9.2") found components: Development Development.Module Development.Embed
    -- Looking for C++ include pthread.h
    -- Looking for C++ include pthread.h - found
    -- Performing Test CMAKE_HAVE_LIBC_PTHREAD
    -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
    -- Found Threads: TRUE
    CMake Error at CMakeLists.txt:11 (find_package):
      By not providing "Findbasic_idl.cmake" in CMAKE_MODULE_PATH this project
      has asked CMake to find a package configuration file provided by
      "basic_idl", but CMake did not find one.
    
      Could not find a package configuration file provided by "basic_idl" with
      any of the following names:
    
        basic_idlConfig.cmake
        basic_idl-config.cmake
    
      Add the installation prefix of "basic_idl" to CMAKE_PREFIX_PATH or set
      "basic_idl_DIR" to a directory containing one of the above files.  If
      "basic_idl" provides a separate development package or SDK, be sure it has
      been installed.
    
    
    -- Configuring incomplete, errors occurred!
    See also "/private/var/folders/zr/2_q9sztd3rgcyn9ztx1r5_7c0000gn/T/pip-req-build-5nx8fd0e/build/temp.macosx-10.9-x86_64-3.9/CMakeFiles/CMakeOutput.log".
    See also "/private/var/folders/zr/2_q9sztd3rgcyn9ztx1r5_7c0000gn/T/pip-req-build-5nx8fd0e/build/temp.macosx-10.9-x86_64-3.9/CMakeFiles/CMakeError.log".
    error: "cmake /private/var/folders/zr/2_q9sztd3rgcyn9ztx1r5_7c0000gn/T/pip-req-build-5nx8fd0e -DCMAKE_BUILD_TYPE=Debug -DCMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG=/private/var/folders/zr/2_q9sztd3rgcyn9ztx1r5_7c0000gn/T/pip-req-build-5nx8fd0e/build/lib.macosx-10.9-x86_64-3.9 -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG=build/temp.macosx-10.9-x86_64-3.9 -DPYOPENDDS_PYTHON_VERSION=3.9.2 -DPYOPENDDS_INCLUDE=/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pyopendds/dev/include" returned non-zero result: 1
    ----------------------------------------
ERROR: Command errored out with exit status 1: /Library/Frameworks/Python.framework/Versions/3.9/bin/python3.9 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/zr/2_q9sztd3rgcyn9ztx1r5_7c0000gn/T/pip-req-build-5nx8fd0e/setup.py'"'"'; __file__='"'"'/private/var/folders/zr/2_q9sztd3rgcyn9ztx1r5_7c0000gn/T/pip-req-build-5nx8fd0e/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/zr/2_q9sztd3rgcyn9ztx1r5_7c0000gn/T/pip-record-mlhhfny2/install-record.txt --single-version-externally-managed --compile --install-headers /Library/Frameworks/Python.framework/Versions/3.9/include/python3.9/pybasic Check the logs for full command output.

Is there any way to fix it?

Thank you in advance!

/usr/bin/ld: final link failed: bad value while Building wheel for pyopendds (setup.py) ... error

python version 3.8.12+
pip version 21.3.1
Ubuntu 20.04.3 LTS
When I try to "pip install . " opendds, I get the following error.

Processing /home/apsara/Videostreaming_v1/pyopendds_vs
  Preparing metadata (setup.py) ... done
Requirement already satisfied: jinja2 in /home/apsara/Videostreaming_v1/videnv/lib/python3.8/site-packages (from pyopendds==0.1.0) (3.0.3)
Requirement already satisfied: MarkupSafe>=2.0 in /home/apsara/Videostreaming_v1/videnv/lib/python3.8/site-packages (from jinja2->pyopendds==0.1.0) (2.0.1)
Building wheels for collected packages: pyopendds
  Building wheel for pyopendds (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /home/apsara/Videostreaming_v1/videnv/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/home/apsara/Videostreaming_v1/pyopendds_vs/setup.py'"'"'; __file__='"'"'/home/apsara/Videostreaming_v1/pyopendds_vs/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-jlra7w45
       cwd: /home/apsara/Videostreaming_v1/pyopendds_vs/
  Complete output (81 lines):
  /home/apsara/Videostreaming_v1/videnv/lib/python3.8/site-packages/setuptools/dist.py:717: UserWarning: Usage of dash-separated 'author-email' will not be supported in future versions. Please use the underscore name 'author_email' instead
    warnings.warn(
  /home/apsara/Videostreaming_v1/videnv/lib/python3.8/site-packages/setuptools/dist.py:717: UserWarning: Usage of dash-separated 'home-page' will not be supported in future versions. Please use the underscore name 'home_page' instead
    warnings.warn(
  /home/apsara/Videostreaming_v1/videnv/lib/python3.8/site-packages/setuptools/dist.py:717: UserWarning: Usage of dash-separated 'long-description' will not be supported in future versions. Please use the underscore name 'long_description' instead
    warnings.warn(
  /home/apsara/Videostreaming_v1/videnv/lib/python3.8/site-packages/setuptools/dist.py:717: UserWarning: Usage of dash-separated 'long-description-content-type' will not be supported in future versions. Please use the underscore name 'long_description_content_type' instead
    warnings.warn(
  /home/apsara/Videostreaming_v1/videnv/lib/python3.8/site-packages/setuptools/dist.py:717: UserWarning: Usage of dash-separated 'license-file' will not be supported in future versions. Please use the underscore name 'license_file' instead
    warnings.warn(
  running bdist_wheel
  running build
  running build_py
  creating build/lib.linux-x86_64-3.8
  creating build/lib.linux-x86_64-3.8/pyopendds
  copying pyopendds/DomainParticipant.py -> build/lib.linux-x86_64-3.8/pyopendds
  copying pyopendds/__init__.py -> build/lib.linux-x86_64-3.8/pyopendds
  copying pyopendds/exceptions.py -> build/lib.linux-x86_64-3.8/pyopendds
  copying pyopendds/constants.py -> build/lib.linux-x86_64-3.8/pyopendds
  copying pyopendds/Qos.py -> build/lib.linux-x86_64-3.8/pyopendds
  copying pyopendds/DataWriter.py -> build/lib.linux-x86_64-3.8/pyopendds
  copying pyopendds/DataReader.py -> build/lib.linux-x86_64-3.8/pyopendds
  copying pyopendds/Topic.py -> build/lib.linux-x86_64-3.8/pyopendds
  copying pyopendds/Subscriber.py -> build/lib.linux-x86_64-3.8/pyopendds
  copying pyopendds/init_opendds.py -> build/lib.linux-x86_64-3.8/pyopendds
  copying pyopendds/util.py -> build/lib.linux-x86_64-3.8/pyopendds
  copying pyopendds/Publisher.py -> build/lib.linux-x86_64-3.8/pyopendds
  creating build/lib.linux-x86_64-3.8/pyopendds/dev
  copying pyopendds/dev/__init__.py -> build/lib.linux-x86_64-3.8/pyopendds/dev
  copying pyopendds/dev/cmake.py -> build/lib.linux-x86_64-3.8/pyopendds/dev
  creating build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
  copying pyopendds/dev/itl2py/__init__.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
  copying pyopendds/dev/itl2py/PythonOutput.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
  copying pyopendds/dev/itl2py/CppOutput.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
  copying pyopendds/dev/itl2py/itl.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
  copying pyopendds/dev/itl2py/generate.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
  copying pyopendds/dev/itl2py/ast.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
  copying pyopendds/dev/itl2py/Output.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
  copying pyopendds/dev/itl2py/__main__.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
  creating build/lib.linux-x86_64-3.8/pyopendds/dev/include
  creating build/lib.linux-x86_64-3.8/pyopendds/dev/include/pyopendds
  copying pyopendds/dev/include/pyopendds/common.hpp -> build/lib.linux-x86_64-3.8/pyopendds/dev/include/pyopendds
  copying pyopendds/dev/include/pyopendds/user.hpp -> build/lib.linux-x86_64-3.8/pyopendds/dev/include/pyopendds
  creating build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py/templates
  copying pyopendds/dev/itl2py/templates/CMakeLists.txt -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py/templates
  copying pyopendds/dev/itl2py/templates/user.cpp -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py/templates
  copying pyopendds/dev/itl2py/templates/user.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py/templates
  copying pyopendds/dev/itl2py/templates/setup.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py/templates
  running build_ext
  -- The C compiler identification is GNU 9.4.0
  -- The CXX compiler identification is GNU 9.4.0
  -- Detecting C compiler ABI info
  -- Detecting C compiler ABI info - done
  -- Check for working C compiler: /usr/bin/cc - skipped
  -- Detecting C compile features
  -- Detecting C compile features - done
  -- Detecting CXX compiler ABI info
  -- Detecting CXX compiler ABI info - done
  -- Check for working CXX compiler: /usr/bin/c++ - skipped
  -- Detecting CXX compile features
  -- Detecting CXX compile features - done
  -- Found Python3: /usr/local/include/python3.8 (found version "3.8.12") found components: Development Development.Module Development.Embed
  -- Looking for pthread.h
  -- Looking for pthread.h - found
  -- Performing Test CMAKE_HAVE_LIBC_PTHREAD
  -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
  -- Check if compiler accepts -pthread
  -- Check if compiler accepts -pthread - yes
  -- Found Threads: TRUE
  -- Configuring done
  -- Generating done
  -- Build files have been written to: /home/apsara/Videostreaming_v1/pyopendds_vs/build/temp.linux-x86_64-3.8
  [ 50%] Building CXX object CMakeFiles/_pyopendds.dir/_pyopendds.cpp.o
  [100%] Linking CXX shared library /home/apsara/Videostreaming_v1/pyopendds_vs/build/lib.linux-x86_64-3.8/_pyopendds.cpython-38-x86_64-linux-gnu.so
  /usr/bin/ld: /usr/local/lib/python3.8/config-3.8-x86_64-linux-gnu/libpython3.8.a(floatobject.o): relocation R_X86_64_PC32 against symbol `PyFloat_Type' can not be used when making a shared object; recompile with -fPIC
  /usr/bin/ld: final link failed: bad value
  collect2: error: ld returned 1 exit status
  make[2]: *** [CMakeFiles/_pyopendds.dir/build.make:106: /home/apsara/Videostreaming_v1/pyopendds_vs/build/lib.linux-x86_64-3.8/_pyopendds.cpython-38-x86_64-linux-gnu.so] Error 1
  make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/_pyopendds.dir/all] Error 2
  make: *** [Makefile:91: all] Error 2
  error: "cmake --build . --config Debug" returned non-zero result: 2
  ----------------------------------------
  ERROR: Failed building wheel for pyopendds
  Running setup.py clean for pyopendds
Failed to build pyopendds
Installing collected packages: pyopendds
    Running setup.py install for pyopendds ... error
    ERROR: Command errored out with exit status 1:
     command: /home/apsara/Videostreaming_v1/videnv/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/home/apsara/Videostreaming_v1/pyopendds_vs/setup.py'"'"'; __file__='"'"'/home/apsara/Videostreaming_v1/pyopendds_vs/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-5qh40bdn/install-record.txt --single-version-externally-managed --compile --install-headers /home/apsara/Videostreaming_v1/videnv/include/site/python3.8/pyopendds
         cwd: /home/apsara/Videostreaming_v1/pyopendds_vs/
    Complete output (84 lines):
    /home/apsara/Videostreaming_v1/videnv/lib/python3.8/site-packages/setuptools/dist.py:717: UserWarning: Usage of dash-separated 'author-email' will not be supported in future versions. Please use the underscore name 'author_email' instead
      warnings.warn(
    /home/apsara/Videostreaming_v1/videnv/lib/python3.8/site-packages/setuptools/dist.py:717: UserWarning: Usage of dash-separated 'home-page' will not be supported in future versions. Please use the underscore name 'home_page' instead
      warnings.warn(
    /home/apsara/Videostreaming_v1/videnv/lib/python3.8/site-packages/setuptools/dist.py:717: UserWarning: Usage of dash-separated 'long-description' will not be supported in future versions. Please use the underscore name 'long_description' instead
      warnings.warn(
    /home/apsara/Videostreaming_v1/videnv/lib/python3.8/site-packages/setuptools/dist.py:717: UserWarning: Usage of dash-separated 'long-description-content-type' will not be supported in future versions. Please use the underscore name 'long_description_content_type' instead
      warnings.warn(
    /home/apsara/Videostreaming_v1/videnv/lib/python3.8/site-packages/setuptools/dist.py:717: UserWarning: Usage of dash-separated 'license-file' will not be supported in future versions. Please use the underscore name 'license_file' instead
      warnings.warn(
    running install
    /home/apsara/Videostreaming_v1/videnv/lib/python3.8/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
      warnings.warn(
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-3.8
    creating build/lib.linux-x86_64-3.8/pyopendds
    copying pyopendds/DomainParticipant.py -> build/lib.linux-x86_64-3.8/pyopendds
    copying pyopendds/__init__.py -> build/lib.linux-x86_64-3.8/pyopendds
    copying pyopendds/exceptions.py -> build/lib.linux-x86_64-3.8/pyopendds
    copying pyopendds/constants.py -> build/lib.linux-x86_64-3.8/pyopendds
    copying pyopendds/Qos.py -> build/lib.linux-x86_64-3.8/pyopendds
    copying pyopendds/DataWriter.py -> build/lib.linux-x86_64-3.8/pyopendds
    copying pyopendds/DataReader.py -> build/lib.linux-x86_64-3.8/pyopendds
    copying pyopendds/Topic.py -> build/lib.linux-x86_64-3.8/pyopendds
    copying pyopendds/Subscriber.py -> build/lib.linux-x86_64-3.8/pyopendds
    copying pyopendds/init_opendds.py -> build/lib.linux-x86_64-3.8/pyopendds
    copying pyopendds/util.py -> build/lib.linux-x86_64-3.8/pyopendds
    copying pyopendds/Publisher.py -> build/lib.linux-x86_64-3.8/pyopendds
    creating build/lib.linux-x86_64-3.8/pyopendds/dev
    copying pyopendds/dev/__init__.py -> build/lib.linux-x86_64-3.8/pyopendds/dev
    copying pyopendds/dev/cmake.py -> build/lib.linux-x86_64-3.8/pyopendds/dev
    creating build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
    copying pyopendds/dev/itl2py/__init__.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
    copying pyopendds/dev/itl2py/PythonOutput.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
    copying pyopendds/dev/itl2py/CppOutput.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
    copying pyopendds/dev/itl2py/itl.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
    copying pyopendds/dev/itl2py/generate.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
    copying pyopendds/dev/itl2py/ast.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
    copying pyopendds/dev/itl2py/Output.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
    copying pyopendds/dev/itl2py/__main__.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py
    creating build/lib.linux-x86_64-3.8/pyopendds/dev/include
    creating build/lib.linux-x86_64-3.8/pyopendds/dev/include/pyopendds
    copying pyopendds/dev/include/pyopendds/common.hpp -> build/lib.linux-x86_64-3.8/pyopendds/dev/include/pyopendds
    copying pyopendds/dev/include/pyopendds/user.hpp -> build/lib.linux-x86_64-3.8/pyopendds/dev/include/pyopendds
    creating build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py/templates
    copying pyopendds/dev/itl2py/templates/CMakeLists.txt -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py/templates
    copying pyopendds/dev/itl2py/templates/user.cpp -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py/templates
    copying pyopendds/dev/itl2py/templates/user.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py/templates
    copying pyopendds/dev/itl2py/templates/setup.py -> build/lib.linux-x86_64-3.8/pyopendds/dev/itl2py/templates
    running build_ext
    -- The C compiler identification is GNU 9.4.0
    -- The CXX compiler identification is GNU 9.4.0
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Check for working C compiler: /usr/bin/cc - skipped
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Check for working CXX compiler: /usr/bin/c++ - skipped
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Found Python3: /usr/local/include/python3.8 (found version "3.8.12") found components: Development Development.Module Development.Embed
    -- Looking for pthread.h
    -- Looking for pthread.h - found
    -- Performing Test CMAKE_HAVE_LIBC_PTHREAD
    -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
    -- Check if compiler accepts -pthread
    -- Check if compiler accepts -pthread - yes
    -- Found Threads: TRUE
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /home/apsara/Videostreaming_v1/pyopendds_vs/build/temp.linux-x86_64-3.8
    [ 50%] Building CXX object CMakeFiles/_pyopendds.dir/_pyopendds.cpp.o
    [100%] Linking CXX shared library /home/apsara/Videostreaming_v1/pyopendds_vs/build/lib.linux-x86_64-3.8/_pyopendds.cpython-38-x86_64-linux-gnu.so
    /usr/bin/ld: /usr/local/lib/python3.8/config-3.8-x86_64-linux-gnu/libpython3.8.a(floatobject.o): relocation R_X86_64_PC32 against symbol `PyFloat_Type' can not be used when making a shared object; recompile with -fPIC
    /usr/bin/ld: final link failed: bad value
    collect2: error: ld returned 1 exit status
    make[2]: *** [CMakeFiles/_pyopendds.dir/build.make:106: /home/apsara/Videostreaming_v1/pyopendds_vs/build/lib.linux-x86_64-3.8/_pyopendds.cpython-38-x86_64-linux-gnu.so] Error 1
    make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/_pyopendds.dir/all] Error 2
    make: *** [Makefile:91: all] Error 2
    error: "cmake --build . --config Debug" returned non-zero result: 2
    ----------------------------------------
ERROR: Command errored out with exit status 1: /home/apsara/Videostreaming_v1/videnv/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/home/apsara/Videostreaming_v1/pyopendds_vs/setup.py'"'"'; __file__='"'"'/home/apsara/Videostreaming_v1/pyopendds_vs/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-5qh40bdn/install-record.txt --single-version-externally-managed --compile --install-headers /home/apsara/Videostreaming_v1/videnv/include/site/python3.8/pyopendds Check the logs for full command output.```

Pip install in arm64 container

Hi there!

I'm currently trying to implement pyOpenDDS into an ARM64 container based python application.
I'll attach the Dockerfile of my container and the commands + output within this issue post, in order to let you reproduce the steps.

Sorry for the dumb question, I'm such a newbie with opendds and optimized precompiled messages (like protobuffer and stuff).
I do know that I have to precompile messages structure, before start any test/develop.

However, two things do confuse me:

  1. Once $DDS_ROOT/setenv.sh has been sourced or the equivalent, run the commands below in this directory.

Which should be the $DDS_ROOT ? is it the base folder of the cloned repository? I'm asking 'cause there's no setenv.sh across the cloned repository.

  1. CMake Error at CMakeLists.txt:6 (find_package): Error

Within the cloned repository there are four different CMakeLists.txt files

  • pyopendds/ext/CMakeLists.txt
  • tests/basic_test/CMakeLists.txt
  • tests/itl2py_test/CMakeLists.txt
  • pyopendds/dev/itl2py/templates/CMakeLists.txt

However, the error-involved file should be the fourth, and the code line that do triggers the Error, is the following:

find_package(Python3 COMPONENTS Development REQUIRED)

But those libraries are installed (check the container dockerfile).
Therefore, I'm quite confused.

Can anyone reproduce the steps?
Docker environment should help a lot.

Thank you very much for the given attention.

Dockerfile:

FROM --platform=linux/arm64/v8 python:3.10.4

# Install basic ubuntu packages
RUN apt-get update && apt-get install -y \
        software-properties-common \
        sqlite3 \
        gnupg

# Install Python related packages
RUN apt-get update && apt-get install -y \
        python \
        python3 \
        python-dev \
        python3-dev \
        python3-pip

# Install pygobject dependencies
RUN apt-get update && apt-get install -y \
        libgirepository1.0-dev \
        gcc \
        libcairo2-dev \
        pkg-config \
        gir1.2-gtk-3.0 \
        freetds-dev

RUN python -m pip install --upgrade pip

RUN pip3 install pipenv pycairo PyGObject essential_generators Cython

RUN pip3 install pymssql

ENV TZ Europe/Rome

RUN apt-get update && apt-get install -y net-tools iputils-ping netcat patchelf

Then I'll just clone the pyopendds repository into the opt directory (these are the command I've ran in the container terminal):

# cd /opt
# git clone https://github.com/oci-labs/pyopendds.git
# cd pyopendds
# pip3 install .

Output is the following:

Processing /opt/pyopendds
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
Collecting cmake-build-extension
  Using cached cmake_build_extension-0.5.1-py3-none-any.whl (13 kB)
Collecting jinja2
  Downloading Jinja2-3.1.2-py3-none-any.whl (133 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 133.1/133.1 kB 2.3 MB/s eta 0:00:00
Collecting GitPython
  Using cached GitPython-3.1.27-py3-none-any.whl (181 kB)
Collecting cmake
  Using cached cmake-3.22.5-py2.py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (21.9 MB)
Collecting ninja
  Using cached ninja-1.10.2.3-py2.py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (126 kB)
Collecting setuptools-scm
  Using cached setuptools_scm-7.0.4-py3-none-any.whl (42 kB)
Collecting MarkupSafe>=2.0
  Downloading MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (26 kB)
Collecting gitdb<5,>=4.0.1
  Using cached gitdb-4.0.9-py3-none-any.whl (63 kB)
Collecting tomli>=1.0.0
  Using cached tomli-2.0.1-py3-none-any.whl (12 kB)
Requirement already satisfied: setuptools in /usr/local/lib/python3.10/site-packages (from setuptools-scm->cmake-build-extension->pyopendds==0.2.0) (58.1.0)
Collecting packaging>=20.0
  Using cached packaging-21.3-py3-none-any.whl (40 kB)
Collecting typing-extensions
  Using cached typing_extensions-4.3.0-py3-none-any.whl (25 kB)
Collecting smmap<6,>=3.0.1
  Using cached smmap-5.0.0-py3-none-any.whl (24 kB)
Collecting pyparsing!=3.0.5,>=2.0.2
  Using cached pyparsing-3.0.9-py3-none-any.whl (98 kB)
Building wheels for collected packages: pyopendds
  Building wheel for pyopendds (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Building wheel for pyopendds (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [129 lines of output]
      /tmp/pip-build-env-zkeo_x_5/overlay/lib/python3.10/site-packages/setuptools/config/setupcfg.py:463: SetuptoolsDeprecationWarning: The license_file parameter is deprecated, use license_files instead.
        warnings.warn(msg, warning_class)
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-aarch64-cpython-310
      creating build/lib.linux-aarch64-cpython-310/pyopendds
      copying pyopendds/Subscriber.py -> build/lib.linux-aarch64-cpython-310/pyopendds
      copying pyopendds/exceptions.py -> build/lib.linux-aarch64-cpython-310/pyopendds
      copying pyopendds/DataWriter.py -> build/lib.linux-aarch64-cpython-310/pyopendds
      copying pyopendds/Publisher.py -> build/lib.linux-aarch64-cpython-310/pyopendds
      copying pyopendds/constants.py -> build/lib.linux-aarch64-cpython-310/pyopendds
      copying pyopendds/util.py -> build/lib.linux-aarch64-cpython-310/pyopendds
      copying pyopendds/init_opendds.py -> build/lib.linux-aarch64-cpython-310/pyopendds
      copying pyopendds/DomainParticipant.py -> build/lib.linux-aarch64-cpython-310/pyopendds
      copying pyopendds/DataReader.py -> build/lib.linux-aarch64-cpython-310/pyopendds
      copying pyopendds/__init__.py -> build/lib.linux-aarch64-cpython-310/pyopendds
      copying pyopendds/Topic.py -> build/lib.linux-aarch64-cpython-310/pyopendds
      creating build/lib.linux-aarch64-cpython-310/pyopendds/dev
      copying pyopendds/dev/util.py -> build/lib.linux-aarch64-cpython-310/pyopendds/dev
      copying pyopendds/dev/__init__.py -> build/lib.linux-aarch64-cpython-310/pyopendds/dev
      creating build/lib.linux-aarch64-cpython-310/pyopendds/dev/itl2py
      copying pyopendds/dev/itl2py/__main__.py -> build/lib.linux-aarch64-cpython-310/pyopendds/dev/itl2py
      copying pyopendds/dev/itl2py/generate.py -> build/lib.linux-aarch64-cpython-310/pyopendds/dev/itl2py
      copying pyopendds/dev/itl2py/Output.py -> build/lib.linux-aarch64-cpython-310/pyopendds/dev/itl2py
      copying pyopendds/dev/itl2py/PythonOutput.py -> build/lib.linux-aarch64-cpython-310/pyopendds/dev/itl2py
      copying pyopendds/dev/itl2py/ast.py -> build/lib.linux-aarch64-cpython-310/pyopendds/dev/itl2py
      copying pyopendds/dev/itl2py/CppOutput.py -> build/lib.linux-aarch64-cpython-310/pyopendds/dev/itl2py
      copying pyopendds/dev/itl2py/__init__.py -> build/lib.linux-aarch64-cpython-310/pyopendds/dev/itl2py
      copying pyopendds/dev/itl2py/itl.py -> build/lib.linux-aarch64-cpython-310/pyopendds/dev/itl2py
      creating build/lib.linux-aarch64-cpython-310/pyopendds/dev/include
      creating build/lib.linux-aarch64-cpython-310/pyopendds/dev/include/pyopendds
      copying pyopendds/dev/include/pyopendds/common.hpp -> build/lib.linux-aarch64-cpython-310/pyopendds/dev/include/pyopendds
      copying pyopendds/dev/include/pyopendds/user.hpp -> build/lib.linux-aarch64-cpython-310/pyopendds/dev/include/pyopendds
      creating build/lib.linux-aarch64-cpython-310/pyopendds/dev/itl2py/templates
      copying pyopendds/dev/itl2py/templates/CMakeLists.txt -> build/lib.linux-aarch64-cpython-310/pyopendds/dev/itl2py/templates
      copying pyopendds/dev/itl2py/templates/user.cpp -> build/lib.linux-aarch64-cpython-310/pyopendds/dev/itl2py/templates
      copying pyopendds/dev/itl2py/templates/setup.py -> build/lib.linux-aarch64-cpython-310/pyopendds/dev/itl2py/templates
      copying pyopendds/dev/itl2py/templates/user.py -> build/lib.linux-aarch64-cpython-310/pyopendds/dev/itl2py/templates
      running build_ext
      -- The CXX compiler identification is GNU 10.2.1
      -- Detecting CXX compiler ABI info
      -- Detecting CXX compiler ABI info - done
      -- Check for working CXX compiler: /usr/bin/c++ - skipped
      -- Detecting CXX compile features
      -- Detecting CXX compile features - done
      -- Found Python3: /usr/local/include/python3.10 (found version "3.10.4") found components: Development Development.Module Development.Embed
      CMake Error at CMakeLists.txt:6 (find_package):
        By not providing "FindOpenDDS.cmake" in CMAKE_MODULE_PATH this project has
        asked CMake to find a package configuration file provided by "OpenDDS", but
        CMake did not find one.

        Could not find a package configuration file provided by "OpenDDS" with any
        of the following names:

          OpenDDSConfig.cmake
          opendds-config.cmake

        Add the installation prefix of "OpenDDS" to CMAKE_PREFIX_PATH or set
        "OpenDDS_DIR" to a directory containing one of the above files.  If
        "OpenDDS" provides a separate development package or SDK, be sure it has
        been installed.


      -- Configuring incomplete, errors occurred!
      See also "/opt/pyopendds/build/temp.linux-aarch64-cpython-310__pyopendds/CMakeFiles/CMakeOutput.log".

      ==> Configuring:
      $ cmake -S /opt/pyopendds/pyopendds/ext -B /opt/pyopendds/build/temp.linux-aarch64-cpython-310__pyopendds -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=/opt/pyopendds/build/lib.linux-aarch64-cpython-310/_pyopendds -DCMAKE_MAKE_PROGRAM=/tmp/pip-build-env-zkeo_x_5/overlay/bin/ninja -DPython3_ROOT_DIR=/usr/local -DCALL_FROM_SETUP_PY:BOOL=ON -DPYOPENDDS_INCLUDE=/opt/pyopendds/pyopendds/dev/include -DCMAKE_MAKE_PROGRAM=/tmp/pip-build-env-zkeo_x_5/overlay/bin/ninja

      ==> Building:
      $ cmake --build /opt/pyopendds/build/temp.linux-aarch64-cpython-310__pyopendds --config Release

      ==> Installing:
      $ cmake --install /opt/pyopendds/build/temp.linux-aarch64-cpython-310__pyopendds

      Traceback (most recent call last):
        File "/usr/local/lib/python3.10/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 363, in <module>
          main()
        File "/usr/local/lib/python3.10/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 345, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
        File "/usr/local/lib/python3.10/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 261, in build_wheel
          return _build_backend().build_wheel(wheel_directory, config_settings,
        File "/tmp/pip-build-env-zkeo_x_5/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 244, in build_wheel
          return self._build_with_temp_dir(['bdist_wheel'], '.whl',
        File "/tmp/pip-build-env-zkeo_x_5/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 229, in _build_with_temp_dir
          self.run_setup()
        File "/tmp/pip-build-env-zkeo_x_5/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 174, in run_setup
          exec(compile(code, __file__, 'exec'), locals())
        File "setup.py", line 19, in <module>
          setup(
        File "/tmp/pip-build-env-zkeo_x_5/overlay/lib/python3.10/site-packages/setuptools/__init__.py", line 87, in setup
          return distutils.core.setup(**attrs)
        File "/tmp/pip-build-env-zkeo_x_5/overlay/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 177, in setup
          return run_commands(dist)
        File "/tmp/pip-build-env-zkeo_x_5/overlay/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 193, in run_commands
          dist.run_commands()
        File "/tmp/pip-build-env-zkeo_x_5/overlay/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 968, in run_commands
          self.run_command(cmd)
        File "/tmp/pip-build-env-zkeo_x_5/overlay/lib/python3.10/site-packages/setuptools/dist.py", line 1217, in run_command
          super().run_command(command)
        File "/tmp/pip-build-env-zkeo_x_5/overlay/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 987, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-zkeo_x_5/normal/lib/python3.10/site-packages/wheel/bdist_wheel.py", line 299, in run
          self.run_command('build')
        File "/tmp/pip-build-env-zkeo_x_5/overlay/lib/python3.10/site-packages/setuptools/_distutils/cmd.py", line 317, in run_command
          self.distribution.run_command(command)
        File "/tmp/pip-build-env-zkeo_x_5/overlay/lib/python3.10/site-packages/setuptools/dist.py", line 1217, in run_command
          super().run_command(command)
        File "/tmp/pip-build-env-zkeo_x_5/overlay/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 987, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-zkeo_x_5/overlay/lib/python3.10/site-packages/setuptools/command/build.py", line 24, in run
          super().run()
        File "/tmp/pip-build-env-zkeo_x_5/overlay/lib/python3.10/site-packages/setuptools/_distutils/command/build.py", line 131, in run
          self.run_command(cmd_name)
        File "/tmp/pip-build-env-zkeo_x_5/overlay/lib/python3.10/site-packages/setuptools/_distutils/cmd.py", line 317, in run_command
          self.distribution.run_command(command)
        File "/tmp/pip-build-env-zkeo_x_5/overlay/lib/python3.10/site-packages/setuptools/dist.py", line 1217, in run_command
          super().run_command(command)
        File "/tmp/pip-build-env-zkeo_x_5/overlay/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 987, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-zkeo_x_5/overlay/lib/python3.10/site-packages/cmake_build_extension/build_extension.py", line 113, in run
          self.build_extension(ext)
        File "/tmp/pip-build-env-zkeo_x_5/overlay/lib/python3.10/site-packages/cmake_build_extension/build_extension.py", line 229, in build_extension
          subprocess.check_call(configure_command)
        File "/usr/local/lib/python3.10/subprocess.py", line 369, in check_call
          raise CalledProcessError(retcode, cmd)
      subprocess.CalledProcessError: Command '['cmake', '-S', '/opt/pyopendds/pyopendds/ext', '-B', '/opt/pyopendds/build/temp.linux-aarch64-cpython-310__pyopendds', '-GNinja', '-DCMAKE_BUILD_TYPE=Release', '-DCMAKE_INSTALL_PREFIX:PATH=/opt/pyopendds/build/lib.linux-aarch64-cpython-310/_pyopendds', '-DCMAKE_MAKE_PROGRAM=/tmp/pip-build-env-zkeo_x_5/overlay/bin/ninja', '-DPython3_ROOT_DIR=/usr/local', '-DCALL_FROM_SETUP_PY:BOOL=ON', '-DPYOPENDDS_INCLUDE=/opt/pyopendds/pyopendds/dev/include', '-DCMAKE_MAKE_PROGRAM=/tmp/pip-build-env-zkeo_x_5/overlay/bin/ninja']' returned non-zero exit status 1.
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for pyopendds
Failed to build pyopendds
ERROR: Could not build wheels for pyopendds, which is required to install pyproject.toml-based projects

Need to Get Documentation Set Up

Yea, will need to look into how Python libraries are documented. I would also like to bring experience from this upstream to create a better documenting experience in OpenDDS.

Error Handling

These couple of thoughts/TODOs regarding error handling, because right now the error handling is whatever I felt like doing at the time.

  • There is an C++ exception class generated with the native IDL to Python bindings, but I'm not sure it's necessary.
    • Being used now to handle Python Exceptions generating during object conversion.
  • There are Python exceptions that are not used that I need to decide if I should keep.
  • There are probably bugs in how I'm handling CPython errors.
    • I think this is mostly cleaned up now.
  • I need to get a better idea of how the Python exceptions should be organized, like do I need all the errors I know I can produce inherit from PyOpenDDS_Error?
    • No, that's dumb, I can use plain standard exceptions.

"link still in use by X entities when deleted"

basic_test is spitting out lines like this on shutdown:

(30171|30180) DataReaderImpl::remove_associations: bit 0 local 0103507b.9def3738.75db5625.00000004(e90cd0d3) remote 0103507b.9def3738.75dc5579.00000003(c9b82b9a) num remotes 1 
(30171|30180) DataReaderImpl::remove_associations_i: bit 0 local 0103507b.9def3738.75db5625.00000004(e90cd0d3) remote 0103507b.9def3738.75dc5579.00000003(c9b82b9a) num remotes 1 
(30171|30180) WARNING: DataLink[0x7f53bc015260]::~DataLink() - link still in use by 1 entities when deleted!
01:44:32.527751 (30171|30171) DomainParticipantFactoryImpl::~DomainParticipantFactoryImpl()
(30171|30171) WARNING: DataLink[0x562dc794d190]::~DataLink() - link still in use by 6 entities when deleted!

I know I've seen this before in OpenDDS applications, I just don't know if it's expected or if I'm not cleaning up properly, so it's possibly related to #3.

basic_idl_DIR=$(realpath ..) pip install . - MacOS (Error)

Hi,

I have tried given the real path to the "basic_output" directory, as you indicated, but it still doesn't work. After I typed the following command:

basic_idl_DIR=/Users/dannyguest/Downloads/pyopendds/tests/basic_test/build/basic_output pip install .

The error that I'm getting is the following:

Processing /Users/dannydragoi/Downloads/pyopendds-master/tests/basic_test/build/basic_output
  DEPRECATION: A future pip version will change local packages to be built in-place without first copying to a temporary directory. We recommend you use --use-feature=in-tree-build to test your packages with this new behavior before it becomes the default.
   pip 21.3 will remove support for this functionality. You can find discussion regarding this at https://github.com/pypa/pip/issues/7555.
Requirement already satisfied: pyopendds in /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages (from pybasic==0.0.0) (0.1.0)
Requirement already satisfied: jinja2 in /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages (from pyopendds->pybasic==0.0.0) (3.0.2)
Requirement already satisfied: MarkupSafe>=2.0 in /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages (from jinja2->pyopendds->pybasic==0.0.0) (2.0.1)
Building wheels for collected packages: pybasic
  Building wheel for pybasic (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/8h/gxjssfgj3d35hmpjt9mq2v6r0000gn/T/pip-req-build-q0r5nh6_/setup.py'"'"'; __file__='"'"'/private/var/folders/8h/gxjssfgj3d35hmpjt9mq2v6r0000gn/T/pip-req-build-q0r5nh6_/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /private/var/folders/8h/gxjssfgj3d35hmpjt9mq2v6r0000gn/T/pip-wheel-pgva0ptj
       cwd: /private/var/folders/8h/gxjssfgj3d35hmpjt9mq2v6r0000gn/T/pip-req-build-q0r5nh6_/
  Complete output (38 lines):
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.macosx-10.9-universal2-3.10
  creating build/lib.macosx-10.9-universal2-3.10/pybasic
  copying pybasic/__init__.py -> build/lib.macosx-10.9-universal2-3.10/pybasic
  creating build/lib.macosx-10.9-universal2-3.10/pybasic/basic
  copying pybasic/basic/__init__.py -> build/lib.macosx-10.9-universal2-3.10/pybasic/basic
  running build_ext
  -- The CXX compiler identification is AppleClang 13.0.0.13000029
  -- Detecting CXX compiler ABI info
  -- Detecting CXX compiler ABI info - done
  -- Check for working CXX compiler: /Library/Developer/CommandLineTools/usr/bin/c++ - skipped
  -- Detecting CXX compile features
  -- Detecting CXX compile features - done
  -- Found Python3: /Library/Frameworks/Python.framework/Versions/3.10/include/python3.10 (found suitable exact version "3.10.0") found components: Development Development.Module Development.Embed
  CMake Error at CMakeLists.txt:10 (find_package):
    By not providing "FindOpenDDS.cmake" in CMAKE_MODULE_PATH this project has
    asked CMake to find a package configuration file provided by "OpenDDS", but
    CMake did not find one.
  
    Could not find a package configuration file provided by "OpenDDS" with any
    of the following names:
  
      OpenDDSConfig.cmake
      opendds-config.cmake
  
    Add the installation prefix of "OpenDDS" to CMAKE_PREFIX_PATH or set
    "OpenDDS_DIR" to a directory containing one of the above files.  If
    "OpenDDS" provides a separate development package or SDK, be sure it has
    been installed.
  
  
  -- Configuring incomplete, errors occurred!
  See also "/private/var/folders/8h/gxjssfgj3d35hmpjt9mq2v6r0000gn/T/pip-req-build-q0r5nh6_/build/temp.macosx-10.9-universal2-3.10/CMakeFiles/CMakeOutput.log".
  See also "/private/var/folders/8h/gxjssfgj3d35hmpjt9mq2v6r0000gn/T/pip-req-build-q0r5nh6_/build/temp.macosx-10.9-universal2-3.10/CMakeFiles/CMakeError.log".
  error: "cmake /private/var/folders/8h/gxjssfgj3d35hmpjt9mq2v6r0000gn/T/pip-req-build-q0r5nh6_ -DCMAKE_BUILD_TYPE=Debug -DCMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG=/private/var/folders/8h/gxjssfgj3d35hmpjt9mq2v6r0000gn/T/pip-req-build-q0r5nh6_/build/lib.macosx-10.9-universal2-3.10 -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG=build/temp.macosx-10.9-universal2-3.10 -DPYOPENDDS_PYTHON_VERSION=3.10.0 -DPYOPENDDS_INCLUDE=/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pyopendds/dev/include" returned non-zero result: 1
  ----------------------------------------
  ERROR: Failed building wheel for pybasic
  Running setup.py clean for pybasic
Failed to build pybasic
Installing collected packages: pybasic
    Running setup.py install for pybasic ... error
    ERROR: Command errored out with exit status 1:
     command: /Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/8h/gxjssfgj3d35hmpjt9mq2v6r0000gn/T/pip-req-build-q0r5nh6_/setup.py'"'"'; __file__='"'"'/private/var/folders/8h/gxjssfgj3d35hmpjt9mq2v6r0000gn/T/pip-req-build-q0r5nh6_/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/8h/gxjssfgj3d35hmpjt9mq2v6r0000gn/T/pip-record-zbf3oepc/install-record.txt --single-version-externally-managed --compile --install-headers /Library/Frameworks/Python.framework/Versions/3.10/include/python3.10/pybasic
         cwd: /private/var/folders/8h/gxjssfgj3d35hmpjt9mq2v6r0000gn/T/pip-req-build-q0r5nh6_/
    Complete output (38 lines):
    running install
    running build
    running build_py
    creating build
    creating build/lib.macosx-10.9-universal2-3.10
    creating build/lib.macosx-10.9-universal2-3.10/pybasic
    copying pybasic/__init__.py -> build/lib.macosx-10.9-universal2-3.10/pybasic
    creating build/lib.macosx-10.9-universal2-3.10/pybasic/basic
    copying pybasic/basic/__init__.py -> build/lib.macosx-10.9-universal2-3.10/pybasic/basic
    running build_ext
    -- The CXX compiler identification is AppleClang 13.0.0.13000029
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Check for working CXX compiler: /Library/Developer/CommandLineTools/usr/bin/c++ - skipped
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Found Python3: /Library/Frameworks/Python.framework/Versions/3.10/include/python3.10 (found suitable exact version "3.10.0") found components: Development Development.Module Development.Embed
    CMake Error at CMakeLists.txt:10 (find_package):
      By not providing "FindOpenDDS.cmake" in CMAKE_MODULE_PATH this project has
      asked CMake to find a package configuration file provided by "OpenDDS", but
      CMake did not find one.
    
      Could not find a package configuration file provided by "OpenDDS" with any
      of the following names:
    
        OpenDDSConfig.cmake
        opendds-config.cmake
    
      Add the installation prefix of "OpenDDS" to CMAKE_PREFIX_PATH or set
      "OpenDDS_DIR" to a directory containing one of the above files.  If
      "OpenDDS" provides a separate development package or SDK, be sure it has
      been installed.
    
    
    -- Configuring incomplete, errors occurred!
    See also "/private/var/folders/8h/gxjssfgj3d35hmpjt9mq2v6r0000gn/T/pip-req-build-q0r5nh6_/build/temp.macosx-10.9-universal2-3.10/CMakeFiles/CMakeOutput.log".
    See also "/private/var/folders/8h/gxjssfgj3d35hmpjt9mq2v6r0000gn/T/pip-req-build-q0r5nh6_/build/temp.macosx-10.9-universal2-3.10/CMakeFiles/CMakeError.log".
    error: "cmake /private/var/folders/8h/gxjssfgj3d35hmpjt9mq2v6r0000gn/T/pip-req-build-q0r5nh6_ -DCMAKE_BUILD_TYPE=Debug -DCMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG=/private/var/folders/8h/gxjssfgj3d35hmpjt9mq2v6r0000gn/T/pip-req-build-q0r5nh6_/build/lib.macosx-10.9-universal2-3.10 -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG=build/temp.macosx-10.9-universal2-3.10 -DPYOPENDDS_PYTHON_VERSION=3.10.0 -DPYOPENDDS_INCLUDE=/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pyopendds/dev/include" returned non-zero result: 1
    ----------------------------------------
ERROR: Command errored out with exit status 1: /Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/8h/gxjssfgj3d35hmpjt9mq2v6r0000gn/T/pip-req-build-q0r5nh6_/setup.py'"'"'; __file__='"'"'/private/var/folders/8h/gxjssfgj3d35hmpjt9mq2v6r0000gn/T/pip-req-build-q0r5nh6_/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/8h/gxjssfgj3d35hmpjt9mq2v6r0000gn/T/pip-record-zbf3oepc/install-record.txt --single-version-externally-managed --compile --install-headers /Library/Frameworks/Python.framework/Versions/3.10/include/python3.10/pybasic Check the logs for full command output.

Is there any fix for this issue?

Thank you very much!

Array and sequence type not implemented

itl2py_test provide a sample IDL with multiple types.

when I try to run the itl2py with this sample file, I get the following error :

File "[...]pyopendds/venv/lib/python3.8/site-packages/pyopendds-0.1.0-py3.8-linux-x86_64.egg/pyopendds/dev/itl2py/ast.py", line 234, in visit_array
    raise NotImplementedError
NotImplementedError

The exception is raised for the following element : <ArrayType ::XModule::i32_array_t: <PrimitiveType: i32>[4]>

The same issue exist for sequences.

IDL to Python Implementation

Originally I was going to generate Python IDL code "on the fly", but I got caught up in the idea that users should be able to look at the generated code and easily understand it, sorta like they should theoretically be able to do with C++ code (although tao_idl code looks terrible in practice).

The problem is that IDL/C models of including and forward declaration don't perfectly fit with the Python import system. This wouldn't be a problem but I want there to be default values on struct fields and that doesn't seem like it's easy to do. The result was circular import issues that I couldn't get around.

For now I'm returning to the dynamic type route, at least until I reach the 0.1, where I get basic_test to be functional, then I would like to reassess the feasibility of generating normal Python code.

run tests\basic_test\subscriber.py failed

when I try to run tests\basic_test\subscriber.py, it shows a issue that pybasic.basic is not found, 'No module named 'pybasic'', even I have install pybasic, but not pybasic.py in pip, only has pybasic-0.31.dev0.dist-info in pip path.

Reference Counting

Honestly I haven't been paying much attention to how reference counting should be done, at least not in a while. This will be something I should look into again before the initial release. Maybe I could tie some of the reference counting Python is doing with the counting OpenDDS is doing.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.