Re: [meta-oe][kirkstone] nodejs-oe-cache-native: initial checkin


Martin Jansa
 

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@...> wrote:


On 9/13/22 11:34, Martin Jansa wrote:
> From: Enrico Scholz <enrico.scholz@...>
>
> 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@...>
> Signed-off-by: Khem Raj <raj.khem@...>
> ---
>   .../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"
>
>
>

Join openembedded-devel@lists.openembedded.org to automatically receive all group messages.