dshm-compat 0.1.6 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/INSTALL.md +5 -5
- package/README.md +4 -2
- package/lib/s2-native.js +2 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.8
|
|
4
|
+
|
|
5
|
+
- Fixed the x86_64 worker launch: QEMU's `-L <rootfs>` prefixes absolute guest
|
|
6
|
+
paths with the glibc rootfs, so `dsh-ops` could not see `/storage/...` or
|
|
7
|
+
`/data/...` even though the guest mounts existed. The wrapper now runs
|
|
8
|
+
`ld-linux-x86-64.so.2 --library-path <rootfs>/lib/x86_64-linux-gnu <worker>`
|
|
9
|
+
directly, so guest absolute paths are passed through unchanged.
|
|
10
|
+
- Kept the host app-files prefix symlink for workers that canonicalize the host
|
|
11
|
+
`policy.workspaceRoot`.
|
|
12
|
+
- Offline regression suite: 30/30.
|
|
13
|
+
|
|
14
|
+
## 0.1.7
|
|
15
|
+
|
|
16
|
+
- Re-release of the 0.1.6 content. npm accepted 0.1.6 into staged publishing but
|
|
17
|
+
it never became visible (404), and npm refuses to publish over a staged
|
|
18
|
+
version. 0.1.7 is the installable build.
|
|
19
|
+
- Native worker wrappers bridge the DSHM host app-files prefix
|
|
20
|
+
`/data/storage/el2/base/haps/entry/files` to the guest's `/mnt/share` 9p
|
|
21
|
+
mount. `dsh-ops` passes the host `policy.workspaceRoot` as the worker's
|
|
22
|
+
`root`; the worker canonicalizes it before doing anything, so an unmapped
|
|
23
|
+
host path made every `ops_*` call fail with `NOT_FOUND` even when the guest
|
|
24
|
+
path existed. The wrapper creates the symlink only when the guest mount
|
|
25
|
+
exists and the host prefix is absent.
|
|
26
|
+
- Offline regression suite: 30/30.
|
|
27
|
+
|
|
3
28
|
## 0.1.6
|
|
4
29
|
|
|
5
30
|
- Native worker wrappers now bridge the DSHM host app-files prefix
|
package/INSTALL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Installing dshm-compat
|
|
2
2
|
|
|
3
|
-
The artifact is a normal DSH bundle package: `dshm-compat-0.1.
|
|
3
|
+
The artifact is a normal DSH bundle package: `dshm-compat-0.1.8.tgz`.
|
|
4
4
|
It is host-only, has no runtime dependencies, and adds twelve agent tools.
|
|
5
5
|
|
|
6
6
|
## A. DSHM (the tablet)
|
|
@@ -15,7 +15,7 @@ input calls `pnpm view` before installing and fails with
|
|
|
15
15
|
`Command failed with EACCES: pnpm view ... spawn pnpm EACCES`. Use one of these
|
|
16
16
|
instead:
|
|
17
17
|
|
|
18
|
-
- ask the DSHM Agent to run `pnpm add dshm-compat@0.1.
|
|
18
|
+
- ask the DSHM Agent to run `pnpm add dshm-compat@0.1.8` in its bash tool (the
|
|
19
19
|
bundled pnpm shim routes that command to the host install queue); or
|
|
20
20
|
- install from a GitHub repository URL; or
|
|
21
21
|
- after any working install, use the plugin's own `compat_install` tool for
|
|
@@ -28,7 +28,7 @@ not accept local paths, `file:` or `http://` specs.
|
|
|
28
28
|
|
|
29
29
|
### A2. HTTPS tarball
|
|
30
30
|
|
|
31
|
-
Put `dshm-compat-0.1.
|
|
31
|
+
Put `dshm-compat-0.1.8.tgz` on any HTTPS host (GitHub Release, Gitee Release,
|
|
32
32
|
object storage) and paste the `.tgz` URL into the same Add plugin input. DSHM's
|
|
33
33
|
installer accepts tarball specs; if the current market UI refuses a plain URL,
|
|
34
34
|
use A1.
|
|
@@ -38,7 +38,7 @@ use A1.
|
|
|
38
38
|
If `hdc` is available and the app can read the path:
|
|
39
39
|
|
|
40
40
|
```sh
|
|
41
|
-
hdc file send dshm-compat-0.1.
|
|
41
|
+
hdc file send dshm-compat-0.1.8.tgz /data/storage/el2/base/haps/entry/files/dshm-compat-0.1.8.tgz
|
|
42
42
|
```
|
|
43
43
|
|
|
44
44
|
Then enter the absolute path (or `file:/...`) in the Add plugin input. This
|
|
@@ -47,7 +47,7 @@ depends on the DSHM build's local-file support; A1 is safer.
|
|
|
47
47
|
## B. Desktop DSH (for testing only)
|
|
48
48
|
|
|
49
49
|
```powershell
|
|
50
|
-
& 'D:\安装\dsh-desktop\resources\runtime\cli\bin\dsh.cmd' plugin --profile desktop add 'D:\dsh\dsh-26-09-30\dshm-compat\dshm-compat-0.1.
|
|
50
|
+
& 'D:\安装\dsh-desktop\resources\runtime\cli\bin\dsh.cmd' plugin --profile desktop add 'D:\dsh\dsh-26-09-30\dshm-compat\dshm-compat-0.1.8.tgz'
|
|
51
51
|
```
|
|
52
52
|
|
|
53
53
|
If the profile reports `ERR_PNPM_UNEXPECTED_VIRTUAL_STORE`, its `node_modules`
|
package/README.md
CHANGED
|
@@ -5,8 +5,10 @@ them through the least invasive strategy that can work.
|
|
|
5
5
|
|
|
6
6
|
## Current phase
|
|
7
7
|
|
|
8
|
-
0.1.
|
|
9
|
-
|
|
8
|
+
0.1.8 fixes the x86_64 worker launch: QEMU's `-L` prefixed guest absolute
|
|
9
|
+
paths with the glibc rootfs, so every host path looked missing. The wrapper now
|
|
10
|
+
runs `ld-linux --library-path` directly. It also keeps the host app-files prefix
|
|
11
|
+
bridge to `/mnt/share` for native worker roots. 0.1.5 added non-`-c`
|
|
10
12
|
spawn wrappers, release fallbacks, and `compat_uninstall`; 0.1.4 added the
|
|
11
13
|
generic S2 adapter with x86_64 QEMU and GitHub Release acquisition. Phase 1
|
|
12
14
|
ships the analyzer, the S0/S1 converter, the generic S2 engine, guest
|
package/lib/s2-native.js
CHANGED
|
@@ -244,7 +244,7 @@ export async function convertS2Native(spec, options = {}) {
|
|
|
244
244
|
'set -e',
|
|
245
245
|
...hostFilesLink,
|
|
246
246
|
'DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)',
|
|
247
|
-
`exec "$DIR/qemu-x86_64" -
|
|
247
|
+
`exec "$DIR/qemu-x86_64" "$DIR/rootfs/lib64/ld-linux-x86-64.so.2" --library-path "$DIR/rootfs/lib/x86_64-linux-gnu" "$DIR/${realName}" "$@"`,
|
|
248
248
|
'',
|
|
249
249
|
].join('\n'))
|
|
250
250
|
workerSource = 'x86_64 worker executed through the bundled qemu-x86_64 and glibc rootfs'
|
|
@@ -291,6 +291,7 @@ export async function convertS2Native(spec, options = {}) {
|
|
|
291
291
|
? `staged ${workerName} as a shell wrapper over qemu-x86_64 + glibc rootfs`
|
|
292
292
|
: `staged ${workerName} as a shell wrapper over ${workerName}-bin`,
|
|
293
293
|
'mapped /data/storage/el2/base/haps/entry/files to the guest /mnt/share mount',
|
|
294
|
+
...(workerArch === 'x64' ? ['ran the x86_64 loader directly instead of qemu -L, so guest absolute paths are not prefixed with the glibc rootfs'] : []),
|
|
294
295
|
]
|
|
295
296
|
|
|
296
297
|
const output = files.filter(file => file.path !== workerPath).map(file => {
|