IBM InfoSphere Streams primitive operator compilation errors on Power Linux

Technote (troubleshooting)


Problem(Abstract)

After migration to InfoSphere Streams Version 3.x on Power Linux, primitive operators no longer successfully compile.

Symptom

Primitive operators that successfully compiled on earlier releases of IBM InfoSphere Streams no longer compile after migration to InfoSphere Streams version 3.0 on Power Linux.

The new compilation errors fall into two categories:

  • Previously unreported C++ syntax errors mentioning the "-fpermissive" option as a workaround.

    This category will often have error message text in the form of: "error: <some syntax error> [-fpermissive]" indicating that the "-fpermissive" option could be used to flag these problems as warnings instead of errors.
  • Errors involving conversion between types __gnu_cxx::__versa_string and std::string

    This category will often have error message text in the form of either: "error: conversion from __gnu_cxx::__versa_string<char> to non-scalar type std::string {aka std::basic_string<char>} requested" or "error: no matching function for call to ... note: no known conversion for argument from 'SPL::rstring' to 'std::string'"


Cause

Two changes in InfoSphere Streams Version 3.x on Power Linux might result in compilation errors that do not occur on other InfoSphere Streams releases or platforms:

  • A newer version of the gcc compiler is used with InfoSphere Streams Version 3.x on Power Linux than on x86.

    gcc compiler Version 4.6.4 is used for InfoSphere Streams Version 3.x on Power Linux versus gcc Version 4.4.5 used for InfoSphere Streams Version 3.x on x86. The newer compiler version on Power Linux introduces more complete enforcement of the C++ architecture and therefore might detect additional syntax errors not reported by older gcc compiler versions.
  • InfoSphere Streams Version 3.x on Power Linux changes the C++ base class for the SPL::rstring type to __gnu_cxx::__versa_string from std::string.

    Primitive operator code that is intermixing declarations using type SPL::rstring with other declarations using type std::string will no longer compile successfully.

Environment

IBM InfoSphere Streams Version 3.x on Power Linux

Resolving the problem

The "fpermissive" errors are ideally resolved by correcting the particular syntax issue described by the gcc compiler. A less optimal workaround is to specify the -fpermissive compile option using the sc --cxx-flags option: --cxx-flags="-fpermissive"

The errors attempting to intermix SPL::rstring and std::string types are resolved by consistently using the SPL::rstring type declaration.


Rate this page:

(0 users)Average rating

Add comments

Document information


More support for:

InfoSphere Streams
Programming Model and Language

Software version:

3.0, 3.1

Operating system(s):

Linux

Reference #:

1609684

Modified date:

2012-09-12

Translate my page

Machine Translation

Content navigation