UNPKG

pkg-fetch

Version:

Github Releases page of this project contains base binaries, used by `pkg` to create executables. `pkg-fetch` npm package downloads base binaries or compiles them from source.

205 lines (151 loc) 6.01 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.main = undefined; var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _getIterator2 = require('babel-runtime/core-js/get-iterator'); var _getIterator3 = _interopRequireDefault(_getIterator2); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var main = exports.main = function () { var _ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee() { var nodeVersion, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, targetArch, local, short, remote; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: if (process.env.GITHUB_USERNAME) { _context.next = 2; break; } throw (0, _log.wasReported)('No github credentials. Upload will fail!'); case 2: _context.t0 = _regenerator2.default.keys(_patches2.default); case 3: if ((_context.t1 = _context.t0()).done) { _context.next = 52; break; } nodeVersion = _context.t1.value; _iteratorNormalCompletion = true; _didIteratorError = false; _iteratorError = undefined; _context.prev = 8; _iterator = (0, _getIterator3.default)(_system.targetArchs); case 10: if (_iteratorNormalCompletion = (_step = _iterator.next()).done) { _context.next = 36; break; } targetArch = _step.value; if (!dontBuild(nodeVersion, _system.hostPlatform, targetArch)) { _context.next = 14; break; } return _context.abrupt('continue', 33); case 14: local = (0, _places.localPlace)({ from: 'built', arch: targetArch, nodeVersion: nodeVersion, platform: _system.hostPlatform, version: _package.version }); short = _path2.default.basename(local); _log.log.info('Building ' + short + '...'); _context.next = 19; return (0, _build2.default)(nodeVersion, targetArch, local); case 19: _log.log.info('Verifying ' + short + '...'); _context.next = 22; return (0, _verify.verify)(local); case 22: _log.log.info('Uploading ' + short + '...'); remote = (0, _places.remotePlace)({ arch: targetArch, nodeVersion: nodeVersion, platform: _system.hostPlatform, version: _package.version }); _context.prev = 24; _context.next = 27; return cloud.upload(local, remote); case 27: _context.next = 33; break; case 29: _context.prev = 29; _context.t2 = _context['catch'](24); // TODO catch only network errors if (!_context.t2.wasReported) _log.log.error(_context.t2); _log.log.info('Meanwhile i will continue making binaries'); case 33: _iteratorNormalCompletion = true; _context.next = 10; break; case 36: _context.next = 42; break; case 38: _context.prev = 38; _context.t3 = _context['catch'](8); _didIteratorError = true; _iteratorError = _context.t3; case 42: _context.prev = 42; _context.prev = 43; if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } case 45: _context.prev = 45; if (!_didIteratorError) { _context.next = 48; break; } throw _iteratorError; case 48: return _context.finish(45); case 49: return _context.finish(42); case 50: _context.next = 3; break; case 52: case 'end': return _context.stop(); } } }, _callee, this, [[8, 38, 42, 50], [24, 29], [43,, 45, 49]]); })); return function main() { return _ref.apply(this, arguments); }; }(); exports.dontBuild = dontBuild; var _system = require('./system.js'); var _places = require('./places.js'); var _log = require('./log.js'); var _cloud = require('./cloud.js'); var _build = require('./build.js'); var _build2 = _interopRequireDefault(_build); var _patches = require('../patches/patches.json'); var _patches2 = _interopRequireDefault(_patches); var _path = require('path'); var _path2 = _interopRequireDefault(_path); var _verify = require('./verify.js'); var _package = require('../package.json'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var cloud = new _cloud.Cloud({ owner: 'zeit', repo: 'pkg-fetch' }); function dontBuild(nodeVersion, targetPlatform, targetArch) { // https://support.apple.com/en-us/HT201948 // don't disable macos-x86 because it is not possible // to cross-compile for x86 from macos otherwise var major = nodeVersion.match(/^v?(\d+)/)[1] | 0; // node 0.12 does not compile on arm if (/^arm/.test(targetArch) && major === 0) return true; // obstacles on freebsd x86 for node4 if (targetPlatform === 'freebsd' && targetArch === 'x86' && major < 6) return true; if (targetPlatform === 'freebsd' && major < 4) return true; if (targetPlatform === 'alpine' && (targetArch !== 'x64' || major < 6)) return true; return false; } if (!module.parent) { main().catch(function (error) { if (!error.wasReported) _log.log.error(error); process.exit(2); }); }