Opened 13 years ago

Closed 12 years ago

#28562 closed defect (fixed)

nodejs @0.4.1_0: Undefined symbols: "_ev_loop"

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

Description

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 Carsten Schmidt) 13 years ago.
build log

Download all attachments as: .zip

Change History (7)

Changed 13 years ago by ryandesign (Ryan Carsten Schmidt)

Attachment: main.log.bz2 added

build log

comment:1 Changed 13 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 13 years ago by ryandesign (Ryan Carsten 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 13 years ago by ryandesign (Ryan Carsten Schmidt)

Cc: vijay.santhanam@… added

Has duplicate #29070.

comment:4 Changed 13 years ago by ryandesign (Ryan Carsten 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 13 years ago by ryandesign (Ryan Carsten Schmidt)

Owner: changed from ceager@… to ciserlohn@…

comment:6 Changed 12 years ago by ci42

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