Coder Social home page Coder Social logo

cbang's People

Contributors

alexmyczko avatar berny156 avatar dmsck avatar hpmachining avatar hygonsoc avatar jcoffland avatar jpalpant avatar kbernhagen avatar lhuedepohl avatar marcosfrm avatar martonmiklos avatar peterbecich avatar pullmoll avatar sergey-239 avatar sgn avatar thierry-freebsd 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cbang's Issues

Writer.cpp: comparison of constant '-1' with boolean expression is always false GCC8

g++ -o build/cbang/jsapi/JSONAPI.o -c -std=c++11 -g -Wall -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -Wno-error=parentheses -Wno-deprecated-declarations -fPIC -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/jsapi/JSONAPI.cpp
src/cbang/json/Writer.cpp: In member function 'virtual void cb::JSON::Writer::write(double)':
src/cbang/json/Writer.cpp:83:25: warning: comparison of constant '-1' with boolean expression is always false [-Wbool-compare]
   else if (isinf(value) == -1) stream << "\"-Infinity\"";
            ~~~~~~~~~~~~~^~~~~

Which open source projects use Cbang?

Cbang is used in Camotics and JmpAPI. As indicated at #16 it is not expected to be used in many other projects. Are there any others notable projects using Cbang for which a packaged Cbang in linux repositories may be helpful?

Option --respawn fails to unset option log

On macOS 10.9+, fahclient is started with --respawn alone, which results in client logs being overwritten by log rotation by the child process. The rotated logs have timestamp in seconds, but respawn takes much less time than that. Result is a rotated logs directory which is mostly uninteresting parent process logs. (Parent rotates previous client log and starts child. Child rotates parent log overwriting previous log.)

Respawn should unset log, just as daemon does.

Need a simple option action ServerApplication::respawnAction, something like

if (!options["child"].toBoolean()
  && options["respawn"].toBoolean())
    options["log"].unset();

More compilation problems

I've started getting errors when I try to compile core21. Here's the message:

Checking for C library setupapi... no
Exception: Need library setupapi:
  File "C:\Code\core21-64\SConstruct", line 30:
    conf.CBConfig('libfah')
  File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.0\SCons\SConf.py", line 640:
    ret = self.test(context, *args, **kw)
  File "C:\Libs\cbang-64\config\__init__.py", line 166:
    ret = env.cb_methods[name](conf, **kwargs)
  File "C:\Libs\libfah-64\config\libfah\__init__.py", line 21:
    conf.CBConfig('libfah-deps')
  File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.0\SCons\SConf.py", line 640:
    ret = self.test(context, *args, **kw)
  File "C:\Libs\cbang-64\config\__init__.py", line 166:
    ret = env.cb_methods[name](conf, **kwargs)
  File "C:\Libs\libfah-64\config\libfah\__init__.py", line 11:
    conf.CBConfig('cbang')
  File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.0\SCons\SConf.py", line 640:
    ret = self.test(context, *args, **kw)
  File "C:\Libs\cbang-64\config\__init__.py", line 166:
    ret = env.cb_methods[name](conf, **kwargs)
  File "C:\Libs\cbang-64\config\cbang\__init__.py", line 97:
    conf.CBConfig('cbang-deps', local = False)
  File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.0\SCons\SConf.py", line 640:
    ret = self.test(context, *args, **kw)
  File "C:\Libs\cbang-64\config\__init__.py", line 166:
    ret = env.cb_methods[name](conf, **kwargs)
  File "C:\Libs\cbang-64\config\cbang\__init__.py", line 61:
    conf.CBRequireLib('setupapi')
  File "C:\Python27\Scripts\..\Lib\site-packages\scons-2.3.0\SCons\SConf.py", line 640:
    ret = self.test(context, *args, **kw)
  File "C:\Libs\cbang-64\config\__init__.py", line 111:
    raise Exception, 'Need library ' + lib

Note the error occurs when compiling core21, not when compiling cbang itself. But it's coming from cbang code, which makes me think something there may have changed that's triggering this.

/usr/include/c++/6.3.1/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard

I am trying to use system re2 library. I've removed src/re2 from cbang sources and installed re2-devel package. This is what I get:

g++ -o build/cbang/event/HTTPRE2Matcher.o -c -std=gnu++98 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_OPENSSL -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/event/HTTPRE2Matcher.cpp
In file included from /usr/include/c++/6.3.1/mutex:35:0,
                 from /usr/include/re2/re2.h:184,
                 from src/cbang/event/HTTPRE2Matcher.h:37,
                 from src/cbang/event/HTTPRE2Matcher.cpp:33:
/usr/include/c++/6.3.1/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
 #error This file requires compiler and library support \
  ^~~~~
g++ -o build/cbang/event/Headers.o -c -std=gnu++98 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_OPENSSL -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/event/Headers.cpp
In file included from src/cbang/event/HTTPRE2Matcher.h:37:0,
                 from src/cbang/event/HTTPRE2Matcher.cpp:33:
/usr/include/re2/re2.h:734:16: error: 'once_flag' in namespace 'std' does not name a type
   mutable std::once_flag rprog_once_;
                ^~~~~~~~~
/usr/include/re2/re2.h:735:16: error: 'once_flag' in namespace 'std' does not name a type
   mutable std::once_flag num_captures_once_;
                ^~~~~~~~~
/usr/include/re2/re2.h:736:16: error: 'once_flag' in namespace 'std' does not name a type
   mutable std::once_flag named_groups_once_;
                ^~~~~~~~~
/usr/include/re2/re2.h:737:16: error: 'once_flag' in namespace 'std' does not name a type
   mutable std::once_flag group_names_once_;
                ^~~~~~~~~

I am using package from Fedora re2-devel-20160401-2.fc25.x86_64. As I see it, something requires newer compiler standard flag?

[SystemUtilities.cpp] warn_unused_result

With Fedora compiler flags this is an error.

g++ -o build/cbang/os/SystemUtilities.o -c -std=gnu++98 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_OPENSSL -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/os/SystemUtilities.cpp
g++ -o build/cbang/os/TemporaryDirectory.o -c -std=gnu++98 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_OPENSSL -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/os/TemporaryDirectory.cpp
src/cbang/os/SystemUtilities.cpp: In function 'void cb::SystemUtilities::daemonize()':
src/cbang/os/SystemUtilities.cpp:961:47: error: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Werror=unused-result]
       (void)::freopen("/dev/null", "r", stdin);
                                               ^
src/cbang/os/SystemUtilities.cpp:962:48: error: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Werror=unused-result]
       (void)::freopen("/dev/null", "w", stdout);
                                                ^
src/cbang/os/SystemUtilities.cpp:963:48: error: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Werror=unused-result]
       (void)::freopen("/dev/null", "w", stderr);
                                                ^

How to build without included libevent.

Hi. I'm trying to port this over to FreeBSD, and the logical first step would be to use the ported version of libevent - and possibly also bzip2, sqlite3, and zlib - instead of the included one, which simply doesn't build. Any advice how to do this? Thanks!

Compilation error on FreeBSD: 'endian.h' file not found

Compiling cbang 1.6.1 on FreeBSD aborts with the following error:

c++ -o build/cbang/tar/TarFileReader.o -c -faligned-new -std=c++14 -fsigned-char -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing -isystem /usr/local/include -funroll-loops -fno-pie -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing -fPIC -DNDEBUG -D_REENTRANT -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/tar/TarFileReader.cpp
In file included from src/cbang/http/SessionsTable.cpp:35:
In file included from src/cbang/db/MakeTableImpl.def:34:
In file included from src/cbang/db/Blob.h:35:
In file included from src/cbang/packet/Packet.h:35:
In file included from src/cbang/packet/PacketField.h:36:
src/cbang/net/Swab.h:46:10: fatal error: 'endian.h' file not found
#include <endian.h>
         ^~~~~~~~~~
1 error generated.

This is easyly fixed with the attached patch.
patch-src_cbang_net_Swab.h.txt

Compilation errors on FreeBSD: several issues with sysinfo

Compiling cbang 1.6.1 on FreeBSD aborts with the following errors:

c++ -o build/cbang/json/List.o -c -faligned-new -std=c++14 -fsigned-char -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing -isystem /usr/local/include -funroll-loops -fno-pie -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing -fPIC -DNDEBUG -D_REENTRANT -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/json/List.cpp
src/cbang/os/SystemInfo.cpp:98:11: error: use of undeclared identifier 'CTL_HW'
  nm[0] = CTL_HW; nm[1] = HW_AVAILCPU;
          ^
src/cbang/os/SystemInfo.cpp:98:27: error: use of undeclared identifier 'HW_AVAILCPU'
  nm[0] = CTL_HW; nm[1] = HW_AVAILCPU;
                          ^
src/cbang/os/SystemInfo.cpp:99:3: error: use of undeclared identifier 'sysctl'
  sysctl(nm, 2, &count, &length, 0, 0);
  ^
src/cbang/os/SystemInfo.cpp:102:13: error: use of undeclared identifier 'HW_NCPU'
    nm[1] = HW_NCPU;
            ^
src/cbang/os/SystemInfo.cpp:103:5: error: use of undeclared identifier 'sysctl'
    sysctl(nm, 2, &count, &length, 0, 0);
    ^
src/cbang/os/SystemInfo.cpp:136:14: error: use of undeclared identifier 'CTL_HW'
    mib[0] = CTL_HW;
             ^
src/cbang/os/SystemInfo.cpp:137:14: error: use of undeclared identifier 'HW_MEMSIZE'
    mib[1] = HW_MEMSIZE;
             ^
src/cbang/os/SystemInfo.cpp:140:10: error: use of undeclared identifier 'sysctl'
    if (!sysctl(mib, 2, &memory, &length, 0, 0)) return memory;
         ^
src/cbang/os/SystemInfo.cpp:144:5: error: unknown type name 'vm_statistics_data_t'
    vm_statistics_data_t stats;
    ^
src/cbang/os/SystemInfo.cpp:145:5: error: unknown type name 'mach_msg_type_number_t'
    mach_msg_type_number_t count = sizeof(stats) / sizeof(natural_t);
    ^
src/cbang/os/SystemInfo.cpp:145:59: error: use of undeclared identifier 'natural_t'
    mach_msg_type_number_t count = sizeof(stats) / sizeof(natural_t);
                                                          ^
src/cbang/os/SystemInfo.cpp:146:5: error: unknown type name 'mach_port_t'
    mach_port_t port = mach_host_self();
    ^
src/cbang/os/SystemInfo.cpp:146:24: error: use of undeclared identifier 'mach_host_self'
    mach_port_t port = mach_host_self();
                       ^
src/cbang/os/SystemInfo.cpp:148:40: error: use of undeclared identifier 'KERN_SUCCESS'
    if (host_page_size(port, &page) == KERN_SUCCESS &&
                                       ^
src/cbang/os/SystemInfo.cpp:149:46: error: use of undeclared identifier 'host_info_t'
        host_statistics(port, HOST_VM_INFO, (host_info_t)&stats, &count) ==
                                             ^
src/cbang/os/SystemInfo.cpp:149:31: error: use of undeclared identifier 'HOST_VM_INFO'
        host_statistics(port, HOST_VM_INFO, (host_info_t)&stats, &count) ==
                              ^
src/cbang/os/SystemInfo.cpp:150:9: error: use of undeclared identifier 'KERN_SUCCESS'
        KERN_SUCCESS)
        ^
17 errors generated.
scons: *** [build/cbang/os/SystemInfo.o] Error 1

The attached patches fix these errors (and libsysinfo is used).
patch-config_cbang_____init____.py.txt
patch-src_cbang_os_SystemInfo.cpp.txt

Versioning of cbang

Joseph,
as I am packaging the cbang as a shared library, I would like you to clarify your policy of cbang versioning so I could properly establish dependency of camotics on cbang library by means of .so version suffix: is the minor version number bumped only for bug fixes and the rest of version number for interface changes?
Thanks,
Sergey

Support compiling with newer v8

Edit: This ticket is about supporting newer v8 versions.

scons: Configure: Checking for C++ header file v8.h... 
.sconf_temp/conftest_23.cpp <-
  |
  |#include "v8.h"
  |
  |
g++ -o .sconf_temp/conftest_23.o -c -std=gnu++98 -O3 -funroll-loops -DNDEBUG -D_REENTRANT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_OPENSSL .sconf_temp/conftest_23.cpp
In file included from .sconf_temp/conftest_23.cpp:2:0:
/usr/include/v8.h:345:1: error: expected unqualified-id before 'using'
 using Handle = Local<T>;
 ^~~~~
/usr/include/v8.h: In constructor 'v8::MaybeLocal<T>::MaybeLocal()':
/usr/include/v8.h:362:33: error: 'nullptr' was not declared in this scope
   V8_INLINE MaybeLocal() : val_(nullptr) {}
                                 ^~~~~~~
/usr/include/v8.h: In member function 'bool v8::MaybeLocal<T>::IsEmpty() const':
/usr/include/v8.h:369:51: error: 'nullptr' was not declared in this scope
   V8_INLINE bool IsEmpty() const { return val_ == nullptr; }
                                                   ^~~~~~~
/usr/include/v8.h: In member function 'bool v8::MaybeLocal<T>::ToLocal(v8::Local<S>*) const':
/usr/include/v8.h:373:29: error: 'nullptr' was not declared in this scope
     out->val_ = IsEmpty() ? nullptr : this->val_;
                             ^~~~~~~
/usr/include/v8.h: In member function 'bool v8::WeakCallbackInfo<T>::IsFirstPass() const':
/usr/include/v8.h:441:25: error: 'nullptr' was not declared in this scope
     return callback_ != nullptr;
                         ^~~~~~~
/usr/include/v8.h: At global scope:
/usr/include/v8.h:809:26: error: expected ',' or '...' before '&&' token
   V8_INLINE Global(Global&& other) : PersistentBase<T>(other.val_) {  // NOLINT
                          ^~
/usr/include/v8.h:809:34: error: invalid constructor; you probably meant 'v8::Global<T> (const v8::Global<T>&)'
   V8_INLINE Global(Global&& other) : PersistentBase<T>(other.val_) {  // NOLINT
                                  ^
/usr/include/v8.h:817:40: error: expected ',' or '...' before '&&' token
   V8_INLINE Global& operator=(Global<S>&& rhs) {  // NOLINT
                                        ^~
/usr/include/v8.h: In constructor 'v8::Global<T>::Global()':
/usr/include/v8.h:785:42: error: 'nullptr' was not declared in this scope
   V8_INLINE Global() : PersistentBase<T>(nullptr) {}
                                          ^~~~~~~
/usr/include/v8.h: In member function 'v8::Global<T>& v8::Global<T>::operator=(v8::Global<S>)':
/usr/include/v8.h:819:18: error: 'rhs' was not declared in this scope
     if (this != &rhs) {
                  ^~~
/usr/include/v8.h:822:18: error: 'nullptr' was not declared in this scope
       rhs.val_ = nullptr;
                  ^~~~~~~
/usr/include/v8.h: In member function 'v8::Global<T> v8::Global<T>::Pass()':
/usr/include/v8.h:829:44: error: expected '>' before '&&' token
   Global Pass() { return static_cast<Global&&>(*this); }  // NOLINT
                                            ^~
/usr/include/v8.h:829:44: error: expected '(' before '&&' token
/usr/include/v8.h:829:46: error: expected identifier before '>' token
   Global Pass() { return static_cast<Global&&>(*this); }  // NOLINT
                                              ^
/usr/include/v8.h:829:54: error: expected ')' before ';' token
   Global Pass() { return static_cast<Global&&>(*this); }  // NOLINT
                                                      ^
/usr/include/v8.h: At global scope:
/usr/include/v8.h:847:1: error: expected unqualified-id before 'using'
 using UniquePersistent = Global<T>;
 ^~~~~
In file included from /usr/include/v8.h:25:0,
                 from .sconf_temp/conftest_23.cpp:2:
/usr/include/v8.h:1084:10: error: 'nullptr' was not declared in this scope
   static V8_DEPRECATE_SOON(
          ^
In file included from .sconf_temp/conftest_23.cpp:2:0:
/usr/include/v8.h:1090:30: error: 'nullptr' was not declared in this scope
       ScriptOrigin* origin = nullptr);
                              ^~~~~~~
/usr/include/v8.h:2291:42: error: 'v8::NewStringType' is not a class or namespace
     kNormalString = static_cast<int>(v8::NewStringType::kNormal),
                                          ^~~~~~~~~~~~~
/usr/include/v8.h:2292:48: error: 'v8::NewStringType' is not a class or namespace
     kInternalizedString = static_cast<int>(v8::NewStringType::kInternalized)
                                                ^~~~~~~~~~~~~
/usr/include/v8.h: In member function 'v8::MaybeLocal<v8::Object> v8::Function::NewInstance(v8::Local<v8::Context>) const':
/usr/include/v8.h:3261:36: error: 'nullptr' was not declared in this scope
     return NewInstance(context, 0, nullptr);
                                    ^~~~~~~
/usr/include/v8.h: At global scope:
/usr/include/v8.h:3523:38: error: 'ArrayBufferCreationMode' is not a class or namespace
       ArrayBufferCreationMode mode = ArrayBufferCreationMode::kExternalized);
                                      ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/v8.h:3886:38: error: 'ArrayBufferCreationMode' is not a class or namespace
       ArrayBufferCreationMode mode = ArrayBufferCreationMode::kExternalized);
                                      ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/v8.h:4482:57: error: 'nullptr' was not declared in this scope
       experimental::FastAccessorBuilder* fast_handler = nullptr,
                                                         ^~~~~~~
/usr/include/v8.h:4498:57: error: 'nullptr' was not declared in this scope
       experimental::FastAccessorBuilder* fast_handler = nullptr);
                                                         ^~~~~~~
/usr/include/v8.h:4590:36: error: 'PropertyHandlerFlags' is not a class or namespace
       PropertyHandlerFlags flags = PropertyHandlerFlags::kNone)
                                    ^~~~~~~~~~~~~~~~~~~~
/usr/include/v8.h:4618:36: error: 'PropertyHandlerFlags' is not a class or namespace
       PropertyHandlerFlags flags = PropertyHandlerFlags::kNone)
                                    ^~~~~~~~~~~~~~~~~~~~
/usr/include/v8.h: In member function 'void v8::ObjectTemplate::SetIndexedPropertyHandler(v8::IndexedPropertyGetterCallback, v8::IndexedPropertySetterCallback, v8::IndexedPropertyQueryCallback, v8::IndexedPropertyDeleterCallback, v8::IndexedPropertyEnumeratorCallback, v8::Local<v8::Value>)':
/usr/include/v8.h:4750:77: error: call to 'v8::IndexedPropertyHandlerConfiguration::IndexedPropertyHandlerConfiguration(v8::IndexedPropertyGetterCallback, v8::IndexedPropertySetterCallback, v8::IndexedPropertyQueryCallback, v8::IndexedPropertyDeleterCallback, v8::IndexedPropertyEnumeratorCallback, v8::Local<v8::Value>, v8::PropertyHandlerFlags)' uses the default argument for parameter 7, which is not yet defined
                                                    deleter, enumerator, data));
                                                                             ^
In file included from /usr/include/v8.h:25:0,
                 from .sconf_temp/conftest_23.cpp:2:
/usr/include/v8.h: In member function 'v8::Local<T> v8::MaybeLocal<T>::ToLocalChecked()':
/usr/include/v8.h:7522:7: error: 'nullptr' was not declared in this scope
   if (V8_UNLIKELY(val_ == nullptr)) V8::ToLocalEmpty();
       ^
In file included from .sconf_temp/conftest_23.cpp:2:0:
/usr/include/v8.h: In member function 'void v8::Template::Set(v8::Isolate*, const char*, v8::Local<v8::Data>)':
/usr/include/v8.h:7961:46: error: 'NewStringType' is not a class or namespace
   Set(v8::String::NewFromUtf8(isolate, name, NewStringType::kNormal)
                                              ^~~~~~~~~~~~~
/usr/include/v8.h: In member function 'v8::Local<v8::Value> v8::Object::GetInternalField(int)':
/usr/include/v8.h:7975:8: error: 'instance_type' does not name a type
   auto instance_type = I::GetInstanceType(obj);
        ^~~~~~~~~~~~~
/usr/include/v8.h:7976:7: error: 'instance_type' was not declared in this scope
   if (instance_type == I::kJSObjectType ||
       ^~~~~~~~~~~~~
/usr/include/v8.h: In member function 'void* v8::Object::GetAlignedPointerFromInternalField(int)':
/usr/include/v8.h:7995:8: error: 'instance_type' does not name a type
   auto instance_type = I::GetInstanceType(obj);
        ^~~~~~~~~~~~~
In file included from /usr/include/v8.h:25:0,
                 from .sconf_temp/conftest_23.cpp:2:
/usr/include/v8.h:7996:7: error: 'instance_type' was not declared in this scope
   if (V8_LIKELY(instance_type == I::kJSObjectType ||
       ^
scons: Configure: no

scons: Configure: Need C++ header v8.h
scons: Configure: (cached) error: no result

v8-devel-5.2.258-7.fc25.x86_64

Doesn't build on Ubuntu 10.04

I'm trying to build on Ubuntu 10.04, and it fails as follows:

In file included from build/cbang/js/Arguments.h:36,
from build/cbang/js/Arguments.cpp:33:
build/cbang/js/Value.h: In member function ‘bool cb::js::Value::isUint32() const’:
build/cbang/js/Value.h:86: error: ‘class v8::Value’ has no member named ‘IsUint32’
build/cbang/js/Arguments.cpp: In constructor ‘cb::js::Arguments::Arguments(const v8::Arguments&, const cb::js::Signature&)’:
build/cbang/js/Arguments.cpp:52: error: ‘class v8::Object’ has no member named ‘GetOwnPropertyNames’
build/cbang/js/Arguments.cpp: In member function ‘std::string cb::js::Arguments::getName(unsigned int) const’:
build/cbang/js/Arguments.cpp:74: error: ‘class v8::Object’ has no member named ‘GetOwnPropertyNames’
scons: *** [build/cbang/js/Arguments.o] Error 1
scons: building terminated because of errors.

[c++11] src/boost/boost/iostreams/chain.hpp:246:14: error: 'template<class> class std::auto_ptr' is deprecated [-Werror=deprecated-declarations]

boost is using deprecated class auto_ptr

g++ -o build/cbang/script/Environment.o -c -std=c++11 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_OPENSSL -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/script/Environment.cpp
In file included from src/boost/boost/iostreams/filtering_streambuf.hpp:17:0,
                 from src/boost/boost/iostreams/filtering_stream.hpp:22,
                 from src/cbang/script/Connection.cpp:39:
src/boost/boost/iostreams/chain.hpp: In member function 'void boost::iostreams::detail::chain_base<Self, Ch, Tr, Alloc, Mode>::push_impl(const T&, std::streamsize, std::streamsize)':
src/boost/boost/iostreams/chain.hpp:246:14: error: 'template<class> class std::auto_ptr' is deprecated [-Werror=deprecated-declarations]
         std::auto_ptr<streambuf_t>
              ^~~~~~~~
In file included from /usr/include/c++/6.3.1/bits/locale_conv.h:41:0,
                 from /usr/include/c++/6.3.1/locale:43,
                 from /usr/include/c++/6.3.1/iomanip:43,
                 from src/cbang/StdTypes.h:90,
                 from src/cbang/os/Mutex.h:35,
                 from src/cbang/RefCounter.h:37,
                 from src/cbang/SmartPointer.h:38,
                 from src/cbang/Exception.h:36,
                 from src/cbang/SmartPointer.h:33,
                 from src/cbang/script/Environment.h:41,
                 from src/cbang/script/Processor.h:35,
                 from src/cbang/script/Connection.h:35,
                 from src/cbang/script/Connection.cpp:33:
/usr/include/c++/6.3.1/bits/unique_ptr.h:49:28: note: declared here
   template<typename> class auto_ptr;
                            ^~~~~~~~
cc1plus: all warnings being treated as errors
scons: *** [build/cbang/script/Connection.o] Error 1
scons: building terminated because of errors.

Is this fatal or it can be worked around? #22

Unnecessary parentheses... warning in boost lib with GCC 8

g++ -o build/cbang/debug/StackFrame.o -c -std=c++11 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -Wno-deprecated-declarations -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/debug/StackFrame.cpp
In file included from src/boost/boost/mpl/aux_/na_assert.hpp:23,
                 from src/boost/boost/mpl/arg.hpp:25,
                 from src/boost/boost/mpl/placeholders.hpp:24,
                 from src/boost/boost/iterator/iterator_categories.hpp:17,
                 from src/boost/boost/iterator/iterator_facade.hpp:14,
                 from src/boost/boost/range/iterator_range_core.hpp:27,
                 from src/boost/boost/range/iterator_range.hpp:13,
                 from src/boost/boost/iostreams/traits.hpp:38,
                 from src/boost/boost/iostreams/detail/dispatch.hpp:17,
                 from src/boost/boost/iostreams/flush.hpp:17,
                 from src/boost/boost/iostreams/close.hpp:18,
                 from src/boost/boost/iostreams/detail/functional.hpp:24,
                 from src/boost/boost/iostreams/detail/streambuf/direct_streambuf.hpp:24,
                 from src/boost/boost/iostreams/stream_buffer.hpp:21,
                 from src/boost/boost/iostreams/stream.hpp:21,
                 from src/cbang/iostream/VectorDevice.h:37,
                 from src/cbang/json/BufferWriter.h:37,
                 from src/cbang/json/JSON.h:46,
                 from src/cbang/Info.cpp:41:
src/boost/boost/mpl/assert.hpp:188:21: error: unnecessary parentheses in declaration of 'assert_arg' [-Werror=parentheses]
 failed ************ (Pred::************
                     ^
src/boost/boost/mpl/assert.hpp:193:21: error: unnecessary parentheses in declaration of 'assert_not_arg' [-Werror=parentheses]
 failed ************ (boost::mpl::not_<Pred>::************
                     ^
g++ -o build/cbang/debug/StackTrace.o -c -std=c++11 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -Wno-deprecated-declarations -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/debug/StackTrace.cpp
g++ -o build/cbang/config/CommandLine.o -c -std=c++11 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -Wno-deprecated-declarations -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/config/CommandLine.cpp
In file included from src/boost/boost/mpl/aux_/na_assert.hpp:23,
                 from src/boost/boost/mpl/arg.hpp:25,
                 from src/boost/boost/mpl/placeholders.hpp:24,
                 from src/boost/boost/iterator/iterator_categories.hpp:17,
                 from src/boost/boost/iterator/iterator_facade.hpp:14,
                 from src/boost/boost/range/iterator_range_core.hpp:27,
                 from src/boost/boost/range/iterator_range.hpp:13,
                 from src/boost/boost/iostreams/traits.hpp:38,
                 from src/boost/boost/iostreams/detail/dispatch.hpp:17,
                 from src/boost/boost/iostreams/flush.hpp:17,
                 from src/boost/boost/iostreams/close.hpp:18,
                 from src/boost/boost/iostreams/detail/functional.hpp:24,
                 from src/boost/boost/iostreams/detail/streambuf/direct_streambuf.hpp:24,
                 from src/boost/boost/iostreams/stream_buffer.hpp:21,
                 from src/boost/boost/iostreams/stream.hpp:21,
                 from src/cbang/socket/SocketDevice.h:42,
                 from src/cbang/script/Processor.cpp:43:
src/boost/boost/mpl/assert.hpp:188:21: error: unnecessary parentheses in declaration of 'assert_arg' [-Werror=parentheses]
 failed ************ (Pred::************
                     ^
src/boost/boost/mpl/assert.hpp:193:21: error: unnecessary parentheses in declaration of 'assert_not_arg' [-Werror=parentheses]
 failed ************ (boost::mpl::not_<Pred>::************
                     ^
g++ -o build/cbang/config/Option.o -c -std=c++11 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -Wno-deprecated-declarations -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/config/Option.cpp
g++ -o build/cbang/config/OptionCategory.o -c -std=c++11 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -Wno-deprecated-declarations -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/config/OptionCategory.cpp
g++ -o build/cbang/config/OptionMap.o -c -std=c++11 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -Wno-deprecated-declarations -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/config/OptionMap.cpp
g++ -o build/cbang/config/OptionProxy.o -c -std=c++11 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -Wno-deprecated-declarations -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/config/OptionProxy.cpp
In file included from src/boost/boost/mpl/aux_/na_assert.hpp:23,
                 from src/boost/boost/mpl/arg.hpp:25,
                 from src/boost/boost/mpl/placeholders.hpp:24,
                 from src/boost/boost/iterator/iterator_categories.hpp:17,
                 from src/boost/boost/iterator/iterator_facade.hpp:14,
                 from src/boost/boost/range/iterator_range_core.hpp:27,
                 from src/boost/boost/range/iterator_range.hpp:13,
                 from src/boost/boost/iostreams/traits.hpp:38,
                 from src/boost/boost/iostreams/pipeline.hpp:18,
                 from src/boost/boost/iostreams/detail/push.hpp:22,
                 from src/boost/boost/iostreams/filtering_stream.hpp:19,
                 from src/cbang/script/Connection.cpp:39:
src/boost/boost/mpl/assert.hpp:188:21: error: unnecessary parentheses in declaration of 'assert_arg' [-Werror=parentheses]
 failed ************ (Pred::************
                     ^
src/boost/boost/mpl/assert.hpp:193:21: error: unnecessary parentheses in declaration of 'assert_not_arg' [-Werror=parentheses]
 failed ************ (boost::mpl::not_<Pred>::************
                     ^
g++ -o build/cbang/config/Options.o -c -std=c++11 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -Wno-deprecated-declarations -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/config/Options.cpp
g++ -o build/cbang/pyon/Header.o -c -std=c++11 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -Wno-deprecated-declarations -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/pyon/Header.cpp
g++ -o build/cbang/pyon/Message.o -c -std=c++11 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -Wno-deprecated-declarations -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/pyon/Message.cpp
g++ -o build/cbang/pyon/Object.o -c -std=c++11 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -Wno-deprecated-declarations -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/pyon/Object.cpp
g++ -o build/cbang/os/CPUID.o -c -std=c++11 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -Wno-deprecated-declarations -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/os/CPUID.cpp
g++ -o build/cbang/os/Condition.o -c -std=c++11 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -Wno-deprecated-declarations -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/os/Condition.cpp
g++ -o build/cbang/os/Directory.o -c -std=c++11 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -Wno-deprecated-declarations -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/os/Directory.cpp
g++ -o build/cbang/os/DirectoryWalker.o -c -std=c++11 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -Wno-deprecated-declarations -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/os/DirectoryWalker.cpp
g++ -o build/cbang/os/DynamicLibrary.o -c -std=c++11 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -Wno-deprecated-declarations -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/os/DynamicLibrary.cpp
g++ -o build/cbang/os/ExitSignalHandler.o -c -std=c++11 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -Wno-deprecated-declarations -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/os/ExitSignalHandler.cpp
g++ -o build/cbang/os/Glob.o -c -std=c++11 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -Wno-deprecated-declarations -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/os/Glob.cpp
g++ -o build/cbang/os/Mutex.o -c -std=c++11 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -Wno-deprecated-declarations -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/os/Mutex.cpp
g++ -o build/cbang/os/PowerManagement.o -c -std=c++11 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -Wno-deprecated-declarations -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/os/PowerManagement.cpp
In file included from src/boost/boost/mpl/aux_/na_assert.hpp:23,
                 from src/boost/boost/mpl/arg.hpp:25,
                 from src/boost/boost/mpl/placeholders.hpp:24,
                 from src/boost/boost/iterator/iterator_categories.hpp:17,
                 from src/boost/boost/iterator/iterator_facade.hpp:14,
                 from src/boost/boost/range/iterator_range_core.hpp:27,
                 from src/boost/boost/range/iterator_range.hpp:13,
                 from src/boost/boost/iostreams/traits.hpp:38,
                 from src/boost/boost/iostreams/detail/dispatch.hpp:17,
                 from src/boost/boost/iostreams/flush.hpp:17,
                 from src/boost/boost/iostreams/close.hpp:18,
                 from src/boost/boost/iostreams/detail/functional.hpp:24,
                 from src/boost/boost/iostreams/detail/streambuf/direct_streambuf.hpp:24,
                 from src/boost/boost/iostreams/stream_buffer.hpp:21,
                 from src/boost/boost/iostreams/stream.hpp:21,
                 from src/cbang/iostream/VectorDevice.h:37,
                 from src/cbang/json/BufferWriter.h:37,
                 from src/cbang/json/JSON.h:46,
                 from src/cbang/util/ACLSet.cpp:36:
src/boost/boost/mpl/assert.hpp:188:21: error: unnecessary parentheses in declaration of 'assert_arg' [-Werror=parentheses]
 failed ************ (Pred::************
                     ^
src/boost/boost/mpl/assert.hpp:193:21: error: unnecessary parentheses in declaration of 'assert_not_arg' [-Werror=parentheses]
 failed ************ (boost::mpl::not_<Pred>::************
                     ^
cc1plus: all warnings being treated as errors
g++ -o build/cbang/os/ProcessLock.o -c -std=c++11 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -Wno-deprecated-declarations -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/os/ProcessLock.cpp
g++ -o build/cbang/os/RWLock.o -c -std=c++11 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -Wno-deprecated-declarations -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/os/RWLock.cpp
scons: *** [build/cbang/script/Processor.o] Error 1
cc1plus: all warnings being treated as errors
scons: *** [build/cbang/script/Connection.o] Error 1
In file included from src/boost/boost/mpl/aux_/na_assert.hpp:23,
                 from src/boost/boost/mpl/arg.hpp:25,
                 from src/boost/boost/mpl/placeholders.hpp:24,
                 from src/boost/boost/iterator/iterator_categories.hpp:17,
                 from src/boost/boost/iterator/iterator_facade.hpp:14,
                 from src/boost/boost/filesystem/path.hpp:28,
                 from src/boost/boost/filesystem/operations.hpp:25,
                 from src/cbang/os/Directory.cpp:37:
src/boost/boost/mpl/assert.hpp:188:21: error: unnecessary parentheses in declaration of 'assert_arg' [-Werror=parentheses]
 failed ************ (Pred::************
                     ^
src/boost/boost/mpl/assert.hpp:193:21: error: unnecessary parentheses in declaration of 'assert_not_arg' [-Werror=parentheses]
 failed ************ (boost::mpl::not_<Pred>::************
                     ^
cc1plus: all warnings being treated as errors
scons: *** [build/cbang/Info.o] Error 1
cc1plus: all warnings being treated as errors
scons: *** [build/cbang/os/Directory.o] Error 1
In file included from src/boost/boost/mpl/aux_/na_assert.hpp:23,
                 from src/boost/boost/mpl/arg.hpp:25,
                 from src/boost/boost/mpl/placeholders.hpp:24,
                 from src/boost/boost/iterator/iterator_categories.hpp:17,
                 from src/boost/boost/iterator/iterator_facade.hpp:14,
                 from src/boost/boost/range/iterator_range_core.hpp:27,
                 from src/boost/boost/algorithm/string/replace.hpp:16,
                 from src/boost/boost/date_time/date_facet.hpp:17,
                 from src/boost/boost/date_time/gregorian/gregorian_io.hpp:16,
                 from src/boost/boost/date_time/gregorian/gregorian.hpp:31,
                 from src/boost/boost/date_time/posix_time/time_formatters.hpp:12,
                 from src/boost/boost/date_time/posix_time/posix_time.hpp:24,
                 from src/cbang/os/ProcessLock.cpp:42:
src/boost/boost/mpl/assert.hpp:188:21: error: unnecessary parentheses in declaration of 'assert_arg' [-Werror=parentheses]
 failed ************ (Pred::************
                     ^
src/boost/boost/mpl/assert.hpp:193:21: error: unnecessary parentheses in declaration of 'assert_not_arg' [-Werror=parentheses]
 failed ************ (boost::mpl::not_<Pred>::************
                     ^
cc1plus: all warnings being treated as errors
scons: *** [build/cbang/util/ACLSet.o] Error 1
cc1plus: all warnings being treated as errors
scons: *** [build/cbang/os/ProcessLock.o] Error 1
scons: building terminated because of errors.

Actual license

Joseph,
files COPYING and LICENSE are LGPLv2.1, while all files in src/cbang/ mention LGPLv2.1+ in its headers.

What is actual license of your code?

Scons can't find any library on Fedora

Trying to build cbang on Fedora 25 unsuccessfully under mock environment.

Checking for C library pthread... no
Exception: Need library pthread:
  File "/builddir/build/BUILD/cbang-1.0.1/SConstruct", line 47:
    conf.CBConfig('compiler')
  File "/usr/lib/scons/SCons/SConf.py", line 658:
    ret = self.test(context, *args, **kw)
  File "/builddir/build/BUILD/cbang-1.0.1/config/__init__.py", line 166:
    ret = env.cb_methods[name](conf, **kwargs)
  File "/builddir/build/BUILD/cbang-1.0.1/config/compiler/__init__.py", line 323:
    conf.CBRequireLib('pthread')
  File "/usr/lib/scons/SCons/SConf.py", line 658:
    ret = self.test(context, *args, **kw)
  File "/builddir/build/BUILD/cbang-1.0.1/config/__init__.py", line 111:
    raise Exception, 'Need library ' + lib

pthread is present on /usr/lib64/libpthread.so as well as /usr/include/pthread.h, yet it can't find any of those. If I remove the check can't find any other library as well.

By looking at config.log, all issues seems to end with following:

  File "/builddir/build/BUILD/cbang-1.0.1/config/compiler/__init__.py", line 20, in __call__
    dep.csig = csig
AttributeError: 'File' object has no attribute 'csig'

It looks to me that environment is not set up properly, but I have no idea how to debug this. Any idea on how to look further into this?

Cut a new release

Now that f852996 fixes the SmartPointer bugs, can we cut a 1.5.1 bugfix release that we use for core builds?

GCC 9: special_values_formatter.hpp:43:16: error: 'strlen' argument missing terminating nul

This happens with GCC9, on cbang commit fdd8867

g++ -o build/cbang/enum/CPUExtendedFeature.o -c -std=c++11 -g -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_S
OURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rp
m/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -Wno-error=parentheses -Wno-deprecated-de
clarations -fPIC -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cba
ng/enum/CPUExtendedFeature.cpp
g++ -o build/cbang/enum/CPUFeature.o -c -std=c++11 -g -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2
-Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat
/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -Wno-error=parentheses -Wno-deprecated-declaratio
ns -fPIC -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/enum/
CPUFeature.cpp
In file included from src/boost/boost/date_time/date_facet.hpp:21,
                 from src/boost/boost/date_time/gregorian/gregorian_io.hpp:16,
                 from src/boost/boost/date_time/gregorian/gregorian.hpp:31,
                 from src/boost/boost/date_time/posix_time/time_formatters.hpp:12,
                 from src/boost/boost/date_time/posix_time/posix_time.hpp:24,
                 from src/cbang/time/Time.cpp:42:
src/boost/boost/date_time/special_values_formatter.hpp: In constructor 'boost::date_time::time_facet<time_type, CharT, OutItrT>::time_facet(size_t) [with time_
type = boost::posix_time::ptime; CharT = char; OutItrT = std::ostreambuf_iterator<char, std::char_traits<char> >]':
src/boost/boost/date_time/special_values_formatter.hpp:43:16: error: 'strlen' argument missing terminating nul [-Werror=stringop-overflow=]
   43 |       std::copy(&default_special_value_names[0],
      |       ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   44 |                 &default_special_value_names[3],
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   45 |                 std::back_inserter(m_special_value_names));
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/boost/boost/date_time/special_values_formatter.hpp:89:70: note: referenced argument declared here
   89 |   const typename special_values_formatter<CharT, OutItrT>::char_type special_values_formatter<CharT, OutItrT>::default_special_value_names[3][17] = {
      |                                                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Issue discovering freetype

Hello,

I'm very new to cbang and not very familiar with it, but I'm trying to learn to help out with some of the Folding@Home repos that use it.

When building some of those repos (specifically fah-viewer) I ran into an issue with the freetype2 config, here:

env.ParseConfig('freetype-config --cflags')

The issue is that libfreetype6 on Ubuntu 19.10 does not install freetype-config anymore. According to this bug using the pkg-config integration is preferable, and has been supported for a long time.

Would you consider this line to use pkg-config? Happy to PR it as well

reading 31 bytes from a region of size 16 [-Werror=stringop-overflow=] GCC 8 on i686 and ARMv7

g++ -o build/cbang/log/Logger.o -c -std=c++11 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m32 -march=i686 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -mcet -fcf-protection -Wno-error=parentheses -Wno-deprecated-declarations -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/log/Logger.cpp
In file included from /usr/include/string.h:494,
                 from src/boost/boost/range/detail/implementation_help.hpp:18,
                 from src/boost/boost/range/end.hpp:24,
                 from src/boost/boost/range/functions.hpp:19,
                 from src/boost/boost/range/iterator_range_core.hpp:38,
                 from src/boost/boost/range/iterator_range.hpp:13,
                 from src/boost/boost/iostreams/traits.hpp:38,
                 from src/boost/boost/iostreams/detail/dispatch.hpp:17,
                 from src/boost/boost/iostreams/flush.hpp:17,
                 from src/boost/boost/iostreams/close.hpp:18,
                 from src/boost/boost/iostreams/operations.hpp:16,
                 from src/cbang/http/ChunkedStreamFilter.h:41,
                 from src/cbang/http/Transaction.h:37,
                 from src/cbang/http/Transaction.cpp:33:
In function 'void* memcpy(void*, const void*, size_t)',
    inlined from 'std::streamsize cb::HTTP::ChunkedStreamFilter::write(Sink&, const char*, std::streamsize) [with Sink = boost::iostreams::detail::linked_streambuf<char, std::char_traits<char> >]' at src/cbang/http/ChunkedStreamFilter.h:131:19,
    inlined from 'static std::streamsize boost::iostreams::detail::write_filter_impl<boost::iostreams::multichar_tag>::write(T&, Sink&, const typename boost::iostreams::char_type_of<T>::type*, std::streamsize) [with T = cb::HTTP::ChunkedStreamFilter; Sink = boost::iostreams::detail::linked_streambuf<char, std::char_traits<char> >]' at src/boost/boost/iostreams/write.hpp:142:31,
    inlined from 'std::streamsize boost::iostreams::write(T&, Sink&, const typename boost::iostreams::char_type_of<T>::type*, std::streamsize) [with T = boost::reference_wrapper<cb::HTTP::ChunkedStreamFilter>; Sink = boost::iostreams::detail::linked_streambuf<char, std::char_traits<char> >]' at src/boost/boost/iostreams/write.hpp:55:45,
    inlined from 'static std::streamsize boost::iostreams::detail::flt_wrapper_impl<boost::iostreams::output>::write(Filter&, Sink*, const typename boost::iostreams::char_type_of<T>::type*, std::streamsize) [with Filter = boost::reference_wrapper<cb::HTTP::ChunkedStreamFilter>; Sink = boost::iostreams::detail::linked_streambuf<char, std::char_traits<char> >]' at src/boost/boost/iostreams/detail/adapter/concept_adapter.hpp:278:30,
    inlined from 'std::streamsize boost::iostreams::detail::concept_adapter<T>::write(const char_type*, std::streamsize, Sink*) [with Sink = boost::iostreams::detail::linked_streambuf<char, std::char_traits<char> >; T = boost::reference_wrapper<cb::HTTP::ChunkedStreamFilter>]' at src/boost/boost/iostreams/detail/adapter/concept_adapter.hpp:85:32,
    inlined from 'void boost::iostreams::detail::indirect_streambuf<T, Tr, Alloc, Mode>::sync_impl() [with T = boost::reference_wrapper<cb::HTTP::ChunkedStreamFilter>; Tr = std::char_traits<char>; Alloc = std::allocator<char>; Mode = boost::iostreams::bidirectional]' at src/boost/boost/iostreams/detail/streambuf/indirect_streambuf.hpp:392:18:
/usr/include/bits/string_fortified.h:34:33: error: 'void* __builtin_memcpy(void*, const void*, unsigned int)' reading 31 bytes from a region of size 16 [-Werror=stringop-overflow=]
   return __builtin___memcpy_chk (__dest, __src, __len, __bos0 (__dest));
          ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function 'void* memcpy(void*, const void*, size_t)',
    inlined from 'std::streamsize cb::HTTP::ChunkedStreamFilter::write(Sink&, const char*, std::streamsize) [with Sink = boost::iostreams::detail::linked_streambuf<char, std::char_traits<char> >]' at src/cbang/http/ChunkedStreamFilter.h:131:19,
    inlined from 'static std::streamsize boost::iostreams::detail::write_filter_impl<boost::iostreams::multichar_tag>::write(T&, Sink&, const typename boost::iostreams::char_type_of<T>::type*, std::streamsize) [with T = cb::HTTP::ChunkedStreamFilter; Sink = boost::iostreams::detail::linked_streambuf<char, std::char_traits<char> >]' at src/boost/boost/iostreams/write.hpp:142:31,
    inlined from 'std::streamsize boost::iostreams::write(T&, Sink&, const typename boost::iostreams::char_type_of<T>::type*, std::streamsize) [with T = boost::reference_wrapper<cb::HTTP::ChunkedStreamFilter>; Sink = boost::iostreams::detail::linked_streambuf<char, std::char_traits<char> >]' at src/boost/boost/iostreams/write.hpp:55:45,
    inlined from 'static std::streamsize boost::iostreams::detail::flt_wrapper_impl<boost::iostreams::output>::write(Filter&, Sink*, const typename boost::iostreams::char_type_of<T>::type*, std::streamsize) [with Filter = boost::reference_wrapper<cb::HTTP::ChunkedStreamFilter>; Sink = boost::iostreams::detail::linked_streambuf<char, std::char_traits<char> >]' at src/boost/boost/iostreams/detail/adapter/concept_adapter.hpp:278:30,
    inlined from 'std::streamsize boost::iostreams::detail::concept_adapter<T>::write(const char_type*, std::streamsize, Sink*) [with Sink = boost::iostreams::detail::linked_streambuf<char, std::char_traits<char> >; T = boost::reference_wrapper<cb::HTTP::ChunkedStreamFilter>]' at src/boost/boost/iostreams/detail/adapter/concept_adapter.hpp:85:32,
    inlined from 'boost::iostreams::detail::indirect_streambuf<T, Tr, Alloc, Mode>::int_type boost::iostreams::detail::indirect_streambuf<T, Tr, Alloc, Mode>::overflow(boost::iostreams::detail::indirect_streambuf<T, Tr, Alloc, Mode>::int_type) [with T = boost::reference_wrapper<cb::HTTP::ChunkedStreamFilter>; Tr = std::char_traits<char>; Alloc = std::allocator<char>; Mode = boost::iostreams::bidirectional]' at src/boost/boost/iostreams/detail/streambuf/indirect_streambuf.hpp:301:43:
/usr/include/bits/string_fortified.h:34:33: error: 'void* __builtin_memcpy(void*, const void*, unsigned int)' reading 31 bytes from a region of size 16 [-Werror=stringop-overflow=]
   return __builtin___memcpy_chk (__dest, __src, __len, __bos0 (__dest));
          ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Full log: https://kojipkgs.fedoraproject.org//work/tasks/9848/25059848/build.log

Can't build with some versions of Google's v8.

Can't build C! (for build OpensCam:))
(OS: Ubuntu 10.04 LTS (LinuxCNC) via Oracle Virtual box)

sudo apt-get install scons build-essential libbz2-dev zlib1g-dev \
  libexpat1-dev libssl-dev libboost-iostreams-dev libboost-system-dev \
  libboost-filesystem-dev libboost-regex-dev libsqlite3-dev libv8-dev git

(OK, not git - git-core, but OK)

cd cbang
scons

(1-2min - OK, then:...
...


g++ -o build/cbang/js/Arguments.o -c -std=gnu++98 -O3 -funroll-loops -mfpmath=sse -ffast-math -fno-unsafe-math-optimizations -msse -DNDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_OPENSSL -DUSING_CBANG -I/home/virtmill/boost_1_55_0 -I/home/virtmill/openssl-1.0.1f/include -Isrc -Iinclude build/cbang/js/Arguments.cpp
In file included from build/cbang/js/Arguments.h:36,
                 from build/cbang/js/Arguments.cpp:33:
build/cbang/js/Value.h: In member function ‘bool cb::js::Value::isUint32() const’:
build/cbang/js/Value.h:86: error: ‘class v8::Value’ has no member named ‘IsUint32’
build/cbang/js/Arguments.cpp: In constructor ‘cb::js::Arguments::Arguments(const v8::Arguments&, const cb::js::Signature&)’:
build/cbang/js/Arguments.cpp:52: error: ‘class v8::Object’ has no member named ‘GetOwnPropertyNames’
build/cbang/js/Arguments.cpp: In member function ‘std::string cb::js::Arguments::getName(unsigned int) const’:
build/cbang/js/Arguments.cpp:74: error: ‘class v8::Object’ has no member named ‘GetOwnPropertyNames’
scons: *** [build/cbang/js/Arguments.o] Error 1
scons: building terminated because of errors.

[GCC6] Request.cpp:378:10: warning: 'compression' may be used uninitialized in this function [-Wmaybe-uninitialized]

This appears on cbang 1.3.1 with GCC 6.4.

g++ -o build/cbang/event/WebServer.o -c -std=c++11 -g -Wall -fno-pie -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2
 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -Wno-
error=parentheses -Wno-deprecated-declarations -fPIC -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG
 -Iinclude -Isrc -Isrc/boost src/cbang/event/WebServer.cpp
src/cbang/event/WebServer.cpp:45:21: error: redefinition of 'class cb::SSLContext'
 namespace cb {class SSLContext {};}
                     ^~~~~~~~~~
In file included from src/cbang/event/WebServer.h:39:0,
                 from src/cbang/event/WebServer.cpp:33:
src/cbang/openssl/SSLContext.h:49:9: error: previous definition of 'class cb::SSLContext'
   class SSLContext {
         ^~~~~~~~~~
scons: *** [build/cbang/event/WebServer.o] Error 1
src/cbang/event/Request.cpp: In member function 'virtual cb::Event::Request::compression_t cb::Event::Request::getRequestedCompression() const':
src/cbang/event/Request.cpp:378:10: warning: 'compression' may be used uninitialized in this function [-Wmaybe-uninitialized]
   return compression;
          ^~~~~~~~~~~

Boost as shared

I understand that it was complicated for you to check if boost is present on the system automatically so you've removed it 97e5ae8, how about we toggle it with an already present switch disable_local. To build CAMotics without boost all I have to do is following:

From f8c261fe653a786152568d24fca0505d8f376da6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Samuel=20Rakitni=C4=8Dan?= <[email protected]>
Date: Tue, 25 Jul 2017 23:42:47 +0200
Subject: [PATCH] Unbundle boost

---
 SConstruct               | 2 +-
 config/cbang/__init__.py | 8 +++++---
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/SConstruct b/SConstruct
index fcd9fa6..c465c71 100644
--- a/SConstruct
+++ b/SConstruct
@@ -51,7 +51,7 @@ if not env.GetOption('clean'):
     env.CBDefine('USING_CBANG') # Using CBANG macro namespace
 
 # Local includes
-env.Append(CPPPATH = ['#/include', '#/src', '#/src/boost'])
+env.Append(CPPPATH = ['#/include', '#/src'])
 
 # Build third-party libs
 force_local = env.get('force_local', '')
diff --git a/config/cbang/__init__.py b/config/cbang/__init__.py
index 932c77f..9b20840 100644
--- a/config/cbang/__init__.py
+++ b/config/cbang/__init__.py
@@ -31,6 +31,10 @@ def configure_deps(conf, local = True, with_openssl = True):
 
     # Boost
     if env['PLATFORM'] == 'win32': env.CBDefine('BOOST_ALL_NO_LIB')
+    for name in ['iostreams', 'system', 'filesystem', 'regex']:
+        libname = 'boost_' + name
+        if env['PLATFORM'] == 'win32': libname = 'lib' + libname
+        conf.CBRequireLib(libname)
 
     # clock_gettime() needed by boost iterprocess
     if env['PLATFORM'] == 'posix' and int(env.get('cross_osx', 0)) == 0 \
@@ -77,14 +81,12 @@ def configure(conf):
     env = conf.env
 
     home = GetHome() + '/../..'
-    env.AppendUnique(CPPPATH = [home + '/src', home + '/include',
-                                home + '/src/boost'])
+    env.AppendUnique(CPPPATH = [home + '/src', home + '/include'])
     env.AppendUnique(LIBPATH = [home + '/lib'])
 
     if not env.CBConfigEnabled('cbang-deps'):
         conf.CBConfig('cbang-deps', local = False)
 
-    conf.CBRequireLib('cbang-boost')
     conf.CBRequireLib('cbang')
     conf.CBRequireCXXHeader('cbang/Exception.h')
     env.CBDefine('HAVE_CBANG')
-- 
2.9.4

Now if we could somehow tie this up to disable_local in an elegant way, that would be awesome. What do you think about that?

NameError: global name 'env' is not defined

When building Camotics on Linux Mint 17.3 (ubuntu edition) I got this error:

NameError: global name 'env' is not defined:
  File "USER_DIRECTORY/CAMotics/SConstruct", line 79:
    conf.CBConfig('v8', True)
  File "/usr/lib/scons/SCons/SConf.py", line 646:
    ret = self.test(context, *args, **kw)
  File "USER_DIRECTORY/cbang/config/__init__.py", line 166:
    ret = env.cb_methods[name](conf, **kwargs)
  File "USER_DIRECTORY/cbang/config/v8/__init__.py", line 12:
    if conf.env['PLATFORM'] == 'win32' or int(env.get('cross_mingw', 0)):

Then I noticed same error also appears when building cbang but build completes with success.

Using conf.env instead of env solved the problem for me as you can see in the below diff.

diff --git a/config/v8/__init__.py b/config/v8/__init__.py
index ba49b28..c201f7f 100644
--- a/config/v8/__init__.py
+++ b/config/v8/__init__.py
@@ -9,7 +9,7 @@ def configure(conf):

     conf.CBCheckHome('v8', lib_suffix = lib_suffix)

-    if conf.env['PLATFORM'] == 'win32' or int(env.get('cross_mingw', 0)):
+    if conf.env['PLATFORM'] == 'win32' or int(conf.env.get('cross_mingw', 0)):
         conf.CBRequireLib('winmm')

     conf.CBRequireCXXHeader('v8.h')

Having trouble building with v8

I have been building cbang with v8 3.14. Commit d846adb was the last commit that works for me. I tried building using v8 7.4 but cbang is not finding the libs. Here is the configure output:

scons: Reading SConscript files ...
   Compiler: gcc (gnu)
   Platform: posix
       Mode: gnu
       Arch: x86
GCC Version: 8.3.0
       Jobs: 8
Checking for C library pthread... yes
Checking for C header file zlib.h... yes
Checking for C library z... yes
Checking for C header file bzlib.h... yes
Checking for C library bz2... yes
Checking for C header file expat.h... yes
Checking for C library expat... yes
Checking for C header file pthread.h... yes
Checking for C library pthread... yes
Checking for C library dl... yes
Checking for C library sqlite3... yes
Checking for C header file sqlite3.h... yes
Checking for C function sqlite3_backup_init()... yes
Checking for C header file event.h... yes
Checking for C library event... yes
Checking for C++ header file re2/re2.h... yes
Checking for C library re2... yes
Checking for C header file yaml.h... yes
Checking for C library yaml... yes
Checking for C library leveldb... no
Checking for C header file mysql/mysql.h... no
Checking for C function clock_gettime()... yes
Checking for C library dl... yes
Checking for C header file openssl/ssl.h... yes
Checking for C library crypto... yes
Checking for C library ssl... yes
Checking for openssl version >= 1.0.0...yes
Checking for C++ header file ChakraCore.h... no
Need C++ header ChakraCore.h(cached) error: no result
Checking for C++ header file v8.h... yes
Checking for C++ header file libplatform/libplatform.h... yes
Checking for C library v8... no
Checking for C library v8_snapshot... no
Need library v8_snapshot(cached) error: no result
Checking for C header file pthread.h... yes
Checking for C library pthread... yes
Checking for C header file valgrind/valgrind.h... no

Here is the list of files installed with the v8 7.4 package I am trying to use:

/usr/
/usr/bin/
/usr/bin/d8
/usr/include/
/usr/include/libplatform/
/usr/include/libplatform/libplatform-export.h
/usr/include/libplatform/libplatform.h
/usr/include/libplatform/v8-tracing.h
/usr/include/v8-inspector-protocol.h
/usr/include/v8-inspector.h
/usr/include/v8-internal.h
/usr/include/v8-platform.h
/usr/include/v8-profiler.h
/usr/include/v8-testing.h
/usr/include/v8-util.h
/usr/include/v8-value-serializer-version.h
/usr/include/v8-version-string.h
/usr/include/v8-version.h
/usr/include/v8-wasm-trap-handler-posix.h
/usr/include/v8-wasm-trap-handler-win.h
/usr/include/v8.h
/usr/include/v8config.h
/usr/lib/
/usr/lib/libv8_for_testing.so
/usr/lib/libv8_libbase.so
/usr/lib/libv8_libplatform.so
/usr/lib/pkgconfig/
/usr/lib/pkgconfig/v8.pc
/usr/lib/pkgconfig/v8_libbase.pc
/usr/lib/pkgconfig/v8_libplatform.pc
/usr/lib/v8/
/usr/lib/v8/cctest
/usr/lib/v8/d8
/usr/lib/v8/icudtl.dat
/usr/lib/v8/libc++.so
/usr/lib/v8/libicui18n.so
/usr/lib/v8/libicuuc.so
/usr/lib/v8/libv8.so
/usr/lib/v8/natives_blob.bin
/usr/lib/v8/snapshot_blob.bin
/usr/share/
/usr/share/licenses/
/usr/share/licenses/v8/
/usr/share/licenses/v8/LICENSE
/usr/share/licenses/v8/LICENSE.fdlibm
/usr/share/licenses/v8/LICENSE.strongtalk
/usr/share/licenses/v8/LICENSE.v8
/usr/share/licenses/v8/LICENSE.valgrind

Do you have any suggestions or procedures to use to get this working with v8 again?

Fix detect user idle on linux

Problem is a bug in xscreensaver.

This may not be a problem in recent linux distros.

Anyway, a different mechanism is needed for users who do not use xscreensaver.

A workaround can be found in xprintidle.c
It is GPL 2 only.

zlib SCons config is masked by Python 3 zlib builtin

$ scons -C cbang with_openssl=no disable_local=libevent
scons: Entering directory `D:\a\fah-viewer\fah-viewer\cbang'
scons: Reading SConscript files ...
Traceback (most recent call last):
  File "D:\a\fah-viewer\fah-viewer\cbang\config\__init__.py", line 199, in CBTryLoadTool
    env.Tool(name, toolpath = [path])
  File "c:\hostedtoolcache\windows\python\3.8.2\x64\lib\site-packages\scons\SCons\Environment.py", line 1809, in Tool
    tool = SCons.Tool.Tool(tool, toolpath, **kw)
  File "c:\hostedtoolcache\windows\python\3.8.2\x64\lib\site-packages\scons\SCons\Tool\__init__.py", line 122, in __init__
    module = self._tool_module()
  File "c:\hostedtoolcache\windows\python\3.8.2\x64\lib\site-packages\scons\SCons\Tool\__init__.py", line 233, in _tool_module
    if sys_modules_value and sys_modules_value.__file__ == spec.origin:
AttributeError: module 'zlib' has no attribute '__file__'

I can build after patching SCons to check for the __file__ attribute before accessing it, but I'm not sure whether this results in the intended behaviour.

[GCC7] error: '%0*llo' directive writing between 7 and 11 bytes into a region of size 8 [-Werror=format-overflow=]

As found on Fedora 26 and above.

g++ -o build/cbang/tar/TarHeader.o -c -std=gnu++98 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -Wformat -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_OPENSSL -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/tar/TarHeader.cpp
src/cbang/tar/TarHeader.cpp: In member function 'void cb::TarHeader::setMode(uint32_t)':
src/cbang/tar/TarHeader.cpp:75:6: error: '%0*llo' directive writing between 7 and 11 bytes into a region of size 8 [-Werror=format-overflow=]
 void TarHeader::setMode(uint32_t mode) {
      ^~~~~~~~~
src/cbang/tar/TarHeader.cpp:75:6: note: directive argument in the range [0, 4294967295]
In file included from /usr/include/stdio.h:939:0,
                 from src/cbang/tar/TarHeader.cpp:37:
/usr/include/bits/stdio2.h:34:43: note: '__builtin___sprintf_chk' output between 8 and 12 bytes into a destination of size 8
       __bos (__s), __fmt, __va_arg_pack ());
                                           ^
src/cbang/tar/TarHeader.cpp: In member function 'void cb::TarHeader::setOwner(uint32_t)':
src/cbang/tar/TarHeader.cpp:81:6: error: '%0*llo' directive writing between 7 and 11 bytes into a region of size 8 [-Werror=format-overflow=]
 void TarHeader::setOwner(uint32_t owner) {
      ^~~~~~~~~
src/cbang/tar/TarHeader.cpp:81:6: note: directive argument in the range [0, 4294967295]
In file included from /usr/include/stdio.h:939:0,
                 from src/cbang/tar/TarHeader.cpp:37:
/usr/include/bits/stdio2.h:34:43: note: '__builtin___sprintf_chk' output between 8 and 12 bytes into a destination of size 8
       __bos (__s), __fmt, __va_arg_pack ());
                                           ^
src/cbang/tar/TarHeader.cpp: In member function 'void cb::TarHeader::setGroup(uint32_t)':
src/cbang/tar/TarHeader.cpp:87:6: error: '%0*llo' directive writing between 7 and 11 bytes into a region of size 8 [-Werror=format-overflow=]
 void TarHeader::setGroup(uint32_t group) {
      ^~~~~~~~~
src/cbang/tar/TarHeader.cpp:87:6: note: directive argument in the range [0, 4294967295]
In file included from /usr/include/stdio.h:939:0,
                 from src/cbang/tar/TarHeader.cpp:37:
/usr/include/bits/stdio2.h:34:43: note: '__builtin___sprintf_chk' output between 8 and 12 bytes into a destination of size 8
       __bos (__s), __fmt, __va_arg_pack ());
                                           ^
cc1plus: all warnings being treated as errors
scons: *** [build/cbang/tar/TarHeader.o] Error 1
scons: building terminated because of errors.

Full log: https://copr-be.cloud.fedoraproject.org/results/srakitnican/default/fedora-26-x86_64/00556754-camotics/build.log.gz

Compilation error on FreeBSD: member access into incomplete type 'struct sockaddr_in'

Compiling cbang 1.6.1 on FreeBSD aborts with the following error:

c++ -o build/cbang/js/Callback.o -c -faligned-new -std=c++14 -fsigned-char -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing -isystem /usr/local/include -funroll-loops -fno-pie -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing -fPIC -DNDEBUG -D_REENTRANT -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/js/Callback.cpp
src/cbang/net/IPAddress.cpp:142:62: error: member access into incomplete type 'struct sockaddr_in'
    uint32_t ip = ntohl(((struct sockaddr_in *)info->ai_addr)->sin_addr.s_addr);
                                                             ^
src/cbang/net/IPAddress.cpp:142:34: note: forward declaration of 'sockaddr_in'
    uint32_t ip = ntohl(((struct sockaddr_in *)info->ai_addr)->sin_addr.s_addr);
                                 ^
src/cbang/net/IPAddress.cpp:163:22: error: variable has incomplete type 'struct sockaddr_in'
  struct sockaddr_in addr;
                     ^
src/cbang/net/IPAddress.cpp:163:10: note: forward declaration of 'sockaddr_in'
  struct sockaddr_in addr;
         ^
src/cbang/net/IPAddress.cpp:169:19: error: use of undeclared identifier 'htons'
  addr.sin_port = htons(ip.getPort());
                  ^
src/cbang/net/IPAddress.cpp:170:26: error: use of undeclared identifier 'htonl'
  addr.sin_addr.s_addr = htonl(ip.getIP());
                         ^
4 errors generated.
scons: *** [build/cbang/net/IPAddress.o] Error 1

The attached patch fixes it.
patch-src_cbang_net_IPAddress.cpp.txt

Resources rebuilt unncessarily during install or on subsequent builds.

Dear Joseph,
for some reason, the install target triggers rebuild of build/resources.os, which in turn makes the default target out of date.
Could you please change this behavior, so when there is no actual need to rebuild the default target (it was just successfully built), it is not linked again by 'scons install' invocation.

ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result

With Fedora compiler flags following error comes up.

g++ -o build/cbang/os/SystemUtilities.o -c -std=gnu++98 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_OPENSSL -DHAVE_V8 -DHAVE_CBANG_BACKTRACE -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/os/SystemUtilities.cpp
g++ -o build/cbang/os/TemporaryDirectory.o -c -std=gnu++98 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_OPENSSL -DHAVE_V8 -DHAVE_CBANG_BACKTRACE -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/os/TemporaryDirectory.cpp
src/cbang/os/SystemUtilities.cpp:961:47: error: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Werror=unused-result]
       (void)::freopen("/dev/null", "r", stdin);
                                               ^
src/cbang/os/SystemUtilities.cpp:962:48: error: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Werror=unused-result]
       (void)::freopen("/dev/null", "w", stdout);
                                                ^
src/cbang/os/SystemUtilities.cpp:963:48: error: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Werror=unused-result]
       (void)::freopen("/dev/null", "w", stderr);
                                                ^

soname policy

Joseph,
I remember that you have no versioning policy in general.
However, in the review response [0] reviewer points that it probably good to have your decision on soname and its versioning. I replied:

As 1) Joseph adds the functionality on as needed basis, 2) there
are obvious bugfixes, 3) camotics builds properly with up-to-date version of cbang
and 4) cbang exports c++ classes, I decided to use `version.subversion` as an so version,
leaving `.revision` for bug fixes in cbang. The leading zero in `libcbang0` is from 
upstream, I suspect that it is somehow related to debian packaging/naming, so I 
leaved this as is. 

So, the idea is to have versioned so name up to subversion number, i.e. libcbang0.so.1.7 presently, to allow bug fixes updates of shared cbang library without the need to rebuild camotics.

Do you have any objections or another vision?

Thank you,
Sergey

[0] https://bugzilla.redhat.com/show_bug.cgi?id=2129303#c2

NameError: global name 'check_output' is not defined

When attempting to build cbang with:

scons -C cbang debug=1 -j2

I get:

  scons: Entering directory `/home/conda/workspace/cbang'
  scons: Reading SConscript files ...
     Compiler: gcc (gnu)
     Platform: posix
         Mode: gnu
         Arch: x86
  NameError: global name 'check_output' is not defined:
    File "/home/conda/workspace/cbang/SConstruct", line 34:
      conf.CBConfig('compiler')
    File "/usr/lib/scons/SCons/SConf.py", line 640:
      ret = self.test(context, *args, **kw)
    File "/home/conda/workspace/cbang/config/__init__.py", line 166:
      ret = conf.env.cb_methods[name](conf, **kwargs)
    File "/home/conda/workspace/cbang/config/compiler/__init__.py", line 189:
      if compiler == 'gnu': print('GCC Version:', gcc_version_str(env))
    File "/home/conda/workspace/cbang/config/compiler/__init__.py", line 19:
      return check_output(cmd).strip().decode('utf8')

Looking at cbang/config/compiler/__init__.py, check_output doesn't appear defined.

cb::SystemUtilites::oopen returns instance of an internal OStream class which crashes on its deletion on Linux

How to reproduce

  • Install OpenSSL development libraries (sudo apt install libssl-dev on Debian and Ubuntu)
  • Checkout the master branch.
  • Build as usual, then build and run tests:
$ scons
$ cd tests
$ scons
$ ./testHarness --view-failed
  • You'll see fails:
DecompressTest: return                                                  [FAILED]
*********************************** command ************************************
/home/crystax/src/cbang/tests/iostreamTests/compress test.bz2 test.txt
******************************** expect/stdout *********************************

************************************ stdout ************************************

******************************** expect/stderr *********************************

************************************ stderr ************************************

******************************** expect/return *********************************
0
************************************ return ************************************
-11
********************************************************************************
CompressTest: return                                                    [FAILED]
*********************************** command ************************************
/home/crystax/src/cbang/tests/iostreamTests/compress test.txt test.bz2
******************************** expect/stdout *********************************

************************************ stdout ************************************

******************************** expect/stderr *********************************

************************************ stderr ************************************

******************************** expect/return *********************************
0
************************************ return ************************************
-11
********************************************************************************
*********************************** Summary ************************************
Passed                                                                        80
Failed                                                                         2

More details

It crashes on the OStream instance deletion:

$ gdb iostreamTests/compress
GNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-git
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from iostreamTests/compress...(no debugging symbols found)...done.
(gdb) set args iostreamTests/CompressTest/data/test.txt test.bz2
(gdb) run
Starting program: /home/crystax/src/cbang/tests/iostreamTests/compress iostreamTests/CompressTest/data/test.txt test.bz2
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
0x0000000000416a3f in cb::SystemUtilities::oopen(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, bool)::OStream::~OStream() ()
(gdb) bt
#0  0x0000000000416a3f in cb::SystemUtilities::oopen(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, bool)::OStream::~OStream() ()
#1  0x0000000000416c25 in cb::RefCounterImpl<cb::SystemUtilities::oopen(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, bool)::OStream(cb::DeallocNew<cb::DeallocNew>)>::decCount(void const*) ()
#2  0x0000000000406886 in main ()
(gdb)

It happens only if building cbang in release mode. If being built with scons debug=1, no crash happens. I see this problem on Linux only. When building for Mac, there's no crash regardless of the debug mode.

src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]

cbang fails to build on armv7 and ppc64 with GCC 7

g++ -o build/cbang/net/IPAddressFilter.o -c -std=c++11 -ggdb -Wall -Werror -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -Wno-deprecated-declarations -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_OPENSSL -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/net/IPAddressFilter.cpp
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
 };
 ^
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
src/cbang/net/Base64.cpp:64:1: error: narrowing conversion of '-1' from 'int' to 'char' inside { } [-Wnarrowing]
scons: *** [build/cbang/net/Base64.o] Error 1
scons: building terminated because of errors.

See also: ckolivas/lrzip#46

compilation error "inaccessible within this context"

Building cbang on raspbian 4.19:

git clone https://github.com/CauldronDevelopmentLLC/cbang
TARGET_ARCH=arm-linux-gnueabihf scons -C cbang
results in:

g++ -o build/resources.data/data4.o -c -std=c++11 -O3 -funroll-loops -fno-pie -fPIC -DNDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_OPENSSL -DHAVE_PTHREADS -DUSING_CBANG -Iinclude -Isrc -Isrc/boost build/resources.data/data4.cpp
src/cbang/event/JSONWebsocket.cpp: In member function ‘virtual void {anonymous}::JSONWriter::close()’:
src/cbang/event/JSONWebsocket.cpp:56:30: error: ‘virtual void cb::Event::Request::send(const char*, unsigned int)’ is inaccessible within this context
       ws->send(data(), size());
                              ^
In file included from src/cbang/event/Websocket.h:35,
                 from src/cbang/event/JSONWebsocket.h:35,
                 from src/cbang/event/JSONWebsocket.cpp:33:
src/cbang/event/Request.h:241:20: note: declared here
       virtual void send(const char *data, unsigned length);
                    ^~~~
g++ -o build/resources.data/data5.o -c -std=c++11 -O3 -funroll-loops -fno-pie -fPIC -DNDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_OPENSSL -DHAVE_PTHREADS -DUSING_CBANG -Iinclude -Isrc -Isrc/boost build/resources.data/data5.cpp
scons: *** [build/cbang/event/JSONWebsocket.o] Error 1
scons: building terminated because of errors.

I've attached the full build log:
log.txt

Changing TARGET_ARCH=arm-linux-gnueabihf to TARGET_ARCH=armv7l-linux-gnu results in the same error.

Anything I'm doing wrong?

Required version of OpenSSL?

Hello,
In cbang 1.7.0, the configuration script checks that openssl is at least 1.1.0:

Checking for openssl version >= 1.1.0...yes

But src/cbang/openssl/KeyPair.cpp includes openssl/core_names.h which is only available in the devel version of OpenSSL, and also src/cbang/openssl/KeyContext.cpp uses EVP_PKEY_CTX_set1_rsa_keygen_pubexp which is not available in the OpenSSL stable (1.1.1q).

I would rather avoid using the devel version, because it would introduce conflicts with other applications.

Failure to compile with gcc 4.8.x due to gcc bug.

When I try to compile OpenScamp using 'scons' I get:

openscam/cbang/lib/libcbang.a(Value.o): In function `cb::js::ValueBase<v8::Persistent<v8::Value> >::isNull() const':
Value.cpp:(.text._ZNK2cb2js9ValueBaseIN2v810PersistentINS2_5ValueEEEE6isNullEv[_ZNK2cb2js9ValueBaseIN2v810PersistentINS2_5ValueEEEE6isNullEv]+0xb): undefined reference to `v8::Value::IsNull() const'
collect2: error: ld returned 1 exit status
scons: *** [openscam] Error 1
scons: building terminated because of errors.

This is probably related to:

CauldronDevelopmentLLC/CAMotics#102

[GCC6] WebServer.cpp:45:21: error: redefinition of 'class cb::SSLContext'

This appears on cbang 1.3.1 with GCC 6.4.

g++ -o build/cbang/event/WebServer.o -c -std=c++11 -g -Wall -fno-pie -I/usr/include/v8-3.14/ -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -Wno-error=parentheses -Wno-deprecated-declarations -Wno-maybe-uninitialized -fPIC -DDEBUG -D_REENTRANT -DHAVE_EXPAT -DHAVE_PTHREADS -DHAVE_LIBSQLITE -DHAVE_V8 -DDEBUG_LEVEL=1 -DUSING_CBANG -Iinclude -Isrc -Isrc/boost src/cbang/event/WebServer.cpp
src/cbang/event/WebServer.cpp:45:21: error: redefinition of 'class cb::SSLContext'
 namespace cb {class SSLContext {};}
                     ^~~~~~~~~~
In file included from src/cbang/event/WebServer.h:39:0,
                 from src/cbang/event/WebServer.cpp:33:
src/cbang/openssl/SSLContext.h:49:9: error: previous definition of 'class cb::SSLContext'
   class SSLContext {
         ^~~~~~~~~~

Path traversal bug in TarFileReader::extract

Impact: 

The latest version bastet-v8.1.16 has a path traversal vulnerability that allows the attacker to create or write to files outside the current directory due to improper string comparisons between canonical paths.

 
How to reproduce: 

wget https://github.com/CauldronDevelopmentLLC/cbang/archive/refs/tags/bastet-v8.1.16.tar.gz
tar -xzf bastet-v8.1.16.tar.gz
cd cbang-bastet-v8.1.16/tests
scons
cd tarTests
# place poc.tar in this directory
./tar --extract poc.tar
# verify attack worked
cat ../tarTests.d/config

Root cause:

string a = SystemUtilities::getCanonicalPath(_path);
string b = SystemUtilities::getCanonicalPath(path);
if (!String::startsWith(b, a))
THROW("Tar path points outside of the extraction directory: " << path);
}

The root cause is the return true value in function startsWith in String.cpp that passes if condition in function TarFileReader::extract  in TarFileReader.cpp.

PoC image:

Extract poc.zip to obtain poc.tar: poc.zip

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.