Comparing version 1.14.0 to 1.14.1
{ | ||
"name": "aws-crt", | ||
"version": "1.14.0", | ||
"version": "1.14.1", | ||
"description": "NodeJS/browser bindings to the aws-c-* libraries", | ||
@@ -46,5 +46,3 @@ "homepage": "https://github.com/awslabs/aws-crt-nodejs", | ||
"uuid": "^8.3.2", | ||
"yargs": "^17.2.1", | ||
"cmake-js": "^6.3.2", | ||
"tar": "^6.1.11" | ||
"yargs": "^17.2.1" | ||
}, | ||
@@ -56,4 +54,6 @@ "dependencies": { | ||
"crypto-js": "^4.0.0", | ||
"mqtt": "^4.3.7" | ||
"mqtt": "^4.3.7", | ||
"cmake-js": "^6.3.2", | ||
"tar": "^6.1.11" | ||
} | ||
} |
@@ -5,2 +5,3 @@ /** | ||
*/ | ||
const os = require("os") | ||
const fs = require("fs"); | ||
@@ -11,4 +12,5 @@ const crypto = require('crypto'); | ||
const build_step_tar = require("./build_dependencies/build_step_tar"); | ||
const build_step_cmake = require("./build_dependencies/build_step_cmake"); | ||
const cmake = require("cmake-js"); | ||
const axios = require("axios"); | ||
const tar = require("tar"); | ||
@@ -40,2 +42,115 @@ function rmRecursive(rmPath) { | ||
function downloadFile(fileUrl, outputLocationPath) { | ||
const writer = fs.createWriteStream(outputLocationPath); | ||
return axios({ | ||
method: 'get', | ||
url: fileUrl, | ||
responseType: 'stream', | ||
}).then(response => { | ||
return new Promise((resolve, reject) => { | ||
response.data.pipe(writer); | ||
let error = null; | ||
writer.on('error', err => { | ||
error = err; | ||
writer.close(); | ||
reject(err); | ||
}); | ||
writer.on('close', () => { | ||
if (!error) { | ||
resolve(); | ||
} | ||
}); | ||
}); | ||
}); | ||
} | ||
function checkChecksum(url, local_file) { | ||
return axios({ | ||
method: 'get', | ||
url: url, | ||
responseType: 'text', | ||
}).then(response => { | ||
return new Promise((resolve, reject) => { | ||
const filestream = fs.createReadStream(local_file); | ||
const hash = crypto.createHash('sha256'); | ||
filestream.on('readable', () => { | ||
// Only one element is going to be produced by the | ||
// hash stream. | ||
const data = filestream.read(); | ||
if (data) | ||
hash.update(data); | ||
else { | ||
const checksum = hash.digest("hex") | ||
if (checksum === response.data) { | ||
resolve() | ||
} | ||
else { | ||
reject(new Error("source code checksum mismatch")) | ||
} | ||
} | ||
}); | ||
}); | ||
}) | ||
} | ||
async function fetchNativeCode(url, version, path) { | ||
const sourceURL = `${url}/aws-crt-${version}-source.tgz` | ||
const tarballPath = path + "source.tgz"; | ||
await downloadFile(sourceURL, tarballPath); | ||
const sourceChecksumURL = `${url}/aws-crt-${version}-source.sha256`; | ||
await checkChecksum(sourceChecksumURL, tarballPath); | ||
await tar.x({ file: tarballPath, strip: 2, C: nativeSourceDir }); | ||
} | ||
function buildLocally() { | ||
const platform = os.platform(); | ||
let arch = os.arch(); | ||
// Allow cross-compile (so OSX can do arm64 or x64 builds) via: | ||
// --target-arch ARCH | ||
if (process.argv.includes('--target-arch')) { | ||
arch = process.argv[process.argv.indexOf('--target-arch') + 1]; | ||
} | ||
// options for cmake.BuildSystem | ||
let options = { | ||
target: "install", | ||
debug: process.argv.includes('--debug'), | ||
arch: arch, | ||
out: path.join('build', `${platform}-${arch}`), | ||
cMakeOptions: { | ||
CMAKE_EXPORT_COMPILE_COMMANDS: true, | ||
CMAKE_JS_PLATFORM: platform, | ||
BUILD_TESTING: 'OFF', | ||
CMAKE_INSTALL_PREFIX: 'crt/install', | ||
CMAKE_PREFIX_PATH: 'crt/install', | ||
} | ||
} | ||
// We need to pass some extra flags to pull off cross-compiling | ||
// because cmake-js doesn't set everything we need. | ||
// | ||
// See the docs on `arch`: https://github.com/cmake-js/cmake-js/blob/v6.1.0/README.md?#runtimes | ||
// > Notice: on non-Windows systems the C++ toolset's architecture's gonna be used despite this setting. | ||
if (platform === 'darwin') { | ||
// What Node calls "x64", Apple calls "x86_64". They both agree on the term "arm64" though. | ||
options.cMakeOptions.CMAKE_OSX_ARCHITECTURES = (arch === 'x64') ? 'x86_64' : arch; | ||
} | ||
// Convert any -D arguments to this script to cmake -D arguments | ||
for (const arg of process.argv) { | ||
if (arg.startsWith('-D')) { | ||
const option = arg.substring(2).split('=') | ||
options.cMakeOptions[option[0]] = option[1] | ||
} | ||
} | ||
// Enable parallel build (ignored by cmake older than 3.12) | ||
process.env.CMAKE_BUILD_PARALLEL_LEVEL = `${Math.max(os.cpus().length, 1)}`; | ||
// Run the build | ||
var buildSystem = new cmake.BuildSystem(options); | ||
return buildSystem.build(); | ||
} | ||
async function buildFromRemoteSource(tmpPath) { | ||
@@ -56,8 +171,7 @@ if (fs.existsSync(nativeSourceDir)) { | ||
const version = JSON.parse(rawData)["version"]; | ||
// Get the file using tar, loaded as an install-time dependency (see scripts/build_dependencies) | ||
await build_step_tar.performStep(host, version, tmpPath, nativeSourceDir); | ||
await fetchNativeCode(host, version, tmpPath); | ||
// Clean up temp directory | ||
rmRecursive(tmpPath); | ||
// Kick off local build using cmake-js loaded as an install-time dependency (see scripts/build_dependencies) | ||
await build_step_cmake.performStep(); | ||
// Kick off local build | ||
await buildLocally(); | ||
// Local build finished successfully, we don't need source anymore. | ||
@@ -91,3 +205,4 @@ rmRecursive(nativeSourceDir); | ||
} else { | ||
build_step_cmake.performStep(); | ||
// kick off local build | ||
buildLocally(); | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
18
8
1
13171486
7
166
10098
+ Addedcmake-js@^6.3.2
+ Addedtar@^6.1.11
+ Addedansi@0.3.1(transitive)
+ Addedansi-regex@2.1.1(transitive)
+ Addedare-we-there-yet@1.0.6(transitive)
+ Addedaxios@0.21.4(transitive)
+ Addedbig-integer@1.6.52(transitive)
+ Addedbinary@0.3.0(transitive)
+ Addedbluebird@3.4.73.7.2(transitive)
+ Addedbuffer-indexof-polyfill@1.0.2(transitive)
+ Addedbuffer-shims@1.0.0(transitive)
+ Addedbuffers@0.1.1(transitive)
+ Addedcamelcase@2.1.1(transitive)
+ Addedchainsaw@0.1.0(transitive)
+ Addedchownr@1.1.42.0.0(transitive)
+ Addedcliui@3.2.0(transitive)
+ Addedcmake-js@6.3.2(transitive)
+ Addedcode-point-at@1.1.0(transitive)
+ Addeddecamelize@1.2.0(transitive)
+ Addeddeep-extend@0.6.0(transitive)
+ Addeddelegates@1.0.0(transitive)
+ Addedduplexer2@0.1.4(transitive)
+ Addedfs-extra@5.0.0(transitive)
+ Addedfs-minipass@1.2.72.1.0(transitive)
+ Addedfstream@1.0.12(transitive)
+ Addedgauge@1.2.7(transitive)
+ Addedgraceful-fs@4.2.11(transitive)
+ Addedhas-unicode@2.0.1(transitive)
+ Addedini@1.3.8(transitive)
+ Addedinvert-kv@1.0.0(transitive)
+ Addedis-fullwidth-code-point@1.0.0(transitive)
+ Addedis-iojs@1.1.0(transitive)
+ Addedisarray@0.0.1(transitive)
+ Addedisexe@2.0.0(transitive)
+ Addedjsonfile@4.0.0(transitive)
+ Addedlcid@1.0.0(transitive)
+ Addedlistenercount@1.0.1(transitive)
+ Addedlodash@4.17.21(transitive)
+ Addedlodash.pad@4.5.1(transitive)
+ Addedlodash.padend@4.6.1(transitive)
+ Addedlodash.padstart@4.6.1(transitive)
+ Addedmemory-stream@0.0.3(transitive)
+ Addedminipass@2.9.03.3.65.0.0(transitive)
+ Addedminizlib@1.3.32.1.2(transitive)
+ Addedmkdirp@0.5.61.0.4(transitive)
+ Addednpmlog@1.2.1(transitive)
+ Addednumber-is-nan@1.0.1(transitive)
+ Addedos-locale@1.4.0(transitive)
+ Addedprocess-nextick-args@1.0.7(transitive)
+ Addedrc@1.2.8(transitive)
+ Addedreadable-stream@1.0.342.1.5(transitive)
+ Addedrimraf@2.7.1(transitive)
+ Addedsemver@5.7.2(transitive)
+ Addedsetimmediate@1.0.5(transitive)
+ Addedsplitargs@0.0.7(transitive)
+ Addedstring-width@1.0.2(transitive)
+ Addedstring_decoder@0.10.31(transitive)
+ Addedstrip-ansi@3.0.1(transitive)
+ Addedstrip-json-comments@2.0.1(transitive)
+ Addedtar@4.4.196.2.1(transitive)
+ Addedtraverse@0.3.9(transitive)
+ Addeduniversalify@0.1.2(transitive)
+ Addedunzipper@0.8.14(transitive)
+ Addedurl-join@0.0.1(transitive)
+ Addedwhich@1.3.1(transitive)
+ Addedwindow-size@0.1.4(transitive)
+ Addedwrap-ansi@2.1.0(transitive)
+ Addedy18n@3.2.2(transitive)
+ Addedyallist@3.1.1(transitive)
+ Addedyargs@3.32.0(transitive)