node-gyp-build
Advanced tools
Comparing version 4.2.3 to 4.3.0
40
index.js
@@ -55,3 +55,3 @@ var fs = require('fs') | ||
'node=' + process.versions.node, | ||
(process.versions && process.versions.electron) ? 'electron=' + process.versions.electron : '', | ||
process.versions.electron ? 'electron=' + process.versions.electron : '', | ||
typeof __webpack_require__ === 'function' ? 'webpack=true' : '' // eslint-disable-line | ||
@@ -63,4 +63,9 @@ ].filter(Boolean).join(' ') | ||
function resolve (dir) { | ||
// Find matching "prebuilds/<platform>-<arch>" directory | ||
var tuples = readdirSync(path.join(dir, 'prebuilds')).map(parseTuple) | ||
var tuple = tuples.filter(matchTuple(platform, arch)).sort(compareTuples)[0] | ||
if (!tuple) return | ||
// Find most specific flavor first | ||
var prebuilds = path.join(dir, 'prebuilds', platform + '-' + arch) | ||
var prebuilds = path.join(dir, 'prebuilds', tuple.name) | ||
var parsed = readdirSync(prebuilds).map(parseTags) | ||
@@ -90,2 +95,30 @@ var candidates = parsed.filter(matchTags(runtime, abi)) | ||
function parseTuple (name) { | ||
// Example: darwin-x64+arm64 | ||
var arr = name.split('-') | ||
if (arr.length !== 2) return | ||
var platform = arr[0] | ||
var architectures = arr[1].split('+') | ||
if (!platform) return | ||
if (!architectures.length) return | ||
if (!architectures.every(Boolean)) return | ||
return { name, platform, architectures } | ||
} | ||
function matchTuple (platform, arch) { | ||
return function (tuple) { | ||
if (tuple == null) return false | ||
if (tuple.platform !== platform) return false | ||
return tuple.architectures.includes(arch) | ||
} | ||
} | ||
function compareTuples (a, b) { | ||
// Prefer single-arch prebuilds over multi-arch | ||
return a.architectures.length - b.architectures.length | ||
} | ||
function parseTags (file) { | ||
@@ -170,1 +203,4 @@ var arr = file.split('.') | ||
load.compareTags = compareTags | ||
load.parseTuple = parseTuple | ||
load.matchTuple = matchTuple | ||
load.compareTuples = compareTuples |
{ | ||
"name": "node-gyp-build", | ||
"version": "4.2.3", | ||
"version": "4.3.0", | ||
"description": "Build tool and bindings loader for node-gyp that supports prebuilds", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -9,3 +9,3 @@ # node-gyp-build | ||
[![Build Status](https://travis-ci.org/prebuild/node-gyp-build.svg?branch=master)](https://travis-ci.org/prebuild/node-gyp-build) | ||
[![Test](https://github.com/prebuild/node-gyp-build/actions/workflows/test.yml/badge.svg)](https://github.com/prebuild/node-gyp-build/actions/workflows/test.yml) | ||
@@ -12,0 +12,0 @@ Use together with [`prebuildify`][prebuildify] to easily support prebuilds for your native modules. |
12713
251