core-framework icon indicating copy to clipboard operation
core-framework copied to clipboard

build errors with g++ (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0

Open ClausKlein opened this issue 4 years ago • 2 comments

Making all in framework
  CXX      nodeBooter-nodebooter.o
  CXX      libossiedomain_la-CorbaGC.lo
  CXX      libossiedomain_la-File_impl.lo
  CXX      libossiedomain_la-FileManager_impl.lo
  CXX      libossiedomain_la-FileSystem_impl.lo
  CXX      libossiedomain_la-helperFunctions.lo
  CXX      libossiedomain_la-POACreator.lo
  CXX      libossiedomain_la-prop_utils.lo
In file included from ../include/ossie/Properties.h:34,
                 from nodebooter.cpp:49:
nodebooter.cpp: In function ‘void loadPRFExecParams(const string&, ExecParams&)’:
nodebooter.cpp:146:59: error: no match for ‘operator<<’ (operand types are ‘std::basic_ostream<char>’ and ‘std::ifstream’ {aka ‘std::basic_ifstream<char>’})
  146 |         LOG_ERROR(nodebooter, "Failed to parse PRF file " << prfStream<< ". " << parser_error_line << "The XML parser returned the following error: " << ex.what());
      |                                                           ^~ ~~~~~~~~~
      |                                                              |
      |                                                              std::ifstream {aka std::basic_ifstream<char>}
../../base/include/ossie/debug.h:76:14: note: in definition of macro ‘_RH_LOG’
   76 |     _msg <<  msg;                \
      |              ^~~
nodebooter.cpp:146:9: note: in expansion of macro ‘LOG_ERROR’
  146 |         LOG_ERROR(nodebooter, "Failed to parse PRF file " << prfStream<< ". " << parser_error_line << "The XML parser returned the following error: " << ex.what());
      |         ^~~~~~~~~
nodebooter.cpp:146:59: note: candidate: ‘operator<<(int, int)’ <built-in>
  146 |         LOG_ERROR(nodebooter, "Failed to parse PRF file " << prfStream<< ". " << parser_error_line << "The XML parser returned the following error: " << ex.what());
../../base/include/ossie/debug.h:76:14: note: in definition of macro ‘_RH_LOG’
   76 |     _msg <<  msg;                \
      |              ^~~
nodebooter.cpp:146:9: note: in expansion of macro ‘LOG_ERROR’
  146 |         LOG_ERROR(nodebooter, "Failed to parse PRF file " << prfStream<< ". " << parser_error_line << "The XML parser returned the following error: " << ex.what());
      |         ^~~~~~~~~
nodebooter.cpp:146:59: note:   no known conversion for argument 2 from ‘std::ifstream’ {aka ‘std::basic_ifstream<char>’} to ‘int’
  146 |         LOG_ERROR(nodebooter, "Failed to parse PRF file " << prfStream<< ". " << parser_error_line << "The XML parser returned the following error: " << ex.what());
../../base/include/ossie/debug.h:76:14: note: in definition of macro ‘_RH_LOG’
   76 |     _msg <<  msg;                \
      |              ^~~
nodebooter.cpp:146:9: note: in expansion of macro ‘LOG_ERROR’
  146 |         LOG_ERROR(nodebooter, "Failed to parse PRF file " << prfStream<< ". " << parser_error_line << "The XML parser returned the following error: " << ex.what());
      |         ^~~~~~~~~
In file included from /usr/include/c++/9/iostream:39,
                 from nodebooter.cpp:21:

# ....
Making all in sdr/dev/devices/GPP/cpp
  CXX      GPP-GPP.o
GPP.cpp: In member function ‘void GPP_i::update_grp_child_pids()’:
GPP.cpp:607:44: error: no match for ‘operator<<’ (operand types are ‘std::basic_ostream<char>’ and ‘std::stringstream’ {aka ‘std::__cxx11::basic_stringstream<char>’})
  607 |                 errstr << "Unable to read "<<stat_filename<<". The process is no longer there";
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
      |                        |                     |
      |                        |                     std::stringstream {aka std::__cxx11::basic_stringstream<char>}
      |                        std::basic_ostream<char>
GPP.cpp:607:44: note: candidate: ‘operator<<(int, int)’ <built-in>
  607 |                 errstr << "Unable to read "<<stat_filename<<". The process is no longer there";
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
GPP.cpp:607:44: note:   no known conversion for argument 2 from ‘std::stringstream’ {aka ‘std::__cxx11::basic_stringstream<char>’} to ‘int’
In file included from /usr/include/c++/9/iostream:39,
                 from GPP.cpp:28:
# ...

ClausKlein avatar Nov 19 '21 17:11 ClausKlein

this patch helps:

$ git diff control/
diff --git a/redhawk/src/control/framework/nodebooter.cpp b/redhawk/src/control/framework/nodebooter.cpp
index c61fb2cf..8d756ff4 100644
--- a/redhawk/src/control/framework/nodebooter.cpp
+++ b/redhawk/src/control/framework/nodebooter.cpp
@@ -143,7 +143,7 @@ void loadPRFExecParams (const std::string& prfFile, ExecParams& execParams)
         prf.load(prfStream);
     } catch (const ossie::parser_error& ex) {
         std::string parser_error_line = ossie::retrieveParserErrorLineNumber(ex.what());
-        LOG_ERROR(nodebooter, "Failed to parse PRF file " << prfStream<< ". " << parser_error_line << "The XML parser returned the following error: " << ex.what());
+        LOG_ERROR(nodebooter, "Failed to parse PRF file " << prfStream.rdbuf() << ". " << parser_error_line << "The XML parser returned the following error: " << ex.what());
         exit(EXIT_FAILURE);
     }
     prfStream.close();
diff --git a/redhawk/src/control/sdr/dommgr/ApplicationFactory_impl.cpp b/redhawk/src/control/sdr/dommgr/ApplicationFactory_impl.cpp
index 9ca373a7..d596e54e 100644
--- a/redhawk/src/control/sdr/dommgr/ApplicationFactory_impl.cpp
+++ b/redhawk/src/control/sdr/dommgr/ApplicationFactory_impl.cpp
@@ -2112,7 +2112,7 @@ void createHelper::loadAndExecuteContainers(const ContainerList& containers,
                 std::ostringstream message;
                 message << "container " << container->getIdentifier() << " was assigned to non-loadable device "
                         << device->identifier;
-                RH_ERROR(_createHelperLog, message);
+                RH_ERROR(_createHelperLog, message.str());
                 throw std::logic_error(message.str());
             }

@@ -2199,7 +2199,7 @@ void createHelper::loadAndExecuteComponents(const ComponentList& deployments,
             std::ostringstream message;
             message << "component " << component_id << " was assigned to non-loadable device "
                     << device->identifier;
-            RH_ERROR(_createHelperLog, message);
+            RH_ERROR(_createHelperLog, message.str());
             throw std::logic_error(message.str());
         }

@@ -2282,7 +2282,7 @@ void createHelper::loadAndExecuteShared(const ComponentList& deployments, const
             std::ostringstream message;
             message << "component " << component_id << " was assigned to non-loadable device "
                     << device->identifier;
-            RH_ERROR(_createHelperLog, message);
+            RH_ERROR(_createHelperLog, message.str());
             throw std::logic_error(message.str());
         }

diff --git a/redhawk/src/testing/sdr/dev/devices/GPP/cpp/GPP.cpp b/redhawk/src/testing/sdr/dev/devices/GPP/cpp/GPP.cpp
index c4dfa784..cf4846e5 100644
--- a/redhawk/src/testing/sdr/dev/devices/GPP/cpp/GPP.cpp
+++ b/redhawk/src/testing/sdr/dev/devices/GPP/cpp/GPP.cpp
@@ -604,7 +604,7 @@ void GPP_i::update_grp_child_pids() {

             } catch ( ... ) {
                 std::stringstream errstr;
-                errstr << "Unable to read "<<stat_filename<<". The process is no longer there";
+                errstr << "Unable to read "<<stat_filename.str()<<". The process is no longer there";
                 LOG_DEBUG(GPP_i, __FUNCTION__ << ": " << errstr.str() );
                 continue;
             }
@@ -1745,8 +1745,7 @@ void GPP_i::set_resource_affinity( const CF::Properties& options, const pid_t rs
  {

    RH_DEBUG( redhawk::affinity::get_affinity_logger(), "Affinity Options....GPP/Resource: " << label() << "/" << rsc_name << " options" << options.length()  );
-   boost::recursive_mutex::scoped_lock(load_execute_lock);
-
+   boost::recursive_mutex::scoped_lock lock(load_execute_lock);

    // check if we override incoming affinity requests...
    if ( affinity.force_override ) {
$

ClausKlein avatar Nov 19 '21 20:11 ClausKlein

see too https://github.com/RedhawkSDR/core-framework/pull/22

ClausKlein avatar Nov 22 '21 12:11 ClausKlein