Closed bmgandre closed 7 years ago
If I install libuv, I get even more errors:
Environment:
Linux 4.4.38 x86_64
Libraries:
boost-1.59.0
gperftools-2.5
protobuf3-3.1.0
snappy-1.1.3
libuv-1.9.1
Build settings:
CFLAGS="-O2 -fPIC" \
CXXFLAGS="-O2 -fPIC" \
./configure \
--prefix=/usr \
--libdir=/usr/lib64 \
--build=x86_64-slackware-linux
Error:
make[3]: Entering directory '/tmp/SBo/upscaledb-2.2.0/src/5server'
CXX upsserver.lo
In file included from /usr/include/boost/assert.hpp:54:0,
from /usr/include/boost/atomic/detail/atomic_template.hpp:21,
from /usr/include/boost/atomic/atomic.hpp:22,
from /usr/include/boost/atomic.hpp:12,
from ../1base/spinlock.h:33,
from ../2page/page.h:30,
from ../3btree/btree_node.h:24,
from ../3btree/btree_index.h:32,
from ../4db/db_local.h:36,
from upsserver.cc:36:
../1base/spinlock.h: In member function 'void upscaledb::Spinlock::unlock()':
../1base/spinlock.h:108:14: error: 'm_owner' was not declared in this scope
assert(m_owner == boost::this_thread::get_id());
^
In file included from /usr/include/google/protobuf/stubs/port.h:62:0,
from /usr/include/google/protobuf/stubs/common.h:40,
from ../2protobuf/messages.pb.h:9,
from ../2protobuf/protocol.h:34,
from upsserver.cc:33:
../3btree/btree_node.h: In member function 'bool upscaledb::PBtreeNode::is_leaf() const':
../3btree/btree_node.h:133:14: error: invalid types 'const uint32_t {aka const unsigned int}[int]' for array subscript
return isset(flags_, kLeafNode);
^
upsserver.cc: In function 'void upscaledb::on_new_connection(uv_stream_t*, int)':
upsserver.cc:2046:71: error: invalid conversion from 'uv_buf_t (*)(uv_handle_t*, size_t) {aka uv_buf_t (*)(uv_handle_s*, long unsigned int)}' to 'uv_alloc_cb {aka void (*)(uv_handle_s*, long unsigned int, uv_buf_t*)}' [-fpermissive]
uv_read_start((uv_stream_t *)client, on_alloc_buffer, on_read_data);
^
In file included from upsserver.cc:26:0:
/usr/include/uv.h:466:15: note: initializing argument 2 of 'int uv_read_start(uv_stream_t*, uv_alloc_cb, uv_read_cb)'
UV_EXTERN int uv_read_start(uv_stream_t*,
^
upsserver.cc:2046:71: error: invalid conversion from 'void (*)(uv_stream_t*, ssize_t, uv_buf_t) {aka void (*)(uv_stream_s*, long int, uv_buf_t)}' to 'uv_read_cb {aka void (*)(uv_stream_s*, long int, const uv_buf_t*)}' [-fpermissive]
uv_read_start((uv_stream_t *)client, on_alloc_buffer, on_read_data);
^
In file included from upsserver.cc:26:0:
/usr/include/uv.h:466:15: note: initializing argument 3 of 'int uv_read_start(uv_stream_t*, uv_alloc_cb, uv_read_cb)'
UV_EXTERN int uv_read_start(uv_stream_t*,
^
upsserver.cc: In function 'ups_status_t ups_srv_init(ups_srv_config_t*, ups_srv_t**)':
upsserver.cc:2093:50: error: too few arguments to function 'int uv_ip4_addr(const char*, int, sockaddr_in*)'
bind_addr = uv_ip4_addr("0.0.0.0", config->port);
^
In file included from upsserver.cc:26:0:
/usr/include/uv.h:1371:15: note: declared here
UV_EXTERN int uv_ip4_addr(const char* ip, int port, struct sockaddr_in* addr);
^
upsserver.cc:2094:38: error: cannot convert 'sockaddr_in' to 'const sockaddr*' for argument '2' to 'int uv_tcp_bind(uv_tcp_t*, const sockaddr*, unsigned int)'
uv_tcp_bind(&srv->server, bind_addr);
^
upsserver.cc:2110:52: error: invalid conversion from 'void (*)(uv_async_t*, int) {aka void (*)(uv_async_s*, int)}' to 'uv_async_cb {aka void (*)(uv_async_s*)}' [-fpermissive]
uv_async_init(srv->loop, &srv->async, on_async_cb);
^
In file included from upsserver.cc:26:0:
/usr/include/uv.h:765:15: note: initializing argument 3 of 'int uv_async_init(uv_loop_t*, uv_async_t*, uv_async_cb)'
UV_EXTERN int uv_async_init(uv_loop_t*,
^
Makefile:465: recipe for target 'upsserver.lo' failed
make[3]: *** [upsserver.lo] Error 1
The first issue is caused by a bug in the configure script. If you overwrite CFLAGS then the configure script does not set -DNDEBUG. Here is a workaround:
CFLAGS="-O2 -fPIC -DNDEBUG" \
CXXFLAGS="-O2 -fPIC -DNDEBUG" \
./configure ...
The libuv issue is caused by API changes in libuv. I use their branch v0.11.22 ("git checkout v0.11.22").
Both issues are fixed in 2.2.1 (I removed the libuv dependency and replaced it with boost::asio). 2.2.1 will be released in 1-2 weeks.
Ok. It worked for now.
I'm trying to build the latest upscaledb release but the build stops with errors.
Environment:
Linux 4.4.38 x86_64
Libraries:
Build settings:
Error: