deps: make node-gyp work again on windows
* Fetch from the correct url. * Link compiled addons with iojs.lib instead of node.lib. * Disable checksum checks for iojs.lib until our website supports them. PR: https://github.com/iojs/io.js/pull/422 Reviewed-by: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-by: Rod Vagg <rod@vagg.org>
This commit is contained in:
parent
1bdd74d20a
commit
bce7a2608e
2
deps/npm/node_modules/node-gyp/addon.gypi
generated
vendored
2
deps/npm/node_modules/node-gyp/addon.gypi
generated
vendored
@ -42,7 +42,7 @@
|
|||||||
'-luuid.lib',
|
'-luuid.lib',
|
||||||
'-lodbc32.lib',
|
'-lodbc32.lib',
|
||||||
'-lDelayImp.lib',
|
'-lDelayImp.lib',
|
||||||
'-l"<(node_root_dir)/$(ConfigurationName)/node.lib"'
|
'-l"<(node_root_dir)/$(ConfigurationName)/iojs.lib"'
|
||||||
],
|
],
|
||||||
# warning C4251: 'node::ObjectWrap::handle_' : class 'v8::Persistent<T>'
|
# warning C4251: 'node::ObjectWrap::handle_' : class 'v8::Persistent<T>'
|
||||||
# needs to have dll-interface to be used by clients of class 'node::ObjectWrap'
|
# needs to have dll-interface to be used by clients of class 'node::ObjectWrap'
|
||||||
|
8
deps/npm/node_modules/node-gyp/lib/build.js
generated
vendored
8
deps/npm/node_modules/node-gyp/lib/build.js
generated
vendored
@ -173,7 +173,7 @@ function build (gyp, argv, callback) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Copies the node.lib file for the current target architecture into the
|
* Copies the iojs.lib file for the current target architecture into the
|
||||||
* current proper dev dir location.
|
* current proper dev dir location.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -181,15 +181,15 @@ function build (gyp, argv, callback) {
|
|||||||
if (!win || !copyDevLib) return doBuild()
|
if (!win || !copyDevLib) return doBuild()
|
||||||
|
|
||||||
var buildDir = path.resolve(nodeDir, buildType)
|
var buildDir = path.resolve(nodeDir, buildType)
|
||||||
, archNodeLibPath = path.resolve(nodeDir, arch, 'node.lib')
|
, archNodeLibPath = path.resolve(nodeDir, arch, 'iojs.lib')
|
||||||
, buildNodeLibPath = path.resolve(buildDir, 'node.lib')
|
, buildNodeLibPath = path.resolve(buildDir, 'iojs.lib')
|
||||||
|
|
||||||
mkdirp(buildDir, function (err, isNew) {
|
mkdirp(buildDir, function (err, isNew) {
|
||||||
if (err) return callback(err)
|
if (err) return callback(err)
|
||||||
log.verbose('"' + buildType + '" dir needed to be created?', isNew)
|
log.verbose('"' + buildType + '" dir needed to be created?', isNew)
|
||||||
var rs = fs.createReadStream(archNodeLibPath)
|
var rs = fs.createReadStream(archNodeLibPath)
|
||||||
, ws = fs.createWriteStream(buildNodeLibPath)
|
, ws = fs.createWriteStream(buildNodeLibPath)
|
||||||
log.verbose('copying "node.lib" for ' + arch, buildNodeLibPath)
|
log.verbose('copying "iojs.lib" for ' + arch, buildNodeLibPath)
|
||||||
rs.pipe(ws)
|
rs.pipe(ws)
|
||||||
rs.on('error', callback)
|
rs.on('error', callback)
|
||||||
ws.on('error', callback)
|
ws.on('error', callback)
|
||||||
|
39
deps/npm/node_modules/node-gyp/lib/install.js
generated
vendored
39
deps/npm/node_modules/node-gyp/lib/install.js
generated
vendored
@ -267,7 +267,7 @@ function install (gyp, argv, callback) {
|
|||||||
var async = 0
|
var async = 0
|
||||||
|
|
||||||
if (win) {
|
if (win) {
|
||||||
// need to download node.lib
|
// need to download iojs.lib
|
||||||
async++
|
async++
|
||||||
downloadNodeLib(deref)
|
downloadNodeLib(deref)
|
||||||
}
|
}
|
||||||
@ -295,7 +295,8 @@ function install (gyp, argv, callback) {
|
|||||||
// check content shasums
|
// check content shasums
|
||||||
for (var k in contentShasums) {
|
for (var k in contentShasums) {
|
||||||
log.verbose('validating download checksum for ' + k, '(%s == %s)', contentShasums[k], expectShasums[k])
|
log.verbose('validating download checksum for ' + k, '(%s == %s)', contentShasums[k], expectShasums[k])
|
||||||
if (contentShasums[k] !== expectShasums[k]) {
|
// TODO(piscisaureus) re-enable checksum verification when the correct files are in place.
|
||||||
|
if (false || contentShasums[k] !== expectShasums[k]) {
|
||||||
cb(new Error(k + ' local checksum ' + contentShasums[k] + ' not match remote ' + expectShasums[k]))
|
cb(new Error(k + ' local checksum ' + contentShasums[k] + ' not match remote ' + expectShasums[k]))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -343,36 +344,36 @@ function install (gyp, argv, callback) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function downloadNodeLib (done) {
|
function downloadNodeLib (done) {
|
||||||
log.verbose('on Windows; need to download `node.lib`...')
|
log.verbose('on Windows; need to download `iojs.lib`...')
|
||||||
var dir32 = path.resolve(devDir, 'ia32')
|
var dir32 = path.resolve(devDir, 'ia32')
|
||||||
, dir64 = path.resolve(devDir, 'x64')
|
, dir64 = path.resolve(devDir, 'x64')
|
||||||
, nodeLibPath32 = path.resolve(dir32, 'node.lib')
|
, nodeLibPath32 = path.resolve(dir32, 'iojs.lib')
|
||||||
, nodeLibPath64 = path.resolve(dir64, 'node.lib')
|
, nodeLibPath64 = path.resolve(dir64, 'iojs.lib')
|
||||||
, nodeLibUrl32 = distUrl + '/v' + version + '/node.lib'
|
, nodeLibUrl32 = distUrl + '/v' + version + '/win-x86/iojs.lib'
|
||||||
, nodeLibUrl64 = distUrl + '/v' + version + '/x64/node.lib'
|
, nodeLibUrl64 = distUrl + '/v' + version + '/win-x64/iojs.lib'
|
||||||
|
|
||||||
log.verbose('32-bit node.lib dir', dir32)
|
log.verbose('32-bit iojs.lib dir', dir32)
|
||||||
log.verbose('64-bit node.lib dir', dir64)
|
log.verbose('64-bit iojs.lib dir', dir64)
|
||||||
log.verbose('`node.lib` 32-bit url', nodeLibUrl32)
|
log.verbose('`iojs.lib` 32-bit url', nodeLibUrl32)
|
||||||
log.verbose('`node.lib` 64-bit url', nodeLibUrl64)
|
log.verbose('`iojs.lib` 64-bit url', nodeLibUrl64)
|
||||||
|
|
||||||
var async = 2
|
var async = 2
|
||||||
mkdir(dir32, function (err) {
|
mkdir(dir32, function (err) {
|
||||||
if (err) return done(err)
|
if (err) return done(err)
|
||||||
log.verbose('streaming 32-bit node.lib to:', nodeLibPath32)
|
log.verbose('streaming 32-bit iojs.lib to:', nodeLibPath32)
|
||||||
|
|
||||||
var req = download(nodeLibUrl32)
|
var req = download(nodeLibUrl32)
|
||||||
if (!req) return
|
if (!req) return
|
||||||
req.on('error', done)
|
req.on('error', done)
|
||||||
req.on('response', function (res) {
|
req.on('response', function (res) {
|
||||||
if (res.statusCode !== 200) {
|
if (res.statusCode !== 200) {
|
||||||
done(new Error(res.statusCode + ' status code downloading 32-bit node.lib'))
|
done(new Error(res.statusCode + ' status code downloading 32-bit iojs.lib'))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
getContentSha(res, function (_, checksum) {
|
getContentSha(res, function (_, checksum) {
|
||||||
contentShasums['node.lib'] = checksum
|
contentShasums['win-x86/iojs.lib'] = checksum
|
||||||
log.verbose('content checksum', 'node.lib', checksum)
|
log.verbose('content checksum', 'win-x86/iojs.lib', checksum)
|
||||||
})
|
})
|
||||||
|
|
||||||
var ws = fs.createWriteStream(nodeLibPath32)
|
var ws = fs.createWriteStream(nodeLibPath32)
|
||||||
@ -385,20 +386,20 @@ function install (gyp, argv, callback) {
|
|||||||
})
|
})
|
||||||
mkdir(dir64, function (err) {
|
mkdir(dir64, function (err) {
|
||||||
if (err) return done(err)
|
if (err) return done(err)
|
||||||
log.verbose('streaming 64-bit node.lib to:', nodeLibPath64)
|
log.verbose('streaming 64-bit iojs.lib to:', nodeLibPath64)
|
||||||
|
|
||||||
var req = download(nodeLibUrl64)
|
var req = download(nodeLibUrl64)
|
||||||
if (!req) return
|
if (!req) return
|
||||||
req.on('error', done)
|
req.on('error', done)
|
||||||
req.on('response', function (res) {
|
req.on('response', function (res) {
|
||||||
if (res.statusCode !== 200) {
|
if (res.statusCode !== 200) {
|
||||||
done(new Error(res.statusCode + ' status code downloading 64-bit node.lib'))
|
done(new Error(res.statusCode + ' status code downloading 64-bit iojs.lib'))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
getContentSha(res, function (_, checksum) {
|
getContentSha(res, function (_, checksum) {
|
||||||
contentShasums['x64/node.lib'] = checksum
|
contentShasums['win-x64/iojs.lib'] = checksum
|
||||||
log.verbose('content checksum', 'x64/node.lib', checksum)
|
log.verbose('content checksum', 'win-x64/iojs.lib', checksum)
|
||||||
})
|
})
|
||||||
|
|
||||||
var ws = fs.createWriteStream(nodeLibPath64)
|
var ws = fs.createWriteStream(nodeLibPath64)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user