-
Notifications
You must be signed in to change notification settings - Fork 7.3k
Compilation of v0.11.8 fails on Solaris 10 and some Illumos distros due to missing libproc.h #6439
Comments
/cc @tjfontaine and @davepacheco |
On S10, I presume it would be impossible to build an MDB module that uses libproc.h at all; unless you copied the header from ON and the interfaces were still compatible. But the same difficulty arises on OpenIndiana, OmniOS, et al - libproc.h isn't shipped in any package, so you have to go to the ON source. (But at least on an Illumos distro, you can use the binary builds from nodejs.org, so building it is less of an issue.) |
Can we get an update on this issue please? |
I don't have much of an update, but it occurs to me that the dmod also makes use of illumos-specific MDB module API additions. So it won't build on S10 even with the libproc.h issue resolved. The best solution is probably to patch the "configure" script to set node_use_mdb to false on S10. |
We need a way to disable node_use_mdb on non Illumos derivated, because of missing libproc.h. Example: ./configure --dest-cpu=x64 --dest-os=solaris --prefix=/opt/node --without-mdb creating ./icu_config.gypi { 'target_defaults': { 'cflags': [], 'default_configuration': 'Release', 'defines': [], 'include_dirs': [], 'libraries': []}, 'variables': { 'clang': 0, 'gcc_version': 48, 'host_arch': 'ia32', 'icu_small': 'false', 'node_install_npm': 'true', 'node_prefix': '/opt/node', 'node_shared_cares': 'false', 'node_shared_http_parser': 'false', 'node_shared_libuv': 'false', 'node_shared_openssl': 'false', 'node_shared_v8': 'false', 'node_shared_zlib': 'false', 'node_tag': '', 'node_use_dtrace': 'true', 'node_use_etw': 'false', 'node_use_mdb': 'false', 'node_use_openssl': 'true', 'node_use_perfctr': 'false', 'openssl_no_asm': 0, 'python': '/usr/bin/python', 'target_arch': 'x64', 'uv_library': 'static_library', 'uv_parent_path': '/deps/uv/', 'uv_use_dtrace': 'true', 'v8_enable_gdbjit': 0, 'v8_enable_i18n_support': 0, 'v8_no_strict_aliasing': 1, 'v8_optimized_debug': 0, 'v8_random_seed': 0, 'v8_use_snapshot': 'true', 'want_separate_host_toolset': 1}} creating ./config.gypi creating ./config.mk
configure: add --without-mdb flag (fix issue nodejs#6439)
We need a way to disable node_use_mdb on non Illumos derivated, because of missing libproc.h. Example: ./configure --dest-cpu=x64 --dest-os=solaris --prefix=/opt/node --without-mdb creating ./icu_config.gypi { 'target_defaults': { 'cflags': [], 'default_configuration': 'Release', 'defines': [], 'include_dirs': [], 'libraries': []}, 'variables': { 'clang': 0, 'gcc_version': 48, 'host_arch': 'ia32', 'icu_small': 'false', 'node_install_npm': 'true', 'node_prefix': '/opt/node', 'node_shared_cares': 'false', 'node_shared_http_parser': 'false', 'node_shared_libuv': 'false', 'node_shared_openssl': 'false', 'node_shared_v8': 'false', 'node_shared_zlib': 'false', 'node_tag': '', 'node_use_dtrace': 'true', 'node_use_etw': 'false', 'node_use_mdb': 'false', 'node_use_openssl': 'true', 'node_use_perfctr': 'false', 'openssl_no_asm': 0, 'python': '/usr/bin/python', 'target_arch': 'x64', 'uv_library': 'static_library', 'uv_parent_path': '/deps/uv/', 'uv_use_dtrace': 'true', 'v8_enable_gdbjit': 0, 'v8_enable_i18n_support': 0, 'v8_no_strict_aliasing': 1, 'v8_optimized_debug': 0, 'v8_random_seed': 0, 'v8_use_snapshot': 'true', 'want_separate_host_toolset': 1}} creating ./config.gypi creating ./config.mk
@ptribble @davepacheco ... any updates on this one? |
I'm manually patching configure to disable mdb on Solaris 10, which seems to work. On other illumos variants I'm temporarily dropping in a copy of libproc.h (and currently adding an unversioned symlink for libavl.so.1, although that should shortly be unnecessary). Ideally the fix would be on the illumos side, to make libproc a public and committed interface. |
Which is something I'm slowly working on from the illumos side. |
Would it be possible to merge the above commits to a release version? |
@joyent/node-tsc @orangemocha @misterdjules ... any thoughts? should we land this here or defer to the converged repo? |
I have proposed this pull request #9349 , it allow configure --without-mdb. |
@misterdjules @orangemocha ... what do you think? |
@orangemocha Let's continue the discussion in #9349. Thank you 👍 |
Added the P-1 label because it prevents Solaris and derivatives' users from building Node.js on their platform. |
libproc is used to be a private interface. |
Fixes build issues on Solaris based platforms where libproc.h is not available or not compatible with the one shipped by SmartOS. Fixes nodejs#6439.
Add a configuration flag that prevents mdb_v8.so from being built. The default behavior is still the same and mdb_v8.so is built by default on Solaris based platforms such as SmartOS. Using --without-mdb fixes build issues on Solaris based platforms where libproc.h is not available or not compatible with the one shipped by SmartOS. Fixes nodejs#6439.
Add a configuration flag that prevents mdb_v8.so from being built. The default behavior is still the same and mdb_v8.so is built by default on Solaris based platforms such as SmartOS. Using --without-mdb fixes build issues on Solaris based platforms where libproc.h is not available or not compatible with the one shipped by SmartOS. Fixes #6439. Reviewed-By: Julien Gilli <julien.gilli@joyent.com> PR-URL: #25707
Fixed with 8b81f98, thank you @cgalibern 👍 |
We need a way to disable node_use_mdb on non Illumos derivated, because of missing libproc.h. Example: ./configure --dest-cpu=x64 --dest-os=solaris --prefix=/opt/node --without-mdb creating ./icu_config.gypi { 'target_defaults': { 'cflags': [], 'default_configuration': 'Release', 'defines': [], 'include_dirs': [], 'libraries': []}, 'variables': { 'clang': 0, 'gcc_version': 48, 'host_arch': 'ia32', 'icu_small': 'false', 'node_install_npm': 'true', 'node_prefix': '/opt/node', 'node_shared_cares': 'false', 'node_shared_http_parser': 'false', 'node_shared_libuv': 'false', 'node_shared_openssl': 'false', 'node_shared_v8': 'false', 'node_shared_zlib': 'false', 'node_tag': '', 'node_use_dtrace': 'true', 'node_use_etw': 'false', 'node_use_mdb': 'false', 'node_use_openssl': 'true', 'node_use_perfctr': 'false', 'openssl_no_asm': 0, 'python': '/usr/bin/python', 'target_arch': 'x64', 'uv_library': 'static_library', 'uv_parent_path': '/deps/uv/', 'uv_use_dtrace': 'true', 'v8_enable_gdbjit': 0, 'v8_enable_i18n_support': 0, 'v8_no_strict_aliasing': 1, 'v8_optimized_debug': 0, 'v8_random_seed': 0, 'v8_use_snapshot': 'true', 'want_separate_host_toolset': 1}} creating ./config.gypi creating ./config.mk
Add a configuration flag that prevents mdb_v8.so from being built. The default behavior is still the same and mdb_v8.so is built by default on Solaris based platforms such as SmartOS. Using --without-mdb fixes build issues on Solaris based platforms where libproc.h is not available or not compatible with the one shipped by SmartOS. Fixes nodejs#6439. Reviewed-By: Julien Gilli <julien.gilli@joyent.com> PR-URL: nodejs#25707
Building recent v0.11.X source on Solaris 10 fails with:
../deps/mdb_v8/mdb_v8.c:53:21: fatal error: libproc.h: No such file or directory
compilation terminated.
That's expected. The interfaces in libproc.h are private and the header file is explicitly excluded from packaging, so this will be true of Solaris and most Illumos-based distros. (I suspect you don't realize this for SmartOS, because it ends up in the proto area.)
I can work around this by explicitly turning off node_use_mdb in the configure script, but this ought to be handled properly.
The text was updated successfully, but these errors were encountered: