diff --git a/lib/platform.js b/lib/platform.js index 4bddd0ab..d3342e34 100644 --- a/lib/platform.js +++ b/lib/platform.js @@ -2,17 +2,22 @@ const detectLibc = require('detect-libc'); +const env = process.env; + module.exports = function () { - const arch = process.env.npm_config_arch || process.arch; - const platform = process.env.npm_config_platform || process.platform; + const arch = env.npm_config_arch || process.arch; + const platform = env.npm_config_platform || process.platform; const libc = (platform === 'linux' && detectLibc.isNonGlibcLinux) ? detectLibc.family : ''; const platformId = [`${platform}${libc}`]; - if (arch === 'arm' || arch === 'armhf' || arch === 'arm64') { - const armVersion = (arch === 'arm64') ? '8' : process.env.npm_config_armv || process.config.variables.arm_version || '6'; - platformId.push(`armv${armVersion}`); + + if (arch === 'arm') { + platformId.push(`armv${env.npm_config_arm_version || process.config.variables.arm_version || '6'}`); + } else if (arch === 'arm64') { + platformId.push(`arm64v${env.npm_config_arm_version || '8'}`); } else { platformId.push(arch); } + return platformId.join('-'); }; diff --git a/test/unit/platform.js b/test/unit/platform.js index 87454c78..52f0a599 100644 --- a/test/unit/platform.js +++ b/test/unit/platform.js @@ -16,16 +16,24 @@ describe('Platform-detection', function () { delete process.env.npm_config_platform; }); - it('Can override ARM version via npm_config_armv', function () { + it('Can override ARM version via --arm-version', function () { process.env.npm_config_arch = 'arm'; - process.env.npm_config_armv = 'test'; + process.env.npm_config_arm_version = 'test'; assert.strictEqual('armvtest', platform().split('-')[1]); - delete process.env.npm_config_armv; + delete process.env.npm_config_arm_version; + delete process.env.npm_config_arch; + }); + + it('Can override ARM64 version via --arm-version', function () { + process.env.npm_config_arch = 'arm64'; + process.env.npm_config_arm_version = 'test'; + assert.strictEqual('arm64vtest', platform().split('-')[1]); + delete process.env.npm_config_arm_version; delete process.env.npm_config_arch; }); it('Can detect ARM version via process.config', function () { - process.env.npm_config_arch = 'armhf'; + process.env.npm_config_arch = 'arm'; const armVersion = process.config.variables.arm_version; process.config.variables.arm_version = 'test'; assert.strictEqual('armvtest', platform().split('-')[1]); @@ -41,7 +49,7 @@ describe('Platform-detection', function () { it('Defaults to ARMv8 for 64-bit', function () { process.env.npm_config_arch = 'arm64'; - assert.strictEqual('armv8', platform().split('-')[1]); + assert.strictEqual('arm64v8', platform().split('-')[1]); delete process.env.npm_config_arch; }); });