Skip to content

Commit 3dabd23

Browse files
committed
nodejs-oe-cache: backport fix for ENOTCACHED issues
https://lists.openembedded.org/g/openembedded-devel/message/110246 https://lists.openembedded.org/g/openembedded-devel/message/110244 temporarily until it's merged in meta-oe/master and backported to scarthgap Signed-off-by: Martin Jansa <martin.jansa@gmail.com>
1 parent 600f40a commit 3dabd23

File tree

2 files changed

+80
-0
lines changed

2 files changed

+80
-0
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# https://lists.openembedded.org/g/openembedded-devel/message/110246
2+
# https://lists.openembedded.org/g/openembedded-devel/message/110244
3+
FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
#!/usr/bin/env node
2+
3+
/// Usage: oe-npm-cache <cache-dir> <type> <key> <file-name>
4+
/// <type> ... meta - metainformation about package
5+
/// tgz - tarball
6+
7+
const process = require("node:process");
8+
9+
module.paths.unshift("@@libdir@@/node_modules/npm/node_modules");
10+
11+
const cacache = require('cacache')
12+
const fs = require('fs')
13+
14+
// argv[0] is 'node', argv[1] is this script
15+
const cache_dir = process.argv[2]
16+
const type = process.argv[3]
17+
const key = process.argv[4]
18+
const file = process.argv[5]
19+
20+
const data = fs.readFileSync(file)
21+
22+
// metadata content is highly nodejs dependent; when cache entries are not
23+
// found, place debug statements in 'make-fetch-happen/lib/cache/policy.js'
24+
// (CachePolicy::satisfies())
25+
const xlate = {
26+
'meta': {
27+
'key_prefix': 'make-fetch-happen:request-cache:',
28+
'metadata': function() {
29+
return {
30+
time: Date.now(),
31+
url: key,
32+
reqHeaders: {
33+
'accept': 'application/json',
34+
},
35+
resHeaders: {
36+
"content-type": "application/json",
37+
"status": 200,
38+
},
39+
options: {
40+
compress: true,
41+
}
42+
};
43+
},
44+
},
45+
46+
'tgz': {
47+
'key_prefix': 'make-fetch-happen:request-cache:',
48+
'metadata': function() {
49+
return {
50+
time: Date.now(),
51+
url: key,
52+
reqHeaders: {
53+
'accept': '*/*',
54+
},
55+
resHeaders: {
56+
"content-type": "application/octet-stream",
57+
"status": 200,
58+
},
59+
options: {
60+
compress: true,
61+
},
62+
};
63+
},
64+
},
65+
};
66+
67+
const info = xlate[type];
68+
let opts = {}
69+
70+
if (info.metadata) {
71+
opts['metadata'] = info.metadata();
72+
}
73+
74+
cacache.put(cache_dir, info.key_prefix + key, data, opts)
75+
.then(integrity => {
76+
console.log(`Saved content of ${key} (${file}).`);
77+
})

0 commit comments

Comments
 (0)