@scrypted/server 0.94.29 → 0.94.31
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/bin/packaged-python.d.ts +1 -1
- package/bin/packaged-python.js +2 -1
- package/dist/plugin/runtime/python-worker.d.ts +1 -1
- package/dist/plugin/runtime/python-worker.js +22 -16
- package/dist/plugin/runtime/python-worker.js.map +1 -1
- package/package.json +1 -1
- package/src/plugin/runtime/python-worker.ts +27 -20
package/bin/packaged-python.d.ts
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
export declare declare const version: string;
|
2
|
-
export declare async function installScryptedServerRequirements(version?: string, dest?: string)
|
2
|
+
export declare async function installScryptedServerRequirements(version?: string, dest?: string): Promise<string>;
|
package/bin/packaged-python.js
CHANGED
@@ -3,7 +3,7 @@ const { PortablePython } = require('py')
|
|
3
3
|
const { once } = require('events');
|
4
4
|
|
5
5
|
module.exports = {
|
6
|
-
version: '3.
|
6
|
+
version: '3.10',
|
7
7
|
}
|
8
8
|
|
9
9
|
async function pipInstall(python, pkg) {
|
@@ -20,4 +20,5 @@ module.exports.installScryptedServerRequirements = async function installScrypte
|
|
20
20
|
|
21
21
|
await pipInstall(python, 'debugpy');
|
22
22
|
await pipInstall(python, 'psutil').catch(() => { });
|
23
|
+
return python;
|
23
24
|
}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/// <reference types="node" />
|
2
|
-
import { Readable, Writable
|
2
|
+
import { PassThrough, Readable, Writable } from 'stream';
|
3
3
|
import { RpcMessage, RpcPeer } from "../../rpc";
|
4
4
|
import { createRpcDuplexSerializer } from '../../rpc-serializer';
|
5
5
|
import { ChildProcessWorker } from "./child-process-worker";
|
@@ -85,7 +85,7 @@ class PythonRuntimeWorker extends child_process_worker_1.ChildProcessWorker {
|
|
85
85
|
stdio: ['pipe', 'pipe', 'pipe', 'pipe', 'pipe'],
|
86
86
|
env: Object.assign({
|
87
87
|
// rev this if the base python version or server characteristics change.
|
88
|
-
SCRYPTED_PYTHON_VERSION: '
|
88
|
+
SCRYPTED_PYTHON_VERSION: '20240317',
|
89
89
|
PYTHONUNBUFFERED: '1',
|
90
90
|
PYTHONPATH,
|
91
91
|
}, gstEnv, process.env, env),
|
@@ -97,24 +97,30 @@ class PythonRuntimeWorker extends child_process_worker_1.ChildProcessWorker {
|
|
97
97
|
if (pluginPythonVersion) {
|
98
98
|
const peerin = this.peerin = new stream_1.PassThrough();
|
99
99
|
const peerout = this.peerout = new stream_1.PassThrough();
|
100
|
-
const
|
101
|
-
this.pythonInstallationComplete = false;
|
102
|
-
py.install()
|
103
|
-
.then(() => {
|
104
|
-
pythonPath = py.executablePath;
|
105
|
-
// is this possible?
|
106
|
-
if (!fs_1.default.existsSync(pythonPath))
|
107
|
-
throw new Error('Installation failed. Portable python not found.');
|
100
|
+
const finishSetup = () => {
|
108
101
|
setup();
|
109
102
|
peerin.pipe(this.worker.stdio[3]);
|
110
103
|
this.worker.stdio[4].pipe(peerout);
|
111
|
-
}
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
}
|
117
|
-
|
104
|
+
};
|
105
|
+
const py = new py_1.PortablePython(pluginPythonVersion, path_1.default.dirname(options.unzippedPath));
|
106
|
+
if (fs_1.default.existsSync(py.executablePath)) {
|
107
|
+
pythonPath = py.executablePath;
|
108
|
+
finishSetup();
|
109
|
+
}
|
110
|
+
else {
|
111
|
+
this.pythonInstallationComplete = false;
|
112
|
+
(0, packaged_python_1.installScryptedServerRequirements)(pluginPythonVersion, path_1.default.dirname(options.unzippedPath))
|
113
|
+
.then(executablePath => {
|
114
|
+
pythonPath = executablePath;
|
115
|
+
finishSetup();
|
116
|
+
})
|
117
|
+
.catch(() => {
|
118
|
+
process.nextTick(() => {
|
119
|
+
this.emit('error', new Error('Failed to install portable python.'));
|
120
|
+
});
|
121
|
+
})
|
122
|
+
.finally(() => this.pythonInstallationComplete = true);
|
123
|
+
}
|
118
124
|
}
|
119
125
|
else {
|
120
126
|
setup();
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"python-worker.js","sourceRoot":"","sources":["../../../src/plugin/runtime/python-worker.ts"],"names":[],"mappings":";;;;;;AAAA,kEAA0C;AAC1C,4CAAoB;AACpB,4CAAoB;AACpB,gDAAwB;AACxB,2BAAoC;AACpC,mCAAyD;AACzD,
|
1
|
+
{"version":3,"file":"python-worker.js","sourceRoot":"","sources":["../../../src/plugin/runtime/python-worker.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -3,8 +3,8 @@ import fs from "fs";
|
|
3
3
|
import os from "os";
|
4
4
|
import path from 'path';
|
5
5
|
import { PortablePython } from 'py';
|
6
|
-
import { Readable, Writable
|
7
|
-
import { version as packagedPythonVersion } from '../../../bin/packaged-python';
|
6
|
+
import { PassThrough, Readable, Writable } from 'stream';
|
7
|
+
import { installScryptedServerRequirements, version as packagedPythonVersion } from '../../../bin/packaged-python';
|
8
8
|
import { RpcMessage, RpcPeer } from "../../rpc";
|
9
9
|
import { createRpcDuplexSerializer } from '../../rpc-serializer';
|
10
10
|
import { ChildProcessWorker } from "./child-process-worker";
|
@@ -103,7 +103,7 @@ export class PythonRuntimeWorker extends ChildProcessWorker {
|
|
103
103
|
stdio: ['pipe', 'pipe', 'pipe', 'pipe', 'pipe'],
|
104
104
|
env: Object.assign({
|
105
105
|
// rev this if the base python version or server characteristics change.
|
106
|
-
SCRYPTED_PYTHON_VERSION: '
|
106
|
+
SCRYPTED_PYTHON_VERSION: '20240317',
|
107
107
|
PYTHONUNBUFFERED: '1',
|
108
108
|
PYTHONPATH,
|
109
109
|
}, gstEnv, process.env, env),
|
@@ -119,25 +119,32 @@ export class PythonRuntimeWorker extends ChildProcessWorker {
|
|
119
119
|
const peerin = this.peerin = new PassThrough();
|
120
120
|
const peerout = this.peerout = new PassThrough();
|
121
121
|
|
122
|
+
const finishSetup = () => {
|
123
|
+
setup();
|
124
|
+
|
125
|
+
peerin.pipe(this.worker.stdio[3] as Writable);
|
126
|
+
(this.worker.stdio[4] as Readable).pipe(peerout);
|
127
|
+
};
|
128
|
+
|
122
129
|
const py = new PortablePython(pluginPythonVersion, path.dirname(options.unzippedPath));
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
130
|
+
if (fs.existsSync(py.executablePath)) {
|
131
|
+
pythonPath = py.executablePath;
|
132
|
+
finishSetup();
|
133
|
+
}
|
134
|
+
else {
|
135
|
+
this.pythonInstallationComplete = false;
|
136
|
+
installScryptedServerRequirements(pluginPythonVersion, path.dirname(options.unzippedPath))
|
137
|
+
.then(executablePath => {
|
138
|
+
pythonPath = executablePath;
|
139
|
+
finishSetup();
|
140
|
+
})
|
141
|
+
.catch(() => {
|
142
|
+
process.nextTick(() => {
|
143
|
+
this.emit('error', new Error('Failed to install portable python.'));
|
144
|
+
})
|
138
145
|
})
|
139
|
-
|
140
|
-
|
146
|
+
.finally(() => this.pythonInstallationComplete = true);
|
147
|
+
}
|
141
148
|
}
|
142
149
|
else {
|
143
150
|
setup();
|