UNPKG

opencv-build

Version:

A simple script to auto build recent OpenCV + contrib version via npm

122 lines (121 loc) 4.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var fs = require("fs"); var os = require("os"); var path = require("path"); var dirs_1 = require("./dirs"); var log = require('npmlog'); function isAutoBuildDisabled() { return !!process.env.OPENCV4NODEJS_DISABLE_AUTOBUILD; } exports.isAutoBuildDisabled = isAutoBuildDisabled; function buildWithCuda() { return !!process.env.OPENCV4NODEJS_BUILD_CUDA || false; } exports.buildWithCuda = buildWithCuda; function isWithoutContrib() { return !!process.env.OPENCV4NODEJS_AUTOBUILD_WITHOUT_CONTRIB; } exports.isWithoutContrib = isWithoutContrib; function autoBuildFlags() { return process.env.OPENCV4NODEJS_AUTOBUILD_FLAGS || ''; } exports.autoBuildFlags = autoBuildFlags; function opencvVersion() { return process.env.OPENCV4NODEJS_AUTOBUILD_OPENCV_VERSION || '3.4.6'; } exports.opencvVersion = opencvVersion; function numberOfCoresAvailable() { return os.cpus().length; } exports.numberOfCoresAvailable = numberOfCoresAvailable; function parseAutoBuildFlags() { var flagStr = autoBuildFlags(); if (typeof (flagStr) === 'string' && flagStr.length) { log.silly('install', 'using flags from OPENCV4NODEJS_AUTOBUILD_FLAGS:', flagStr); return flagStr.split(' '); } return []; } exports.parseAutoBuildFlags = parseAutoBuildFlags; function readAutoBuildFile() { try { var fileExists = fs.existsSync(dirs_1.dirs.autoBuildFile); if (fileExists) { var autoBuildFile = JSON.parse(fs.readFileSync(dirs_1.dirs.autoBuildFile).toString()); if (!autoBuildFile.opencvVersion || !('autoBuildFlags' in autoBuildFile) || !Array.isArray(autoBuildFile.modules)) { throw new Error('auto-build.json has invalid contents'); } return autoBuildFile; } log.info('readAutoBuildFile', 'file does not exists: %s', dirs_1.dirs.autoBuildFile, dirs_1.dirs.autoBuildFile); } catch (err) { log.error('readAutoBuildFile', 'failed to read auto-build.json from: %s, with error: %s', dirs_1.dirs.autoBuildFile, err.toString()); } return undefined; } exports.readAutoBuildFile = readAutoBuildFile; function getCwd() { var cwd = process.env.INIT_CWD || process.cwd(); if (!cwd) { throw new Error('process.env.INIT_CWD || process.cwd() is undefined or empty'); } return cwd; } exports.getCwd = getCwd; function parsePackageJson() { var absPath = path.resolve(getCwd(), 'package.json'); if (!fs.existsSync(absPath)) { return null; } return JSON.parse(fs.readFileSync(absPath).toString()); } function readEnvsFromPackageJson() { var rootPackageJSON = parsePackageJson(); return rootPackageJSON ? (rootPackageJSON.opencv4nodejs || {}) : {}; } exports.readEnvsFromPackageJson = readEnvsFromPackageJson; function applyEnvsFromPackageJson() { var envs = {}; try { envs = readEnvsFromPackageJson(); } catch (err) { log.error('failed to parse package.json:'); log.error(err); } var envKeys = Object.keys(envs); if (envKeys.length) { log.info('the following opencv4nodejs environment variables are set in the package.json:'); envKeys.forEach(function (key) { return log.info(key + ": " + envs[key]); }); } var autoBuildBuildCuda = envs.autoBuildBuildCuda, autoBuildFlags = envs.autoBuildFlags, autoBuildOpencvVersion = envs.autoBuildOpencvVersion, autoBuildWithoutContrib = envs.autoBuildWithoutContrib, disableAutoBuild = envs.disableAutoBuild, opencvIncludeDir = envs.opencvIncludeDir, opencvLibDir = envs.opencvLibDir, opencvBinDir = envs.opencvBinDir; if (autoBuildFlags) { process.env.OPENCV4NODEJS_AUTOBUILD_FLAGS = autoBuildFlags; } if (autoBuildBuildCuda) { process.env.OPENCV4NODEJS_BUILD_CUDA = autoBuildBuildCuda; } if (autoBuildOpencvVersion) { process.env.OPENCV4NODEJS_AUTOBUILD_OPENCV_VERSION = autoBuildOpencvVersion; } if (autoBuildWithoutContrib) { process.env.OPENCV4NODEJS_AUTOBUILD_WITHOUT_CONTRIB = autoBuildWithoutContrib; } if (disableAutoBuild) { process.env.OPENCV4NODEJS_DISABLE_AUTOBUILD = disableAutoBuild; } if (opencvIncludeDir) { process.env.OPENCV_INCLUDE_DIR = opencvIncludeDir; } if (opencvLibDir) { process.env.OPENCV_LIB_DIR = opencvLibDir; } if (opencvBinDir) { process.env.OPENCV_BIN_DIR = opencvBinDir; } } exports.applyEnvsFromPackageJson = applyEnvsFromPackageJson;