diff options
Diffstat (limited to 'node_modules/detect-libc/lib/detect-libc.js')
| -rw-r--r-- | node_modules/detect-libc/lib/detect-libc.js | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/node_modules/detect-libc/lib/detect-libc.js b/node_modules/detect-libc/lib/detect-libc.js deleted file mode 100644 index 1855fe1..0000000 --- a/node_modules/detect-libc/lib/detect-libc.js +++ /dev/null @@ -1,92 +0,0 @@ -'use strict'; - -var platform = require('os').platform(); -var spawnSync = require('child_process').spawnSync; -var readdirSync = require('fs').readdirSync; - -var GLIBC = 'glibc'; -var MUSL = 'musl'; - -var spawnOptions = { - encoding: 'utf8', - env: process.env -}; - -if (!spawnSync) { - spawnSync = function () { - return { status: 126, stdout: '', stderr: '' }; - }; -} - -function contains (needle) { - return function (haystack) { - return haystack.indexOf(needle) !== -1; - }; -} - -function versionFromMuslLdd (out) { - return out.split(/[\r\n]+/)[1].trim().split(/\s/)[1]; -} - -function safeReaddirSync (path) { - try { - return readdirSync(path); - } catch (e) {} - return []; -} - -var family = ''; -var version = ''; -var method = ''; - -if (platform === 'linux') { - // Try getconf - var glibc = spawnSync('getconf', ['GNU_LIBC_VERSION'], spawnOptions); - if (glibc.status === 0) { - family = GLIBC; - version = glibc.stdout.trim().split(' ')[1]; - method = 'getconf'; - } else { - // Try ldd - var ldd = spawnSync('ldd', ['--version'], spawnOptions); - if (ldd.status === 0 && ldd.stdout.indexOf(MUSL) !== -1) { - family = MUSL; - version = versionFromMuslLdd(ldd.stdout); - method = 'ldd'; - } else if (ldd.status === 1 && ldd.stderr.indexOf(MUSL) !== -1) { - family = MUSL; - version = versionFromMuslLdd(ldd.stderr); - method = 'ldd'; - } else { - // Try filesystem (family only) - var lib = safeReaddirSync('/lib'); - if (lib.some(contains('-linux-gnu'))) { - family = GLIBC; - method = 'filesystem'; - } else if (lib.some(contains('libc.musl-'))) { - family = MUSL; - method = 'filesystem'; - } else if (lib.some(contains('ld-musl-'))) { - family = MUSL; - method = 'filesystem'; - } else { - var usrSbin = safeReaddirSync('/usr/sbin'); - if (usrSbin.some(contains('glibc'))) { - family = GLIBC; - method = 'filesystem'; - } - } - } - } -} - -var isNonGlibcLinux = (family !== '' && family !== GLIBC); - -module.exports = { - GLIBC: GLIBC, - MUSL: MUSL, - family: family, - version: version, - method: method, - isNonGlibcLinux: isNonGlibcLinux -}; |