rebase to 18.2.0
Resolves: rhbz#2083073
This commit is contained in:
parent
e3e4e27911
commit
fd354d0be2
2
.gitignore
vendored
2
.gitignore
vendored
@ -23,3 +23,5 @@
|
|||||||
/node-v16.13.1-stripped.tar.gz
|
/node-v16.13.1-stripped.tar.gz
|
||||||
/node-v16.14.0-stripped.tar.gz
|
/node-v16.14.0-stripped.tar.gz
|
||||||
/icu4c-70_1-src.tgz
|
/icu4c-70_1-src.tgz
|
||||||
|
/node-v18.2.0-stripped.tar.gz
|
||||||
|
/icu4c-71_1-src.tgz
|
||||||
|
@ -1,19 +1,19 @@
|
|||||||
From b0b4d1ddbc720db73fb8ab13cdbbf1ce6524eebd Mon Sep 17 00:00:00 2001
|
From 142fe30256f96e28b49f55d5c72e604719aaaad8 Mon Sep 17 00:00:00 2001
|
||||||
From: Zuzana Svetlikova <zsvetlik@redhat.com>
|
From: Zuzana Svetlikova <zsvetlik@redhat.com>
|
||||||
Date: Fri, 17 Apr 2020 12:59:44 +0200
|
Date: Fri, 17 Apr 2020 12:59:44 +0200
|
||||||
Subject: [PATCH 1/2] Disable running gyp on shared deps
|
Subject: [PATCH] Disable running gyp on shared deps
|
||||||
|
|
||||||
|
Signed-off-by: rpm-build <rpm-build>
|
||||||
---
|
---
|
||||||
Makefile | 2 +-
|
Makefile | 2 +-
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
node.gyp | 17 -----------------
|
||||||
|
2 files changed, 1 insertion(+), 18 deletions(-)
|
||||||
|
|
||||||
diff --git a/Makefile b/Makefile
|
diff --git a/Makefile b/Makefile
|
||||||
index 93d63110ae2e3928a95d24036b86d11885ab240f..79caaec2112cefa8f6a1c947375b517e9676f176 100644
|
index 4aace77..0bad864 100644
|
||||||
--- a/Makefile
|
--- a/Makefile
|
||||||
+++ b/Makefile
|
+++ b/Makefile
|
||||||
@@ -136,11 +136,11 @@ endif
|
@@ -147,7 +147,7 @@ with-code-cache test-code-cache:
|
||||||
.PHONY: test-code-cache
|
|
||||||
with-code-cache test-code-cache:
|
|
||||||
$(warning '$@' target is a noop)
|
$(warning '$@' target is a noop)
|
||||||
|
|
||||||
out/Makefile: config.gypi common.gypi node.gyp \
|
out/Makefile: config.gypi common.gypi node.gyp \
|
||||||
@ -22,8 +22,34 @@ index 93d63110ae2e3928a95d24036b86d11885ab240f..79caaec2112cefa8f6a1c947375b517e
|
|||||||
tools/v8_gypfiles/toolchain.gypi tools/v8_gypfiles/features.gypi \
|
tools/v8_gypfiles/toolchain.gypi tools/v8_gypfiles/features.gypi \
|
||||||
tools/v8_gypfiles/inspector.gypi tools/v8_gypfiles/v8.gyp
|
tools/v8_gypfiles/inspector.gypi tools/v8_gypfiles/v8.gyp
|
||||||
$(PYTHON) tools/gyp_node.py -f make
|
$(PYTHON) tools/gyp_node.py -f make
|
||||||
|
diff --git a/node.gyp b/node.gyp
|
||||||
# node_version.h is listed because the N-API version is taken from there
|
index 86fe9a6..bfa5093 100644
|
||||||
|
--- a/node.gyp
|
||||||
|
+++ b/node.gyp
|
||||||
|
@@ -449,23 +449,6 @@
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
- }, {
|
||||||
|
- 'variables': {
|
||||||
|
- 'opensslconfig_internal': '<(obj_dir)/deps/openssl/openssl.cnf',
|
||||||
|
- 'opensslconfig': './deps/openssl/openssl/apps/openssl.cnf',
|
||||||
|
- },
|
||||||
|
- 'actions': [
|
||||||
|
- {
|
||||||
|
- 'action_name': 'reset_openssl_cnf',
|
||||||
|
- 'inputs': [ '<(opensslconfig)', ],
|
||||||
|
- 'outputs': [ '<(opensslconfig_internal)', ],
|
||||||
|
- 'action': [
|
||||||
|
- 'python', 'tools/copyfile.py',
|
||||||
|
- './deps/openssl/openssl/apps/openssl.cnf',
|
||||||
|
- '<(obj_dir)/deps/openssl/openssl.cnf',
|
||||||
|
- ],
|
||||||
|
- },
|
||||||
|
- ],
|
||||||
|
}],
|
||||||
|
],
|
||||||
|
}, # node_core_target_name
|
||||||
--
|
--
|
||||||
2.29.2
|
2.36.1
|
||||||
|
|
||||||
|
@ -1,397 +0,0 @@
|
|||||||
From 730dd78c897a28c3df0468ed1fc42d5817badefe Mon Sep 17 00:00:00 2001
|
|
||||||
From: Ruy Adorno <ruyadorno@hotmail.com>
|
|
||||||
Date: Wed, 2 Feb 2022 22:10:22 -0500
|
|
||||||
Subject: [PATCH] fix(ci): lock file validation
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
Make sure to validate any lock file (either package-lock.json or
|
|
||||||
npm-shrinkwrap.json) against the current install. This will properly
|
|
||||||
throw an error in case any of the dependencies being installed don't
|
|
||||||
match the dependencies that are currently listed in the lock file.
|
|
||||||
|
|
||||||
Fixes: https://github.com/npm/cli/issues/2701
|
|
||||||
Fixes: https://github.com/npm/cli/issues/3947
|
|
||||||
Signed-off-by: Jan Staněk <jstanek@redhat.com>
|
|
||||||
---
|
|
||||||
deps/npm/lib/commands/ci.js | 23 ++++++
|
|
||||||
deps/npm/lib/utils/validate-lockfile.js | 29 +++++++
|
|
||||||
.../smoke-tests/index.js.test.cjs | 11 +++
|
|
||||||
.../test/lib/commands/ci.js.test.cjs | 13 +++
|
|
||||||
.../lib/utils/validate-lockfile.js.test.cjs | 35 ++++++++
|
|
||||||
deps/npm/test/lib/commands/ci.js | 82 +++++++++++++++++++
|
|
||||||
deps/npm/test/lib/utils/validate-lockfile.js | 82 +++++++++++++++++++
|
|
||||||
7 files changed, 275 insertions(+)
|
|
||||||
create mode 100644 deps/npm/lib/utils/validate-lockfile.js
|
|
||||||
create mode 100644 deps/npm/tap-snapshots/test/lib/commands/ci.js.test.cjs
|
|
||||||
create mode 100644 deps/npm/tap-snapshots/test/lib/utils/validate-lockfile.js.test.cjs
|
|
||||||
create mode 100644 deps/npm/test/lib/utils/validate-lockfile.js
|
|
||||||
|
|
||||||
diff --git a/deps/npm/lib/commands/ci.js b/deps/npm/lib/commands/ci.js
|
|
||||||
index 2c2f8da..376a85d 100644
|
|
||||||
--- a/deps/npm/lib/commands/ci.js
|
|
||||||
+++ b/deps/npm/lib/commands/ci.js
|
|
||||||
@@ -6,6 +6,7 @@ const runScript = require('@npmcli/run-script')
|
|
||||||
const fs = require('fs')
|
|
||||||
const readdir = util.promisify(fs.readdir)
|
|
||||||
const log = require('../utils/log-shim.js')
|
|
||||||
+const validateLockfile = require('../utils/validate-lockfile.js')
|
|
||||||
|
|
||||||
const removeNodeModules = async where => {
|
|
||||||
const rimrafOpts = { glob: false }
|
|
||||||
@@ -55,6 +56,28 @@ class CI extends ArboristWorkspaceCmd {
|
|
||||||
}),
|
|
||||||
removeNodeModules(where),
|
|
||||||
])
|
|
||||||
+
|
|
||||||
+ // retrieves inventory of packages from loaded virtual tree (lock file)
|
|
||||||
+ const virtualInventory = new Map(arb.virtualTree.inventory)
|
|
||||||
+
|
|
||||||
+ // build ideal tree step needs to come right after retrieving the virtual
|
|
||||||
+ // inventory since it's going to erase the previous ref to virtualTree
|
|
||||||
+ await arb.buildIdealTree()
|
|
||||||
+
|
|
||||||
+ // verifies that the packages from the ideal tree will match
|
|
||||||
+ // the same versions that are present in the virtual tree (lock file)
|
|
||||||
+ // throws a validation error in case of mismatches
|
|
||||||
+ const errors = validateLockfile(virtualInventory, arb.idealTree.inventory)
|
|
||||||
+ if (errors.length) {
|
|
||||||
+ throw new Error(
|
|
||||||
+ '`npm ci` can only install packages when your package.json and ' +
|
|
||||||
+ 'package-lock.json or npm-shrinkwrap.json are in sync. Please ' +
|
|
||||||
+ 'update your lock file with `npm install` ' +
|
|
||||||
+ 'before continuing.\n\n' +
|
|
||||||
+ errors.join('\n') + '\n'
|
|
||||||
+ )
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
await arb.reify(opts)
|
|
||||||
|
|
||||||
const ignoreScripts = this.npm.config.get('ignore-scripts')
|
|
||||||
diff --git a/deps/npm/lib/utils/validate-lockfile.js b/deps/npm/lib/utils/validate-lockfile.js
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..29161ec
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/deps/npm/lib/utils/validate-lockfile.js
|
|
||||||
@@ -0,0 +1,29 @@
|
|
||||||
+// compares the inventory of package items in the tree
|
|
||||||
+// that is about to be installed (idealTree) with the inventory
|
|
||||||
+// of items stored in the package-lock file (virtualTree)
|
|
||||||
+//
|
|
||||||
+// Returns empty array if no errors found or an array populated
|
|
||||||
+// with an entry for each validation error found.
|
|
||||||
+function validateLockfile (virtualTree, idealTree) {
|
|
||||||
+ const errors = []
|
|
||||||
+
|
|
||||||
+ // loops through the inventory of packages resulted by ideal tree,
|
|
||||||
+ // for each package compares the versions with the version stored in the
|
|
||||||
+ // package-lock and adds an error to the list in case of mismatches
|
|
||||||
+ for (const [key, entry] of idealTree.entries()) {
|
|
||||||
+ const lock = virtualTree.get(key)
|
|
||||||
+
|
|
||||||
+ if (!lock) {
|
|
||||||
+ errors.push(`Missing: ${entry.name}@${entry.version} from lock file`)
|
|
||||||
+ continue
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (entry.version !== lock.version) {
|
|
||||||
+ errors.push(`Invalid: lock file's ${lock.name}@${lock.version} does ` +
|
|
||||||
+ `not satisfy ${entry.name}@${entry.version}`)
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ return errors
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+module.exports = validateLockfile
|
|
||||||
diff --git a/deps/npm/tap-snapshots/smoke-tests/index.js.test.cjs b/deps/npm/tap-snapshots/smoke-tests/index.js.test.cjs
|
|
||||||
index c1316e0..5fa3977 100644
|
|
||||||
--- a/deps/npm/tap-snapshots/smoke-tests/index.js.test.cjs
|
|
||||||
+++ b/deps/npm/tap-snapshots/smoke-tests/index.js.test.cjs
|
|
||||||
@@ -40,6 +40,17 @@ Configuration fields: npm help 7 config
|
|
||||||
|
|
||||||
npm {CWD}
|
|
||||||
|
|
||||||
+`
|
|
||||||
+
|
|
||||||
+exports[`smoke-tests/index.js TAP npm ci > should throw mismatch deps in lock file error 1`] = `
|
|
||||||
+npm ERR! \`npm ci\` can only install packages when your package.json and package-lock.json or npm-shrinkwrap.json are in sync. Please update your lock file with \`npm install\` before continuing.
|
|
||||||
+npm ERR!
|
|
||||||
+npm ERR! Invalid: lock file's abbrev@1.0.4 does not satisfy abbrev@1.1.1
|
|
||||||
+npm ERR!
|
|
||||||
+
|
|
||||||
+npm ERR! A complete log of this run can be found in:
|
|
||||||
+
|
|
||||||
+
|
|
||||||
`
|
|
||||||
|
|
||||||
exports[`smoke-tests/index.js TAP npm diff > should have expected diff output 1`] = `
|
|
||||||
diff --git a/deps/npm/tap-snapshots/test/lib/commands/ci.js.test.cjs b/deps/npm/tap-snapshots/test/lib/commands/ci.js.test.cjs
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..d6a7471
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/deps/npm/tap-snapshots/test/lib/commands/ci.js.test.cjs
|
|
||||||
@@ -0,0 +1,13 @@
|
|
||||||
+/* IMPORTANT
|
|
||||||
+ * This snapshot file is auto-generated, but designed for humans.
|
|
||||||
+ * It should be checked into source control and tracked carefully.
|
|
||||||
+ * Re-generate by setting TAP_SNAPSHOT=1 and running tests.
|
|
||||||
+ * Make sure to inspect the output below. Do not ignore changes!
|
|
||||||
+ */
|
|
||||||
+'use strict'
|
|
||||||
+exports[`test/lib/commands/ci.js TAP should throw error when ideal inventory mismatches virtual > must match snapshot 1`] = `
|
|
||||||
+\`npm ci\` can only install packages when your package.json and package-lock.json or npm-shrinkwrap.json are in sync. Please update your lock file with \`npm install\` before continuing.
|
|
||||||
+
|
|
||||||
+Invalid: lock file's foo@1.0.0 does not satisfy foo@2.0.0
|
|
||||||
+
|
|
||||||
+`
|
|
||||||
diff --git a/deps/npm/tap-snapshots/test/lib/utils/validate-lockfile.js.test.cjs b/deps/npm/tap-snapshots/test/lib/utils/validate-lockfile.js.test.cjs
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..98a5126
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/deps/npm/tap-snapshots/test/lib/utils/validate-lockfile.js.test.cjs
|
|
||||||
@@ -0,0 +1,35 @@
|
|
||||||
+/* IMPORTANT
|
|
||||||
+ * This snapshot file is auto-generated, but designed for humans.
|
|
||||||
+ * It should be checked into source control and tracked carefully.
|
|
||||||
+ * Re-generate by setting TAP_SNAPSHOT=1 and running tests.
|
|
||||||
+ * Make sure to inspect the output below. Do not ignore changes!
|
|
||||||
+ */
|
|
||||||
+'use strict'
|
|
||||||
+exports[`test/lib/utils/validate-lockfile.js TAP extra inventory items on idealTree > should have missing entries error 1`] = `
|
|
||||||
+Array [
|
|
||||||
+ "Missing: baz@3.0.0 from lock file",
|
|
||||||
+]
|
|
||||||
+`
|
|
||||||
+
|
|
||||||
+exports[`test/lib/utils/validate-lockfile.js TAP extra inventory items on virtualTree > should have no errors if finding virtualTree extra items 1`] = `
|
|
||||||
+Array []
|
|
||||||
+`
|
|
||||||
+
|
|
||||||
+exports[`test/lib/utils/validate-lockfile.js TAP identical inventory for both idealTree and virtualTree > should have no errors on identical inventories 1`] = `
|
|
||||||
+Array []
|
|
||||||
+`
|
|
||||||
+
|
|
||||||
+exports[`test/lib/utils/validate-lockfile.js TAP mismatching versions on inventory > should have errors for each mismatching version 1`] = `
|
|
||||||
+Array [
|
|
||||||
+ "Invalid: lock file's foo@1.0.0 does not satisfy foo@2.0.0",
|
|
||||||
+ "Invalid: lock file's bar@2.0.0 does not satisfy bar@3.0.0",
|
|
||||||
+]
|
|
||||||
+`
|
|
||||||
+
|
|
||||||
+exports[`test/lib/utils/validate-lockfile.js TAP missing virtualTree inventory > should have errors for each mismatching version 1`] = `
|
|
||||||
+Array [
|
|
||||||
+ "Missing: foo@1.0.0 from lock file",
|
|
||||||
+ "Missing: bar@2.0.0 from lock file",
|
|
||||||
+ "Missing: baz@3.0.0 from lock file",
|
|
||||||
+]
|
|
||||||
+`
|
|
||||||
diff --git a/deps/npm/test/lib/commands/ci.js b/deps/npm/test/lib/commands/ci.js
|
|
||||||
index 537d078..e077c99 100644
|
|
||||||
--- a/deps/npm/test/lib/commands/ci.js
|
|
||||||
+++ b/deps/npm/test/lib/commands/ci.js
|
|
||||||
@@ -19,6 +19,17 @@ t.test('should ignore scripts with --ignore-scripts', async t => {
|
|
||||||
this.reify = () => {
|
|
||||||
REIFY_CALLED = true
|
|
||||||
}
|
|
||||||
+ this.buildIdealTree = () => {}
|
|
||||||
+ this.virtualTree = {
|
|
||||||
+ inventory: new Map([
|
|
||||||
+ ['foo', { name: 'foo', version: '1.0.0' }],
|
|
||||||
+ ]),
|
|
||||||
+ }
|
|
||||||
+ this.idealTree = {
|
|
||||||
+ inventory: new Map([
|
|
||||||
+ ['foo', { name: 'foo', version: '1.0.0' }],
|
|
||||||
+ ]),
|
|
||||||
+ }
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
@@ -99,6 +110,17 @@ t.test('should use Arborist and run-script', async t => {
|
|
||||||
this.reify = () => {
|
|
||||||
t.ok(true, 'reify is called')
|
|
||||||
}
|
|
||||||
+ this.buildIdealTree = () => {}
|
|
||||||
+ this.virtualTree = {
|
|
||||||
+ inventory: new Map([
|
|
||||||
+ ['foo', { name: 'foo', version: '1.0.0' }],
|
|
||||||
+ ]),
|
|
||||||
+ }
|
|
||||||
+ this.idealTree = {
|
|
||||||
+ inventory: new Map([
|
|
||||||
+ ['foo', { name: 'foo', version: '1.0.0' }],
|
|
||||||
+ ]),
|
|
||||||
+ }
|
|
||||||
},
|
|
||||||
rimraf: (path, ...args) => {
|
|
||||||
actualRimrafs++
|
|
||||||
@@ -138,6 +160,17 @@ t.test('should pass flatOptions to Arborist.reify', async t => {
|
|
||||||
this.reify = async (options) => {
|
|
||||||
t.equal(options.production, true, 'should pass flatOptions to Arborist.reify')
|
|
||||||
}
|
|
||||||
+ this.buildIdealTree = () => {}
|
|
||||||
+ this.virtualTree = {
|
|
||||||
+ inventory: new Map([
|
|
||||||
+ ['foo', { name: 'foo', version: '1.0.0' }],
|
|
||||||
+ ]),
|
|
||||||
+ }
|
|
||||||
+ this.idealTree = {
|
|
||||||
+ inventory: new Map([
|
|
||||||
+ ['foo', { name: 'foo', version: '1.0.0' }],
|
|
||||||
+ ]),
|
|
||||||
+ }
|
|
||||||
},
|
|
||||||
})
|
|
||||||
const npm = mockNpm({
|
|
||||||
@@ -218,6 +251,17 @@ t.test('should remove existing node_modules before installing', async t => {
|
|
||||||
const nodeModules = contents.filter((path) => path.startsWith('node_modules'))
|
|
||||||
t.same(nodeModules, ['node_modules'], 'should only have the node_modules directory')
|
|
||||||
}
|
|
||||||
+ this.buildIdealTree = () => {}
|
|
||||||
+ this.virtualTree = {
|
|
||||||
+ inventory: new Map([
|
|
||||||
+ ['foo', { name: 'foo', version: '1.0.0' }],
|
|
||||||
+ ]),
|
|
||||||
+ }
|
|
||||||
+ this.idealTree = {
|
|
||||||
+ inventory: new Map([
|
|
||||||
+ ['foo', { name: 'foo', version: '1.0.0' }],
|
|
||||||
+ ]),
|
|
||||||
+ }
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
@@ -231,3 +275,41 @@ t.test('should remove existing node_modules before installing', async t => {
|
|
||||||
|
|
||||||
await ci.exec(null)
|
|
||||||
})
|
|
||||||
+
|
|
||||||
+t.test('should throw error when ideal inventory mismatches virtual', async t => {
|
|
||||||
+ const CI = t.mock('../../../lib/commands/ci.js', {
|
|
||||||
+ '../../../lib/utils/reify-finish.js': async () => {},
|
|
||||||
+ '@npmcli/run-script': ({ event }) => {},
|
|
||||||
+ '@npmcli/arborist': function () {
|
|
||||||
+ this.loadVirtual = async () => {}
|
|
||||||
+ this.reify = () => {}
|
|
||||||
+ this.buildIdealTree = () => {}
|
|
||||||
+ this.virtualTree = {
|
|
||||||
+ inventory: new Map([
|
|
||||||
+ ['foo', { name: 'foo', version: '1.0.0' }],
|
|
||||||
+ ]),
|
|
||||||
+ }
|
|
||||||
+ this.idealTree = {
|
|
||||||
+ inventory: new Map([
|
|
||||||
+ ['foo', { name: 'foo', version: '2.0.0' }],
|
|
||||||
+ ]),
|
|
||||||
+ }
|
|
||||||
+ },
|
|
||||||
+ })
|
|
||||||
+
|
|
||||||
+ const npm = mockNpm({
|
|
||||||
+ globalDir: 'path/to/node_modules/',
|
|
||||||
+ prefix: 'foo',
|
|
||||||
+ config: {
|
|
||||||
+ global: false,
|
|
||||||
+ 'ignore-scripts': true,
|
|
||||||
+ },
|
|
||||||
+ })
|
|
||||||
+ const ci = new CI(npm)
|
|
||||||
+
|
|
||||||
+ try {
|
|
||||||
+ await ci.exec([])
|
|
||||||
+ } catch (err) {
|
|
||||||
+ t.matchSnapshot(err.message)
|
|
||||||
+ }
|
|
||||||
+})
|
|
||||||
diff --git a/deps/npm/test/lib/utils/validate-lockfile.js b/deps/npm/test/lib/utils/validate-lockfile.js
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..25939c5
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/deps/npm/test/lib/utils/validate-lockfile.js
|
|
||||||
@@ -0,0 +1,82 @@
|
|
||||||
+const t = require('tap')
|
|
||||||
+const validateLockfile = require('../../../lib/utils/validate-lockfile.js')
|
|
||||||
+
|
|
||||||
+t.test('identical inventory for both idealTree and virtualTree', async t => {
|
|
||||||
+ t.matchSnapshot(
|
|
||||||
+ validateLockfile(
|
|
||||||
+ new Map([
|
|
||||||
+ ['foo', { name: 'foo', version: '1.0.0' }],
|
|
||||||
+ ['bar', { name: 'bar', version: '2.0.0' }],
|
|
||||||
+ ]),
|
|
||||||
+ new Map([
|
|
||||||
+ ['foo', { name: 'foo', version: '1.0.0' }],
|
|
||||||
+ ['bar', { name: 'bar', version: '2.0.0' }],
|
|
||||||
+ ])
|
|
||||||
+ ),
|
|
||||||
+ 'should have no errors on identical inventories'
|
|
||||||
+ )
|
|
||||||
+})
|
|
||||||
+
|
|
||||||
+t.test('extra inventory items on idealTree', async t => {
|
|
||||||
+ t.matchSnapshot(
|
|
||||||
+ validateLockfile(
|
|
||||||
+ new Map([
|
|
||||||
+ ['foo', { name: 'foo', version: '1.0.0' }],
|
|
||||||
+ ['bar', { name: 'bar', version: '2.0.0' }],
|
|
||||||
+ ]),
|
|
||||||
+ new Map([
|
|
||||||
+ ['foo', { name: 'foo', version: '1.0.0' }],
|
|
||||||
+ ['bar', { name: 'bar', version: '2.0.0' }],
|
|
||||||
+ ['baz', { name: 'baz', version: '3.0.0' }],
|
|
||||||
+ ])
|
|
||||||
+ ),
|
|
||||||
+ 'should have missing entries error'
|
|
||||||
+ )
|
|
||||||
+})
|
|
||||||
+
|
|
||||||
+t.test('extra inventory items on virtualTree', async t => {
|
|
||||||
+ t.matchSnapshot(
|
|
||||||
+ validateLockfile(
|
|
||||||
+ new Map([
|
|
||||||
+ ['foo', { name: 'foo', version: '1.0.0' }],
|
|
||||||
+ ['bar', { name: 'bar', version: '2.0.0' }],
|
|
||||||
+ ['baz', { name: 'baz', version: '3.0.0' }],
|
|
||||||
+ ]),
|
|
||||||
+ new Map([
|
|
||||||
+ ['foo', { name: 'foo', version: '1.0.0' }],
|
|
||||||
+ ['bar', { name: 'bar', version: '2.0.0' }],
|
|
||||||
+ ])
|
|
||||||
+ ),
|
|
||||||
+ 'should have no errors if finding virtualTree extra items'
|
|
||||||
+ )
|
|
||||||
+})
|
|
||||||
+
|
|
||||||
+t.test('mismatching versions on inventory', async t => {
|
|
||||||
+ t.matchSnapshot(
|
|
||||||
+ validateLockfile(
|
|
||||||
+ new Map([
|
|
||||||
+ ['foo', { name: 'foo', version: '1.0.0' }],
|
|
||||||
+ ['bar', { name: 'bar', version: '2.0.0' }],
|
|
||||||
+ ]),
|
|
||||||
+ new Map([
|
|
||||||
+ ['foo', { name: 'foo', version: '2.0.0' }],
|
|
||||||
+ ['bar', { name: 'bar', version: '3.0.0' }],
|
|
||||||
+ ])
|
|
||||||
+ ),
|
|
||||||
+ 'should have errors for each mismatching version'
|
|
||||||
+ )
|
|
||||||
+})
|
|
||||||
+
|
|
||||||
+t.test('missing virtualTree inventory', async t => {
|
|
||||||
+ t.matchSnapshot(
|
|
||||||
+ validateLockfile(
|
|
||||||
+ new Map([]),
|
|
||||||
+ new Map([
|
|
||||||
+ ['foo', { name: 'foo', version: '1.0.0' }],
|
|
||||||
+ ['bar', { name: 'bar', version: '2.0.0' }],
|
|
||||||
+ ['baz', { name: 'baz', version: '3.0.0' }],
|
|
||||||
+ ])
|
|
||||||
+ ),
|
|
||||||
+ 'should have errors for each mismatching version'
|
|
||||||
+ )
|
|
||||||
+})
|
|
||||||
--
|
|
||||||
2.35.1
|
|
||||||
|
|
@ -1,92 +0,0 @@
|
|||||||
From d4d05ceb418c525b0d07e76b81b8694ac2f5b309 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Daniel Bevenius <daniel.bevenius@gmail.com>
|
|
||||||
Date: Wed, 16 Sep 2020 06:12:54 +0200
|
|
||||||
Subject: [PATCH] [deps] V8: cherry-pick 71736859756b2bd0444bdb0a87a
|
|
||||||
|
|
||||||
Original commit message:
|
|
||||||
|
|
||||||
[heap] Add large_object_threshold to AllocateRaw
|
|
||||||
|
|
||||||
This commit adds a check in Heap::AllocateRaw when setting the
|
|
||||||
large_object variable, when the AllocationType is of type kCode, to
|
|
||||||
take into account the size of the CodeSpace's area size.
|
|
||||||
|
|
||||||
The motivation for this change is that without this check it is
|
|
||||||
possible that size_in_bytes is less than 128, and hence not considered
|
|
||||||
a large object, but it might be larger than the available space
|
|
||||||
in code_space->AreaSize(), which will cause the object to be created
|
|
||||||
in the CodeLargeObjectSpace. This will later cause a segmentation fault
|
|
||||||
when calling the following chain of functions:
|
|
||||||
|
|
||||||
if (!large_object) {
|
|
||||||
MemoryChunk::FromHeapObject(heap_object)
|
|
||||||
->GetCodeObjectRegistry()
|
|
||||||
->RegisterNewlyAllocatedCodeObject(heap_object.address());
|
|
||||||
}
|
|
||||||
|
|
||||||
We (Red Hat) ran into this issue when running Node.js v12.16.1 in
|
|
||||||
combination with yarn on aarch64 (this was the only architecture that
|
|
||||||
this happed on).
|
|
||||||
|
|
||||||
Bug: v8:10808
|
|
||||||
Change-Id: I0c396b0eb64bc4cc91d9a3be521254f3130eac7b
|
|
||||||
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2390665
|
|
||||||
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
|
|
||||||
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
|
|
||||||
Cr-Commit-Position: refs/heads/master@{#69876}
|
|
||||||
|
|
||||||
Refs: https://github.com/v8/v8/commit/71736859756b2bd0444bdb0a87a61a0b090cbba2
|
|
||||||
---
|
|
||||||
deps/v8/src/heap/heap-inl.h | 13 +++--
|
|
||||||
deps/v8/src/heap/heap.h | 6 ++-
|
|
||||||
4 files changed, 83 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/deps/v8/src/heap/heap-inl.h b/deps/v8/src/heap/heap-inl.h
|
|
||||||
index 39f5ec6c66e..b56ebc03d58 100644
|
|
||||||
--- a/deps/v8/src/heap/heap-inl.h
|
|
||||||
+++ b/deps/v8/src/heap/heap-inl.h
|
|
||||||
@@ -192,7 +192,12 @@ AllocationResult Heap::AllocateRaw(int size_in_bytes, AllocationType type,
|
|
||||||
IncrementObjectCounters();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
- bool large_object = size_in_bytes > kMaxRegularHeapObjectSize;
|
|
||||||
+ size_t large_object_threshold =
|
|
||||||
+ AllocationType::kCode == type
|
|
||||||
+ ? std::min(kMaxRegularHeapObjectSize, code_space()->AreaSize())
|
|
||||||
+ : kMaxRegularHeapObjectSize;
|
|
||||||
+ bool large_object =
|
|
||||||
+ static_cast<size_t>(size_in_bytes) > large_object_threshold;
|
|
||||||
|
|
||||||
HeapObject object;
|
|
||||||
AllocationResult allocation;
|
|
||||||
@@ -225,10 +230,10 @@ AllocationResult Heap::AllocateRaw(int size_in_bytes, AllocationType type,
|
|
||||||
allocation = old_space_->AllocateRaw(size_in_bytes, alignment, origin);
|
|
||||||
}
|
|
||||||
} else if (AllocationType::kCode == type) {
|
|
||||||
- if (size_in_bytes <= code_space()->AreaSize() && !large_object) {
|
|
||||||
- allocation = code_space_->AllocateRawUnaligned(size_in_bytes);
|
|
||||||
- } else {
|
|
||||||
+ if (large_object) {
|
|
||||||
allocation = code_lo_space_->AllocateRaw(size_in_bytes);
|
|
||||||
+ } else {
|
|
||||||
+ allocation = code_space_->AllocateRawUnaligned(size_in_bytes);
|
|
||||||
}
|
|
||||||
} else if (AllocationType::kMap == type) {
|
|
||||||
allocation = map_space_->AllocateRawUnaligned(size_in_bytes);
|
|
||||||
diff --git a/deps/v8/src/heap/heap.h b/deps/v8/src/heap/heap.h
|
|
||||||
index 888d174c02f..0165fa6970f 100644
|
|
||||||
--- a/deps/v8/src/heap/heap.h
|
|
||||||
+++ b/deps/v8/src/heap/heap.h
|
|
||||||
@@ -1404,8 +1404,10 @@ class Heap {
|
|
||||||
// Heap object allocation tracking. ==========================================
|
|
||||||
// ===========================================================================
|
|
||||||
|
|
||||||
- void AddHeapObjectAllocationTracker(HeapObjectAllocationTracker* tracker);
|
|
||||||
- void RemoveHeapObjectAllocationTracker(HeapObjectAllocationTracker* tracker);
|
|
||||||
+ V8_EXPORT_PRIVATE void AddHeapObjectAllocationTracker(
|
|
||||||
+ HeapObjectAllocationTracker* tracker);
|
|
||||||
+ V8_EXPORT_PRIVATE void RemoveHeapObjectAllocationTracker(
|
|
||||||
+ HeapObjectAllocationTracker* tracker);
|
|
||||||
bool has_heap_object_allocation_tracker() const {
|
|
||||||
return !allocation_trackers_.empty();
|
|
||||||
}
|
|
36
nodejs.spec
36
nodejs.spec
@ -30,7 +30,7 @@
|
|||||||
# This is used by both the nodejs package and the npm subpackage that
|
# This is used by both the nodejs package and the npm subpackage that
|
||||||
# has a separate version - the name is special so that rpmdev-bumpspec
|
# has a separate version - the name is special so that rpmdev-bumpspec
|
||||||
# will bump this rather than adding .1 to the end.
|
# will bump this rather than adding .1 to the end.
|
||||||
%global baserelease 5
|
%global baserelease 1
|
||||||
|
|
||||||
%{?!_pkgdocdir:%global _pkgdocdir %{_docdir}/%{name}-%{version}}
|
%{?!_pkgdocdir:%global _pkgdocdir %{_docdir}/%{name}-%{version}}
|
||||||
|
|
||||||
@ -40,12 +40,12 @@
|
|||||||
# feature releases that are only supported for nine months, which is shorter
|
# feature releases that are only supported for nine months, which is shorter
|
||||||
# than a Fedora release lifecycle.
|
# than a Fedora release lifecycle.
|
||||||
%global nodejs_epoch 1
|
%global nodejs_epoch 1
|
||||||
%global nodejs_major 16
|
%global nodejs_major 18
|
||||||
%global nodejs_minor 14
|
%global nodejs_minor 2
|
||||||
%global nodejs_patch 0
|
%global nodejs_patch 0
|
||||||
%global nodejs_abi %{nodejs_major}.%{nodejs_minor}
|
%global nodejs_abi %{nodejs_major}.%{nodejs_minor}
|
||||||
# nodejs_soversion - from NODE_MODULE_VERSION in src/node_version.h
|
# nodejs_soversion - from NODE_MODULE_VERSION in src/node_version.h
|
||||||
%global nodejs_soversion 93
|
%global nodejs_soversion 108
|
||||||
%global nodejs_version %{nodejs_major}.%{nodejs_minor}.%{nodejs_patch}
|
%global nodejs_version %{nodejs_major}.%{nodejs_minor}.%{nodejs_patch}
|
||||||
%global nodejs_release %{baserelease}
|
%global nodejs_release %{baserelease}
|
||||||
|
|
||||||
@ -55,10 +55,10 @@
|
|||||||
# v8 - from deps/v8/include/v8-version.h
|
# v8 - from deps/v8/include/v8-version.h
|
||||||
# Epoch is set to ensure clean upgrades from the old v8 package
|
# Epoch is set to ensure clean upgrades from the old v8 package
|
||||||
%global v8_epoch 2
|
%global v8_epoch 2
|
||||||
%global v8_major 9
|
%global v8_major 10
|
||||||
%global v8_minor 4
|
%global v8_minor 1
|
||||||
%global v8_build 146
|
%global v8_build 124
|
||||||
%global v8_patch 24
|
%global v8_patch 8
|
||||||
# V8 presently breaks ABI at least every x.y release while never bumping SONAME
|
# V8 presently breaks ABI at least every x.y release while never bumping SONAME
|
||||||
%global v8_abi %{v8_major}.%{v8_minor}
|
%global v8_abi %{v8_major}.%{v8_minor}
|
||||||
%global v8_version %{v8_major}.%{v8_minor}.%{v8_build}.%{v8_patch}
|
%global v8_version %{v8_major}.%{v8_minor}.%{v8_build}.%{v8_patch}
|
||||||
@ -74,7 +74,7 @@
|
|||||||
# llhttp - from deps/llhttp/include/llhttp.h
|
# llhttp - from deps/llhttp/include/llhttp.h
|
||||||
%global llhttp_major 6
|
%global llhttp_major 6
|
||||||
%global llhttp_minor 0
|
%global llhttp_minor 0
|
||||||
%global llhttp_patch 4
|
%global llhttp_patch 6
|
||||||
%global llhttp_version %{llhttp_major}.%{llhttp_minor}.%{llhttp_patch}
|
%global llhttp_version %{llhttp_major}.%{llhttp_minor}.%{llhttp_patch}
|
||||||
|
|
||||||
# libuv - from deps/uv/include/uv/version.h
|
# libuv - from deps/uv/include/uv/version.h
|
||||||
@ -85,8 +85,8 @@
|
|||||||
|
|
||||||
# nghttp2 - from deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h
|
# nghttp2 - from deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h
|
||||||
%global nghttp2_major 1
|
%global nghttp2_major 1
|
||||||
%global nghttp2_minor 45
|
%global nghttp2_minor 47
|
||||||
%global nghttp2_patch 1
|
%global nghttp2_patch 0
|
||||||
%global nghttp2_version %{nghttp2_major}.%{nghttp2_minor}.%{nghttp2_patch}
|
%global nghttp2_version %{nghttp2_major}.%{nghttp2_minor}.%{nghttp2_patch}
|
||||||
|
|
||||||
# nghttp3 - from deps/ngtcp2/nghttp3/lib/includes/nghttp3/version.h
|
# nghttp3 - from deps/ngtcp2/nghttp3/lib/includes/nghttp3/version.h
|
||||||
@ -102,7 +102,7 @@
|
|||||||
%global ngtcp2_version %{ngtcp2_major}.%{ngtcp2_minor}.%{ngtcp2_patch}
|
%global ngtcp2_version %{ngtcp2_major}.%{ngtcp2_minor}.%{ngtcp2_patch}
|
||||||
|
|
||||||
# ICU - from tools/icu/current_ver.dep
|
# ICU - from tools/icu/current_ver.dep
|
||||||
%global icu_major 70
|
%global icu_major 71
|
||||||
%global icu_minor 1
|
%global icu_minor 1
|
||||||
%global icu_version %{icu_major}.%{icu_minor}
|
%global icu_version %{icu_major}.%{icu_minor}
|
||||||
|
|
||||||
@ -134,8 +134,8 @@
|
|||||||
# npm - from deps/npm/package.json
|
# npm - from deps/npm/package.json
|
||||||
%global npm_epoch 1
|
%global npm_epoch 1
|
||||||
%global npm_major 8
|
%global npm_major 8
|
||||||
%global npm_minor 3
|
%global npm_minor 9
|
||||||
%global npm_patch 1
|
%global npm_patch 0
|
||||||
%global npm_version %{npm_major}.%{npm_minor}.%{npm_patch}
|
%global npm_version %{npm_major}.%{npm_minor}.%{npm_patch}
|
||||||
|
|
||||||
# uvwasi - from deps/uvwasi/include/uvwasi.h
|
# uvwasi - from deps/uvwasi/include/uvwasi.h
|
||||||
@ -187,9 +187,6 @@ Source7: nodejs_native.attr
|
|||||||
# Disable running gyp on bundled deps we don't use
|
# Disable running gyp on bundled deps we don't use
|
||||||
Patch1: 0001-Disable-running-gyp-on-shared-deps.patch
|
Patch1: 0001-Disable-running-gyp-on-shared-deps.patch
|
||||||
|
|
||||||
# CVE-2021-43616
|
|
||||||
Patch2: 0001-fix-ci-lock-file-validation.patch
|
|
||||||
|
|
||||||
BuildRequires: make
|
BuildRequires: make
|
||||||
BuildRequires: python3-devel
|
BuildRequires: python3-devel
|
||||||
BuildRequires: zlib-devel
|
BuildRequires: zlib-devel
|
||||||
@ -406,7 +403,7 @@ extra_cflags=(
|
|||||||
export CFLAGS="%{optflags} ${extra_cflags[*]}" CXXFLAGS="%{optflags} ${extra_cflags[*]}"
|
export CFLAGS="%{optflags} ${extra_cflags[*]}" CXXFLAGS="%{optflags} ${extra_cflags[*]}"
|
||||||
export LDFLAGS="%{build_ldflags}"
|
export LDFLAGS="%{build_ldflags}"
|
||||||
|
|
||||||
%{__python3} configure.py --prefix=%{_prefix} \
|
%{__python3} configure.py --prefix=%{_prefix} --verbose \
|
||||||
--shared-openssl \
|
--shared-openssl \
|
||||||
--shared-zlib \
|
--shared-zlib \
|
||||||
--shared-brotli \
|
--shared-brotli \
|
||||||
@ -695,6 +692,9 @@ end
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue May 31 2022 Jan Staněk <jstanek@redhat.com> - 1:18.2.0-1
|
||||||
|
- Rebase to version 18.2.0
|
||||||
|
|
||||||
* Mon Apr 25 2022 Jan Staněk <jstanek@redhat.com> - 1:16.14.0-5
|
* Mon Apr 25 2022 Jan Staněk <jstanek@redhat.com> - 1:16.14.0-5
|
||||||
- Unify configure calls into single command
|
- Unify configure calls into single command
|
||||||
- Refactor bootstrap-related parts
|
- Refactor bootstrap-related parts
|
||||||
|
4
sources
4
sources
@ -1,2 +1,2 @@
|
|||||||
SHA512 (node-v16.14.0-stripped.tar.gz) = 5227f488e703b458ab299fce87821810f4b6f08192d7985c6643b5d6ab9457619b29847ff17a5cc31ffa3bdf48cc8baa4c88f2641327ba1b1f58cfc3c7336031
|
SHA512 (node-v18.2.0-stripped.tar.gz) = c51881ae16d950a8a9f3e123b8901937b0152e81128a51645cdc07408a076cc4212883a408b3e88de91bfa30d6d2dc327a1f7b842e4b78f62defb13d78d4d08b
|
||||||
SHA512 (icu4c-70_1-src.tgz) = 0b26ae7207155cb65a8fdb25f7b2fa4431e74b12bccbed0884a17feaae3c96833d12451064dd152197fd6ea5fd3adfd95594284a463e66c82e0d860f645880c9
|
SHA512 (icu4c-71_1-src.tgz) = 1fd2a20aef48369d1f06e2bb74584877b8ad0eb529320b976264ec2db87420bae242715795f372dbc513ea80047bc49077a064e78205cd5e8b33d746fd2a2912
|
||||||
|
Loading…
Reference in New Issue
Block a user