Opened 10 years ago

Closed 9 years ago

#28562 closed defect (fixed)

nodejs @0.4.1_0: Undefined symbols: "_ev_loop"

Reported by: ryandesign (Ryan Schmidt) Owned by: ci42
Priority: Normal Milestone:
Component: ports Version: 1.9.2
Keywords: Cc: vijay.santhanam@…
Port: nodejs


nodejs fails to build in my normal MacPorts prefix:

:info:build Undefined symbols:
:info:build   "_ev_loop", referenced from:
:info:build       node::Start(int, char**)in node_4.o
:info:build      (maybe you meant: _ev_loop_destroy, _ev_loop_fork )
:info:build ld: symbol(s) not found
:info:build collect2: ld returned 1 exit status

It does build in a clean MacPorts prefix containing nothing but its dependencies, so it must be inadvertently using software from another port I already have installed.

Attachments (1)

main.log.bz2 (7.8 KB) - added by ryandesign (Ryan Schmidt) 10 years ago.
build log

Download all attachments as: .zip

Change History (7)

Changed 10 years ago by ryandesign (Ryan Schmidt)

Attachment: main.log.bz2 added

build log

comment:1 Changed 10 years ago by jonasnockert@…

It seems to be libev that's preventing node.js from building correctly. After uninstalling libev (dependency of lighttpd, in my case,) node.jsbuilt and installed fine on my system.

comment:2 Changed 10 years ago by ryandesign (Ryan Schmidt)

Thanks, you're right. I had tried deactivating libevent and it didn't make any difference, forgetting that there was a separate thing called libev.

It looks like nodejs ships with an internal copy of libev, which it wants to use, but because of incorrectly specified header inclusions it uses headers already installed by other MacPorts ports; see also #28066 and #28561. The version of libev provided by MacPorts is presumably different from the one required by libev.

I've requested the libev port be updated (see #28680). Maybe we can then make nodejs use the libev in the libev port instead of its own copy, or failing that, we can expand the fix from #28561 to also cover ev.h and, preventatively, other headers.

comment:3 Changed 10 years ago by ryandesign (Ryan Schmidt)

Cc: vijay.santhanam@… added

Has duplicate #29070.

comment:4 Changed 10 years ago by ryandesign (Ryan Schmidt)

Added code to nodejs in r78170 to prevent installation if libev is active, with instructions for the user how to work around it, until we can figure out how to properly patch nodejs so it doesn't have this problem.

comment:5 Changed 9 years ago by ryandesign (Ryan Schmidt)

Owner: changed from ceager@… to ciserlohn@…

comment:6 Changed 9 years ago by ci42

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.