Closed tpimh closed 3 years ago
CBANG_HOME
set correctly.I've added a scripts/build
to CAMotics which runs on Debian Linux. It installs all the required packages, builds embedded-v8 and C! and setups the environment variables. You can just clone CAMotics and run this script.
I also added a script embedded-v8/build.sh
which scripts/build
calls. It builds embedded-v8 and then moves the library so that C! has an easier time finding it.
I tested all of this on a fresh install of Debian bullseye as root like this:
apt-get update
apt-get install -y git sudo
git clone https://github.com/CauldronDevelopmentLLC/CAMotics
./CAMotics/scripts/build
If you're on an OS other than Debian Linux you can look at these scripts to see what you need to do. The main thing that's different for other OS is how you install the required packages.
Thank you very much for publishing your build scripts, this helps a lot. I didn't find any references to V8_HOME
in the C! source, so not sure where exactly this variable is being used. Are you sure that the script is using embedded_v8 headers and not system headers provided by libv8-dev
package?
In order for C! config to find embedded-v8 I had to set V8_INCLUDE
environment variable to $V8_HOME/include
, then I got a huge number of errors (maybe this discussion should be moved to C! issues?):
In file included from src/cbang/js/v8/ValueRef.h:35,
from src/cbang/js/v8/JSImpl.h:35,
from src/cbang/js/Javascript.cpp:40:
src/cbang/js/v8/Value.h: In member function ‘virtual bool cb::gv8::Value::toBoolean() const’:
src/cbang/js/v8/Value.h:87:75: error: no matching function for call to ‘v8::Value::BooleanValue()’
87 | bool toBoolean() const {assertDefined(); return value->BooleanValue();}
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/ValueRef.h:35,
from src/cbang/js/v8/JSImpl.h:35,
from src/cbang/js/Javascript.cpp:40:
embedded-v8/include/v8.h:3055:8: note: candidate: ‘bool v8::Value::BooleanValue(v8::Isolate*) const’
3055 | bool BooleanValue(Isolate* isolate) const;
| ^~~~~~~~~~~~
embedded-v8/include/v8.h:3055:8: note: candidate expects 1 argument, 0 provided
In file included from src/cbang/js/v8/ValueRef.h:35,
from src/cbang/js/v8/JSImpl.h:35,
from src/cbang/js/Javascript.cpp:40:
src/cbang/js/v8/Value.h: In member function ‘virtual double cb::gv8::Value::toNumber() const’:
src/cbang/js/v8/Value.h:93:75: error: no matching function for call to ‘v8::Value::NumberValue()’
93 | double toNumber() const {assertDefined(); return value->NumberValue();}
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/ValueRef.h:35,
from src/cbang/js/v8/JSImpl.h:35,
from src/cbang/js/Javascript.cpp:40:
embedded-v8/include/v8.h:3058:39: note: candidate: ‘v8::Maybe<double> v8::Value::NumberValue(v8::Local<v8::Context>) const’
3058 | V8_WARN_UNUSED_RESULT Maybe<double> NumberValue(Local<Context> context) const;
| ^~~~~~~~~~~
embedded-v8/include/v8.h:3058:39: note: candidate expects 1 argument, 0 provided
In file included from src/cbang/js/v8/ValueRef.h:35,
from src/cbang/js/v8/JSImpl.h:35,
from src/cbang/js/Javascript.cpp:40:
src/cbang/js/v8/Value.h: In member function ‘virtual int cb::gv8::Value::toInteger() const’:
src/cbang/js/v8/Value.h:94:74: error: no matching function for call to ‘v8::Value::IntegerValue()’
94 | int toInteger() const {assertDefined(); return value->IntegerValue();}
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/ValueRef.h:35,
from src/cbang/js/v8/JSImpl.h:35,
from src/cbang/js/Javascript.cpp:40:
embedded-v8/include/v8.h:3060:40: note: candidate: ‘v8::Maybe<long int> v8::Value::IntegerValue(v8::Local<v8::Context>) const’
3060 | V8_WARN_UNUSED_RESULT Maybe<int64_t> IntegerValue(
| ^~~~~~~~~~~~
embedded-v8/include/v8.h:3060:40: note: candidate expects 1 argument, 0 provided
In file included from src/cbang/js/v8/ValueRef.h:35,
from src/cbang/js/v8/JSImpl.h:35,
from src/cbang/js/Javascript.cpp:40:
src/cbang/js/v8/Value.h: In member function ‘int32_t cb::gv8::Value::toInt32() const’:
src/cbang/js/v8/Value.h:100:74: error: no matching function for call to ‘v8::Value::Int32Value()’
100 | int32_t toInt32() const {assertDefined(); return value->Int32Value();}
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/ValueRef.h:35,
from src/cbang/js/v8/JSImpl.h:35,
from src/cbang/js/Javascript.cpp:40:
embedded-v8/include/v8.h:3066:40: note: candidate: ‘v8::Maybe<int> v8::Value::Int32Value(v8::Local<v8::Context>) const’
3066 | V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;
| ^~~~~~~~~~
embedded-v8/include/v8.h:3066:40: note: candidate expects 1 argument, 0 provided
In file included from src/cbang/js/v8/ValueRef.h:35,
from src/cbang/js/v8/JSImpl.h:35,
from src/cbang/js/Javascript.cpp:40:
src/cbang/js/v8/Value.h: In member function ‘uint32_t cb::gv8::Value::toUint32() const’:
src/cbang/js/v8/Value.h:106:77: error: no matching function for call to ‘v8::Value::Uint32Value()’
106 | uint32_t toUint32() const {assertDefined(); return value->Uint32Value();}
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/ValueRef.h:35,
from src/cbang/js/v8/JSImpl.h:35,
from src/cbang/js/Javascript.cpp:40:
embedded-v8/include/v8.h:3063:41: note: candidate: ‘v8::Maybe<unsigned int> v8::Value::Uint32Value(v8::Local<v8::Context>) const’
3063 | V8_WARN_UNUSED_RESULT Maybe<uint32_t> Uint32Value(
| ^~~~~~~~~~~
embedded-v8/include/v8.h:3063:41: note: candidate expects 1 argument, 0 provided
In file included from src/cbang/js/v8/ValueRef.h:35,
from src/cbang/js/v8/JSImpl.h:35,
from src/cbang/js/Javascript.cpp:40:
src/cbang/js/v8/Value.h: In member function ‘int cb::gv8::Value::utf8Length() const’:
src/cbang/js/v8/Value.h:117:75: error: no matching function for call to ‘v8::String::Utf8Length()’
117 | int utf8Length() const {return v8::String::Cast(*value)->Utf8Length();}
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/ValueRef.h:35,
from src/cbang/js/v8/JSImpl.h:35,
from src/cbang/js/Javascript.cpp:40:
embedded-v8/include/v8.h:3176:7: note: candidate: ‘int v8::String::Utf8Length(v8::Isolate*) const’
3176 | int Utf8Length(Isolate* isolate) const;
| ^~~~~~~~~~
embedded-v8/include/v8.h:3176:7: note: candidate expects 1 argument, 0 provided
In file included from src/cbang/js/v8/Factory.h:35,
from src/cbang/js/v8/Factory.cpp:33:
src/cbang/js/v8/Value.h: In member function ‘virtual bool cb::gv8::Value::toBoolean() const’:
src/cbang/js/v8/Value.h:87:75: error: no matching function for call to ‘v8::Value::BooleanValue()’
87 | bool toBoolean() const {assertDefined(); return value->BooleanValue();}
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Factory.h:35,
from src/cbang/js/v8/Factory.cpp:33:
embedded-v8/include/v8.h:3055:8: note: candidate: ‘bool v8::Value::BooleanValue(v8::Isolate*) const’
3055 | bool BooleanValue(Isolate* isolate) const;
| ^~~~~~~~~~~~
embedded-v8/include/v8.h:3055:8: note: candidate expects 1 argument, 0 provided
In file included from src/cbang/js/v8/Factory.h:35,
from src/cbang/js/v8/Factory.cpp:33:
src/cbang/js/v8/Value.h: In member function ‘virtual double cb::gv8::Value::toNumber() const’:
src/cbang/js/v8/Value.h:93:75: error: no matching function for call to ‘v8::Value::NumberValue()’
93 | double toNumber() const {assertDefined(); return value->NumberValue();}
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Factory.h:35,
from src/cbang/js/v8/Factory.cpp:33:
embedded-v8/include/v8.h:3058:39: note: candidate: ‘v8::Maybe<double> v8::Value::NumberValue(v8::Local<v8::Context>) const’
3058 | V8_WARN_UNUSED_RESULT Maybe<double> NumberValue(Local<Context> context) const;
| ^~~~~~~~~~~
embedded-v8/include/v8.h:3058:39: note: candidate expects 1 argument, 0 provided
In file included from src/cbang/js/v8/Factory.h:35,
from src/cbang/js/v8/Factory.cpp:33:
src/cbang/js/v8/Value.h: In member function ‘virtual int cb::gv8::Value::toInteger() const’:
src/cbang/js/v8/Value.h:94:74: error: no matching function for call to ‘v8::Value::IntegerValue()’
94 | int toInteger() const {assertDefined(); return value->IntegerValue();}
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Factory.h:35,
from src/cbang/js/v8/Factory.cpp:33:
embedded-v8/include/v8.h:3060:40: note: candidate: ‘v8::Maybe<long int> v8::Value::IntegerValue(v8::Local<v8::Context>) const’
3060 | V8_WARN_UNUSED_RESULT Maybe<int64_t> IntegerValue(
| ^~~~~~~~~~~~
embedded-v8/include/v8.h:3060:40: note: candidate expects 1 argument, 0 provided
In file included from src/cbang/js/v8/Factory.h:35,
from src/cbang/js/v8/Factory.cpp:33:
src/cbang/js/v8/Value.h: In member function ‘int32_t cb::gv8::Value::toInt32() const’:
src/cbang/js/v8/Value.h:100:74: error: no matching function for call to ‘v8::Value::Int32Value()’
100 | int32_t toInt32() const {assertDefined(); return value->Int32Value();}
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Factory.h:35,
from src/cbang/js/v8/Factory.cpp:33:
embedded-v8/include/v8.h:3066:40: note: candidate: ‘v8::Maybe<int> v8::Value::Int32Value(v8::Local<v8::Context>) const’
3066 | V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;
| ^~~~~~~~~~
embedded-v8/include/v8.h:3066:40: note: candidate expects 1 argument, 0 provided
In file included from src/cbang/js/v8/Factory.h:35,
from src/cbang/js/v8/Factory.cpp:33:
src/cbang/js/v8/Value.h: In member function ‘uint32_t cb::gv8::Value::toUint32() const’:
src/cbang/js/v8/Value.h:106:77: error: no matching function for call to ‘v8::Value::Uint32Value()’
106 | uint32_t toUint32() const {assertDefined(); return value->Uint32Value();}
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Factory.h:35,
from src/cbang/js/v8/Factory.cpp:33:
embedded-v8/include/v8.h:3063:41: note: candidate: ‘v8::Maybe<unsigned int> v8::Value::Uint32Value(v8::Local<v8::Context>) const’
3063 | V8_WARN_UNUSED_RESULT Maybe<uint32_t> Uint32Value(
| ^~~~~~~~~~~
embedded-v8/include/v8.h:3063:41: note: candidate expects 1 argument, 0 provided
In file included from src/cbang/js/v8/Factory.h:35,
from src/cbang/js/v8/Factory.cpp:33:
src/cbang/js/v8/Value.h: In member function ‘int cb::gv8::Value::utf8Length() const’:
src/cbang/js/v8/Value.h:117:75: error: no matching function for call to ‘v8::String::Utf8Length()’
117 | int utf8Length() const {return v8::String::Cast(*value)->Utf8Length();}
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Factory.h:35,
from src/cbang/js/v8/Factory.cpp:33:
embedded-v8/include/v8.h:3176:7: note: candidate: ‘int v8::String::Utf8Length(v8::Isolate*) const’
3176 | int Utf8Length(Isolate* isolate) const;
| ^~~~~~~~~~
embedded-v8/include/v8.h:3176:7: note: candidate expects 1 argument, 0 provided
In file included from src/cbang/js/v8/Context.h:35,
from src/cbang/js/v8/Context.cpp:33:
src/cbang/js/v8/Value.h: In member function ‘virtual bool cb::gv8::Value::toBoolean() const’:
src/cbang/js/v8/Value.h:87:75: error: no matching function for call to ‘v8::Value::BooleanValue()’
87 | bool toBoolean() const {assertDefined(); return value->BooleanValue();}
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Context.h:35,
from src/cbang/js/v8/Context.cpp:33:
embedded-v8/include/v8.h:3055:8: note: candidate: ‘bool v8::Value::BooleanValue(v8::Isolate*) const’
3055 | bool BooleanValue(Isolate* isolate) const;
| ^~~~~~~~~~~~
embedded-v8/include/v8.h:3055:8: note: candidate expects 1 argument, 0 provided
In file included from src/cbang/js/v8/Context.h:35,
from src/cbang/js/v8/Context.cpp:33:
src/cbang/js/v8/Value.h: In member function ‘virtual double cb::gv8::Value::toNumber() const’:
src/cbang/js/v8/Value.h:93:75: error: no matching function for call to ‘v8::Value::NumberValue()’
93 | double toNumber() const {assertDefined(); return value->NumberValue();}
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Context.h:35,
from src/cbang/js/v8/Context.cpp:33:
embedded-v8/include/v8.h:3058:39: note: candidate: ‘v8::Maybe<double> v8::Value::NumberValue(v8::Local<v8::Context>) const’
3058 | V8_WARN_UNUSED_RESULT Maybe<double> NumberValue(Local<Context> context) const;
| ^~~~~~~~~~~
embedded-v8/include/v8.h:3058:39: note: candidate expects 1 argument, 0 provided
In file included from src/cbang/js/v8/Context.h:35,
from src/cbang/js/v8/Context.cpp:33:
src/cbang/js/v8/Value.h: In member function ‘virtual int cb::gv8::Value::toInteger() const’:
src/cbang/js/v8/Value.h:94:74: error: no matching function for call to ‘v8::Value::IntegerValue()’
94 | int toInteger() const {assertDefined(); return value->IntegerValue();}
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Context.h:35,
from src/cbang/js/v8/Context.cpp:33:
embedded-v8/include/v8.h:3060:40: note: candidate: ‘v8::Maybe<long int> v8::Value::IntegerValue(v8::Local<v8::Context>) const’
3060 | V8_WARN_UNUSED_RESULT Maybe<int64_t> IntegerValue(
| ^~~~~~~~~~~~
embedded-v8/include/v8.h:3060:40: note: candidate expects 1 argument, 0 provided
In file included from src/cbang/js/v8/Context.h:35,
from src/cbang/js/v8/Context.cpp:33:
src/cbang/js/v8/Value.h: In member function ‘int32_t cb::gv8::Value::toInt32() const’:
src/cbang/js/v8/Value.h:100:74: error: no matching function for call to ‘v8::Value::Int32Value()’
100 | int32_t toInt32() const {assertDefined(); return value->Int32Value();}
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Context.h:35,
from src/cbang/js/v8/Context.cpp:33:
embedded-v8/include/v8.h:3066:40: note: candidate: ‘v8::Maybe<int> v8::Value::Int32Value(v8::Local<v8::Context>) const’
3066 | V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;
| ^~~~~~~~~~
embedded-v8/include/v8.h:3066:40: note: candidate expects 1 argument, 0 provided
In file included from src/cbang/js/v8/Context.h:35,
from src/cbang/js/v8/Context.cpp:33:
src/cbang/js/v8/Value.h: In member function ‘uint32_t cb::gv8::Value::toUint32() const’:
src/cbang/js/v8/Value.h:106:77: error: no matching function for call to ‘v8::Value::Uint32Value()’
106 | uint32_t toUint32() const {assertDefined(); return value->Uint32Value();}
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Context.h:35,
from src/cbang/js/v8/Context.cpp:33:
embedded-v8/include/v8.h:3063:41: note: candidate: ‘v8::Maybe<unsigned int> v8::Value::Uint32Value(v8::Local<v8::Context>) const’
3063 | V8_WARN_UNUSED_RESULT Maybe<uint32_t> Uint32Value(
| ^~~~~~~~~~~
embedded-v8/include/v8.h:3063:41: note: candidate expects 1 argument, 0 provided
In file included from src/cbang/js/v8/Context.h:35,
from src/cbang/js/v8/Context.cpp:33:
src/cbang/js/v8/Value.h: In member function ‘int cb::gv8::Value::utf8Length() const’:
src/cbang/js/v8/Value.h:117:75: error: no matching function for call to ‘v8::String::Utf8Length()’
117 | int utf8Length() const {return v8::String::Cast(*value)->Utf8Length();}
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Context.h:35,
from src/cbang/js/v8/Context.cpp:33:
embedded-v8/include/v8.h:3176:7: note: candidate: ‘int v8::String::Utf8Length(v8::Isolate*) const’
3176 | int Utf8Length(Isolate* isolate) const;
| ^~~~~~~~~~
embedded-v8/include/v8.h:3176:7: note: candidate expects 1 argument, 0 provided
src/cbang/js/v8/Context.cpp: In member function ‘cb::gv8::Value cb::gv8::Context::eval(const cb::InputSource&)’:
src/cbang/js/v8/Context.cpp:59:54: error: conversion from ‘v8::MaybeLocal<v8::Script>’ to non-scalar type ‘v8::Handle<v8::Script>’ {aka ‘v8::Local<v8::Script>’} requested
59 | v8::Handle<v8::Script> script = v8::Script::Compile(source, origin);
| ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
src/cbang/js/v8/Context.cpp:63:43: error: no matching function for call to ‘v8::Script::Run()’
63 | v8::Handle<v8::Value> ret = script->Run();
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Context.h:35,
from src/cbang/js/v8/Context.cpp:33:
embedded-v8/include/v8.h:1781:43: note: candidate: ‘v8::MaybeLocal<v8::Value> v8::Script::Run(v8::Local<v8::Context>)’
1781 | V8_WARN_UNUSED_RESULT MaybeLocal<Value> Run(Local<Context> context);
| ^~~
embedded-v8/include/v8.h:1781:43: note: candidate expects 1 argument, 0 provided
src/cbang/js/v8/Context.cpp: In static member function ‘static void cb::gv8::Context::translateException(const v8::TryCatch&, bool)’:
src/cbang/js/v8/Context.cpp:74:40: error: no matching function for call to ‘v8::TryCatch::StackTrace() const’
74 | if (useStack && !tryCatch.StackTrace().IsEmpty())
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Context.h:35,
from src/cbang/js/v8/Context.cpp:33:
embedded-v8/include/v8.h:10328:50: note: candidate: ‘static v8::MaybeLocal<v8::Value> v8::TryCatch::StackTrace(v8::Local<v8::Context>, v8::Local<v8::Value>)’
10328 | V8_WARN_UNUSED_RESULT static MaybeLocal<Value> StackTrace(
| ^~~~~~~~~~
embedded-v8/include/v8.h:10328:50: note: candidate expects 2 arguments, 0 provided
embedded-v8/include/v8.h:10336:43: note: candidate: ‘v8::MaybeLocal<v8::Value> v8::TryCatch::StackTrace(v8::Local<v8::Context>) const’
10336 | V8_WARN_UNUSED_RESULT MaybeLocal<Value> StackTrace(
| ^~~~~~~~~~
embedded-v8/include/v8.h:10336:43: note: candidate expects 1 argument, 0 provided
src/cbang/js/v8/Context.cpp:75:47: error: no matching function for call to ‘v8::TryCatch::StackTrace() const’
75 | throw Exception(Value(tryCatch.StackTrace()).toString());
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Context.h:35,
from src/cbang/js/v8/Context.cpp:33:
embedded-v8/include/v8.h:10328:50: note: candidate: ‘static v8::MaybeLocal<v8::Value> v8::TryCatch::StackTrace(v8::Local<v8::Context>, v8::Local<v8::Value>)’
10328 | V8_WARN_UNUSED_RESULT static MaybeLocal<Value> StackTrace(
| ^~~~~~~~~~
embedded-v8/include/v8.h:10328:50: note: candidate expects 2 arguments, 0 provided
embedded-v8/include/v8.h:10336:43: note: candidate: ‘v8::MaybeLocal<v8::Value> v8::TryCatch::StackTrace(v8::Local<v8::Context>) const’
10336 | V8_WARN_UNUSED_RESULT MaybeLocal<Value> StackTrace(
| ^~~~~~~~~~
embedded-v8/include/v8.h:10336:43: note: candidate expects 1 argument, 0 provided
src/cbang/js/v8/Context.cpp:85:37: error: no matching function for call to ‘v8::Message::GetLineNumber()’
85 | int line = message->GetLineNumber();
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Context.h:35,
from src/cbang/js/v8/Context.cpp:33:
embedded-v8/include/v8.h:2189:36: note: candidate: ‘v8::Maybe<int> v8::Message::GetLineNumber(v8::Local<v8::Context>) const’
2189 | V8_WARN_UNUSED_RESULT Maybe<int> GetLineNumber(Local<Context> context) const;
| ^~~~~~~~~~~~~
embedded-v8/include/v8.h:2189:36: note: candidate expects 1 argument, 0 provided
In file included from src/cbang/js/v8/ValueRef.h:35,
from src/cbang/js/v8/JSImpl.h:35,
from src/cbang/js/v8/JSImpl.cpp:33:
src/cbang/js/v8/Value.h: In member function ‘virtual bool cb::gv8::Value::toBoolean() const’:
src/cbang/js/v8/Value.h:87:75: error: no matching function for call to ‘v8::Value::BooleanValue()’
87 | bool toBoolean() const {assertDefined(); return value->BooleanValue();}
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/ValueRef.h:35,
from src/cbang/js/v8/JSImpl.h:35,
from src/cbang/js/v8/JSImpl.cpp:33:
embedded-v8/include/v8.h:3055:8: note: candidate: ‘bool v8::Value::BooleanValue(v8::Isolate*) const’
3055 | bool BooleanValue(Isolate* isolate) const;
| ^~~~~~~~~~~~
embedded-v8/include/v8.h:3055:8: note: candidate expects 1 argument, 0 provided
In file included from src/cbang/js/v8/ValueRef.h:35,
from src/cbang/js/v8/JSImpl.h:35,
from src/cbang/js/v8/JSImpl.cpp:33:
src/cbang/js/v8/Value.h: In member function ‘virtual double cb::gv8::Value::toNumber() const’:
src/cbang/js/v8/Value.h:93:75: error: no matching function for call to ‘v8::Value::NumberValue()’
93 | double toNumber() const {assertDefined(); return value->NumberValue();}
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/ValueRef.h:35,
from src/cbang/js/v8/JSImpl.h:35,
from src/cbang/js/v8/JSImpl.cpp:33:
embedded-v8/include/v8.h:3058:39: note: candidate: ‘v8::Maybe<double> v8::Value::NumberValue(v8::Local<v8::Context>) const’
3058 | V8_WARN_UNUSED_RESULT Maybe<double> NumberValue(Local<Context> context) const;
| ^~~~~~~~~~~
embedded-v8/include/v8.h:3058:39: note: candidate expects 1 argument, 0 provided
In file included from src/cbang/js/v8/ValueRef.h:35,
from src/cbang/js/v8/JSImpl.h:35,
from src/cbang/js/v8/JSImpl.cpp:33:
src/cbang/js/v8/Value.h: In member function ‘virtual int cb::gv8::Value::toInteger() const’:
src/cbang/js/v8/Value.h:94:74: error: no matching function for call to ‘v8::Value::IntegerValue()’
94 | int toInteger() const {assertDefined(); return value->IntegerValue();}
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/ValueRef.h:35,
from src/cbang/js/v8/JSImpl.h:35,
from src/cbang/js/v8/JSImpl.cpp:33:
embedded-v8/include/v8.h:3060:40: note: candidate: ‘v8::Maybe<long int> v8::Value::IntegerValue(v8::Local<v8::Context>) const’
3060 | V8_WARN_UNUSED_RESULT Maybe<int64_t> IntegerValue(
| ^~~~~~~~~~~~
embedded-v8/include/v8.h:3060:40: note: candidate expects 1 argument, 0 provided
In file included from src/cbang/js/v8/ValueRef.h:35,
from src/cbang/js/v8/JSImpl.h:35,
from src/cbang/js/v8/JSImpl.cpp:33:
src/cbang/js/v8/Value.h: In member function ‘int32_t cb::gv8::Value::toInt32() const’:
src/cbang/js/v8/Value.h:100:74: error: no matching function for call to ‘v8::Value::Int32Value()’
100 | int32_t toInt32() const {assertDefined(); return value->Int32Value();}
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/ValueRef.h:35,
from src/cbang/js/v8/JSImpl.h:35,
from src/cbang/js/v8/JSImpl.cpp:33:
embedded-v8/include/v8.h:3066:40: note: candidate: ‘v8::Maybe<int> v8::Value::Int32Value(v8::Local<v8::Context>) const’
3066 | V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;
| ^~~~~~~~~~
embedded-v8/include/v8.h:3066:40: note: candidate expects 1 argument, 0 provided
In file included from src/cbang/js/v8/ValueRef.h:35,
from src/cbang/js/v8/JSImpl.h:35,
from src/cbang/js/v8/JSImpl.cpp:33:
src/cbang/js/v8/Value.h: In member function ‘uint32_t cb::gv8::Value::toUint32() const’:
src/cbang/js/v8/Value.h:106:77: error: no matching function for call to ‘v8::Value::Uint32Value()’
106 | uint32_t toUint32() const {assertDefined(); return value->Uint32Value();}
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/ValueRef.h:35,
from src/cbang/js/v8/JSImpl.h:35,
from src/cbang/js/v8/JSImpl.cpp:33:
embedded-v8/include/v8.h:3063:41: note: candidate: ‘v8::Maybe<unsigned int> v8::Value::Uint32Value(v8::Local<v8::Context>) const’
3063 | V8_WARN_UNUSED_RESULT Maybe<uint32_t> Uint32Value(
| ^~~~~~~~~~~
embedded-v8/include/v8.h:3063:41: note: candidate expects 1 argument, 0 provided
In file included from src/cbang/js/v8/ValueRef.h:35,
from src/cbang/js/v8/JSImpl.h:35,
from src/cbang/js/v8/JSImpl.cpp:33:
src/cbang/js/v8/Value.h: In member function ‘int cb::gv8::Value::utf8Length() const’:
src/cbang/js/v8/Value.h:117:75: error: no matching function for call to ‘v8::String::Utf8Length()’
117 | int utf8Length() const {return v8::String::Cast(*value)->Utf8Length();}
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/ValueRef.h:35,
from src/cbang/js/v8/JSImpl.h:35,
from src/cbang/js/v8/JSImpl.cpp:33:
embedded-v8/include/v8.h:3176:7: note: candidate: ‘int v8::String::Utf8Length(v8::Isolate*) const’
3176 | int Utf8Length(Isolate* isolate) const;
| ^~~~~~~~~~
embedded-v8/include/v8.h:3176:7: note: candidate expects 1 argument, 0 provided
embedded-v8/include/v8.h: In instantiation of ‘v8::Local<T>::Local(v8::Local<S>) [with S = v8::String; T = v8::Context]’:
src/cbang/js/v8/Context.cpp:59:69: required from here
embedded-v8/include/v8.h:211:42: error: static assertion failed: type check
211 | static_assert(std::is_base_of<T, S>::value, "type check");
| ^~~~~
In file included from src/cbang/js/v8/Value.cpp:33:
src/cbang/js/v8/Value.h: In member function ‘virtual bool cb::gv8::Value::toBoolean() const’:
src/cbang/js/v8/Value.h:87:75: error: no matching function for call to ‘v8::Value::BooleanValue()’
87 | bool toBoolean() const {assertDefined(); return value->BooleanValue();}
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Value.cpp:33:
embedded-v8/include/v8.h:3055:8: note: candidate: ‘bool v8::Value::BooleanValue(v8::Isolate*) const’
3055 | bool BooleanValue(Isolate* isolate) const;
| ^~~~~~~~~~~~
embedded-v8/include/v8.h:3055:8: note: candidate expects 1 argument, 0 provided
In file included from src/cbang/js/v8/Value.cpp:33:
src/cbang/js/v8/Value.h: In member function ‘virtual double cb::gv8::Value::toNumber() const’:
src/cbang/js/v8/Value.h:93:75: error: no matching function for call to ‘v8::Value::NumberValue()’
93 | double toNumber() const {assertDefined(); return value->NumberValue();}
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Value.cpp:33:
embedded-v8/include/v8.h:3058:39: note: candidate: ‘v8::Maybe<double> v8::Value::NumberValue(v8::Local<v8::Context>) const’
3058 | V8_WARN_UNUSED_RESULT Maybe<double> NumberValue(Local<Context> context) const;
| ^~~~~~~~~~~
embedded-v8/include/v8.h:3058:39: note: candidate expects 1 argument, 0 provided
In file included from src/cbang/js/v8/Value.cpp:33:
src/cbang/js/v8/Value.h: In member function ‘virtual int cb::gv8::Value::toInteger() const’:
src/cbang/js/v8/Value.h:94:74: error: no matching function for call to ‘v8::Value::IntegerValue()’
94 | int toInteger() const {assertDefined(); return value->IntegerValue();}
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Value.cpp:33:
embedded-v8/include/v8.h:3060:40: note: candidate: ‘v8::Maybe<long int> v8::Value::IntegerValue(v8::Local<v8::Context>) const’
3060 | V8_WARN_UNUSED_RESULT Maybe<int64_t> IntegerValue(
| ^~~~~~~~~~~~
embedded-v8/include/v8.h:3060:40: note: candidate expects 1 argument, 0 provided
In file included from src/cbang/js/v8/Value.cpp:33:
src/cbang/js/v8/Value.h: In member function ‘int32_t cb::gv8::Value::toInt32() const’:
src/cbang/js/v8/Value.h:100:74: error: no matching function for call to ‘v8::Value::Int32Value()’
100 | int32_t toInt32() const {assertDefined(); return value->Int32Value();}
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Value.cpp:33:
embedded-v8/include/v8.h:3066:40: note: candidate: ‘v8::Maybe<int> v8::Value::Int32Value(v8::Local<v8::Context>) const’
3066 | V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;
| ^~~~~~~~~~
embedded-v8/include/v8.h:3066:40: note: candidate expects 1 argument, 0 provided
In file included from src/cbang/js/v8/Value.cpp:33:
src/cbang/js/v8/Value.h: In member function ‘uint32_t cb::gv8::Value::toUint32() const’:
src/cbang/js/v8/Value.h:106:77: error: no matching function for call to ‘v8::Value::Uint32Value()’
106 | uint32_t toUint32() const {assertDefined(); return value->Uint32Value();}
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Value.cpp:33:
embedded-v8/include/v8.h:3063:41: note: candidate: ‘v8::Maybe<unsigned int> v8::Value::Uint32Value(v8::Local<v8::Context>) const’
3063 | V8_WARN_UNUSED_RESULT Maybe<uint32_t> Uint32Value(
| ^~~~~~~~~~~
embedded-v8/include/v8.h:3063:41: note: candidate expects 1 argument, 0 provided
In file included from src/cbang/js/v8/Value.cpp:33:
src/cbang/js/v8/Value.h: In member function ‘int cb::gv8::Value::utf8Length() const’:
src/cbang/js/v8/Value.h:117:75: error: no matching function for call to ‘v8::String::Utf8Length()’
117 | int utf8Length() const {return v8::String::Cast(*value)->Utf8Length();}
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Value.cpp:33:
embedded-v8/include/v8.h:3176:7: note: candidate: ‘int v8::String::Utf8Length(v8::Isolate*) const’
3176 | int Utf8Length(Isolate* isolate) const;
| ^~~~~~~~~~
embedded-v8/include/v8.h:3176:7: note: candidate expects 1 argument, 0 provided
src/cbang/js/v8/Value.cpp: In constructor ‘cb::gv8::Value::Value(const cb::js::Function&)’:
src/cbang/js/v8/Value.cpp:87:29: error: no matching function for call to ‘v8::FunctionTemplate::GetFunction()’
87 | value = tmpl->GetFunction();
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Value.cpp:33:
embedded-v8/include/v8.h:6679:46: note: candidate: ‘v8::MaybeLocal<v8::Function> v8::FunctionTemplate::GetFunction(v8::Local<v8::Context>)’
6679 | V8_WARN_UNUSED_RESULT MaybeLocal<Function> GetFunction(
| ^~~~~~~~~~~
embedded-v8/include/v8.h:6679:46: note: candidate expects 1 argument, 0 provided
src/cbang/js/v8/Value.cpp: In member function ‘virtual std::string cb::gv8::Value::toString() const’:
src/cbang/js/v8/Value.cpp:144:32: error: no matching function for call to ‘v8::String::Utf8Value::Utf8Value(v8::Handle<v8::Value>&)’
144 | v8::String::Utf8Value s(value);
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Value.cpp:33:
embedded-v8/include/v8.h:3486:5: note: candidate: ‘v8::String::Utf8Value::Utf8Value(v8::Isolate*, v8::Local<v8::Value>)’
3486 | Utf8Value(Isolate* isolate, Local<v8::Value> obj);
| ^~~~~~~~~
embedded-v8/include/v8.h:3486:5: note: candidate expects 2 arguments, 1 provided
src/cbang/js/v8/Value.cpp: In member function ‘bool cb::gv8::Value::has(uint32_t) const’:
src/cbang/js/v8/Value.cpp:150:26: error: no matching function for call to ‘v8::Value::ToObject()’
150 | return value->ToObject()->Has(getCtx(), index).ToChecked();
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Value.cpp:33:
embedded-v8/include/v8.h:3019:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
3019 | V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
| ^~~~~~~~
embedded-v8/include/v8.h:3019:44: note: candidate expects 1 argument, 0 provided
src/cbang/js/v8/Value.cpp: In member function ‘virtual bool cb::gv8::Value::has(const string&) const’:
src/cbang/js/v8/Value.cpp:155:26: error: no matching function for call to ‘v8::Value::ToObject()’
155 | return value->ToObject()->Has(getCtx(), createString(key)).ToChecked();
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Value.cpp:33:
embedded-v8/include/v8.h:3019:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
3019 | V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
| ^~~~~~~~
embedded-v8/include/v8.h:3019:44: note: candidate expects 1 argument, 0 provided
src/cbang/js/v8/Value.cpp: In member function ‘virtual cb::SmartPointer<cb::js::Value> cb::gv8::Value::get(int) const’:
src/cbang/js/v8/Value.cpp:160:36: error: no matching function for call to ‘v8::Value::ToObject()’
160 | return new Value(value->ToObject()->Get(getCtx(), index));
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Value.cpp:33:
embedded-v8/include/v8.h:3019:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
3019 | V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
| ^~~~~~~~
embedded-v8/include/v8.h:3019:44: note: candidate expects 1 argument, 0 provided
src/cbang/js/v8/Value.cpp: In member function ‘virtual cb::SmartPointer<cb::js::Value> cb::gv8::Value::get(const string&) const’:
src/cbang/js/v8/Value.cpp:165:36: error: no matching function for call to ‘v8::Value::ToObject()’
165 | return new Value(value->ToObject()->Get(getCtx(), createString(key)));
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Value.cpp:33:
embedded-v8/include/v8.h:3019:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
3019 | V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
| ^~~~~~~~
embedded-v8/include/v8.h:3019:44: note: candidate expects 1 argument, 0 provided
src/cbang/js/v8/Value.cpp: In member function ‘virtual cb::SmartPointer<cb::js::Value> cb::gv8::Value::getOwnPropertyNames() const’:
src/cbang/js/v8/Value.cpp:170:36: error: no matching function for call to ‘v8::Value::ToObject()’
170 | return new Value(value->ToObject()->GetOwnPropertyNames(getCtx()));
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Value.cpp:33:
embedded-v8/include/v8.h:3019:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
3019 | V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
| ^~~~~~~~
embedded-v8/include/v8.h:3019:44: note: candidate expects 1 argument, 0 provided
src/cbang/js/v8/Value.cpp: In member function ‘virtual void cb::gv8::Value::set(int, const cb::js::Value&)’:
src/cbang/js/v8/Value.cpp:175:47: error: no matching function for call to ‘v8::Value::ToObject()’
175 | v8::Maybe<bool> ret = this->value->ToObject()->
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Value.cpp:33:
embedded-v8/include/v8.h:3019:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
3019 | V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
| ^~~~~~~~
embedded-v8/include/v8.h:3019:44: note: candidate expects 1 argument, 0 provided
src/cbang/js/v8/Value.cpp: In member function ‘virtual void cb::gv8::Value::set(const string&, const cb::js::Value&)’:
src/cbang/js/v8/Value.cpp:183:47: error: no matching function for call to ‘v8::Value::ToObject()’
183 | v8::Maybe<bool> ret = this->value->ToObject()->
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Value.cpp:33:
embedded-v8/include/v8.h:3019:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
3019 | V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
| ^~~~~~~~
embedded-v8/include/v8.h:3019:44: note: candidate expects 1 argument, 0 provided
src/cbang/js/v8/Value.cpp: In member function ‘cb::gv8::Value cb::gv8::Value::call(cb::gv8::Value, const std::vector<cb::gv8::Value>&) const’:
src/cbang/js/v8/Value.cpp:208:38: error: no matching function for call to ‘v8::Value::ToObject()’
208 | Call(arg0.getV8Value()->ToObject(), args.size(), argv.get());
| ^
In file included from src/cbang/js/v8/V8.h:43,
from src/cbang/js/v8/Value.h:35,
from src/cbang/js/v8/Value.cpp:33:
embedded-v8/include/v8.h:3019:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
3019 | V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
| ^~~~~~~~
embedded-v8/include/v8.h:3019:44: note: candidate expects 1 argument, 0 provided
src/cbang/js/v8/JSImpl.cpp: In static member function ‘static void cb::gv8::JSImpl::init(int*, char**)’:
src/cbang/js/v8/JSImpl.cpp:74:44: error: ‘CreateDefaultPlatform’ is not a member of ‘v8::platform’; did you mean ‘NewDefaultPlatform’?
74 | v8::V8::InitializePlatform(v8::platform::CreateDefaultPlatform());
| ^~~~~~~~~~~~~~~~~~~~~
| NewDefaultPlatform
You need to pull the latest version of C! yours is outdated. V8_HOME
is accessed through this code: https://github.com/CauldronDevelopmentLLC/cbang/blob/master/config/__init__.py#L46
Also setting V8_HOME
is the same as setting V8_INCLUDE=$V8_HOME/include
and V8_LIBPATH=$V8_HOME/lib
. Those are the default paths.
I recommend uninstalling libv8-dev
if you're using embedded-v8
.
@jcoffland Thank you very much!
Using C! source from the master branch instead of the latest release resolved the compilation problem (time for a new release, maybe?), however SConsEnvironmentError: No module named config
problem still persists. Do you have any suggestions what my install may be lacking?
The problem was actually caused by C! source being removed from it original path. After restoring the source, the new error now looks like this (using SCons 4.2.0):
scons: Reading SConscript files ...
AttributeError: module 'SCons.Warnings' has no attribute 'Warning':
File "/run/build/camotics/SConstruct", line 37:
env.Tool('qt5', toolpath = ['./config'])
File "/app/lib/python3.8/site-packages/SCons-4.2.0-py3.8.egg/SCons/Environment.py", line 1878:
tool = SCons.Tool.Tool(tool, toolpath, **kwargs)
File "/app/lib/python3.8/site-packages/SCons-4.2.0-py3.8.egg/SCons/Tool/__init__.py", line 120:
module = self._tool_module()
File "/app/lib/python3.8/site-packages/SCons-4.2.0-py3.8.egg/SCons/Tool/__init__.py", line 209:
module = spec.loader.load_module(spec.name)
File "<frozen importlib._bootstrap_external>", line 462:
File "<frozen importlib._bootstrap_external>", line 962:
File "<frozen importlib._bootstrap_external>", line 787:
File "<frozen importlib._bootstrap>", line 265:
File "<frozen importlib._bootstrap>", line 702:
File "<frozen importlib._bootstrap>", line 671:
File "<frozen importlib._bootstrap_external>", line 783:
File "<frozen importlib._bootstrap>", line 219:
File "/run/build/camotics/config/qt5/__init__.py", line 45:
class ToolQt5Warning(SCons.Warnings.Warning): pass
Right, when ever you see SConsEnvironmentError: No module named config
it most likely means CBANG_HOME
is not set correctly.
The SCons.Warnings.Warning
issue has already been fixed in the latest CAMotics. It is caused by a change in SCons.
Thank you very much for your assistance! After downgrading SCons I still faced the issues described in #270, but using the master branch everything went smoothly. The build succeeded!
Do you remember what version of SCons did you use in order to build CAMotics 1.2.0?
I have published my Flatpak manifest here (related to #273). It's not finished yet, there are still a lot of improvements to be done. I will try to submit it to the Flathub repository, but probably only after C! 1.6.1 or 1.7.0 release that wouldn't require patching to be used with embedded-v8.
I'm using scons v4.0.1. I tagged CAMotics v1.2.2-rc1
and C! 1.6.1
.
I'm trying to build CAMotics 1.2.0 with C! 1.6.0 and embedded-v8.
I've run into multiple problems during the compilation:
I'm using KDE SDK 5.15, additionally installing SCons 3.1.1 and Python Six 1.11.0.