You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
For the libssh2 part an upgrade to version 1.8.0 of the library should fix it. That version is listed on their site and is tagged in github, but it doesn't have a github release for some reason.
Many of us have upgraded to node10 and now this is a huge blocker. Please increase the priority of fixing this build failure.
Reacted by Jacob Walser, Marie, Chris Wilson, Sajad Ghawami, Vitalii Vorobioff, Silas Rech, Daniel Schmidt, Riccardo Messineo, Dominik Widomski, ikeyan and 22 more
libssh2 should build fine with nodegit's bundled OpenSSL 1.0.2.
However with Node 10 and OpenSSL 1.1.0, the build system fails to pick up the bundled OpenSSL 1.0.2 headers when building libssh2, and ends up using node-gyp's OpenSSL 1.1.0 headers in ~/.node-gyp/10.1.0/include/node/openssl. This is because node-gyp seems to prepend-I $(HOME)/.node-gyp/10.1.0/include/node to the CFLAGS when building, ignoring the -I ../vendor/openssl/openssl/include added by the nodegit build system.
If we could somehow instruct node-gyp to actually prepend -I ../vendor/openssl/openssl/include to the include dirs, before -I $(HOME)/.node-gyp/…, then libssh2 would pick up the compatible 1.0.2 headers. However I tried with include_dirs+ as suggested in the node-gyp reference, without luck. :(
@laomaiweng that definitely is the fix for this particular issue. I tried using include_dirs! which looks like it should override the includes completely, but does not. I moved this block to the root of our GYP file and it still does not take. I have moved past this issue, by forking node-gyp and conditionally setting include_dirs behind a variable.
The next issue was with ToInt32 not being in v8 anymore. I've moved past that issue using Nan and now have a compiled version against Node 10. Here's what happens if I try and require it:
λ valgrind node -e 'require(".")'
==28122== Memcheck, a memory error detector
==28122== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.==28122== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info==28122== Command: node -e require(".")==28122== ==28122== Warning: set address range perms: large range [0x4cb4ce34000, 0x4cb6ce34000) (noaccess)==28122== Invalid write of size 4==28122== at 0x5D63810: SSL_CTX_set_verify (in /usr/lib/libssl.so.1.1)==28122== by 0xD4258E3: git_openssl_stream_global_init (in /home/tbranyen/git/nodegit/build/Release/nodegit.node)==28122== by 0xD3FFDAF: init_once (in /home/tbranyen/git/nodegit/build/Release/nodegit.node)==28122== by 0x7508DEE: __pthread_once_slow (in /usr/lib/libpthread-2.26.so)==28122== by 0xD3FFE92: git_libgit2_init (in /home/tbranyen/git/nodegit/build/Release/nodegit.node)==28122== by 0xD1FC079: init (in /home/tbranyen/git/nodegit/build/Release/nodegit.node)==28122== by 0x568ABC: ??? (in /usr/bin/node)==28122== by 0x72A4AF: v8::internal::FunctionCallbackArguments::Call(v8::internal::CallHandlerInfo*) (in /usr/bin/node)==28122== by 0x78280F: ??? (in /usr/bin/node)==28122== by 0x782BE6: ??? (in /usr/bin/node)==28122== by 0x4CB4CE8427C: ???==28122== by 0x4CB4CE944F6: ???==28122== Address 0x140 is not stack'd, malloc'd or (recently) free'd
==28122==
==28122==
==28122== Process terminating with default action of signal 11 (SIGSEGV): dumping core
==28122== Access not within mapped region at address 0x140
==28122== at 0x5D63810: SSL_CTX_set_verify (in /usr/lib/libssl.so.1.1)
==28122== by 0xD4258E3: git_openssl_stream_global_init (in /home/tbranyen/git/nodegit/build/Release/nodegit.node)
==28122== by 0xD3FFDAF: init_once (in /home/tbranyen/git/nodegit/build/Release/nodegit.node)
==28122== by 0x7508DEE: __pthread_once_slow (in /usr/lib/libpthread-2.26.so)
==28122== by 0xD3FFE92: git_libgit2_init (in /home/tbranyen/git/nodegit/build/Release/nodegit.node)
==28122== by 0xD1FC079: init (in /home/tbranyen/git/nodegit/build/Release/nodegit.node)
==28122== by 0x568ABC: ??? (in /usr/bin/node)
==28122== by 0x72A4AF: v8::internal::FunctionCallbackArguments::Call(v8::internal::CallHandlerInfo*) (in /usr/bin/node)
==28122== by 0x78280F: ??? (in /usr/bin/node)
==28122== by 0x782BE6: ??? (in /usr/bin/node)
==28122== by 0x4CB4CE8427C: ???
==28122== by 0x4CB4CE944F6: ???
Judging by /usr/lib/libssl.so being listed in that trace, I'm guessing our statically linked vendor deps are not being respected and this may be causing the issue.
Okay so here's what I see. This does in fact get the build to work, excellent and minimal set of steps to do it too! But, I'm seeing a number of test failures. From what I can tell they are all related to promisify-node with the exception: Error: Callback is required and must be a Function.. So we'll need to resolve those errors first.
Then there's the whole appveyor build passing we'll need to get through, and hopefully after all that we'll have a stable Node 10 version.
@Croydon, Wow you are so fast guys, I cloned https://github.com/Croydon/nodegit.git and tested it on MacOS (Sierra 10.12.6) and CentOS (7) both is ok and worked. If you need some help, i`m here.
Activity
sadasant commentedon May 2, 2018
So far, the issues seem to be:
sadasant commentedon May 2, 2018
The relevant issues are:
DanielRuf commentedon May 7, 2018
Same here.
RobinGeuze commentedon May 9, 2018
For the libssh2 part an upgrade to version 1.8.0 of the library should fix it. That version is listed on their site and is tagged in github, but it doesn't have a github release for some reason.
ci: for the time being, latest node build are deactivated
ci: for the time being, latest node build are deactivated
getify commentedon May 19, 2018
Many of us have upgraded to node10 and now this is a huge blocker. Please increase the priority of fixing this build failure.
laomaiweng commentedon May 31, 2018
libssh2 should build fine with nodegit's bundled OpenSSL 1.0.2.
However with Node 10 and OpenSSL 1.1.0, the build system fails to pick up the bundled OpenSSL 1.0.2 headers when building libssh2, and ends up using node-gyp's OpenSSL 1.1.0 headers in ~/.node-gyp/10.1.0/include/node/openssl. This is because node-gyp seems to prepend
-I $(HOME)/.node-gyp/10.1.0/include/nodeto the CFLAGS when building, ignoring the-I ../vendor/openssl/openssl/includeadded by the nodegit build system.If we could somehow instruct node-gyp to actually prepend
-I ../vendor/openssl/openssl/includeto the include dirs, before-I $(HOME)/.node-gyp/…, then libssh2 would pick up the compatible 1.0.2 headers. However I tried withinclude_dirs+as suggested in the node-gyp reference, without luck. :(tbranyen commentedon Jun 5, 2018
I've resolved the promisify-node blocker, and will investigate the compiler issue later today.
tbranyen commentedon Jun 5, 2018
@laomaiweng that definitely is the fix for this particular issue. I tried using
include_dirs!which looks like it should override the includes completely, but does not. I moved this block to the root of our GYP file and it still does not take. I have moved past this issue, by forking node-gyp and conditionally settinginclude_dirsbehind a variable.The next issue was with
ToInt32not being in v8 anymore. I've moved past that issue using Nan and now have a compiled version against Node 10. Here's what happens if I try and require it:So now the fun times of figuring out why....
tbranyen commentedon Jun 5, 2018
tbranyen commentedon Jun 5, 2018
Judging by
/usr/lib/libssl.sobeing listed in that trace, I'm guessing our statically linked vendor deps are not being respected and this may be causing the issue.tbranyen commentedon Jun 5, 2018
Tonight I'm going to try and use a GYP file for libssh2 like (https://github.com/peters/curl-for-windows/blob/master/libssh2.gyp) and mark it as a dependency to the nodegit target.
implausible commentedon Jun 6, 2018
@tbranyen Take a look at what I did here, this might speed up the process https://github.com/implausible/nodegit/blob/remove/openssl/vendor/libgit2.gyp#L483
lenovouser commentedon Jun 21, 2018
Any progress?
11 remaining items
tbranyen commentedon Sep 19, 2018
Testing this out, and if true, I'll ensure it gets merged today.
tbranyen commentedon Sep 19, 2018
Okay so here's what I see. This does in fact get the build to work, excellent and minimal set of steps to do it too! But, I'm seeing a number of test failures. From what I can tell they are all related to promisify-node with the exception:
Error: Callback is required and must be a Function.. So we'll need to resolve those errors first.Then there's the whole appveyor build passing we'll need to get through, and hopefully after all that we'll have a stable Node 10 version.
Patch LockMasterSetStatus
tbranyen commentedon Sep 19, 2018
@Croydon do you wanna open the PR? I could help you with it? I see you're already working on something.
Edit: Nevermind found it and it's referenced above: #1519
Patch LockMasterSetStatus
Patch LockMasterSetStatus
Croydon commentedon Sep 20, 2018
@myshark On what platform(s) did you try it? AppVeyor (Windows) keeps failing (see my pull request)
Patch LockMasterSetStatus
mehdi-yeganeh commentedon Sep 20, 2018
@Croydon, Wow you are so fast guys, I cloned https://github.com/Croydon/nodegit.git and tested it on MacOS (Sierra 10.12.6) and CentOS (7) both is ok and worked. If you need some help, i`m here.
Patch LockMasterSetStatus
Patch LockMasterSetStatus
Patch LockMasterSetStatus
ci: for the time being, latest node build are deactivated
smithmr commentedon Jun 17, 2019
I had this issue for a couple of days and fixed it by running this
npm config set python {path to python2.7}. I was running with node 10.