Skip to content

Commit 6dcf220

Browse files
committed
test version major directly, don't use semver.satisfies()
semver.satisfies() doesn't play nicely with prerelease tags PR-URL: #711 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
1 parent 938dd18 commit 6dcf220

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

lib/process-release.js

+11-11
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ function processRelease (argv, gyp, defaultVersion, defaultRelease) {
3838
isIojs = name === 'iojs'
3939
} else {
4040
// old node or alternative --target=
41-
isIojs = semver.satisfies(version, '>=1.0.0 <4.0.0')
41+
// semver.satisfies() doesn't like prerelease tags so test major directly
42+
isIojs = versionSemver.major >= 1 & versionSemver.major < 4
4243
name = isIojs ? 'iojs' : 'node'
4344
}
4445

@@ -60,8 +61,8 @@ function processRelease (argv, gyp, defaultVersion, defaultRelease) {
6061
// new style, based on process.release so we have a lot of the data we need
6162
if (defaultRelease && defaultRelease.headersUrl && !overrideDistUrl) {
6263
baseUrl = url.resolve(defaultRelease.headersUrl, './')
63-
libUrl32 = resolveLibUrl(name, defaultRelease.libUrl || baseUrl || distBaseUrl, 'x86', version)
64-
libUrl64 = resolveLibUrl(name, defaultRelease.libUrl || baseUrl || distBaseUrl, 'x64', version)
64+
libUrl32 = resolveLibUrl(name, defaultRelease.libUrl || baseUrl || distBaseUrl, 'x86', versionSemver.major)
65+
libUrl64 = resolveLibUrl(name, defaultRelease.libUrl || baseUrl || distBaseUrl, 'x64', versionSemver.major)
6566

6667
return {
6768
version: version,
@@ -83,12 +84,12 @@ function processRelease (argv, gyp, defaultVersion, defaultRelease) {
8384
// current process.release
8485

8586
baseUrl = distBaseUrl
86-
libUrl32 = resolveLibUrl(name, baseUrl, 'x86', version)
87-
libUrl64 = resolveLibUrl(name, baseUrl, 'x64', version)
87+
libUrl32 = resolveLibUrl(name, baseUrl, 'x86', versionSemver.major)
88+
libUrl64 = resolveLibUrl(name, baseUrl, 'x64', versionSemver.major)
8889
// making the bold assumption that anything with a version number >3.0.0 will
8990
// have a *-headers.tar.gz file in its dist location, even some frankenstein
9091
// custom version
91-
tarballUrl = url.resolve(baseUrl, name + '-v' + version + (semver.satisfies(version, '>=3') ? '-headers' : '') + '.tar.gz')
92+
tarballUrl = url.resolve(baseUrl, name + '-v' + version + (versionSemver.major >= 3 ? '-headers' : '') + '.tar.gz')
9293

9394
return {
9495
version: version,
@@ -109,21 +110,20 @@ function normalizePath (p) {
109110
return path.normalize(p).replace(/\\/g, '/')
110111
}
111112

112-
function resolveLibUrl (name, defaultUrl, arch, version) {
113+
function resolveLibUrl (name, defaultUrl, arch, versionMajor) {
113114
var base = url.resolve(defaultUrl, './')
114-
, isV3 = semver.satisfies(version, '^3')
115-
, hasLibUrl = bitsre.test(defaultUrl) || (isV3 && bitsreV3.test(defaultUrl))
115+
, hasLibUrl = bitsre.test(defaultUrl) || (versionMajor === 3 && bitsreV3.test(defaultUrl))
116116

117117
if (!hasLibUrl) {
118118
// let's assume it's a baseUrl then
119-
if (semver.gte(version, '1.0.0'))
119+
if (versionMajor >= 1)
120120
return url.resolve(base, 'win-' + arch +'/' + name + '.lib')
121121
// prior to io.js@1.0.0 32-bit node.lib lives in /, 64-bit lives in /x64/
122122
return url.resolve(base, (arch === 'x64' ? 'x64/' : '') + name + '.lib')
123123
}
124124

125125
// else we have a proper url to a .lib, just make sure it's the right arch
126-
return defaultUrl.replace(isV3 ? bitsreV3 : bitsre, '/win-' + arch + '/')
126+
return defaultUrl.replace(versionMajor === 3 ? bitsreV3 : bitsre, '/win-' + arch + '/')
127127
}
128128

129129
module.exports = processRelease

0 commit comments

Comments
 (0)