@scrypted/server 0.1.13 → 0.1.14
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.
Potentially problematic release.
This version of @scrypted/server might be problematic. Click here for more details.
- package/dist/plugin/plugin-npm-dependencies.js +5 -1
- package/dist/plugin/plugin-npm-dependencies.js.map +1 -1
- package/dist/plugin/runtime/python-worker.js +2 -1
- package/dist/plugin/runtime/python-worker.js.map +1 -1
- package/package.json +1 -1
- package/python/plugin-remote.py +28 -19
- package/src/plugin/plugin-npm-dependencies.ts +5 -1
- package/src/plugin/runtime/python-worker.ts +3 -1
@@ -12,6 +12,7 @@ const events_1 = require("events");
|
|
12
12
|
const process_1 = __importDefault(require("process"));
|
13
13
|
const mkdirp_1 = __importDefault(require("mkdirp"));
|
14
14
|
const semver_1 = __importDefault(require("semver"));
|
15
|
+
const os_1 = __importDefault(require("os"));
|
15
16
|
function getPluginNodePath(name) {
|
16
17
|
const pluginVolume = (0, plugin_volume_1.ensurePluginVolume)(name);
|
17
18
|
const nodeMajorVersion = semver_1.default.parse(process_1.default.version).major;
|
@@ -46,7 +47,10 @@ async function installOptionalDependencies(console, packageJson) {
|
|
46
47
|
delete reduced.devDependencies;
|
47
48
|
mkdirp_1.default.sync(nodePrefix);
|
48
49
|
fs_1.default.writeFileSync(packageJsonPath, JSON.stringify(reduced));
|
49
|
-
|
50
|
+
let npm = 'npm';
|
51
|
+
if (os_1.default.platform() === 'win32')
|
52
|
+
npm += '.cmd';
|
53
|
+
const cp = child_process_1.default.spawn(npm, ['--prefix', nodePrefix, 'install'], {
|
50
54
|
cwd: nodePrefix,
|
51
55
|
stdio: 'inherit',
|
52
56
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"plugin-npm-dependencies.js","sourceRoot":"","sources":["../../src/plugin/plugin-npm-dependencies.ts"],"names":[],"mappings":";;;;;;AAAA,mDAAqD;AACrD,4CAAoB;AACpB,kEAA0C;AAC1C,gDAAwB;AACxB,mCAA8B;AAC9B,sDAA8B;AAC9B,oDAA4B;AAC5B,oDAA4B;
|
1
|
+
{"version":3,"file":"plugin-npm-dependencies.js","sourceRoot":"","sources":["../../src/plugin/plugin-npm-dependencies.ts"],"names":[],"mappings":"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"}
|
@@ -35,7 +35,8 @@ class PythonRuntimeWorker extends child_process_worker_1.ChildProcessWorker {
|
|
35
35
|
}
|
36
36
|
}
|
37
37
|
}
|
38
|
-
|
38
|
+
const pythonPath = os_1.default.platform() === 'win32' ? 'py.exe' : 'python3';
|
39
|
+
this.worker = child_process_1.default.spawn(pythonPath, args, {
|
39
40
|
// stdin, stdout, stderr, peer in, peer out
|
40
41
|
stdio: ['pipe', 'pipe', 'pipe', 'pipe', 'pipe'],
|
41
42
|
env: Object.assign({
|
@@ -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,wDAAgC;AAGhC,iEAA4D;AAG5D,MAAa,mBAAoB,SAAQ,yCAAkB;IAEvD,YAAY,QAAgB,EAAE,OAA6B;QACvD,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEzB,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;QACrC,MAAM,IAAI,GAAa;YACnB,IAAI;SACP,CAAC;QACF,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,IAAI,CACL,IAAI,EACJ,SAAS,EACT,UAAU,EACV,WAAW,WAAW,CAAC,WAAW,EAAE,EACpC,mBAAmB,CACtB,CAAA;SACJ;QACD,IAAI,CAAC,IAAI,CACL,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAC9D,CAAA;QAED,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,+CAA+C;QAC/C,IAAI,YAAE,CAAC,QAAQ,EAAE,KAAK,QAAQ,EAAE;YAC5B,MAAM,QAAQ,GAAG;gBACb,iCAAiC;gBACjC,8BAA8B;aACjC,CAAC;YACF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;gBAC5B,IAAI,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,EAAE;oBACvD,MAAM,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC;oBACpC,MAAM;iBACT;aACJ;SACJ;QAED,IAAI,CAAC,MAAM,GAAG,uBAAa,CAAC,KAAK,CAAC,
|
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
package/python/plugin-remote.py
CHANGED
@@ -6,7 +6,6 @@ import gc
|
|
6
6
|
import json
|
7
7
|
import os
|
8
8
|
import platform
|
9
|
-
import resource
|
10
9
|
import shutil
|
11
10
|
import subprocess
|
12
11
|
import threading
|
@@ -21,7 +20,6 @@ from os import sys
|
|
21
20
|
from typing import Any, Optional, Set, Tuple
|
22
21
|
|
23
22
|
import aiofiles
|
24
|
-
import gi
|
25
23
|
import scrypted_python.scrypted_sdk.types
|
26
24
|
from scrypted_python.scrypted_sdk.types import (Device, DeviceManifest,
|
27
25
|
MediaManager,
|
@@ -31,12 +29,6 @@ from typing_extensions import TypedDict
|
|
31
29
|
|
32
30
|
import rpc
|
33
31
|
|
34
|
-
gi.require_version('Gst', '1.0')
|
35
|
-
|
36
|
-
from gi.repository import GLib, Gst
|
37
|
-
|
38
|
-
Gst.init(None)
|
39
|
-
|
40
32
|
class SystemDeviceState(TypedDict):
|
41
33
|
lastEventTime: int
|
42
34
|
stateTime: int
|
@@ -227,9 +219,9 @@ class PluginRemote:
|
|
227
219
|
if not os.path.exists(python_prefix):
|
228
220
|
os.makedirs(python_prefix)
|
229
221
|
|
230
|
-
|
222
|
+
python_version = 'python%s' % str(
|
231
223
|
sys.version_info[0])+"."+str(sys.version_info[1])
|
232
|
-
print('python:',
|
224
|
+
print('python version:', python_version)
|
233
225
|
|
234
226
|
if 'requirements.txt' in zip.namelist():
|
235
227
|
requirements = zip.open('requirements.txt').read()
|
@@ -254,7 +246,7 @@ class PluginRemote:
|
|
254
246
|
f.write(requirements)
|
255
247
|
f.close()
|
256
248
|
|
257
|
-
p = subprocess.Popen([
|
249
|
+
p = subprocess.Popen([sys.executable, '-m', 'pip', 'install', '-r', requirementstxt,
|
258
250
|
'--prefix', python_prefix], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
259
251
|
while True:
|
260
252
|
line = p.stdout.readline()
|
@@ -275,8 +267,13 @@ class PluginRemote:
|
|
275
267
|
print(str_requirements)
|
276
268
|
|
277
269
|
sys.path.insert(0, zipPath)
|
278
|
-
|
279
|
-
|
270
|
+
if platform.system() != 'Windows':
|
271
|
+
site_packages = os.path.join(
|
272
|
+
python_prefix, 'lib', python_version, 'site-packages')
|
273
|
+
else:
|
274
|
+
site_packages = os.path.join(
|
275
|
+
python_prefix, 'Lib', 'site-packages')
|
276
|
+
print('site-packages: %s' % site_packages)
|
280
277
|
sys.path.insert(0, site_packages)
|
281
278
|
from scrypted_sdk import sdk_init # type: ignore
|
282
279
|
self.systemManager = SystemManager(self.api, self.systemState)
|
@@ -366,7 +363,11 @@ async def async_main(loop: AbstractEventLoop):
|
|
366
363
|
|
367
364
|
def stats_runner():
|
368
365
|
ptime = round(time.process_time() * 1000000)
|
369
|
-
|
366
|
+
try:
|
367
|
+
import resource
|
368
|
+
heapTotal = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
|
369
|
+
except:
|
370
|
+
heapTotal = 0
|
370
371
|
stats = {
|
371
372
|
'type': 'stats',
|
372
373
|
'cpuUsage': {
|
@@ -399,8 +400,16 @@ def main():
|
|
399
400
|
|
400
401
|
|
401
402
|
if __name__ == "__main__":
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
403
|
+
try:
|
404
|
+
import gi
|
405
|
+
gi.require_version('Gst', '1.0')
|
406
|
+
from gi.repository import GLib, Gst
|
407
|
+
Gst.init(None)
|
408
|
+
|
409
|
+
worker = threading.Thread(target=main)
|
410
|
+
worker.start()
|
411
|
+
|
412
|
+
loop = GLib.MainLoop()
|
413
|
+
loop.run()
|
414
|
+
except:
|
415
|
+
main()
|
@@ -6,6 +6,7 @@ import { once } from 'events';
|
|
6
6
|
import process from 'process';
|
7
7
|
import mkdirp from "mkdirp";
|
8
8
|
import semver from 'semver';
|
9
|
+
import os from 'os';
|
9
10
|
|
10
11
|
export function getPluginNodePath(name: string) {
|
11
12
|
const pluginVolume = ensurePluginVolume(name);
|
@@ -48,7 +49,10 @@ export async function installOptionalDependencies(console: Console, packageJson:
|
|
48
49
|
mkdirp.sync(nodePrefix);
|
49
50
|
fs.writeFileSync(packageJsonPath, JSON.stringify(reduced));
|
50
51
|
|
51
|
-
|
52
|
+
let npm = 'npm';
|
53
|
+
if (os.platform() === 'win32')
|
54
|
+
npm += '.cmd';
|
55
|
+
const cp = child_process.spawn(npm, ['--prefix', nodePrefix, 'install'], {
|
52
56
|
cwd: nodePrefix,
|
53
57
|
stdio: 'inherit',
|
54
58
|
});
|
@@ -45,7 +45,9 @@ export class PythonRuntimeWorker extends ChildProcessWorker {
|
|
45
45
|
}
|
46
46
|
}
|
47
47
|
|
48
|
-
|
48
|
+
const pythonPath = os.platform() === 'win32' ? 'py.exe' : 'python3';
|
49
|
+
|
50
|
+
this.worker = child_process.spawn(pythonPath, args, {
|
49
51
|
// stdin, stdout, stderr, peer in, peer out
|
50
52
|
stdio: ['pipe', 'pipe', 'pipe', 'pipe', 'pipe'],
|
51
53
|
env: Object.assign({
|