Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

'npm install sqlite3' fails on Debian Squeeze #30

Closed
qbit opened this issue Jul 12, 2011 · 7 comments
Closed

'npm install sqlite3' fails on Debian Squeeze #30

qbit opened this issue Jul 12, 2011 · 7 comments

Comments

@qbit
Copy link

qbit commented Jul 12, 2011

[1/4] cxx: src/sqlite3.cc -> build/default/src/sqlite3_1.o
[2/4] cxx: src/database.cc -> build/default/src/database_1.o
[3/4] cxx: src/statement.cc -> build/default/src/statement_1.o
In file included from ../src/database.h:12,
from ../src/sqlite3.cc:8:
../src/async.h: In destructor ‘Async<Item, Parent>::~Async()’:
../src/async.h:56: error: cannot convert ‘ev_async_’ to ‘ev_loop_’ for argument ‘1’ to ‘void ev_invoke(ev_loop_, void_, int)’
In file included from ../src/database.h:12,
from ../src/database.cc:7:
../src/async.h: In destructor ‘Async<Item, Parent>::~Async()’:
../src/async.h:56: error: cannot convert ‘ev_async_’ to ‘ev_loop_’ for argument ‘1’ to ‘void ev_invoke(ev_loop_, void_, int)’
../src/async.h: In destructor ‘Async<Item, Parent>::~Async() [with Item = std::basic_string<char, std::char_traits, std::allocator >, Parent = node_sqlite3::Database]’:
../src/database.h:117: instantiated from here
../src/async.h:56: error: cannot convert ‘ev_async_’ to ‘ev_loop_’ for argument ‘1’ to ‘void ev_invoke(ev_loop_, void_, int)’
../src/async.h: In destructor ‘Async<Item, Parent>::~Async() [with Item = std::basic_string<char, std::char_traits, std::allocator >, Parent = node_sqlite3::Database]’:
../src/database.h:117: instantiated from here
../src/async.h:56: error: cannot convert ‘ev_async_’ to ‘ev_loop_’ for argument ‘1’ to ‘void ev_invoke(ev_loop_, void_, int)’
In file included from ../src/database.h:12,
from ../src/statement.cc:9:
../src/async.h: In destructor ‘Async<Item, Parent>::~Async()’:
../src/async.h:56: error: cannot convert ‘ev_async_’ to ‘ev_loop_’ for argument ‘1’ to ‘void ev_invoke(ev_loop_, void_, int)’
../src/async.h: In destructor ‘Async<Item, Parent>::~Async() [with Item = node_sqlite3::Database::ProfileInfo, Parent = node_sqlite3::Database]’:
../src/database.cc:389: instantiated from here
../src/async.h:56: error: cannot convert ‘ev_async_’ to ‘ev_loop_’ for argument ‘1’ to ‘void ev_invoke(ev_loop_, void_, int)’
../src/async.h: In destructor ‘Async<Item, Parent>::~Async() [with Item = node_sqlite3::Database::UpdateInfo, Parent = node_sqlite3::Database]’:
../src/database.cc:429: instantiated from here
../src/async.h:56: error: cannot convert ‘ev_async_’ to ‘ev_loop_’ for argument ‘1’ to ‘void ev_invoke(ev_loop_, void_, int)’
../src/async.h: In destructor ‘Async<Item, Parent>::~Async() [with Item = std::basic_string<char, std::char_traits, std::allocator >, Parent = node_sqlite3::Database]’:
../src/database.h:117: instantiated from here
../src/async.h:56: error: cannot convert ‘ev_async_’ to ‘ev_loop_’ for argument ‘1’ to ‘void ev_invoke(ev_loop_, void_, int)’
Waf: Leaving directory `/home/qbit/golphie/node_modules/sqlite3/build'
Build failed:
-> task failed (err #1):
{task: cxx sqlite3.cc -> sqlite3_1.o}
-> task failed (err #1):
{task: cxx database.cc -> database_1.o}
-> task failed (err #1):
{task: cxx statement.cc -> statement_1.o}

npm log here: https://gist.github.com/1078137

EDIT: Added error messages.

@josch
Copy link

josch commented Jul 22, 2011

it also doesnt work with any other libev since lenny (libev 3.43) until sid (libev 4.04) with the same error.

all define ev_invoke as void ev_invoke(ev_loop*, void*, int) in /usr/include/ev.h

I'm very interested in finding out what libev version is required so that ev_invoke accepts ev_async* as the first argument?

@josch
Copy link

josch commented Jul 22, 2011

solved it.

the issue is, that debian distributes libev with EV_MULTIPLICITY enabled. this means that the ev_invoke function takes three parameters instead of the two provided in src/async.h where the first parameter is an ev_loop.

the author of node-sqlite seems to use a libev with EV_MULTIPLICITY disabled.

to make it work with both EV_MULTIPLICITY settings, one has to use the EV_DEFAULT_UC_ macro like this:

--- a/src/async.h
+++ b/src/async.h
@@ -53,7 +53,7 @@ public:
     }

     inline ~Async() {
-        ev_invoke(&watcher, ev_async_pending(&watcher));
+        ev_invoke(EV_DEFAULT_UC_ &watcher, ev_async_pending(&watcher));
         pthread_mutex_destroy(&mutex);
         ev_async_stop(EV_DEFAULT_UC_ &watcher);
     }

@qbit
Copy link
Author

qbit commented Jul 26, 2011

Yep, looks like that fixes it!

@qbit qbit closed this as completed Jul 26, 2011
@josch
Copy link

josch commented Jul 26, 2011

dude - why would you close a bugreport if it is not yet fixed???

@qbit
Copy link
Author

qbit commented Jul 26, 2011

lol, totally hit the wrong button :D

@qbit qbit reopened this Jul 26, 2011
@josch
Copy link

josch commented Jul 26, 2011

cool! now lets just hope that Konstantin is not too annoyed by all this spam in his inbox ^^

@kkaefer
Copy link
Contributor

kkaefer commented Jul 26, 2011

Sorry, this went under on my notifications page :/ I've been able to compile node-sqlite3 on lenny just fine, but since that code is what is implied anyway, I just committed this change in 6127c75 and published v2.0.14.

@kkaefer kkaefer closed this as completed Jul 26, 2011
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants