Message ID | 20220913153428.1610984-1-Martin.Jansa@gmail.com |
---|---|
State | Under Review |
Delegated to: | Armin Kuster |
Headers | show |
Series | [meta-oe,kirkstone] nodejs-oe-cache-native: initial checkin | expand |
On 9/13/22 11:34, Martin Jansa wrote: > From: Enrico Scholz <enrico.scholz@sigma-chemnitz.de> > > This implements an 'npm cache add' like functionality but allows to > specify the key of the data and sets metadata which are required to > find the data. > > It is used to cache information as done during 'npm install'. > > Keyformat and metadata are nodejs version specific. Isn't this adding a new recipe to a Stable branch? - armin > > Signed-off-by: Enrico Scholz <enrico.scholz@sigma-chemnitz.de> > Signed-off-by: Khem Raj <raj.khem@gmail.com> > --- > .../nodejs/nodejs-oe-cache-16.14/oe-npm-cache | 77 +++++++++++++++++++ > .../nodejs/nodejs-oe-cache-native_16.14.bb | 21 +++++ > 2 files changed, 98 insertions(+) > create mode 100755 meta-oe/recipes-devtools/nodejs/nodejs-oe-cache-16.14/oe-npm-cache > create mode 100644 meta-oe/recipes-devtools/nodejs/nodejs-oe-cache-native_16.14.bb > > diff --git a/meta-oe/recipes-devtools/nodejs/nodejs-oe-cache-16.14/oe-npm-cache b/meta-oe/recipes-devtools/nodejs/nodejs-oe-cache-16.14/oe-npm-cache > new file mode 100755 > index 0000000000..f596207648 > --- /dev/null > +++ b/meta-oe/recipes-devtools/nodejs/nodejs-oe-cache-16.14/oe-npm-cache > @@ -0,0 +1,77 @@ > +#!/usr/bin/env node > + > +/// Usage: oe-npm-cache <cache-dir> <type> <key> <file-name> > +/// <type> ... meta - metainformation about package > +/// tgz - tarball > + > +const process = require("node:process"); > + > +module.paths.unshift("@@libdir@@/node_modules/npm/node_modules"); > + > +const cacache = require('cacache') > +const fs = require('fs') > + > +// argv[0] is 'node', argv[1] is this script > +const cache_dir = process.argv[2] > +const type = process.argv[3] > +const key = process.argv[4] > +const file = process.argv[5] > + > +const data = fs.readFileSync(file) > + > +// metadata content is highly nodejs dependent; when cache entries are not > +// found, place debug statements in 'make-fetch-happen/lib/cache/policy.js' > +// (CachePolicy::satisfies()) > +const xlate = { > + 'meta': { > + 'key_prefix': 'make-fetch-happen:request-cache:', > + 'metadata': function() { > + return { > + time: Date.now(), > + url: key, > + reqHeaders: { > + 'accept': 'application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*', > + }, > + resHeaders: { > + "content-type": "application/json", > + "status": 200, > + }, > + options: { > + compress: true, > + } > + }; > + }, > + }, > + > + 'tgz': { > + 'key_prefix': 'make-fetch-happen:request-cache:', > + 'metadata': function() { > + return { > + time: Date.now(), > + url: key, > + reqHeaders: { > + 'accept': '*/*', > + }, > + resHeaders: { > + "content-type": "application/octet-stream", > + "status": 200, > + }, > + options: { > + compress: true, > + }, > + }; > + }, > + }, > +}; > + > +const info = xlate[type]; > +let opts = {} > + > +if (info.metadata) { > + opts['metadata'] = info.metadata(); > +} > + > +cacache.put(cache_dir, info.key_prefix + key, data, opts) > + .then(integrity => { > + console.log(`Saved content of ${key} (${file}).`); > +}) > diff --git a/meta-oe/recipes-devtools/nodejs/nodejs-oe-cache-native_16.14.bb b/meta-oe/recipes-devtools/nodejs/nodejs-oe-cache-native_16.14.bb > new file mode 100644 > index 0000000000..a61dd5018f > --- /dev/null > +++ b/meta-oe/recipes-devtools/nodejs/nodejs-oe-cache-native_16.14.bb > @@ -0,0 +1,21 @@ > +DESCRIPTION = "OE helper for manipulating npm cache" > +LICENSE = "Apache-2.0" > +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" > + > +SRC_URI = "\ > + file://oe-npm-cache \ > +" > + > +inherit native > + > +B = "${WORKDIR}/build" > + > +do_configure() { > + sed -e 's!@@libdir@@!${libdir}!g' < '${WORKDIR}/oe-npm-cache' > '${B}/oe-npm-cache' > +} > + > +do_install() { > + install -D -p -m 0755 ${B}/oe-npm-cache ${D}${bindir}/oe-npm-cache > +} > + > +RDEPENDS:${PN} = "nodejs-native" > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#98787): https://lists.openembedded.org/g/openembedded-devel/message/98787 > Mute This Topic: https://lists.openembedded.org/mt/93657958/3616698 > Group Owner: openembedded-devel+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [akuster808@gmail.com] > -=-=-=-=-=-=-=-=-=-=-=- >
oe-core kirkstone already added the dependency on it, so I guess it justifies the exception On Wed, Sep 14, 2022 at 10:19 PM akuster808 <akuster808@gmail.com> wrote: > > > On 9/13/22 11:34, Martin Jansa wrote: > > From: Enrico Scholz <enrico.scholz@sigma-chemnitz.de> > > > > This implements an 'npm cache add' like functionality but allows to > > specify the key of the data and sets metadata which are required to > > find the data. > > > > It is used to cache information as done during 'npm install'. > > > > Keyformat and metadata are nodejs version specific. > > Isn't this adding a new recipe to a Stable branch? > > - armin > > > > Signed-off-by: Enrico Scholz <enrico.scholz@sigma-chemnitz.de> > > Signed-off-by: Khem Raj <raj.khem@gmail.com> > > --- > > .../nodejs/nodejs-oe-cache-16.14/oe-npm-cache | 77 +++++++++++++++++++ > > .../nodejs/nodejs-oe-cache-native_16.14.bb | 21 +++++ > > 2 files changed, 98 insertions(+) > > create mode 100755 > meta-oe/recipes-devtools/nodejs/nodejs-oe-cache-16.14/oe-npm-cache > > create mode 100644 meta-oe/recipes-devtools/nodejs/ > nodejs-oe-cache-native_16.14.bb > > > > diff --git > a/meta-oe/recipes-devtools/nodejs/nodejs-oe-cache-16.14/oe-npm-cache > b/meta-oe/recipes-devtools/nodejs/nodejs-oe-cache-16.14/oe-npm-cache > > new file mode 100755 > > index 0000000000..f596207648 > > --- /dev/null > > +++ b/meta-oe/recipes-devtools/nodejs/nodejs-oe-cache-16.14/oe-npm-cache > > @@ -0,0 +1,77 @@ > > +#!/usr/bin/env node > > + > > +/// Usage: oe-npm-cache <cache-dir> <type> <key> <file-name> > > +/// <type> ... meta - metainformation about package > > +/// tgz - tarball > > + > > +const process = require("node:process"); > > + > > +module.paths.unshift("@@libdir@@/node_modules/npm/node_modules"); > > + > > +const cacache = require('cacache') > > +const fs = require('fs') > > + > > +// argv[0] is 'node', argv[1] is this script > > +const cache_dir = process.argv[2] > > +const type = process.argv[3] > > +const key = process.argv[4] > > +const file = process.argv[5] > > + > > +const data = fs.readFileSync(file) > > + > > +// metadata content is highly nodejs dependent; when cache entries are > not > > +// found, place debug statements in > 'make-fetch-happen/lib/cache/policy.js' > > +// (CachePolicy::satisfies()) > > +const xlate = { > > + 'meta': { > > + 'key_prefix': 'make-fetch-happen:request-cache:', > > + 'metadata': function() { > > + return { > > + time: Date.now(), > > + url: key, > > + reqHeaders: { > > + 'accept': 'application/vnd.npm.install-v1+json; q=1.0, > application/json; q=0.8, */*', > > + }, > > + resHeaders: { > > + "content-type": "application/json", > > + "status": 200, > > + }, > > + options: { > > + compress: true, > > + } > > + }; > > + }, > > + }, > > + > > + 'tgz': { > > + 'key_prefix': 'make-fetch-happen:request-cache:', > > + 'metadata': function() { > > + return { > > + time: Date.now(), > > + url: key, > > + reqHeaders: { > > + 'accept': '*/*', > > + }, > > + resHeaders: { > > + "content-type": "application/octet-stream", > > + "status": 200, > > + }, > > + options: { > > + compress: true, > > + }, > > + }; > > + }, > > + }, > > +}; > > + > > +const info = xlate[type]; > > +let opts = {} > > + > > +if (info.metadata) { > > + opts['metadata'] = info.metadata(); > > +} > > + > > +cacache.put(cache_dir, info.key_prefix + key, data, opts) > > + .then(integrity => { > > + console.log(`Saved content of ${key} (${file}).`); > > +}) > > diff --git a/meta-oe/recipes-devtools/nodejs/ > nodejs-oe-cache-native_16.14.bb b/meta-oe/recipes-devtools/nodejs/ > nodejs-oe-cache-native_16.14.bb > > new file mode 100644 > > index 0000000000..a61dd5018f > > --- /dev/null > > +++ b/meta-oe/recipes-devtools/nodejs/nodejs-oe-cache-native_16.14.bb > > @@ -0,0 +1,21 @@ > > +DESCRIPTION = "OE helper for manipulating npm cache" > > +LICENSE = "Apache-2.0" > > +LIC_FILES_CHKSUM = > "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" > > + > > +SRC_URI = "\ > > + file://oe-npm-cache \ > > +" > > + > > +inherit native > > + > > +B = "${WORKDIR}/build" > > + > > +do_configure() { > > + sed -e 's!@@libdir@@!${libdir}!g' < '${WORKDIR}/oe-npm-cache' > > '${B}/oe-npm-cache' > > +} > > + > > +do_install() { > > + install -D -p -m 0755 ${B}/oe-npm-cache ${D}${bindir}/oe-npm-cache > > +} > > + > > +RDEPENDS:${PN} = "nodejs-native" > > > > -=-=-=-=-=-=-=-=-=-=-=- > > Links: You receive all messages sent to this group. > > View/Reply Online (#98787): > https://lists.openembedded.org/g/openembedded-devel/message/98787 > > Mute This Topic: https://lists.openembedded.org/mt/93657958/3616698 > > Group Owner: openembedded-devel+owner@lists.openembedded.org > > Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [ > akuster808@gmail.com] > > -=-=-=-=-=-=-=-=-=-=-=- > > > >
On Wed, Sep 14, 2022 at 11:18 PM Martin Jansa <martin.jansa@gmail.com> wrote: > > oe-core kirkstone already added the dependency on it, so I guess it justifies the exception > agreed > On Wed, Sep 14, 2022 at 10:19 PM akuster808 <akuster808@gmail.com> wrote: >> >> >> >> On 9/13/22 11:34, Martin Jansa wrote: >> > From: Enrico Scholz <enrico.scholz@sigma-chemnitz.de> >> > >> > This implements an 'npm cache add' like functionality but allows to >> > specify the key of the data and sets metadata which are required to >> > find the data. >> > >> > It is used to cache information as done during 'npm install'. >> > >> > Keyformat and metadata are nodejs version specific. >> >> Isn't this adding a new recipe to a Stable branch? >> >> - armin >> > >> > Signed-off-by: Enrico Scholz <enrico.scholz@sigma-chemnitz.de> >> > Signed-off-by: Khem Raj <raj.khem@gmail.com> >> > --- >> > .../nodejs/nodejs-oe-cache-16.14/oe-npm-cache | 77 +++++++++++++++++++ >> > .../nodejs/nodejs-oe-cache-native_16.14.bb | 21 +++++ >> > 2 files changed, 98 insertions(+) >> > create mode 100755 meta-oe/recipes-devtools/nodejs/nodejs-oe-cache-16.14/oe-npm-cache >> > create mode 100644 meta-oe/recipes-devtools/nodejs/nodejs-oe-cache-native_16.14.bb >> > >> > diff --git a/meta-oe/recipes-devtools/nodejs/nodejs-oe-cache-16.14/oe-npm-cache b/meta-oe/recipes-devtools/nodejs/nodejs-oe-cache-16.14/oe-npm-cache >> > new file mode 100755 >> > index 0000000000..f596207648 >> > --- /dev/null >> > +++ b/meta-oe/recipes-devtools/nodejs/nodejs-oe-cache-16.14/oe-npm-cache >> > @@ -0,0 +1,77 @@ >> > +#!/usr/bin/env node >> > + >> > +/// Usage: oe-npm-cache <cache-dir> <type> <key> <file-name> >> > +/// <type> ... meta - metainformation about package >> > +/// tgz - tarball >> > + >> > +const process = require("node:process"); >> > + >> > +module.paths.unshift("@@libdir@@/node_modules/npm/node_modules"); >> > + >> > +const cacache = require('cacache') >> > +const fs = require('fs') >> > + >> > +// argv[0] is 'node', argv[1] is this script >> > +const cache_dir = process.argv[2] >> > +const type = process.argv[3] >> > +const key = process.argv[4] >> > +const file = process.argv[5] >> > + >> > +const data = fs.readFileSync(file) >> > + >> > +// metadata content is highly nodejs dependent; when cache entries are not >> > +// found, place debug statements in 'make-fetch-happen/lib/cache/policy.js' >> > +// (CachePolicy::satisfies()) >> > +const xlate = { >> > + 'meta': { >> > + 'key_prefix': 'make-fetch-happen:request-cache:', >> > + 'metadata': function() { >> > + return { >> > + time: Date.now(), >> > + url: key, >> > + reqHeaders: { >> > + 'accept': 'application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*', >> > + }, >> > + resHeaders: { >> > + "content-type": "application/json", >> > + "status": 200, >> > + }, >> > + options: { >> > + compress: true, >> > + } >> > + }; >> > + }, >> > + }, >> > + >> > + 'tgz': { >> > + 'key_prefix': 'make-fetch-happen:request-cache:', >> > + 'metadata': function() { >> > + return { >> > + time: Date.now(), >> > + url: key, >> > + reqHeaders: { >> > + 'accept': '*/*', >> > + }, >> > + resHeaders: { >> > + "content-type": "application/octet-stream", >> > + "status": 200, >> > + }, >> > + options: { >> > + compress: true, >> > + }, >> > + }; >> > + }, >> > + }, >> > +}; >> > + >> > +const info = xlate[type]; >> > +let opts = {} >> > + >> > +if (info.metadata) { >> > + opts['metadata'] = info.metadata(); >> > +} >> > + >> > +cacache.put(cache_dir, info.key_prefix + key, data, opts) >> > + .then(integrity => { >> > + console.log(`Saved content of ${key} (${file}).`); >> > +}) >> > diff --git a/meta-oe/recipes-devtools/nodejs/nodejs-oe-cache-native_16.14.bb b/meta-oe/recipes-devtools/nodejs/nodejs-oe-cache-native_16.14.bb >> > new file mode 100644 >> > index 0000000000..a61dd5018f >> > --- /dev/null >> > +++ b/meta-oe/recipes-devtools/nodejs/nodejs-oe-cache-native_16.14.bb >> > @@ -0,0 +1,21 @@ >> > +DESCRIPTION = "OE helper for manipulating npm cache" >> > +LICENSE = "Apache-2.0" >> > +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" >> > + >> > +SRC_URI = "\ >> > + file://oe-npm-cache \ >> > +" >> > + >> > +inherit native >> > + >> > +B = "${WORKDIR}/build" >> > + >> > +do_configure() { >> > + sed -e 's!@@libdir@@!${libdir}!g' < '${WORKDIR}/oe-npm-cache' > '${B}/oe-npm-cache' >> > +} >> > + >> > +do_install() { >> > + install -D -p -m 0755 ${B}/oe-npm-cache ${D}${bindir}/oe-npm-cache >> > +} >> > + >> > +RDEPENDS:${PN} = "nodejs-native" >> > >> > -=-=-=-=-=-=-=-=-=-=-=- >> > Links: You receive all messages sent to this group. >> > View/Reply Online (#98787): https://lists.openembedded.org/g/openembedded-devel/message/98787 >> > Mute This Topic: https://lists.openembedded.org/mt/93657958/3616698 >> > Group Owner: openembedded-devel+owner@lists.openembedded.org >> > Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [akuster808@gmail.com] >> > -=-=-=-=-=-=-=-=-=-=-=- >> > >>
diff --git a/meta-oe/recipes-devtools/nodejs/nodejs-oe-cache-16.14/oe-npm-cache b/meta-oe/recipes-devtools/nodejs/nodejs-oe-cache-16.14/oe-npm-cache new file mode 100755 index 0000000000..f596207648 --- /dev/null +++ b/meta-oe/recipes-devtools/nodejs/nodejs-oe-cache-16.14/oe-npm-cache @@ -0,0 +1,77 @@ +#!/usr/bin/env node + +/// Usage: oe-npm-cache <cache-dir> <type> <key> <file-name> +/// <type> ... meta - metainformation about package +/// tgz - tarball + +const process = require("node:process"); + +module.paths.unshift("@@libdir@@/node_modules/npm/node_modules"); + +const cacache = require('cacache') +const fs = require('fs') + +// argv[0] is 'node', argv[1] is this script +const cache_dir = process.argv[2] +const type = process.argv[3] +const key = process.argv[4] +const file = process.argv[5] + +const data = fs.readFileSync(file) + +// metadata content is highly nodejs dependent; when cache entries are not +// found, place debug statements in 'make-fetch-happen/lib/cache/policy.js' +// (CachePolicy::satisfies()) +const xlate = { + 'meta': { + 'key_prefix': 'make-fetch-happen:request-cache:', + 'metadata': function() { + return { + time: Date.now(), + url: key, + reqHeaders: { + 'accept': 'application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*', + }, + resHeaders: { + "content-type": "application/json", + "status": 200, + }, + options: { + compress: true, + } + }; + }, + }, + + 'tgz': { + 'key_prefix': 'make-fetch-happen:request-cache:', + 'metadata': function() { + return { + time: Date.now(), + url: key, + reqHeaders: { + 'accept': '*/*', + }, + resHeaders: { + "content-type": "application/octet-stream", + "status": 200, + }, + options: { + compress: true, + }, + }; + }, + }, +}; + +const info = xlate[type]; +let opts = {} + +if (info.metadata) { + opts['metadata'] = info.metadata(); +} + +cacache.put(cache_dir, info.key_prefix + key, data, opts) + .then(integrity => { + console.log(`Saved content of ${key} (${file}).`); +}) diff --git a/meta-oe/recipes-devtools/nodejs/nodejs-oe-cache-native_16.14.bb b/meta-oe/recipes-devtools/nodejs/nodejs-oe-cache-native_16.14.bb new file mode 100644 index 0000000000..a61dd5018f --- /dev/null +++ b/meta-oe/recipes-devtools/nodejs/nodejs-oe-cache-native_16.14.bb @@ -0,0 +1,21 @@ +DESCRIPTION = "OE helper for manipulating npm cache" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" + +SRC_URI = "\ + file://oe-npm-cache \ +" + +inherit native + +B = "${WORKDIR}/build" + +do_configure() { + sed -e 's!@@libdir@@!${libdir}!g' < '${WORKDIR}/oe-npm-cache' > '${B}/oe-npm-cache' +} + +do_install() { + install -D -p -m 0755 ${B}/oe-npm-cache ${D}${bindir}/oe-npm-cache +} + +RDEPENDS:${PN} = "nodejs-native"