Giter Site home page Giter Site logo

adlink-ist / opensplice Goto Github PK

View Code? Open in Web Editor NEW
259.0 58.0 154.0 249.39 MB

This is the Vortex OpenSplice Community Edition source repository. For our commercial offering see

Home Page: https://www.adlinktech.com/en/vortex-opensplice-data-distribution-service

License: Apache License 2.0

Perl 0.42% Shell 0.94% C++ 19.59% CSS 0.11% JavaScript 1.39% Java 13.36% C 51.78% C# 6.26% TeX 0.02% Python 2.35% Batchfile 0.50% HTML 1.18% Makefile 1.32% Lex 0.13% Yacc 0.52% LLVM 0.03% CMake 0.05% Awk 0.04% VBScript 0.01% Starlark 0.01%

opensplice's Introduction

Announcement

For more than a decade, the Vortex Opensplice open source project helped to evangelise and successfully deploy the OMG Data Distribution Service Technology in thousands of industrial and academic projects worldwide. The Vortex Opensplice core team and the community have gained tremendous experience and know-how from these interactions.

Capitalizing on our lengthy experience developing data-centric middleware in real-time distributed systems the core team launched Cyclone DDS, a brand-new open source OMG DDS implementation. Cyclone DDS under the Eclipse foundation governance continues our mission to fuel innovation and serve a more diverse customer base. It is gaining momentum in many opensource frameworks and industrial contexts including ROS2 , Autoware etc. It also represents a genuinely open-source data distribution solution with full source code access and updates.

Buoyed by this success and adoptions, it became obvious that the focus of the core team and the community should now be Cyclone DDS. We, therefore, encourage the Vortex Opensplice open source community users to consider migrating to Cyclone DDS. The migration is straightforward when the ISO CPP V2 APIs are in use. For users that are building mission- and/or business-critical systems, ADLINK continues to support Vortex Opensplice Professional Edition and offers a commercially supported version with extra features and guarantees of support.

Vortex OpenSplice Community Edition

Vortex OpenSplice is a full implementation of the OMG DDS Standard licensed under Apache 2. The DDS standard is used today across a large range of application domains ranging from autonomous vehicles, medical devices, robotic platforms, software defined networking, network switches, IoT Gateways, military and aerospace systems, Air Traffic Control and Management, to smart grids, smart farms, etc.

Building

POSIX / Linux

POSIX / Linux Minimal Build Required Tools

NOTE: The list of tools below is the minimal set required to build Vortex OpenSplice Community Edition without CORBA ORB collocation support. See the required tools section below for details of the additional dependencies to build Vortex OpenSplice Community Edition with support for sharing DDS types with a C++ or Java CORBA ORB.

The following tools should be installed and available on the machine executable / library search path:

  • bash shell
  • A suitable C / C++ compiler, e.g:
    • gcc - 3.2.x or above
    • Sun Studio - At this time only v12 of this compiler has been tested
  • gmake - 3.80 or above.
  • gawk - Any version is acceptable.
  • flex - Any version is acceptable.
  • bison - Version 2.7 or above is required.
  • perl - Version 5.8 or above is required.
  • gSOAP - This is optional. Version 2.7 or above is acceptable. If omitted the cmsoap services is not supported.
  • Java SDK - This is optional. SDK (>1.6 < 1.9) are working java version > 1.8 does not work. If omitted no Java APIs or tools will be generated.
  • Maven - This is optional. Version 3.0 or above is acceptable. If omitted no Java APIs or tools will be generated.
  • Doxygen - This is optional. If omitted the documentation for the C# and I.S.O. C++ APIs will not be generated. Version 1.8 or greater is recommended for ideal results. (v6 of Vortex OpenSplice Community Edition onwards only)
  • Protobuf - This is optional. Version 2.6.x is required. If omitted data types modeled in Google Protocol Buffers will not be supported
  • Qt4 - Highly optional. Its only use is to build the iShapes demonstration application into the distribution, which can be used to illustrate DCPS use and verify interoperability. (v6 of Vortex OpenSplice Community Edition onwards only). See demos/iShapes/README.md.

POSIX / Linux Build with Optional CORBA Collocation Support Required Tools

In addition to the above dependencies the following may also be optionally installed and used to enable support for sharing data types with a CORBA ORB.

  • TAO - See the installation instructions for how to install and configure the build environment.
    • Install and set TAO_ROOT to the directory that the TAO C++ ORB is installed in, before sourcing configure to enable C++ CORBA support.
  • JacORB - See the installation instructions for how to install and configure the build environment.
    • Install and set JACORB_HOME to the directory that the JacORB Java ORB is installed in, before sourcing configure to enable Java CORBA support.

POSIX / Linux Steps to Build Vortex OpenSplice Community Edition from Source

  • Set environment variables so that the above tools can be located:
    • Optionally set GSOAPHOME to the location of the gSOAP toolkit
    • Optionally set either or both TAO_ROOT or JACORB_HOME if you wish to build CORBA support. Otherwise: leave either or both unset. See above.
    • Optionally set JAVA_HOME - set to the directory that a SDK (>1.6 < 1.9) is installed in.
    • Optionally set M2_HOME - set to the directory that Apache Maven is installed in.
    • Optionally set PROTOBUF_HOME - set to the directory where Google Protocol Buffer is installed.
    • All other tools will be located from the machine $PATH
  • Source the Vortex OpenSplice configure script to set-up your build environment. N.B. You must source this script each time you wish to configure a new shell as a build environment. The configuration choices are not persistent.
  • Choose the target platform configuration.
  • Invoke make to compile Vortex OpenSplice Community Edition
  • Invoke make install to build a Vortex OpenSplice Community Edition Distribution
$ export TAO_ROOT=`<TAO location>`
$ export JACORB_HOME=`<JacORB location>`
$ export JAVA_HOME=`<Oracle Java SDK location>`
$ export GSOAPHOME=`<gSOAP location>`
$ source ./configure
$ make
$ make install

Example

sm@plutus:~/opensplice> export GSOAPHOME=/usr/gsoap/2.8.60
sm@plutus:~/opensplice> source configure

Setup at 10:37:10 for Vortex - Version 6.9.181127OSS - Date 2018-12-06

GCC: OK - Using version 7
  NOTE - Enable link-time optimizations (for release build)
GLIBC: version 2.27
MAKE: OK - using GNU Make 4.1
Perl: OK - using perl version='5.26.1';
Qt: On. Using QT tools from the path (with -qt4 suffix).
GAWK: OK - using GNU Awk 4.1.4, API: 1.1 (GNU MPFR 4.0.1, GNU MP 6.1.2)
BISON: OK - using 3.0.4
FLEX: OK - using 2.6.4
JAVAC: OK - using JAVAC version 1.8.0_191
  JAVA_HOME is /usr/lib/jvm/java-8-openjdk-amd64
GMCS: Warning - No gmcs compiler found
   gmcs C# compiler not found, disabling SACS api build.
TAO: Warning - No TAO found
   TAO environment not set, disabling TAO related features.
JACORB: Warning - JACORB_HOME not set
   JACORB environment not set, disabling JACORB related features.
GSOAP: OK - using GSOAP version 2.8.60
  setting GSOAPHOME to /usr
DOXYGEN: OK - no doxygen installed, will attempt to retrieve docs from git repo
GOOGLE PROTOCOL BUFFERS: PROTOBUF_HOME has not been set
Warning - Protobuf compiler environment not set, building of all protobuf related features is disabled.
C99: OK - supported
Python3: OK - Using /usr/bin/python3 v3.6.7
    Warning: Cython module not found. Cannot build Python DCPS API
    Warning: wheel module not found. Cannot build Python DCPS API
NODEJS: nodejs install dir not found - skipping build of NodeJS DCPS API and unit tests.
MAVEN: OK - Using Apache Maven 3.5.2
Key-value store implementations - SQLITE: Warning - Not found, LEVELDB: Warning - Not found
Configuration OK

Variable Setup
SPLICE_TARGET = x86_64.linux-dev
SPLICE_HOST = x86_64.linux-dev
OSPL_HOME = /home/sm/opensplice
SPLICE_ORB =

sm@plutus:~/opensplice> make && make install

Windows

Windows Minimal Build Required Tools

NOTE: The below list of tools is the minimal set required to build Vortex OpenSplice Community Edition without CORBA ORB collocation support. See the required tools section below for details of the additional dependencies to build Vortex OpenSplice Community Edition with support for sharing DDS types with a C++ or Java CORBA ORB.

  • Microsoft Visual Studio 2008 to Microsoft Visual Studio 2017
  • cygwin - The latest available version is recommended. The following packages should be installed in addition to the recommended base selection:
    • gcc-core
    • gmake
    • perl
    • bison
    • flex
    • gawk
    • zip
    • unzip
    • doxygen (Optional - used for C# & ISO C++ API documentation)
  • gSOAP - This is optional. Version 2.7 or above is acceptable.
  • Java SDK - This is optional. SDK (>1.6 < 1.9) or above is acceptable. If omitted no Java APIs or tools will be generated.
  • Maven - This is optional. Version 3.0 or above is acceptable. If omitted no Java APIs or tools will be generated.
  • Protobuf- This is optional. Version 2.6.x is required. If omitted data types modeled in Google Protocol Buffers will not be supported
  • Qt4 - Highly optional. Its only use is to build the iShapes demonstration application into the distribution, which can be used to illustrate DCPS use and verify interoperability. (v6 of Vortex OpenSplice Community Edition onwards only). See demos/iShapes/README.md.

Windows Build with Optional CORBA Collocation Support Required Tools

In addition to the above dependencies the following may also be optionally installed and used to enable support for sharing data types with a CORBA ORB.

  • TAO - See the installation instructions for how to install and configure the build environment.
    • Install and set TAO_ROOT to the directory that the TAO C++ ORB is installed in, before sourcing configure to enable C++ CORBA support.
  • JacORB - See the installation instructions for how to install and configure the build environment.
    • Install and set JACORB_HOME to the directory that the JacORB Java ORB is installed in, before sourcing configure to enable Java CORBA support.

Windows Steps to build Vortex OpenSplice Community Edition from Source

  • In a Cygwin shell set environment variables so that the required build tools can be located.
    • VS_HOME - set to the installation directory of Visual Studio 2008 or 2015.
    • WINDOWSSDKDIR - set to the location of the Windows SDK directory.
    • GSOAPHOME - set to the location of the gSOAP toolkit
      • Optionally set either or both TAO_ROOT or JACORB_HOME if you wish to build CORBA support. Otherwise: leave either or both unset. See above.
      • Optionally set JAVA_HOME - set to the directory that an Oracle SDK (>1.6) is installed in.
      • Optionally set QTDIR and PROTOBUF_HOME
      • All other tools will be located from the cygwin shell $PATH
  • Unset TMP and TEMP (lower and upper case) otherwise you may encounter error 256 while building the Vortex OpenSplice Community Edition ISO C++ API. This is a known compatibility issue between Cygwin and Visual Studio. This can be done permanently by editing your /etc/profile and commenting out the setting of the variables.
  • Source the Vortex OpenSplice configure script to set-up your build environment. N.B. You must source this script each time you wish to configure a new shell as a build environment. The configuration choices are not persistent.
  • Choose the target platform configuration. N.B - 32/64 bit debug (dev) or release (release) builds are available.
    • Note that if you wish to build 'dev' and you wish to build C++ CORBA support then you must have installed a debug version of TAO. If you wish to build release then the TAO installed and indicated by the TAO_ROOT variable must also be release.
  • Invoke make to build Vortex OpenSplice Community Edition
  • Invoke make install to build a Vortex OpenSplice Community Edition Distribution

Example

sm@plutus ~/opensplice
$ export VS_HOME='/cygdrive/C/Program Files (x86)/Microsoft Visual Studio 14.0'

sm@plutus ~/opensplice
$ export WINDOWSSDKDIR='/cygdrive/C/Program Files (x86)/Windows Kits/10'

sm@plutus ~/opensplice
$ export GSOAPHOME=/home/dds/INSTALLED_FOR_DDS/gsoap-v2.7

sm@plutus ~/opensplice
$ export JACORB_HOME=/home/dds/INSTALLED_FOR_DDS/JacORB-v2.3.1.0

sm@plutus ~/opensplice
$ export JAVA_HOME='/cygdrive/C/Program Files/Java/jdk1.8.0_191'

sm@plutus ~/opensplice
$ export QTDIR=/home/dds/INSTALLED_FOR_DDS/Qt/4.8.4_vs2010_64bit

sm@plutus ~/opensplice
$ export PROTOBUF_HOME=/home/dds/INSTALLED_FOR_DDS/protobuf-2.6.0-vs2015

sm@plutus ~/opensplice
$ unset tmp && unset TEMP && unset TMP && unset temp

sm@plutus ~/opensplice
$ source ./configure

Setup at 11:27:13 for Vortex - Version 6.9.181127OSS - Date 2018-12-06

Available targets are:
1 > x86.win32-debug
2 > x86.win32-dev
3 > x86.win32-release
4 > x86_64.win64-debug
5 > x86_64.win64-dev
6 > x86_64.win64-release
Please select a target number:6

VS: OK - using compiler version: 19.00.24215.1 for VS: 2015 and .Net 4.6 and Program Files C:\Program Files (x86)
Visual Studio builder: OK - using devenv.com
C#: OK - using version 1.3.1.60616
MAKE: OK - using GNU Make 4.2.1
Perl: OK - using perl version='5.26.3';
Qt: at_check (1) and QT_VERSION is 4
OK. $QTDIR was /home/dds/INSTALLED_FOR_DDS/Qt/4.8.4_vs2010_64bit,
set to /home/dds/INSTALLED_FOR_DDS/Qt/4.8.4_vs2010_64bit
GAWK: OK - using GNU Awk 4.1.3, API: 1.1 (GNU MPFR 3.1.4, GNU MP 6.1.0)
BISON: OK - using 3.0.4
FLEX: OK - using 2.5.39
JAVAC: OK - using JAVAC version 1.8.0_191
  JAVA_HOME is /cygdrive/c/PROGRA~1/Java/JDK18~1.0_1
TAO: Warning - No TAO found
TAO environment not set, disabling TAO related features.
JACORB: OK
JACORB_HOME is /home/dds/INSTALLED_FOR_DDS/JacORB-v2.3.1.0
GSOAP: OK - using GSOAP version 2.8
  setting GSOAPHOME to /home/dds/INSTALLED_FOR_DDS/gsoap-2.8
DOXYGEN: OK
GOOGLE PROTOCOL BUFFERS: OK - using PROTOC version 2.6.0
PROTOBUF_HOME is /home/dds/INSTALLED_FOR_DDS/protobuf-2.6.0-vs2015
C99: OK - supported
Python3: Warning: Python3 not available. Cannot build Python DCPS API.
MAVEN: OK - Using Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-24T20:41:47+02:00)
Key-value store implementations - SQLITE: Warning - Not found, LEVELDB: Disabled pending Windows port
Configuration OK

Variable Setup
SPLICE_TARGET = x86_64.win64-release
SPLICE_HOST = x86_64.win64-release
OSPL_HOME = /home/dds/opensplice
SPLICE_ORB =

sm@plutus ~/opensplice
$ make && make install

Rebuilding the Vortex OpenSplice Community Edition Custom Libraries on POSIX / Linux

Binary distributions of Vortex OpenSplice Community Edition are shipped containing pre-built C++ and Java language binding libraries. These are known as the Vortex OpenSplice Community Edition Custom Libraries.

For maximum assurance of compatibility with your deployment platform the Vortex OpenSplice Community Edition Custom Libraries of a Vortex OpenSplice Community Edition binary distribution can be rebuilt. In this way you can be confident that these language binding libraries have matching linkage with the toolchain you plan to develop and deploy your application with.

Rebuilding the Standalone C++ Custom Libraries on POSIX / Linux

cd HDE/<<target_platform>>/custom_lib/
make

Rebuilding the CORBA Co-habitation C++ Custom Libraries on POSIX / Linux

  • Configure the environment for the TAO C++ ORB as per the installation instructions.
  • Change directory to the CORBA Co-habitation C++ Custom Libraries source directory in the binary Vortex OpenSplice Community Edition distribution.
  • Make the directory.
  • Copy the new library into place in he distribution.
cd HDE/<<target_platform>>/custom_lib/ccpp/
make
cp -f ./libdcpsccpp.so ../../lib/.

Rebuilding the Standalone C++ Custom Libraries on Windows

Open the Visual Studio solution file in HDE/<<target_platform>>/custom_lib and rebuild.

Installing Google Protocol Buffer

Download the source from https://github.com/google/protobuf/releases

tar -xzf protobuf-2.6.1.tar.gz
cd protobuf-2.6.1
./configure
make

Add protoc to the PATH.

For Windows download a pre-compiled protoc version and put that in your PATH

export PROTOBUF_HOME=`pwd`

Documentation

Below are a few links to learning material that will get you started quickly with Vortex OpenSplice and DDS.

Open Source Add-ons

There are plenty of Open Source add-ons for Vortex OpenSplice and they keep growing almost daily. The main place to look for add one and extensions are ADLINK-IST's GitHub repositories. Beside this, below are a few notable extensions:

Related Projects

opensplice's People

Contributors

b3em avatar cjo1958 avatar e-hndrks avatar eboasson avatar ernstvanveenendaal avatar fujitatomoya avatar jaedog avatar james-aurizn avatar jonathanchristison avatar kydos avatar lessismoreh avatar marceljordense avatar nevion avatar okellogg avatar patrickm-zs avatar r-owen avatar sandermertens avatar simonmcqueen avatar stuartcullen avatar thijssassen avatar tobymcclean avatar wjwwood 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  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  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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

opensplice's Issues

Build Instruction

It would be good if the README would explain how to build OpenSplice or at least point at a webpage that explains how to do so.

Opensplice 6.7 triggers internal compiler error with gcc 7.1

Tried github revision c15997d70e845a52f6ea75f41d0f755fee911db9 on OpenSuSE Tumbleweed with GCC 7.1. Gives an internal compiler error in define.c:44

johnny@e5470jw:~/ACE/github/opensplice> source ./configure 
Submodule 'submods/MPC_ROOT' (git://github.com/PrismTech/MPC_ROOT.git) registered for path 'submods/MPC_ROOT'
Cloning into '/home/johnny/ACE/github/opensplice/submods/MPC_ROOT'...
Submodule path 'submods/MPC_ROOT': checked out '27319d9793b7c7e78300960c2cc2b4d46b722383'

Setup at 11:18:04 for Vortex - Version 6.7.170523OSS - Date 2017-06-21


GCC: OK - using version 7
  NOTE - enabling link-time optimizations for release build
GLIBC: version 2.25
MAKE: OK - using GNU Make 4.2.1
Perl: OK - using perl version='5.24.0';
Qt: Disabled. OSPL_QT_IS_ON was: no
GAWK: OK - using GNU Awk 4.1.4, API: 1.1
BISON: OK - using bison (GNU Bison) 3.0.4
FLEX: OK - using 2.6.1
JAVAC: Warning - Java compiler environment not set, building of all Java related features is disabled.
GMCS: Warning - No gmcs compiler found
   gmcs C# compiler not found, disabling SACS api build.
TAO: OK - SPLICE_ORB is TAO TAO_IDL_BE, version 2.4.3
  setting TAO_ROOT to /home/johnny/ACE/idl2c++11/ACE/TAO
JACORB: Warning - JACORB_HOME not set
   JACORB environment not set, disabling JACORB related features.
GSOAP: OK - using GSOAP version 2.8.46
  setting GSOAPHOME to /usr
DOXYGEN: Warning - ospl_docs repo cannot be reached and doxygen not installed
  Generated documentation will not be available
GOOGLE PROTOCOL BUFFERS: PROTOBUF_HOME has not been set
Warning - Protobuf compiler environment not set, building of all protobuf related features is disabled.
C99: OK - supported
Configuration OK

Variable Setup
SPLICE_TARGET = x86_64.linux-dev
SPLICE_HOST = x86_64.linux-dev
OSPL_HOME = /home/johnny/ACE/github/opensplice
SPLICE_ORB = DDS_ACE_TAO_5_6_6
johnny@e5470jw:~/ACE/github/opensplice> make
make[1]: Entering directory '/home/johnny/ACE/github/opensplice/setup'
make[2]: Entering directory '/home/johnny/ACE/github/opensplice/setup/wrappers'
make[2]: Nothing to be done for 'link'.
make[2]: Leaving directory '/home/johnny/ACE/github/opensplice/setup/wrappers'
make[2]: Entering directory '/home/johnny/ACE/github/opensplice/setup/utilities'
make[3]: Entering directory '/home/johnny/ACE/github/opensplice/setup/utilities/unique_domainID'
make[4]: Entering directory '/home/johnny/ACE/github/opensplice/setup/utilities/unique_domainID/bld/x86_64.linux-dev'
DEP ../../code/ospl_unique_domainID.c
gcc ../../code/ospl_unique_domainID.c
gcc  -static-libgcc -L/home/johnny/ACE/github/opensplice/lib/x86_64.linux-dev -std=c99 -D_GNU_SOURCE -DOSPL_LINUX -O0 -g -D_TYPECHECK_ -DE_DEBUG -Wall -W -Wno-long-long -Wno-variadic-macros  -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -DDO_HOST_BY_NAME ospl_unique_domainID.o -lc -lm -ldl -lpthread -lrt  -o ospl_unique_domainID
mkdir -p /home/johnny/ACE/github/opensplice/exec/x86_64.linux-dev
rm -f /home/johnny/ACE/github/opensplice/exec/x86_64.linux-dev/ospl_unique_domainID
ln      /home/johnny/ACE/github/opensplice/setup/utilities/unique_domainID/bld/x86_64.linux-dev/ospl_unique_domainID /home/johnny/ACE/github/opensplice/exec/x86_64.linux-dev/ospl_unique_domainID
make[4]: Leaving directory '/home/johnny/ACE/github/opensplice/setup/utilities/unique_domainID/bld/x86_64.linux-dev'
make[3]: Leaving directory '/home/johnny/ACE/github/opensplice/setup/utilities/unique_domainID'
make[3]: Entering directory '/home/johnny/ACE/github/opensplice/setup/utilities/corecount'
make[4]: Entering directory '/home/johnny/ACE/github/opensplice/setup/utilities/corecount/bld/x86_64.linux-dev'
DEP ../../code/corecount.c
gcc ../../code/corecount.c
gcc  -static-libgcc -L/home/johnny/ACE/github/opensplice/lib/x86_64.linux-dev -std=c99 -D_GNU_SOURCE -DOSPL_LINUX -O0 -g -D_TYPECHECK_ -DE_DEBUG -Wall -W -Wno-long-long -Wno-variadic-macros  -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -DDO_HOST_BY_NAME corecount.o -lc -lm -ldl -lpthread -lrt  -o corecount
rm -f /home/johnny/ACE/github/opensplice/exec/x86_64.linux-dev/corecount
ln      /home/johnny/ACE/github/opensplice/setup/utilities/corecount/bld/x86_64.linux-dev/corecount /home/johnny/ACE/github/opensplice/exec/x86_64.linux-dev/corecount
make[4]: Leaving directory '/home/johnny/ACE/github/opensplice/setup/utilities/corecount/bld/x86_64.linux-dev'
make[3]: Leaving directory '/home/johnny/ACE/github/opensplice/setup/utilities/corecount'
make[2]: Leaving directory '/home/johnny/ACE/github/opensplice/setup/utilities'
make[1]: Leaving directory '/home/johnny/ACE/github/opensplice/setup'
make[1]: Entering directory '/home/johnny/ACE/github/opensplice/external'
make[2]: Entering directory '/home/johnny/ACE/github/opensplice/external/lzf'
make[3]: Entering directory '/home/johnny/ACE/github/opensplice/external/lzf/bld/x86_64.linux-dev'
DEP ../../src/lzf_d.c
DEP ../../src/lzf_c.c
gcc ../../src/lzf_c.c
gcc ../../src/lzf_d.c
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c: In function โ€˜lzf_decompressโ€™:
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:91:30: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 32: *op++ = *ip++; case 31: *op++ = *ip++; case 30: *op++ = *ip++; case 29: *op++ = *ip++;
                        ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:91:39: note: here
               case 32: *op++ = *ip++; case 31: *op++ = *ip++; case 30: *op++ = *ip++; case 29: *op++ = *ip++;
                                       ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:91:54: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 32: *op++ = *ip++; case 31: *op++ = *ip++; case 30: *op++ = *ip++; case 29: *op++ = *ip++;
                                                ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:91:63: note: here
               case 32: *op++ = *ip++; case 31: *op++ = *ip++; case 30: *op++ = *ip++; case 29: *op++ = *ip++;
                                                               ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:91:78: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 32: *op++ = *ip++; case 31: *op++ = *ip++; case 30: *op++ = *ip++; case 29: *op++ = *ip++;
                                                                        ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:91:87: note: here
               case 32: *op++ = *ip++; case 31: *op++ = *ip++; case 30: *op++ = *ip++; case 29: *op++ = *ip++;
                                                                                       ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:91:102: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 32: *op++ = *ip++; case 31: *op++ = *ip++; case 30: *op++ = *ip++; case 29: *op++ = *ip++;
                                                                                                ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:92:15: note: here
               case 28: *op++ = *ip++; case 27: *op++ = *ip++; case 26: *op++ = *ip++; case 25: *op++ = *ip++;
               ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:92:30: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 28: *op++ = *ip++; case 27: *op++ = *ip++; case 26: *op++ = *ip++; case 25: *op++ = *ip++;
                        ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:92:39: note: here
               case 28: *op++ = *ip++; case 27: *op++ = *ip++; case 26: *op++ = *ip++; case 25: *op++ = *ip++;
                                       ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:92:54: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 28: *op++ = *ip++; case 27: *op++ = *ip++; case 26: *op++ = *ip++; case 25: *op++ = *ip++;
                                                ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:92:63: note: here
               case 28: *op++ = *ip++; case 27: *op++ = *ip++; case 26: *op++ = *ip++; case 25: *op++ = *ip++;
                                                               ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:92:78: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 28: *op++ = *ip++; case 27: *op++ = *ip++; case 26: *op++ = *ip++; case 25: *op++ = *ip++;
                                                                        ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:92:87: note: here
               case 28: *op++ = *ip++; case 27: *op++ = *ip++; case 26: *op++ = *ip++; case 25: *op++ = *ip++;
                                                                                       ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:92:102: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 28: *op++ = *ip++; case 27: *op++ = *ip++; case 26: *op++ = *ip++; case 25: *op++ = *ip++;
                                                                                                ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:93:15: note: here
               case 24: *op++ = *ip++; case 23: *op++ = *ip++; case 22: *op++ = *ip++; case 21: *op++ = *ip++;
               ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:93:30: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 24: *op++ = *ip++; case 23: *op++ = *ip++; case 22: *op++ = *ip++; case 21: *op++ = *ip++;
                        ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:93:39: note: here
               case 24: *op++ = *ip++; case 23: *op++ = *ip++; case 22: *op++ = *ip++; case 21: *op++ = *ip++;
                                       ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:93:54: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 24: *op++ = *ip++; case 23: *op++ = *ip++; case 22: *op++ = *ip++; case 21: *op++ = *ip++;
                                                ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:93:63: note: here
               case 24: *op++ = *ip++; case 23: *op++ = *ip++; case 22: *op++ = *ip++; case 21: *op++ = *ip++;
                                                               ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:93:78: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 24: *op++ = *ip++; case 23: *op++ = *ip++; case 22: *op++ = *ip++; case 21: *op++ = *ip++;
                                                                        ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:93:87: note: here
               case 24: *op++ = *ip++; case 23: *op++ = *ip++; case 22: *op++ = *ip++; case 21: *op++ = *ip++;
                                                                                       ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:93:102: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 24: *op++ = *ip++; case 23: *op++ = *ip++; case 22: *op++ = *ip++; case 21: *op++ = *ip++;
                                                                                                ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:94:15: note: here
               case 20: *op++ = *ip++; case 19: *op++ = *ip++; case 18: *op++ = *ip++; case 17: *op++ = *ip++;
               ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:94:30: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 20: *op++ = *ip++; case 19: *op++ = *ip++; case 18: *op++ = *ip++; case 17: *op++ = *ip++;
                        ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:94:39: note: here
               case 20: *op++ = *ip++; case 19: *op++ = *ip++; case 18: *op++ = *ip++; case 17: *op++ = *ip++;
                                       ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:94:54: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 20: *op++ = *ip++; case 19: *op++ = *ip++; case 18: *op++ = *ip++; case 17: *op++ = *ip++;
                                                ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:94:63: note: here
               case 20: *op++ = *ip++; case 19: *op++ = *ip++; case 18: *op++ = *ip++; case 17: *op++ = *ip++;
                                                               ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:94:78: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 20: *op++ = *ip++; case 19: *op++ = *ip++; case 18: *op++ = *ip++; case 17: *op++ = *ip++;
                                                                        ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:94:87: note: here
               case 20: *op++ = *ip++; case 19: *op++ = *ip++; case 18: *op++ = *ip++; case 17: *op++ = *ip++;
                                                                                       ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:94:102: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 20: *op++ = *ip++; case 19: *op++ = *ip++; case 18: *op++ = *ip++; case 17: *op++ = *ip++;
                                                                                                ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:95:15: note: here
               case 16: *op++ = *ip++; case 15: *op++ = *ip++; case 14: *op++ = *ip++; case 13: *op++ = *ip++;
               ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:95:30: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 16: *op++ = *ip++; case 15: *op++ = *ip++; case 14: *op++ = *ip++; case 13: *op++ = *ip++;
                        ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:95:39: note: here
               case 16: *op++ = *ip++; case 15: *op++ = *ip++; case 14: *op++ = *ip++; case 13: *op++ = *ip++;
                                       ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:95:54: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 16: *op++ = *ip++; case 15: *op++ = *ip++; case 14: *op++ = *ip++; case 13: *op++ = *ip++;
                                                ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:95:63: note: here
               case 16: *op++ = *ip++; case 15: *op++ = *ip++; case 14: *op++ = *ip++; case 13: *op++ = *ip++;
                                                               ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:95:78: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 16: *op++ = *ip++; case 15: *op++ = *ip++; case 14: *op++ = *ip++; case 13: *op++ = *ip++;
                                                                        ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:95:87: note: here
               case 16: *op++ = *ip++; case 15: *op++ = *ip++; case 14: *op++ = *ip++; case 13: *op++ = *ip++;
                                                                                       ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:95:102: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 16: *op++ = *ip++; case 15: *op++ = *ip++; case 14: *op++ = *ip++; case 13: *op++ = *ip++;
                                                                                                ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:96:15: note: here
               case 12: *op++ = *ip++; case 11: *op++ = *ip++; case 10: *op++ = *ip++; case  9: *op++ = *ip++;
               ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:96:30: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 12: *op++ = *ip++; case 11: *op++ = *ip++; case 10: *op++ = *ip++; case  9: *op++ = *ip++;
                        ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:96:39: note: here
               case 12: *op++ = *ip++; case 11: *op++ = *ip++; case 10: *op++ = *ip++; case  9: *op++ = *ip++;
                                       ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:96:54: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 12: *op++ = *ip++; case 11: *op++ = *ip++; case 10: *op++ = *ip++; case  9: *op++ = *ip++;
                                                ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:96:63: note: here
               case 12: *op++ = *ip++; case 11: *op++ = *ip++; case 10: *op++ = *ip++; case  9: *op++ = *ip++;
                                                               ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:96:78: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 12: *op++ = *ip++; case 11: *op++ = *ip++; case 10: *op++ = *ip++; case  9: *op++ = *ip++;
                                                                        ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:96:87: note: here
               case 12: *op++ = *ip++; case 11: *op++ = *ip++; case 10: *op++ = *ip++; case  9: *op++ = *ip++;
                                                                                       ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:96:102: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 12: *op++ = *ip++; case 11: *op++ = *ip++; case 10: *op++ = *ip++; case  9: *op++ = *ip++;
                                                                                                ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:97:15: note: here
               case  8: *op++ = *ip++; case  7: *op++ = *ip++; case  6: *op++ = *ip++; case  5: *op++ = *ip++;
               ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:97:30: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case  8: *op++ = *ip++; case  7: *op++ = *ip++; case  6: *op++ = *ip++; case  5: *op++ = *ip++;
                        ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:97:39: note: here
               case  8: *op++ = *ip++; case  7: *op++ = *ip++; case  6: *op++ = *ip++; case  5: *op++ = *ip++;
                                       ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:97:54: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case  8: *op++ = *ip++; case  7: *op++ = *ip++; case  6: *op++ = *ip++; case  5: *op++ = *ip++;
                                                ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:97:63: note: here
               case  8: *op++ = *ip++; case  7: *op++ = *ip++; case  6: *op++ = *ip++; case  5: *op++ = *ip++;
                                                               ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:97:78: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case  8: *op++ = *ip++; case  7: *op++ = *ip++; case  6: *op++ = *ip++; case  5: *op++ = *ip++;
                                                                        ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:97:87: note: here
               case  8: *op++ = *ip++; case  7: *op++ = *ip++; case  6: *op++ = *ip++; case  5: *op++ = *ip++;
                                                                                       ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:97:102: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case  8: *op++ = *ip++; case  7: *op++ = *ip++; case  6: *op++ = *ip++; case  5: *op++ = *ip++;
                                                                                                ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:98:15: note: here
               case  4: *op++ = *ip++; case  3: *op++ = *ip++; case  2: *op++ = *ip++; case  1: *op++ = *ip++;
               ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:98:30: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case  4: *op++ = *ip++; case  3: *op++ = *ip++; case  2: *op++ = *ip++; case  1: *op++ = *ip++;
                        ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:98:39: note: here
               case  4: *op++ = *ip++; case  3: *op++ = *ip++; case  2: *op++ = *ip++; case  1: *op++ = *ip++;
                                       ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:98:54: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case  4: *op++ = *ip++; case  3: *op++ = *ip++; case  2: *op++ = *ip++; case  1: *op++ = *ip++;
                                                ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:98:63: note: here
               case  4: *op++ = *ip++; case  3: *op++ = *ip++; case  2: *op++ = *ip++; case  1: *op++ = *ip++;
                                                               ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:98:78: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case  4: *op++ = *ip++; case  3: *op++ = *ip++; case  2: *op++ = *ip++; case  1: *op++ = *ip++;
                                                                        ~~~~~~^~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:98:87: note: here
               case  4: *op++ = *ip++; case  3: *op++ = *ip++; case  2: *op++ = *ip++; case  1: *op++ = *ip++;
                                                                                       ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:166:29: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 9: *op++ = *ref++;
                       ~~~~~~^~~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:167:15: note: here
               case 8: *op++ = *ref++;
               ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:167:29: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 8: *op++ = *ref++;
                       ~~~~~~^~~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:168:15: note: here
               case 7: *op++ = *ref++;
               ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:168:29: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 7: *op++ = *ref++;
                       ~~~~~~^~~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:169:15: note: here
               case 6: *op++ = *ref++;
               ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:169:29: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 6: *op++ = *ref++;
                       ~~~~~~^~~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:170:15: note: here
               case 5: *op++ = *ref++;
               ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:170:29: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 5: *op++ = *ref++;
                       ~~~~~~^~~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:171:15: note: here
               case 4: *op++ = *ref++;
               ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:171:29: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 4: *op++ = *ref++;
                       ~~~~~~^~~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:172:15: note: here
               case 3: *op++ = *ref++;
               ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:172:29: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 3: *op++ = *ref++;
                       ~~~~~~^~~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:173:15: note: here
               case 2: *op++ = *ref++;
               ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:173:29: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 2: *op++ = *ref++;
                       ~~~~~~^~~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:174:15: note: here
               case 1: *op++ = *ref++;
               ^~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:174:29: warning: this statement may fall through [-Wimplicit-fallthrough=]
               case 1: *op++ = *ref++;
                       ~~~~~~^~~~~~~~
/home/johnny/ACE/github/opensplice/external/lzf/src/lzf_d.c:175:15: note: here
               case 0: *op++ = *ref++; /* two octets more */
               ^~~~
gcc -shared -fPIC -Wl,-Bsymbolic -static-libgcc -L/home/johnny/ACE/github/opensplice/lib/x86_64.linux-dev -std=c99 -D_GNU_SOURCE -DOSPL_LINUX -O0 -g -D_TYPECHECK_ -DE_DEBUG -Wall -W -Wno-long-long -Wno-variadic-macros  -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -DDO_HOST_BY_NAME -fPIC -Wno-unused-parameter -Wno-sign-compare -Wno-unused-function -shared -fPIC -Wl,-Bsymbolic lzf_c.o lzf_d.o -lc -lm -ldl -lpthread -lrt -o liblzf-ospl.so
mkdir -p /home/johnny/ACE/github/opensplice/lib/x86_64.linux-dev
rm -f /home/johnny/ACE/github/opensplice/lib/x86_64.linux-dev/liblzf-ospl.so
ln      /home/johnny/ACE/github/opensplice/external/lzf/bld/x86_64.linux-dev/liblzf-ospl.so /home/johnny/ACE/github/opensplice/lib/x86_64.linux-dev/liblzf-ospl.so
make[3]: Leaving directory '/home/johnny/ACE/github/opensplice/external/lzf/bld/x86_64.linux-dev'
make[2]: Leaving directory '/home/johnny/ACE/github/opensplice/external/lzf'
make[2]: Entering directory '/home/johnny/ACE/github/opensplice/external/snappy-c'
make[3]: Entering directory '/home/johnny/ACE/github/opensplice/external/snappy-c/bld/x86_64.linux-dev'
DEP ../../src/snappy.c
gcc ../../src/snappy.c
In file included from /home/johnny/ACE/github/opensplice/external/snappy-c/src/snappy.c:42:0:
/home/johnny/ACE/github/opensplice/external/snappy-c/src/compat.h:23:0: warning: "htole16" redefined
 #  define htole16(x) (x)
 
In file included from /home/johnny/ACE/github/opensplice/src/abstraction/os/linux/../linux/include/os_os_abstract.h:29:0,
                 from /home/johnny/ACE/github/opensplice/src/abstraction/os/linux/../linux/include/os_os_defs.h:27,
                 from /home/johnny/ACE/github/opensplice/src/abstraction/os/include/os_defs.h:166,
                 from /home/johnny/ACE/github/opensplice/external/snappy-c/src/snappy.c:40:
/usr/include/endian.h:65:0: note: this is the location of the previous definition
 #  define htole16(x) __uint16_identity (x)
 
In file included from /home/johnny/ACE/github/opensplice/external/snappy-c/src/snappy.c:42:0:
/home/johnny/ACE/github/opensplice/external/snappy-c/src/compat.h:24:0: warning: "le32toh" redefined
 #  define le32toh(x) (x)
 
In file included from /home/johnny/ACE/github/opensplice/src/abstraction/os/linux/../linux/include/os_os_abstract.h:29:0,
                 from /home/johnny/ACE/github/opensplice/src/abstraction/os/linux/../linux/include/os_os_defs.h:27,
                 from /home/johnny/ACE/github/opensplice/src/abstraction/os/include/os_defs.h:166,
                 from /home/johnny/ACE/github/opensplice/external/snappy-c/src/snappy.c:40:
/usr/include/endian.h:72:0: note: this is the location of the previous definition
 #  define le32toh(x) __uint32_identity (x)
 
gcc -shared -fPIC -Wl,-Bsymbolic -static-libgcc -L/home/johnny/ACE/github/opensplice/lib/x86_64.linux-dev -std=c99 -D_GNU_SOURCE -DOSPL_LINUX -O0 -g -D_TYPECHECK_ -DE_DEBUG -Wall -W -Wno-long-long -Wno-variadic-macros  -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -DDO_HOST_BY_NAME -fPIC -Wno-unused-parameter -Wno-sign-compare -Wno-unused-function -shared -fPIC -Wl,-Bsymbolic snappy.o -lc -lm -ldl -lpthread -lrt -o libsnappy-ospl.so
rm -f /home/johnny/ACE/github/opensplice/lib/x86_64.linux-dev/libsnappy-ospl.so
ln      /home/johnny/ACE/github/opensplice/external/snappy-c/bld/x86_64.linux-dev/libsnappy-ospl.so /home/johnny/ACE/github/opensplice/lib/x86_64.linux-dev/libsnappy-ospl.so
make[3]: Leaving directory '/home/johnny/ACE/github/opensplice/external/snappy-c/bld/x86_64.linux-dev'
make[2]: Leaving directory '/home/johnny/ACE/github/opensplice/external/snappy-c'
make[1]: Leaving directory '/home/johnny/ACE/github/opensplice/external'
make[1]: Entering directory '/home/johnny/ACE/github/opensplice/src'
make[2]: Entering directory '/home/johnny/ACE/github/opensplice/src/cpp'
make[3]: Entering directory '/home/johnny/ACE/github/opensplice/src/cpp/bld/x86_64.linux-dev'
DEP ../../code/copyof.c
DEP ../../code/set.c
DEP ../../code/expand.c
DEP ../../code/symtbl.c
DEP ../../code/preprocess.c
DEP ../../code/if.c
DEP ../../code/sharp.c
DEP ../../code/is.c
DEP ../../code/undef.c
DEP ../../code/debug.c
DEP ../../code/predefs.c
DEP ../../code/while.c
DEP ../../code/dump.c
DEP ../../code/unctrl.c
DEP ../../code/pragma.c
DEP ../../code/accum.c
DEP ../../code/include.c
DEP ../../code/at.c
DEP ../../code/io.c
DEP ../../code/error.c
DEP ../../code/define.c
DEP ../../code/autodef.c
DEP ../../code/expr.c
DEP ../../code/line.c
DEP ../../code/eval.c
gcc ../../code/eval.c
gcc ../../code/line.c
gcc ../../code/expr.c
gcc ../../code/autodef.c
gcc ../../code/define.c
/home/johnny/ACE/github/opensplice/src/cpp/code/define.c: In function โ€˜read_formalsโ€™:
/home/johnny/ACE/github/opensplice/src/cpp/code/define.c:44:31: internal compiler error: in get_range_info, at tree-ssanames.c:375
          argnames = (char **) os_realloc((char *)argnames, (nargs + 1) * sizeof(char *));
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://bugs.opensuse.org/> for instructions.
make[3]: *** [/home/johnny/ACE/github/opensplice/setup/makefiles/rules.mak:181: define.o] Error 1
make[3]: Leaving directory '/home/johnny/ACE/github/opensplice/src/cpp/bld/x86_64.linux-dev'
make[2]: *** [makefile:6: link] Error 2
make[2]: Leaving directory '/home/johnny/ACE/github/opensplice/src/cpp'
make[1]: *** [/home/johnny/ACE/github/opensplice/setup/makefiles/subsystem.mak:5: cpp.ss_link] Error 2
make[1]: Leaving directory '/home/johnny/ACE/github/opensplice/src'
make: *** [/home/johnny/ACE/github/opensplice/setup/makefiles/subsystem.mak:5: src.ss_link] Error 2

OpenSplice 6.7 doesn't compile using TAO 6.4.3

At the moment I am using TAO 6.4.3 on my system (TAO_ROOT has been set), we get the error below, -si is not available anymore as option

idlpp -I/home/johnny/ACE/github/opensplice/etc/idl -N -l cpp -C /home/johnny/ACE/github/opensplice/etc/idl/dds_dcps_builtintopics.idl
idlpp -I/home/johnny/ACE/github/opensplice/etc/idl -N -l cpp -C /home/johnny/ACE/github/opensplice/etc/idl/dds_builtinTopics.idl
idlpp -I/home/johnny/ACE/github/opensplice/etc/idl -N -l cpp -C /home/johnny/ACE/github/opensplice/etc/idl/dds_namedQosTypes.idl
unset CXXINCS; unset CINCS;  tao_idl -Sp -Sd -si S.i -ci C.i -I"/home/johnny/ACE/github/opensplice/etc/idl"   -I/home/johnny/ACE/github/opensplice/etc/idl /home/johnny/ACE/github/opensplice/etc/idl/dds_dcps_builtintopics.idl
IDL: I don't understand the '-si' option
tao_idl: Unable to open file : S.i: No such file or directory

Assert 'header->confidence == (0x504F5448)' if QosProvider is garbage collected

Whenever QosProvider object is garbage collected program terminates with

/{path}/src/database/database/code/c_base.c:2407: c_free: Assertion `header->confidence == (0x504F5448)' failed.

The issue occurs on OSPL_V6_7_180404OSS_RELEASE release (built from source) on Centos 7.3, Java 1.8 update 144.

Backtrace of the issue:

#0 0x00007f874c5dd1f7 in raise () from /lib64/libc.so.6
#1 0x00007f874c5de8e8 in abort () from /lib64/libc.so.6
#2 0x00007f874c5d6266 in __assert_fail_base () from /lib64/libc.so.6
#3 0x00007f874c5d6312 in __assert_fail () from /lib64/libc.so.6
#4 0x00007f86f4e688d0 in c_free (object=0x7f87448d45b0) at /{...}src/database/database/code/c_base.c:2407
#5 0x00007f86f4eb462c in sd_cdrInfoFree (ci=0x7f87448d9fd0) at /{...}src/database/serialization/code/sd_cdr.c:4435
#6 0x00007f86f52a9ae9 in saj_copyCacheFree (copyCache=0x7f87448d65b0) at /{...}src/api/dcps/java/common/c/code/saj_copyCache.c:382
#7 0x00007f86f52fbc92 in saj_qosProviderDeinitCopyCaches (_this=0x7f87448d7b50) at /{...}src/api/dcps/java/common/c/code/saj_qosProvider.c:136
#8 0x00007f86f52fbf2f in Java_DDS_QosProvider_jniQosProviderFree (env=0x7f87440849f8, jqosProvider=0x7f8730cd8720, qosProvider=140218947435344)
at /{...}src/api/dcps/java/common/c/code/saj_qosProvider.c:234
#9 0x00007f8735017a34 in ?? ()
#10 0x00007f8730cd86f0 in ?? ()
...

The issue can be replicated with:

System.setProperty(ServiceEnvironment.IMPLEMENTATION_CLASS_NAME_PROPERTY,
		"org.opensplice.dds.core.OsplServiceEnvironment");
		
ServiceEnvironment env = ServiceEnvironment.createInstance(QosProviderTest.class.getClassLoader());
QosProvider provider = env.getSPI()
		.newQosProvider("file://path/to/qos.xml", "");

// Arbitrary call to prevent it from being removed as some optimization
provider.toString();

// Set it to null and wait for it to be garbage collected
provider = null;
System.gc();

List<Object> objects = new LinkedList<>();
for (int i = 0; i < 20000000; i++) {
	objects.add(new Object());
}

Java: Listener example does not work

Hi,

the Listener example with java (standalone) does not work:

  1. The class ListenerDataListener is missing in saj_listener_sub.jar. This can be fixed easily by adding ListenerDataListener.java to examples/dcps/Listener/java/standalone/listener.mpc
  2. After that the execution of java -jar saj_listener_sub.jar fails with the following error:

java: /opensplice/src/api/dcps/java/common/c/code/saj_listener.c:68: saj_listenerAttach: Assertion `jresult == 0' failed.
Aborted

Tested revision 0f01170 with JDK 8 (Oracle) and OpenJDK 8.on Debian Jessie.

gmcs / mono dependency on Mac OS X?

Compilation aborts with the error below - is the references 'gmcs' executable the mono compiler? Can this dependency be eliminated?

idlpp  -I/Users/user/src/opensplice/etc/idl -l cs -S -o custom-psm /Users/user/src/opensplice/etc/idl/dds_dcps_builtintopics.idl
idlpp  -I/Users/user/src/opensplice/etc/idl -l cs -S -o custom-psm /Users/user/src/opensplice/etc/idl/dds_builtinTopics.idl
gmcs -noconfig -nowarn:1701,1702 -warn:4 -define:DEBUG\;TRACE -debug+ -debug:full -optimize- -out:dcpssacs.netmodule -target:module  ../../code/DDS/Condition.cs ../../code/DDS/DataReaderListener.cs ../../code/DDS/DataWriterListener.cs ../../code/DDS/DdsDcpsEnums.cs ../../code/DDS/DdsDcpsInterfaces.cs ../../code/DDS/DdsDcpsStructs.cs ../../code/DDS/DomainParticipantFactory.cs ../../code/DDS/DomainParticipantListener.cs ../../code/DDS/ErrorInfo.cs ../../code/DDS/GuardCondition.cs ../../code/DDS/PublisherListener.cs ../../code/DDS/StatusCondition.cs ../../code/DDS/SubscriberListener.cs ../../code/DDS/TopicListener.cs ../../code/DDS/WaitSet.cs ../../code/DDS/OpenSplice/ContentFilteredTopic.cs ../../code/DDS/OpenSplice/DataReader.cs ../../code/DDS/OpenSplice/DataReaderListenerHelper.cs ../../code/DDS/OpenSplice/DataWriter.cs ../../code/DDS/OpenSplice/DomainParticipant.cs ../../code/DDS/OpenSplice/DomainParticipantListenerHelper.cs ../../code/DDS/OpenSplice/Entity.cs ../../code/DDS/OpenSplice/FooDataReader.cs ../../code/DDS/OpenSplice/FooDataWriter.cs ../../code/DDS/OpenSplice/MultiTopic.cs ../../code/DDS/OpenSplice/Publisher.cs ../../code/DDS/OpenSplice/PublisherDataWriterListenerHelper.cs ../../code/DDS/OpenSplice/QueryCondition.cs ../../code/DDS/OpenSplice/ReadCondition.cs ../../code/DDS/OpenSplice/SacsSuperClass.cs ../../code/DDS/OpenSplice/Subscriber.cs ../../code/DDS/OpenSplice/SubscriberListenerHelper.cs ../../code/DDS/OpenSplice/Topic.cs ../../code/DDS/OpenSplice/TopicDescription.cs ../../code/DDS/OpenSplice/TopicListenerHelper.cs ../../code/DDS/OpenSplice/TypeSupport.cs ../../code/DDS/OpenSplice/Gapi/BuiltinTopicData.cs ../../code/DDS/OpenSplice/Gapi/Conditions.cs ../../code/DDS/OpenSplice/Gapi/ContentFilteredTopic.cs ../../code/DDS/OpenSplice/Gapi/DataReader.cs ../../code/DDS/OpenSplice/Gapi/DataReaderView.cs ../../code/DDS/OpenSplice/Gapi/DataWriter.cs ../../code/DDS/OpenSplice/Gapi/DcpsGapi.cs ../../code/DDS/OpenSplice/Gapi/DomainParticipant.cs ../../code/DDS/OpenSplice/Gapi/DomainParticipantFactory.cs ../../code/DDS/OpenSplice/Gapi/Entity.cs ../../code/DDS/OpenSplice/Gapi/ErrorInfo.cs ../../code/DDS/OpenSplice/Gapi/FooDataReader.cs ../../code/DDS/OpenSplice/Gapi/FooDataReaderView.cs ../../code/DDS/OpenSplice/Gapi/FooDataWriter.cs ../../code/DDS/OpenSplice/Gapi/FooTypeSupport.cs ../../code/DDS/OpenSplice/Gapi/MetaDataInterface.cs ../../code/DDS/OpenSplice/Gapi/MultiTopic.cs ../../code/DDS/OpenSplice/Gapi/Object.cs ../../code/DDS/OpenSplice/Gapi/Publisher.cs ../../code/DDS/OpenSplice/Gapi/Subscriber.cs ../../code/DDS/OpenSplice/Gapi/Topic.cs ../../code/DDS/OpenSplice/Gapi/TopicDescription.cs ../../code/DDS/OpenSplice/Gapi/TypeSupport.cs ../../code/DDS/OpenSplice/Gapi/WaitSet.cs ../../code/DDS/OpenSplice/Database/DDSDatabase.cs ../../code/DDS/OpenSplice/CustomMarshalers/BaseMarshaler.cs ../../code/DDS/OpenSplice/CustomMarshalers/DataReaderMarshalers.cs ../../code/DDS/OpenSplice/CustomMarshalers/DatabaseMarshaler.cs ../../code/DDS/OpenSplice/CustomMarshalers/DatabaseSequenceMarshaler.cs ../../code/DDS/OpenSplice/CustomMarshalers/GapiMarshaler.cs ../../code/DDS/OpenSplice/CustomMarshalers/ListenerMarshalers.cs ../../code/DDS/OpenSplice/CustomMarshalers/QosContainedMarshalers.cs ../../code/DDS/OpenSplice/CustomMarshalers/QosToplevelMarshalers.cs ../../code/DDS/OpenSplice/CustomMarshalers/SampleMarshalers.cs ../../code/DDS/OpenSplice/CustomMarshalers/SequenceMarshalers.cs ../../code/DDS/OpenSplice/CustomMarshalers/StatusMarshaler.cs ../../code/DDS/OpenSplice/Kernel/DDSKernel.cs dds_dcps_builtintopics.cs dds_builtinTopics.cs Idds_dcps_builtintopicsDcps.cs Idds_builtinTopicsDcps.cs dds_dcps_builtintopicsDcps.cs dds_builtinTopicsDcps.cs dds_dcps_builtintopicsSplDcps.cs dds_builtinTopicsSplDcps.cs
make[5]: gmcs: No such file or directory
make[5]: *** [dcpssacs.netmodule] Error 1
make[4]: *** [link] Error 2
make[3]: *** [sacs.ss_link] Error 2
make[2]: *** [dcps.ss_link] Error 2
make[1]: *** [api.ss_link] Error 2
make: *** [src.ss_link] Error 2

Compilation fails with gcc/g++ 5.3.1 (ubuntu 16.04)

Trying to compile the openslice 6.7.170523OSS using a gcc 5.3.1 (default compiler in Ubuntu 16.04) ends up failing with the following message:
make[5]: Entering directory '/home/worker/project/VortexOpenSplice/src/tools/idlpp/bld/x86_64.linux-release'
gcc -static-libgcc -L/home/worker/project/VortexOpenSplice/lib/x86_64.linux-release -std=c99 -D_GNU_SOURCE -DOSPL_LINUX -O3 -fno-strict-aliasing -flto -DNDEBUG -Wall -W -Wno-long-long -Wno-variadic-macros -Werror=uninitialized -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -DDO_HOST_BY_NAME -Wconversion idl_base.o idl_genLiteHelper.o idl_genCxxStreamsImpl.o idl_walk.o idl_registerType.o idl_genLiteISOCxxCopyin.o idl_catsDef.o idl_streamsDef.o idl_genC99Helper.o idl_genSacMeta.o idl_tmplExp.o idl_genCorbaCxxCopyin.o idl_genSajMeta.o idl_genSajType.o idl_genSajHolder.o idl_parser.o idl_genMetaHelper.o idl_genSACSSplDcps.o idl_genISOCxx2Copyout.o idl_genSACSType.o idl_map.o idl_typeSpecifier.o idl_genSACPPType.o idl_genSacTypedClassDefs.o idl_genC99Copyout.o idl_genSplHelper.o idl_genCxxStreamsDefs.o idl_genTypeSize.o idl_genJavaHelper.o idl_genCxxTypedClassImpl.o idl_genIdlHelper.o idl_fileMap.o idl_genISOCxxHeader.o idl_genSacType.o idl_genSACSHelper.o idl_genCxxStreamsIdl.o idl_stacDef.o idl_genSpliceType.o idl_genFaceISOCxx2Tmpl.o idl_scope.o idl_sematicRules.o idl_genISOCxx2Helper.o idl_genSACPPTypeImpl.o idl_genC99Tmpl.o idl_genCorbaCCopyout.o idl_genIdl.o idl_genISOCxx2Header.o idl_dependencies.o idl_genCorbaCHelper.o idl_genLiteCxxCopyout.o idl_genCorbaCCopyin.o idl_main.o idl_genC99Type.o idl_genCorbaJavaHelper.o idl_genCorbaCxxStreamsCcpp.o idl_genCxxTypedClassDefs.o idl_genLiteCxxCopyin.o idl_genCorbaCxxHelper.o idl_genSpliceLoad.o idl_databaseValidation.o idl_keyDef.o idl_dll.o idl_constSpecifier.o idl_genSpliceLiteType.o idl_genSacObjectControl.o idl_genISOCxx2Type.o idl_genCHelper.o idl_genSACPPTypedClassDefs.o idl_genSACSTypedClassDefs.o idl_genLiteISOCxxCopyout.o idl_unsupported.o idl_genTypeDescriptors.o idl_genCxxHelper.o idl_genCorbaCxxCcpp.o idl_genSACPPTypedClassImpl.o idl_genCorbaCxxCopyout.o idl_genSacHelper.o idl_genLanguageHelper.o idl_genSacTypedClassImpl.o idl_genSajTypedClass.o idl_genSpliceDep.o idl_genFaceJava.o -lc -lm -ldl -lpthread -lrt -lddscpp -lddshts -o idlpp
/tmp/ccLuKydl.ltrans0.ltrans.o๏ผšIn function โ€˜idl_base_yyparseโ€™๏ผš
:(.text+0xcfd4)๏ผšundefined reference to โ€˜preprocess_getcโ€™
/tmp/ccLuKydl.ltrans2.ltrans.o๏ผšIn function โ€˜idl_parseFileโ€™๏ผš
:(.text+0x523c)๏ผšundefined reference to โ€˜preprocessโ€™
/tmp/ccLuKydl.ltrans6.ltrans.o๏ผšIn function โ€˜mainโ€™๏ผš
:(.text.startup+0x2c)๏ผšundefined reference to โ€˜init_preprocessโ€™
:(.text.startup+0x582)๏ผšundefined reference to โ€˜Ifileโ€™
:(.text.startup+0xe92)๏ผšundefined reference to โ€˜Ifileโ€™
:(.text.startup+0x15d0)๏ผšundefined reference to โ€˜init_preprocessโ€™
:(.text.startup+0x1619)๏ผšundefined reference to โ€˜Ifileโ€™
/tmp/ccLuKydl.ltrans26.ltrans.o๏ผšIn function โ€˜addDefine.lto_priv.705โ€™๏ผš
:(.text+0xa05)๏ผšundefined reference to โ€˜defineโ€™
collect2: error: ld returned 1 exit status
/home/worker/project/VortexOpenSplice/setup/makefiles/target-only.mak:110: recipe for target 'idlpp' failed
make[5]: *** [idlpp] Error 1
make[5]: Leaving directory '/home/worker/project/VortexOpenSplice/src/tools/idlpp/bld/x86_64.linux-release'
makefile:7: recipe for target 'all' failed

seems a link path problem. the tricks for gcc/g++ 4.9 (ubuntu 15.04) doesn't work here !

Vast majority of messages lost when analysing core of opensplice

Hello,

our research group is trying to locate or prove the lack of concurrency-related bugs in opensplice DDS using dynamic analysis. Our goal is to try out our analysis tools and to help ensuring and/or improving the quality of opensplice DDS.

Unfortunately, the real-time nature of opensplice DDS does not combine well with the significant overhead of our dynamic analysis tool. Namely, we had to bypass several time-outs by altering the source code of opensplice DDS. Note that we are not aiming at checking any real-time properties, we are aiming at pure concurrency bugs (data races, deadlocks, etc.), and so the alteration of the time-outs should be acceptable for us.

We managed to get to a point where we can analyse a full run of the Message Board tutorial example program with no errors. However, a significant number of messages is somehow lost and not delivered. We were not able to find the cause of this behaviour.

Would somebody point us to the points of opensplice which could cause the loss of messages? Or to the settings of opensplice which should modify the behaviour not to discard the messages?

Best regards,
Ondล™ej Vaลกรญฤek
(VeriFIT research group, Brno University of Technology, http://www.fit.vutbr.cz/research/groups/verifit/ )

Send and Receive Serialized Data

In order to be able to efficiently record and replay DDS data, I am looking for a way to bypass de-serialization and receive the raw CDR data stream from the subscriber. Similarly, I'd like to then publish this stored CDR data stream as is with a publisher.
We need that capability to implement rosbags for ROS2 with OpenSplice. The open ticket for it can be found here: ros2/demos#185

To give you an idea on how this API can look like, the referenced PR also shows a demo called talker_raw and 'listener_raw`.
The listener's callback can simply print the hex representation of the CDR stream:
https://github.com/ros2/demos/blob/9a64c8e1eeac647e1d1b4d10d54e9452e1f1dde5/demo_nodes_cpp/src/topics/listener_raw.cpp#L48-L50
The talker can send plain CDR data in a message:
https://github.com/ros2/demos/blob/9a64c8e1eeac647e1d1b4d10d54e9452e1f1dde5/demo_nodes_cpp/src/topics/talker_raw.cpp#L53-L55

We have that functionality currently available in all ROS2 supported DDS vendors, however I haven't found a way of doing this with OpenSplice.

Does anybody have an idea on how to accomplish something like this?

Segfault: disabling builtin-topics

Hi All,

I tried to disable the builtin-topics while creating the pubs and subs.
Followed below way to disable

But I am facing the segfault issue

v_dataReaderFree (_this=0xffffa80021a0) at /home/.../ospl/src/kernel/code/v_dataReader.c:791
791 if (v_reader(_this)->qos->share.v.enable) {

Please let me know how can I disable the builtin topics.

Thanks & Regards,
Pradeep

Embedibility: Can opensplice be combined on embedded devices?

I am looking for an open source pub/sub protocol that can be compiled on embedded systems. I need the system to fit comfortably on devices with <32k of RAM and < 128k of flash.

Can opensplice do this currently? How difficult would you estimate it is to port it?

DDS looks like just about the perfect protocol for every level of communication. Thanks a lot!

Bug in serializing messages with sequences of 64 bit values

For very specific messages OpenSplice seems to serialize the message incorrectly. Let me describe a pretty specific message which leads to it:

long prefix;
sequence<boolean> bool_values;
sequence<long long> int64_values;
long check

I left both sequences empty and set check to a known value not equal to zero. I think it is essential that one of the sequences is 64 bit and a second sequence is in the message. The resulting serialized message was 4 bytes longer then specified in CDR. Therefore no subscriber received the check value correctly. The prefix field might or might not be necessary - it might depend on the alignment of the message.

Since previous tickets in this repo haven't received much attention I didn't spend more time on a simple reproducible example yet. Please let me know if you need further information.

CLANG compilation fails due to variable with incomplete type.

Environment:

OX X 10.9.2
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.1.0
Thread model: posix

Failing to compile for x86_64 Darwin using CLANG due to illegal use of incomplete template types.

ease/code/dds/domain/DomainParticipantListener.o" code/dds/domain/DomainParticipantListener.cpp
In file included from code/dds/domain/DomainParticipantListener.cpp:17:
In file included from include/dds/domain/DomainParticipantListener.hpp:22:
In file included from include/spec/dds/domain/DomainParticipantListener.hpp:22:
In file included from include/dds/pub/PublisherListener.hpp:22:
In file included from include/spec/dds/pub/PublisherListener.hpp:22:
In file included from include/dds/pub/AnyDataWriterListener.hpp:22:
In file included from include/spec/dds/pub/AnyDataWriterListener.hpp:22:
In file included from include/dds/pub/AnyDataWriter.hpp:22:
In file included from include/spec/dds/pub/AnyDataWriter.hpp:25:
In file included from include/dds/pub/detail/AnyDataWriter.hpp:24:
include/dds/pub/DataWriter.hpp:637:33: error: variable has incomplete type 'dds::pub::AnyDataWriter'
        dds::pub::AnyDataWriter adw(*this);
                                ^
include/dds/pub/DataWriter.hpp:34:7: note: forward declaration of 'dds::pub::AnyDataWriter'
class AnyDataWriter;
      ^
include/dds/pub/DataWriter.hpp:651:33: error: variable has incomplete type 'dds::pub::AnyDataWriter'
        dds::pub::AnyDataWriter adr(*this);
                                ^
include/dds/pub/DataWriter.hpp:34:7: note: forward declaration of 'dds::pub::AnyDataWriter'
class AnyDataWriter;
      ^
2 errors generated.
make[5]: *** [.objRelease/code/dds/domain/DomainParticipantListener.o] Error 1
make[4]: *** [Build_DCPS_ISO_Cpp_Lib] Error 2
make[3]: *** [build_isocpp] Error 2
make[2]: *** [dcps.ss_link] Error 2
make[1]: *** [api.ss_link] Error 2
make: *** [src.ss_link] Error 2

Core dumped in Listener example

  • From the DCPS Listener example
    On the way testing Listener function of DDS, I encountered the following errors which seemed to be raised from the core.
rossi@retriever:~/opensplice/install/HDE/x86_64.linux-dev/examples/dcps/Listener/cpp/standalone$ ./sacpp_listener_sub 
=== [ListenerDataSubscriber] set_listener
=== [ListenerDataSubscriber] Ready ...
sacpp_listener_sub: /home/rossi/opensplice/src/kernel/code/v_status.c:514: v_statusReset: Assertion `s != NULL' failed.
Aborted (core dumped)
rossi@retriever:~/opensplice/install/HDE/x86_64.linux-dev/examples/dcps/Listener/cpp/standalone$ 

rossi@retriever:~/dds-tutorial-cpp-ex/ch3$ ./ltssub 
ltssub: /home/rossi/opensplice/src/kernel/code/v_status.c:514: v_statusReset: Assertion `s != NULL' failed.
Aborted (core dumped)
rossi@retriever:~/dds-tutorial-cpp-ex/ch3$ 

IPv6 issues

Hi, I'm trying to get a prototype working with IPv6. Following the deployment manual I set

<NetworkInterfaceAddress ipv6="true">2001:db8:4b:223:0:0:0:1</NetworkInterfaceAddress>
Report      : ERROR
Date        : Mon Mar 14 14:35:54 UTC 2016
Description : config: DDSI2Service/General/NetworkInterfaceAddress: ipv6: unknown attribute

Node        : hros-communication-master-b827eb191980
Process     : python3.4 <2935>
Thread      : ddsi2 73fff460
Internals   : V6.4.140407OSS///ddsi2/q_config.c/859/0/1457966154.473764202
========================================================================================
Report      : ERROR
Date        : Mon Mar 14 14:35:54 UTC 2016
Description : Could not initialise configuration

Node        : hros-communication-master-b827eb191980
Process     : python3.4 <2935>
Thread      : ddsi2 73fff460
Internals   : V6.4.140407OSS///ddsi2/q_main.c/1926/0/1457966154.475534612

The attribute causes an error and not communication happens. Can someone advise?
Thanks,

Compilation fails with gcc/g++ 4.9

Trying to compile the openslice current master branch using a gcc 4.9 (default compiler in Ubuntu Vivid) ends up failing with the following message:

g++    -static-libgcc -L/tmp/buildd/libopensplice64-6.4.0/lib/x86_64.linux-release -D_GNU_SOURCE -DOSPL_LINUX -O4 -fno-strict-aliasing -flto -DNDEBUG -Wall -W -pedantic -Wno-long-long -Wno-variadic-macros -Werror=uninitialized -DDO_HOST_BY_NAME -L. ast_boxed_value.o xbe_utils.o ast_attribute.o xbe_interface.o xbe_structure.o xbe_argument.o xbe_enum.o xbe_source.o xbe_produce.o std.o utl_pragmas.o ast_union_label.o xbe_constant.o xbe_attribute.o ast_typedef.o xbe_init.o fe_init.o fe_declarator.o ast_concrete_type.o utl_indenter.o ast_type.o drv_init.o xbe_predefined.o ast_exception.o ast_generator.o fe_private.o xbe_args.o xbe_typedef.o ast_constant.o utl_decllist.o utl_labellist.o xbe_argument2.o xbe_incl.o utl_identifier.o xbe_root.o drv_args.o xbe_type.o utl_wstring.o utl_string.o xbe_exception.o ast_enum_val.o ast_decl.o drv_param.o xbe_globals.o fe_value_header.o utl_idlist.o ast_statemember.o xbe_cppscope.o ast_union_branch.o ast_initializer.o utl_strlist.o xbe_interface2.o utl_stack.o xbe_cppname.o xbe_cpptype.o nr_narrow.o y_tab.o xbe_cppfwd.o ast_check.o xbe_classes.o ast_root.o ast_interface_fwd.o ast_expression.o utl_scope.o xbe_direction.o utl_list.o utl_error.o xbe_string.o utl_namelist.o xbe_module.o lex_yy.o xbe_genlist.o fe_interface_header.o ast_redef.o ast_operation.o fe_extern.o ast_string.o xbe_arglist.o ast_hdrs.o utl_exceptlist.o ast_module.o ast_array.o ast_interface.o ast_value_fwd.o ast_predefined_type.o xbe_dispatchable.o drv_fork.o fe_value_inheritance_spec.o ast_union.o xbe_operation.o utl_global.o utl_exprlist.o drv_link.o xbe_union.o xbe_array.o drv_preproc.o xps_vector.o ast_opaque.o xbe_literals.o ast_sequence.o ast_value.o xbe_classgen.o cppgen.o xbe_invoke.o xbe_generator.o xbe_hash.o xps_string.o xbe_interface3.o xbe_dispatcher.o xbe_value.o drv_private.o drv_main.o xbe_codegen.o xbe_expr_val.o xbe_opnameset.o ast_recursive.o xbe_field.o ast_structure.o xbe_time.o ast_argument.o ast_enum.o ast_field.o xbe_sequence.o libstdc++.a -lc -lm -ldl -lpthread -lrt -lddscpp -lddshts  -o cppgen
/tmp/ccRAmaNd.ltrans7.ltrans.o: In function `idl_parse_line_and_file(char*)':
<artificial>:(.text+0x1199): undefined reference to `fstackdepth'
/tmp/ccRAmaNd.ltrans7.ltrans.o: In function `yy_get_next_buffer()':
<artificial>:(.text+0x1a19): undefined reference to `preprocess_getc'
/tmp/ccRAmaNd.ltrans14.ltrans.o: In function `main':
<artificial>:(.text.startup+0x320): undefined reference to `init_preprocess'
/tmp/ccRAmaNd.ltrans18.ltrans.o: In function `DRV_drive':
<artificial>:(.text+0x303c): undefined reference to `preprocess'
<artificial>:(.text+0x3517): undefined reference to `preprocess_getc'
/tmp/ccRAmaNd.ltrans24.ltrans.o: In function `DRV_cpp_putarg':
<artificial>:(.text+0x3eeb): undefined reference to `define'
<artificial>:(.text+0x3f0c): undefined reference to `define'
<artificial>:(.text+0x3f78): undefined reference to `define'
<artificial>:(.text+0x3fcb): undefined reference to `Ifile'
<artificial>:(.text+0x4015): undefined reference to `undef'
collect2: error: ld returned 1 exit status
/tmp/buildd/libopensplice64-6.4.0/setup/makefiles/target-only.mak:92: recipe for target 'cppgen' failed

The same code can be compiled successfully with gcc 4.8. There is probably some object code missing in that compiler command that did not trigger a failure in 4.8 linker (probably it does not try to resolve references at linking time) but after some changes in linker in gcc version 4.9 now they need to be resolved at linking time.

Update branch arm9-linux

Hello,

The branch arm9-linux is not update with the last release.
If you want, you can merge it with the branch arm9-linux of my fork (https://github.com/marcbuils/opensplice).
This is the arm9-linux branch merged with the current master branch. The cross compiler for this version is the cross compiler of Angstrom linux.

Regards,

Marc

[wish] Please add an example showing how to use the C99 API

idlpp supports the switch -l c99 but I have not been able to find an example for how to program an application using this mode.

idlpp -l c99 for an IDL file foo.idl generates the following header files:
foo.h fooDcps.h fooSplDcps.h fooSacDcps.h
Which of these should the C99 user code #include?

I gather that ${OSPL_HOME}/install/HDE/${SPLICE_TARGET}/include/dcps/C/C99/dds.h is the main include file for the C99 mode. Is that correct?
However, the generated file fooSacDcps.h also #includes
${OSPL_HOME}/install/HDE/${SPLICE_TARGET}/include/dcps/C/SAC/dds_dcps.h.
I am not sure whether those two #includes can coexist because the first originates from the C99 support and the second originates from the StandAlone C support. Is the C99 support designed to coexist with the SAC support?

get BuiltinTopicKey_t key

how can get the global unique uuid from one handle ( InstanceHandle_t)

i found some metho using v_gid and translator, but the .seial is specified 0, but the key[3] is not 0 sometimes, can I assign it mannually.

thanks much.

Issue installing community opensplice on Mac High Sierra 10.13.3

Any workaround for installing on Mac without disabling the SIP? I follow the instruction here http://www.prismtech.com/dds-community/building but I am stuck at the make stage.

source configure
Setup at 11:01:35 for Vortex - Version 6.7.180404OSS - Date 2018-07-26

MAKE: OK - using GNU Make 3.81
Perl: OK - using perl version='5.18.2';
Qt: Disabled. OSPL_QT_IS_ON was: no
GAWK: OK - using GNU Awk 4.2.1, API: 2.0 (GNU MPFR 4.0.1, GNU MP 6.1.2)
BISON: OK - using bison (GNU Bison) 2.3
FLEX: OK - using 2.5.35
JAVAC: Warning - you should set JAVA_COMPATJAR to rt.jar for Java 1.6
OK - using JAVAC version 1.8.0_152
JAVA_HOME is /Library/Java/Home
GMCS: Warning - No gmcs compiler found
gmcs C# compiler not found, disabling SACS api build.
TAO: Warning - No TAO found
TAO environment not set, disabling TAO related features.
JACORB: Warning - JACORB_HOME not set
JACORB environment not set, disabling JACORB related features.
GSOAP: OK - using GSOAP version 2.8.69
setting GSOAPHOME to /usr/local/Cellar/gsoap/2.8.69
DOXYGEN: Warning - ospl_docs repo cannot be reached and doxygen not installed
Generated documentation will not be available
GOOGLE PROTOCOL BUFFERS: PROTOBUF_HOME has not been set
Warning - Protobuf compiler environment not set, building of all protobuf related features is disabled.
C99: OK - supported
Configuration OK

make && make install
dyld: Library not loaded: @rpath/libddshts.dylib
Referenced from: /HDE/x86_64.darwin10_clang/src/VortexOpenSplice/exec/x86_64.darwin10_clang-release/idlpp
Reason: image not found

UPDATED:
So, after I disabled the SIP, I reran the make && make install. Then I got another error:
DEP soapServer.c
DEP soapC.c
DEP ../../code/cmsoap.c
DEP ../../code/cms_thread.c
DEP ../../code/cms_soapThread.c
DEP ../../code/cms_soap2.c
DEP ../../code/cms_service.c
DEP ../../code/cms_configuration.c
DEP ../../code/cms_client.c
make[4]: *** No rule to make target stdsoap2.d', needed by link'. Stop.
make[3]: *** [link] Error 2
make[2]: *** [cmsoap.ss_link] Error 2
make[1]: *** [services.ss_link] Error 2
make: *** [src.ss_link] Error 2

configure hangs with GSOAP V2.8 and open splice 6.7

With the configure script LINE 561 and GSOAP 2.8 (tested on 2.8.46 and 2.8.47) on debian stretch running on aarch64

  1. calling soapcpp2 -help no longer seems to return the version correctly.
  2. This results in the script calling soapcpp2 -v which does not exit and hangs

FIX :
A better way to do this is : GSOAP_VERSION=`soapcpp2 -V`

Implemented on my branch here:
https://github.com/matthewpang/opensplice/commit/e1f6e8e6539e87dcfae8eef520bd6519da8a3784

QosProvider doesn't accept Java URLs

When creating QosProvider Java constructed URLs cannot be used to point to QoS XML file.

For example, if we have QoS file
File qos = new File("qos.xml");

this will work:
QosProvider.newQosProvider("file://" + qos.getAbsolutePath(), "profile", environment)

but the following will not:
QosProvider.newQosProvider(qos.toURI().toString(), "profile", environment)
QosProvider.newQosProvider(qos.toURI().toURL().toString(), "profile", environment)

This is apparently because Java constructs file URLs with one forward slash
file:/path/folder/qos.xml, while QosProvider expects two or three forward slashes file://path/folder/qos.xml.

This was tested on Centos 7.3 with Java 1.8 update 144 and with opensplice release OSPL_V6_7_180404OSS_RELEASE.

Process left hanging when using "FreeLibrary" on window

The following program hangs on Windows. Freeing the library seems to result in a deadlock.
Since version 6.7.

#include <Windows.h>

int main(int argc, char** argv)
{
    HINSTANCE var_library = LoadLibrary("ddskernel.dll");
    if (var_library == NULL) {
        exit(1);
    }

    Sleep(1000);

    FreeLibrary(var_library);

    return 0;
}

Protobuf example unable to build

Upon running the build file in standalone folder under the examples/protobuf

I get the following error. The same error is replicated when I build my own protobuf-dds project.

PROTOBUF_LIB_HOME variable not set. Looking for library in default locations.
./BUILD: line 27: gawk: command not found
libprotoc 2.6.1
Compiling proto files...
 - ../proto/address.proto
 - /home/user/protobuf/src/google/protobuf/descriptor.proto
 - /home/user/HDE/x86_64.linux/src/tools/protobuf/protos/omg/dds/descriptor.proto
Compiling proto files done
Compiling publisher...
/tmp/ccEUgCUp.o: In function `dds::topic::detail::Topic<address::Person>::init(std::tr1::weak_ptr<org::opensplice::core::ObjectDelegate>)':
/home/user/HDE/x86_64.linux/include/dcps/C++/isocpp2/dds/topic/detail/TTopicImpl.hpp:260: undefined reference to `org::opensplice::core::ObjectDelegate::set_weak_ref(std::tr1::weak_ptr<org::opensplice::core::ObjectDelegate>)'
/tmp/ccEUgCUp.o: In function `dds::pub::detail::DataWriter<address::Person>::init(std::tr1::weak_ptr<org::opensplice::core::ObjectDelegate>)':
/home/user/HDE/x86_64.linux/include/dcps/C++/isocpp2/dds/pub/detail/DataWriterImpl.hpp:480: undefined reference to `org::opensplice::core::ObjectDelegate::set_weak_ref(std::tr1::weak_ptr<org::opensplice::core::ObjectDelegate>)'
/tmp/ccEUgCUp.o: In function `dds::sub::detail::DataReader<address::Person>::init(std::tr1::weak_ptr<org::opensplice::core::ObjectDelegate>)':
/home/user/HDE/x86_64.linux/include/dcps/C++/isocpp2/dds/sub/detail/TDataReaderImpl.hpp:629: undefined reference to `org::opensplice::core::ObjectDelegate::set_weak_ref(std::tr1::weak_ptr<org::opensplice::core::ObjectDelegate>)'
/tmp/ccEUgCUp.o:(.rodata._ZTCN3dds5topic6detail5TopicIN7address6PersonEEE0_N3org10opensplice5topic16AnyTopicDelegateE[_ZTVN3dds5topic6detail5TopicIN7address6PersonEEE]+0x50): undefined reference to `org::opensplice::topic::AnyTopicDelegate::init(std::tr1::weak_ptr<org::opensplice::core::ObjectDelegate>)'
/tmp/ccEUgCUp.o:(.rodata._ZTCN3dds5topic6detail5TopicIN7address6PersonEEE0_N3org10opensplice5topic16AnyTopicDelegateE[_ZTVN3dds5topic6detail5TopicIN7address6PersonEEE]+0x148): undefined reference to `virtual thunk to org::opensplice::topic::AnyTopicDelegate::init(std::tr1::weak_ptr<org::opensplice::core::ObjectDelegate>)'
collect2: error: ld returned 1 exit status

Compiling on Mac OS 10.9.5

Using "Java for OS X 2014-001" available here : http://support.apple.com/kb/dl1572

DEP ../../code/cmj_factory.c
In file included from ../../code/cmj_factory.c:38:
../../include/cmj_factory.h:14:10: fatal error: 'jni.h' file not found
#include <jni.h>
         ^
1 error generated.
make[5]: *** No rule to make target `cmj_factory.d', needed by `compile'.  Stop.

Register datareader instance

In order to reduce memory allocation during runtime and knowing the structure of the topic, I would like to avoid any memory allocation during applications run.
For this purpose and similar to datawriter, is it possible to register a datareader instance before a first sample has been received ?
Is there any other way to avoid memory allocation during runtime ? (shared memory init size for example ?)
Thanks,

VS2017 TDataReaderImpl.hpp Argument conversion warning

Visual studio 2017 64bit target gives a warning about a conversion from size_t to os_uint32. for line 616:

    u_dataReader uReader = u_dataReaderNew(uSubscriber, name.c_str(), expression.c_str(),
        params.empty() ? NULL : &params[0], params.size(), uQos);

This is in the current master. The latest public downloadable binary version does not show this warning

GSOAP: Error - Invalid Setup

I configured gsoap but the configure reported erros as follows:

itfanr@itfanr-pc:opensplice$ which soapcpp2
/usr/local/bin/soapcpp2
itfanr@itfanr-pc:opensplice$ export GSOAPHOME=/usr/local/bin/
itfanr@itfanr-pc:opensplice$ source configure 

Setup at 15:35:08 for Vortex - Version 6.7.180404OSS - Date 2018-10-12


GCC: OK - Using version 5.4.0
  NOTE - Building Fujitsu system-tests
GLIBC: version 2.23
MAKE: OK - using GNU Make 4.1
Perl: OK - using perl version='5.22.1';
Qt: On. Using QT tools from the path (with -qt4 suffix).
GAWK: OK - using GNU Awk 4.1.3, API: 1.1 (GNU MPFR 3.1.4, GNU MP 6.1.0)
BISON: OK - using 3.0.4
FLEX: OK - using 2.6.0
JAVAC: OK - using JAVAC version 1.8.0_181
  JAVA_HOME is /usr/lib/jvm/java-8-openjdk-amd64
GMCS: Warning - No gmcs compiler found
   gmcs C# compiler not found, disabling SACS api build.
TAO: Warning - No TAO found
   TAO environment not set, disabling TAO related features.
JACORB: Warning - JACORB_HOME not set
   JACORB environment not set, disabling JACORB related features.
GSOAP: Error - Invalid Setup
DOXYGEN: OK
GOOGLE PROTOCOL BUFFERS: PROTOBUF_HOME points to /usr/local/bin that does not include required sources
Warning - Protobuf compiler environment not set, building of all protobuf related features is disabled.
C99: OK - supported
Configuration Invalid

I have read the checkconf shell script, but dit not find any bug.

        if [ ! -d "$GSOAPHOME" ]
        then
            echo "Error - $GSOAPHOME is invalid"
            return 1
        fi
        if [ ! -f "$GSOAPHOME/bin/soapcpp2" ]
        then
            echo "Error - Invalid Setup"
            return 1
        fi

idlpp is not robust to paths with whitespace

We are working on building on top of OpenSplice and have a goal of making our tools robust to paths with whitespace. ros2/ros2#20 However we've reached a blocker that idlpp does not pass arguments through to gencpp with whitespace properly quoted.

I've debugged into our system and it has bottomed out with this invocation of idlcpp.

/usr/bin/idlpp -I "/home/tfoote/work/r2/ros2 ws/build/simple_msgs/rosidl_generator_dds_idl" -S -l cpp -o dds-types -d "/home/tfoote/work/r2/ros2 ws/build/simple_msgs/rosidl_typesupport_opensplice_cpp/simple_msgs/dds_opensplice" "/home/tfoote/work/r2/ros2 ws/build/simple_msgs/rosidl_generator_dds_idl/simple_msgs/dds_opensplice/Time_.idl"

ildpp internally invokes cppgen with unquoted paths.

cppgen -I"/home/tfoote/work/r2/ros2 ws/build/simple_msgs/rosidl_generator_dds_idl" -I/home/tfoote/work/r2/ros2 ws/build/simple_msgs/rosidl_generator_dds_idl/simple_msgs/dds_opensplice -I/usr/etc/idl -I/usr/etc/opensplice/idlpp -ignore_interfaces -output=/home/tfoote/work/r2/ros2 ws/build/simple_msgs/rosidl_typesupport_opensplice_cpp/simple_msgs/dds_opensplice /home/tfoote/work/r2/ros2 ws/build/simple_msgs/rosidl_generator_dds_idl/simple_msgs/dds_opensplice/Time_.idl

Which hangs. The above commandline invocations were parsed from ps.

Once past that there will also be an issue that it's not quoting the idl filename.

Previously before I quoted the inputs to idlpp it crashed with these errors:

CMD IS ['/usr/bin/idlpp', '-I', '/home/tfoote/work/r2/ros2 ws/build/simple_msgs/rosidl_generator_dds_idl', '-S', '-l', 'cpp', '-o', 'dds-types', '-d', '/home/tfoote/work/r2/ros2 ws/build/simple_msgs/rosidl_typesupport_opensplice_cpp/simple_msgs/dds_opensplice', '/home/tfoote/work/r2/ros2 ws/build/simple_msgs/rosidl_generator_dds_idl/simple_msgs/dds_opensplice/Intraprocess_.idl']
Failed to open IDL file: ws/build/simple_msgs/rosidl_generator_dds_idl
Failed to open IDL file: ws/build/simple_msgs/rosidl_generator_dds_idl

Since it is not quoting the added include path it is parsing the 2nd half of the path as a positional argument. And as you can see in my debug statement CMD IS is showing that even without the quotes the arguments are being passed as separate command line arguments and should be able to be parsed without quoting the string.

Build Instruction Key FS Issue

I ran into continuous fails on make when the file would get to include subsystem.mak.

RESOLVED: make fails if your directory name is too long. I had to move it from where I had my git repo into my home directory to make it work.

Supporting forward slashes in topic names

Since there is an upcoming DDS spec that will allow forward slashes in topic names, ROS 2 is planning to move away from using {partition + topic} for our "namespacing" concept (see ros2/rmw_opensplice#176) and use just topic names without partitions instead.

The other vendors we support for ROS 2 (Connext, FastRTPS) currently allow forward slashes in topic names: are you open to allowing slashes in OpenSplice in advance of the new spec?

OMG compliance

Hi,

Does opensplice-dds comply with OMG specification Version 1.4? And RTPS specification 2.2?

Where can I find these information?

Thanks,
Pradeep

no ospl binary generated

Hello everyone,

I builded all the codes, but there are no ospl generated.
I want to ospl start to start the DDS server.

itfanr@itfanr-pc:bin$ pwd
/home/itfanr/repo_git/github.com/ADLINK-IST/opensplice/install/HDE/x86_64.linux/bin
itfanr@itfanr-pc:bin$ ls
cppgen  dbd  demo_ishapes  idlpp  mmstat  osplconf  shmdump
itfanr@itfanr-pc:bin$ cd /home/itfanr/repo_git/github.com/ADLINK-IST/opensplice/bin/
itfanr@itfanr-pc:bin$ ls
addr2line.pl         osplconf            process_build_logs.pl
checkconf            ospl_normalizePath  protoc-gen-ddscpp
clean_tree           ospl_su             protoc-gen-ddsjava
common               ospl_wincpp         sppodl
configure_functions  ospl_wincsc         valgrind_cmds
magic_make.pl        ospl_winlib

And the example is OK:

itfanr@itfanr-pc:standalone$ pwd
/home/itfanr/repo_git/github.com/ADLINK-IST/opensplice/examples/dcps/HelloWorld/cpp/standalone
itfanr@itfanr-pc:standalone$ ls
Build.bat                    helloworld.mpc
ccpp_HelloWorldData.h        libsacpp_helloworld_types.so
HelloWorldData.cpp           Makefile
HelloWorldDataDcps.cpp       Makefile.sacpp_helloworld_pub
HelloWorldDataDcps.h         Makefile.sacpp_helloworld_sub
HelloWorldDataDcps_impl.cpp  Makefile.sacpp_helloworld_types
HelloWorldDataDcps_impl.h    ospl-error.log
HelloWorldData.h             sacpp_helloworld_pub
HelloWorldDataSplDcps.cpp    sacpp_helloworld_sub
HelloWorldDataSplDcps.h

IDL parser bug: <enum> redefined

idlpp -l cs accepts this:

enum First { A };
enum Second { A };

And this:

enum First { A, B };
enum Second { A };

But this:

enum First { A }; // or enum First { A, anything... }
enum Second { A, B };

Produces the following error:
1> ***DDS parse error Second redefined at line: 2

This becomes quickly apparent when you have a guard value:

enum XStatus { UNKNOWN, X1, X2, ... };
enum YStatus { UNKNOWN, Y1, Y2, ... };

So I'm a bit surprised nobody has encountered it before and have to wonder if I haven't done something stupid, but the same IDL processes fine under RTI Connext.

C++11 Detection not working in VS2017

For the latest version of VS2017 OSPL_USE_CXX11 does not get defined, the fallback to using TR1 is selected which is being deprecated right now. It looks like macros.h uses _HAS_CPP0X which doesn't seem to be defined anymore. Just a plain check on the version number might be a better solution here.

Apparent memory leak

I'm trying to track down some thread and memory leakage when using OpenSplice. I've boiled my example program down to to the following:

#include "ccpp_dds_dcps.h"

using namespace DDS;

int
main(void)
{
  DomainId_t domain = DOMAIN_ID_DEFAULT;
  DomainParticipantFactory_var dpf = DomainParticipantFactory::get_instance();

  while (true)
  {
    DomainParticipant_var participant = dpf->create_participant(domain, PARTICIPANT_QOS_DEFAULT, NULL,
      STATUS_MASK_NONE);
    dpf->delete_participant(participant);
  }

  return 0;
}

When built against OpenSplice 6.4 on Linux, that program demonstrates constantly increasing and unbounded memory consumption. What am I doing wrong here? Is this use case (repeated creation and destruction of a participant) not supported? Do I need to configure the garbage collector?

Compilation fails with RHEL 7.0:

I'm compiling from tag OSPL_V6_4_OSS_RELEASE on a RHEL-7 machine:
$ uname -a
Linux build 3.10.0-123.el7.x86_64 #1 SMP Mon May 5 11:16:57 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux
$ source configure
<I selected "x86_64.linux-release">
GCC: OK - using version 4.8.2
NOTE: enabling link-time optimizations in release build
GLIBC: version 2.17
MAKE: OK - using GNU Make 3.82
Perl: OK - using perl version='5.16.3';
Qt: On. Using QT tools from the path (with -qt4 suffix).
GAWK: OK - using GNU Awk 4.0.2
BISON: OK - using bison (GNU Bison) 2.7
FLEX: OK - using 2.5.37
JAVAC: Warning - you should set JAVA_COMPATJAR to rt.jar for Java 1.6
OK - using JAVAC version 1.7.0_51
JAVA_HOME is /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.51-2.4.5.5.el7.x86_64
GMCS: Warning - No gmcs compiler found
gmcs C# compiler not found, disabling SACS api build.
TAO: Warning - No TAO found
TAO environment not set, disabling TAO related features.
JACORB: Warning - JACORB_HOME not set
JACORB environment not set, disabling JACORB related features.
GSOAP: Warning - Not found, cmsoap will not be built
Doxygen: OK
Configuration OK

Variable Setup
SPLICE_TARGET = x86_64.linux-release
SPLICE_HOST = x86_64.linux-release
OSPL_HOME = /home/cornell/apt/opensplice
SPLICE_ORB =
$ make
...
make -C /home/cornell/apt/opensplice/src/tools/cppgen/
make[4]: Entering directory /home/cornell/apt/opensplice/src/tools/cppgen' make[5]: Entering directory /home/cornell/apt/opensplice/src/tools/cppgen/bld/x86_64.linux-release'
make[5]: stat: libstdc++.a: Too many levels of symbolic links
ln -sf g++ -m64 -print-file-name=libstdc++.a
make[5]: stat: libstdc++.a: Too many levels of symbolic links
g++ -static-libgcc -L/home/cornell/apt/opensplice/lib/x86_64.linux-release -D_GNU_SOURCE -DOSPL_LINUX -O4 -fno-strict-aliasing -flto -DNDEBUG -Wall -W -pedantic -Wno-long-long -Wno-variadic-macros -Werror=uninitialized -DDO_HOST_BY_NAME -L. xbe_root.o ast_attribute.o xbe_interface.o xbe_structure.o xbe_argument.o xbe_field.o ast_union.o utl_error.o xbe_source.o xbe_argument2.o utl_pragmas.o ast_union_label.o cppgen.o xbe_attribute.o ast_typedef.o xbe_init.o fe_init.o ast_value_fwd.o y_tab.o ast_concrete_type.o utl_indenter.o ast_type.o drv_init.o xbe_predefined.o ast_exception.o ast_generator.o fe_private.o xbe_args.o ast_recursive.o ast_constant.o utl_decllist.o std.o lex_yy.o xbe_incl.o utl_identifier.o drv_fork.o drv_args.o xbe_type.o utl_wstring.o xbe_exception.o xbe_generator.o ast_decl.o drv_param.o xbe_constant.o ast_field.o fe_value_header.o utl_idlist.o xbe_globals.o xbe_cppscope.o ast_union_branch.o ast_initializer.o utl_strlist.o utl_stack.o xbe_cppname.o fe_declarator.o nr_narrow.o xbe_interface2.o xbe_cppfwd.o ast_check.o fe_interface_header.o ast_root.o ast_interface_fwd.o ast_expression.o utl_scope.o xbe_direction.o utl_list.o utl_string.o xbe_string.o utl_namelist.o xbe_module.o ast_redef.o ast_operation.o fe_extern.o ast_string.o xbe_dispatchable.o ast_enum.o utl_exceptlist.o ast_enum_val.o ast_module.o ast_array.o xbe_cpptype.o ast_predefined_type.o xbe_genlist.o xbe_classes.o xbe_operation.o utl_global.o utl_exprlist.o drv_link.o xbe_union.o xbe_array.o drv_preproc.o xps_vector.o ast_opaque.o xbe_literals.o ast_sequence.o ast_value.o xbe_classgen.o xbe_utils.o xbe_invoke.o fe_value_inheritance_spec.o xbe_hash.o xps_string.o utl_labellist.o xbe_interface3.o xbe_dispatcher.o xbe_value.o drv_private.o drv_main.o xbe_codegen.o ast_statemember.o xbe_expr_val.o xbe_opnameset.o xbe_produce.o ast_interface.o ast_structure.o xbe_time.o ast_argument.o xbe_arglist.o ast_hdrs.o xbe_enum.o xbe_sequence.o ast_boxed_value.o xbe_typedef.o libstdc++.a -lc -lm -ldl -lpthread -lrt -lddscpp -lddshts -o cppgen
g++: error: libstdc++.a: Too many levels of symbolic links
make[5]: *** [cppgen] Error 1

I found that the symbolic link to libstdc++.a was pointing to the wrong spot:

$ cd src/tools/cppgen/bld/x86_64.linux-release/
$ ls -l libstdc++.a
lrwxrwxrwx. 1 cornell games 11 Mar 11 10:54 libstdc++.a -> libstdc++.a

I manually ran the output of the command, as found in the makefile found in cppgen:

$ g++ -m64 -print-file-name=libstdc++.a
libstdc++.a

Some more digging and it seems that I don't have libstdc++.a installed on the system, as this is not part of the standard g++ packages. I found this bug report:

https://bugzilla.redhat.com/show_bug.cgi?id=1201970

So all I had to do to resolve this issue is install the "libstdc++-static" RPM.

Bottom Line: the development documentation needs to be updated describing that you will be performing static linking of libstdc++ OR your feature testing in the configure script should look for libstdc++.a.

Note: I think that the 'g++ -m64 -print-file-name=libstdc++.a' command to print out the name of the file without a path is a bug on g++.

ContentFilteredTopic fails to create query on Windows

The code at https://github.com/ros2/rmw_opensplice/blob/7730b4904041a3a2260f4d1db139270d19100904/rosidl_typesupport_opensplice_cpp/include/rosidl_typesupport_opensplice_cpp/requester.hpp#L134 creates a ContentFilteredTopic with two query arguments.

That code works on Linux, but on Windows, we've seen the following error showing up from time to time. DDS::DomainParticipant::createcontentfilteredtopic should at least fail and not create ContentFilteredTopic if the query can't be created.

Report      : ERROR
Date        : Wed Sep 23 16:09:33 Pacific Daylight Time 2015
Description : Set query parameter[0] failed
Node        : win81-virtual
Process     : test_services_client_cpp__rmw_opensplice_cpp.exe <3552>
Thread      : 2924
Internals   : V6.4.140407OSS/3b83e82/3b83e82/Database predicate/c_querybase.c/1622/0/1443049773.557733494

Building OpenSplice from source

Hi,

This is Anita from Erle Robotics. I'm trying to install OpenSplice to be able to work with ROS 2 but I'm having troubles. For this purpose I've made an ARM chroot and I have taken the following steps:

1- I've gone to http://www.prismtech.com/dds-community/software-downloads and download the .tar file needed (I've downloaded the second one). I've followed the instructions described in http://www.prismtech.com/dds-community/software-downloads/installing

1.2- Unzip tar -xzf OpenSpliceDDSV6.4.140407OSS-HDE-armv7l.linux-release-installer.tar.gz . This will create the HDE folder.
1.3- Replace all the @@INSTALLDIR@@ with the absolute path of the working directory: sed -i "s|@@INSTALLDIR@@|$PWD|g" HDE/armv7l.linux/release.com
1.4- Checkout: echo $PWD y cat HDE/x86.linux2.6/release.com
1.5- Source $PWD/HDE/armv7l.linux/release.com

2- On the other hand, I've followed the steps from the following website http://www.prismtech.com/dds-community/building

2.1- Install just the necessary packages: gcc, gmake, gawk, flex, bison and perl.
2.2- Go to HDE/armv7l.linux/src and extract the tar -xzf OpenSpliceDDS-src.tar.gz
2.3- Go to OpenSpliceDDS and execute source ./configure
2.4- If everything is OK, execute make -j4 && make install

The error I get is described on: https://gist.github.com/ainchauspe/9abb274edec737d505d6

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.