@kvell007/embed-labs-cli 0.1.0-alpha.1 → 0.1.0-alpha.3
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/README.md +35 -13
- package/dist/image-compose.d.ts +38 -0
- package/dist/image-compose.js +334 -0
- package/dist/image-compose.js.map +1 -0
- package/dist/index.js +894 -38
- package/dist/index.js.map +1 -1
- package/dist/local-toolchain.d.ts +66 -0
- package/dist/local-toolchain.js +217 -0
- package/dist/local-toolchain.js.map +1 -0
- package/package.json +5 -4
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
export interface LocalToolchainAuthContext {
|
|
2
|
+
authenticated: boolean;
|
|
3
|
+
profile: string;
|
|
4
|
+
source?: string;
|
|
5
|
+
account_id?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface LocalToolchainValidationResult {
|
|
8
|
+
ok: boolean;
|
|
9
|
+
host: {
|
|
10
|
+
platform: string;
|
|
11
|
+
arch: string;
|
|
12
|
+
};
|
|
13
|
+
board_id: string;
|
|
14
|
+
release_root: string;
|
|
15
|
+
checked_paths: LocalToolchainPathCheck[];
|
|
16
|
+
missing_paths: string[];
|
|
17
|
+
notes: string[];
|
|
18
|
+
}
|
|
19
|
+
export interface LocalToolchainPathCheck {
|
|
20
|
+
label: string;
|
|
21
|
+
path: string;
|
|
22
|
+
exists: boolean;
|
|
23
|
+
}
|
|
24
|
+
export interface LocalCompileOptions {
|
|
25
|
+
boardId: string;
|
|
26
|
+
sourcePath: string;
|
|
27
|
+
outputPath: string;
|
|
28
|
+
releaseRoot?: string;
|
|
29
|
+
accountId?: string;
|
|
30
|
+
auth: LocalToolchainAuthContext;
|
|
31
|
+
}
|
|
32
|
+
export interface LocalQtSmokeBuildOptions {
|
|
33
|
+
sourceDir?: string;
|
|
34
|
+
buildDir: string;
|
|
35
|
+
releaseRoot?: string;
|
|
36
|
+
targetName?: string;
|
|
37
|
+
accountId?: string;
|
|
38
|
+
auth: LocalToolchainAuthContext;
|
|
39
|
+
}
|
|
40
|
+
export interface LocalCompileResult {
|
|
41
|
+
board_id: string;
|
|
42
|
+
operation: "local.compile.single_file" | "local.build.qt_smoke";
|
|
43
|
+
release_root: string;
|
|
44
|
+
account_id?: string;
|
|
45
|
+
auth: LocalToolchainAuthContext;
|
|
46
|
+
source_path: string;
|
|
47
|
+
build_dir?: string;
|
|
48
|
+
artifact_path: string;
|
|
49
|
+
artifact_name: string;
|
|
50
|
+
artifact_size_bytes: number;
|
|
51
|
+
artifact_sha256: string;
|
|
52
|
+
file_info?: string;
|
|
53
|
+
commands: LocalCommandResult[];
|
|
54
|
+
manifest_path: string;
|
|
55
|
+
}
|
|
56
|
+
export interface LocalCommandResult {
|
|
57
|
+
command: string[];
|
|
58
|
+
cwd: string;
|
|
59
|
+
exit_code: number;
|
|
60
|
+
stdout_tail: string[];
|
|
61
|
+
stderr_tail: string[];
|
|
62
|
+
}
|
|
63
|
+
export declare function defaultLocalReleaseRoot(): string;
|
|
64
|
+
export declare function validateLocalToolchain(releaseRoot?: string): Promise<LocalToolchainValidationResult>;
|
|
65
|
+
export declare function compileTaishanPiSingleFile(options: LocalCompileOptions): Promise<LocalCompileResult>;
|
|
66
|
+
export declare function buildTaishanPiQtSmoke(options: LocalQtSmokeBuildOptions): Promise<LocalCompileResult>;
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { spawn } from "node:child_process";
|
|
3
|
+
import { constants } from "node:fs";
|
|
4
|
+
import { access, mkdir, readFile, stat, writeFile } from "node:fs/promises";
|
|
5
|
+
import { arch, platform } from "node:os";
|
|
6
|
+
import { basename, dirname, extname, join, resolve } from "node:path";
|
|
7
|
+
const DEFAULT_RELEASE_ROOT = "/Volumes/LLVM-TSPI/tspi-rk3566-llvm-release-minimal";
|
|
8
|
+
const DEFAULT_QT_SMOKE_SOURCE = "/Users/kvell/kk-project/DBT-Agent-Project/llvm-build-tspi/qt-smoke";
|
|
9
|
+
export function defaultLocalReleaseRoot() {
|
|
10
|
+
return DEFAULT_RELEASE_ROOT;
|
|
11
|
+
}
|
|
12
|
+
export async function validateLocalToolchain(releaseRoot = DEFAULT_RELEASE_ROOT) {
|
|
13
|
+
const resolvedRoot = resolve(releaseRoot);
|
|
14
|
+
const required = [
|
|
15
|
+
["release root", "."],
|
|
16
|
+
["C compiler", "toolchain/llvm-cross/bin/aarch64-linux-gnu-gcc"],
|
|
17
|
+
["C++ compiler", "toolchain/llvm-cross/bin/aarch64-linux-gnu-g++"],
|
|
18
|
+
["readelf", "toolchain/llvm-cross/bin/aarch64-linux-gnu-readelf"],
|
|
19
|
+
["Qt CMake", "qt-target/qt6-rk3566-llvm-6.8.3/bin/qt-cmake"],
|
|
20
|
+
["target sysroot", "toolchain/host/aarch64-buildroot-linux-gnu/sysroot"],
|
|
21
|
+
["Qt target libraries", "qt-target/qt6-rk3566-llvm-6.8.3/lib"],
|
|
22
|
+
["Rockchip mkimage", "tools/mac/mkimage"],
|
|
23
|
+
["Rockchip resource_tool", "tools/mac/resource_tool"]
|
|
24
|
+
];
|
|
25
|
+
const checked_paths = [];
|
|
26
|
+
for (const [label, relativePath] of required) {
|
|
27
|
+
const absolutePath = resolve(resolvedRoot, relativePath);
|
|
28
|
+
checked_paths.push({
|
|
29
|
+
label,
|
|
30
|
+
path: absolutePath,
|
|
31
|
+
exists: await pathExists(absolutePath)
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
const missing_paths = checked_paths.filter((item) => !item.exists).map((item) => item.path);
|
|
35
|
+
return {
|
|
36
|
+
ok: missing_paths.length === 0,
|
|
37
|
+
host: {
|
|
38
|
+
platform: platform(),
|
|
39
|
+
arch: arch()
|
|
40
|
+
},
|
|
41
|
+
board_id: "taishanpi-1m-rk3566",
|
|
42
|
+
release_root: resolvedRoot,
|
|
43
|
+
checked_paths,
|
|
44
|
+
missing_paths,
|
|
45
|
+
notes: [
|
|
46
|
+
"Local build commands require an Embed Labs auth token so local resource use remains account attributable.",
|
|
47
|
+
"This validator checks the Mac-first TaishanPi LLVM release layout; package install/update registry work is tracked separately."
|
|
48
|
+
]
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export async function compileTaishanPiSingleFile(options) {
|
|
52
|
+
assertAuthenticated(options.auth);
|
|
53
|
+
const releaseRoot = resolve(options.releaseRoot ?? DEFAULT_RELEASE_ROOT);
|
|
54
|
+
const sourcePath = resolve(options.sourcePath);
|
|
55
|
+
const outputPath = resolve(options.outputPath);
|
|
56
|
+
await access(sourcePath, constants.R_OK);
|
|
57
|
+
await mkdir(dirname(outputPath), { recursive: true });
|
|
58
|
+
const compiler = compilerForSource(releaseRoot, sourcePath);
|
|
59
|
+
await access(compiler, constants.X_OK);
|
|
60
|
+
const sysroot = join(releaseRoot, "toolchain", "host", "aarch64-buildroot-linux-gnu", "sysroot");
|
|
61
|
+
await access(sysroot, constants.R_OK);
|
|
62
|
+
const command = [compiler, `--sysroot=${sysroot}`, "-O2", sourcePath, "-o", outputPath];
|
|
63
|
+
const buildResult = await runCommand(command, dirname(sourcePath));
|
|
64
|
+
if (buildResult.exit_code !== 0) {
|
|
65
|
+
throw new Error(`Local compile failed with exit code ${buildResult.exit_code}: ${buildResult.stderr_tail.join("\n")}`);
|
|
66
|
+
}
|
|
67
|
+
return await localCompileResult({
|
|
68
|
+
boardId: options.boardId,
|
|
69
|
+
operation: "local.compile.single_file",
|
|
70
|
+
releaseRoot,
|
|
71
|
+
accountId: options.accountId,
|
|
72
|
+
auth: options.auth,
|
|
73
|
+
sourcePath,
|
|
74
|
+
artifactPath: outputPath,
|
|
75
|
+
commands: [buildResult]
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
export async function buildTaishanPiQtSmoke(options) {
|
|
79
|
+
assertAuthenticated(options.auth);
|
|
80
|
+
const releaseRoot = resolve(options.releaseRoot ?? DEFAULT_RELEASE_ROOT);
|
|
81
|
+
const sourceDir = resolve(options.sourceDir ?? DEFAULT_QT_SMOKE_SOURCE);
|
|
82
|
+
const buildDir = resolve(options.buildDir);
|
|
83
|
+
const targetName = options.targetName ?? "qt_llvm_smoke";
|
|
84
|
+
const qtCmake = join(releaseRoot, "qt-target", "qt6-rk3566-llvm-6.8.3", "bin", "qt-cmake");
|
|
85
|
+
await access(join(sourceDir, "CMakeLists.txt"), constants.R_OK);
|
|
86
|
+
await access(qtCmake, constants.X_OK);
|
|
87
|
+
await mkdir(buildDir, { recursive: true });
|
|
88
|
+
const configure = await runCommand([
|
|
89
|
+
qtCmake,
|
|
90
|
+
"-S",
|
|
91
|
+
sourceDir,
|
|
92
|
+
"-B",
|
|
93
|
+
buildDir,
|
|
94
|
+
"-G",
|
|
95
|
+
"Ninja",
|
|
96
|
+
"-DCMAKE_BUILD_TYPE=Release"
|
|
97
|
+
], sourceDir);
|
|
98
|
+
if (configure.exit_code !== 0) {
|
|
99
|
+
throw new Error(`Qt smoke configure failed with exit code ${configure.exit_code}: ${configure.stderr_tail.join("\n")}`);
|
|
100
|
+
}
|
|
101
|
+
const build = await runCommand(["cmake", "--build", buildDir, "--parallel"], sourceDir);
|
|
102
|
+
if (build.exit_code !== 0) {
|
|
103
|
+
throw new Error(`Qt smoke build failed with exit code ${build.exit_code}: ${build.stderr_tail.join("\n")}`);
|
|
104
|
+
}
|
|
105
|
+
const artifactPath = join(buildDir, targetName);
|
|
106
|
+
return await localCompileResult({
|
|
107
|
+
boardId: "taishanpi-1m-rk3566",
|
|
108
|
+
operation: "local.build.qt_smoke",
|
|
109
|
+
releaseRoot,
|
|
110
|
+
accountId: options.accountId,
|
|
111
|
+
auth: options.auth,
|
|
112
|
+
sourcePath: sourceDir,
|
|
113
|
+
buildDir,
|
|
114
|
+
artifactPath,
|
|
115
|
+
commands: [configure, build]
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
function compilerForSource(releaseRoot, sourcePath) {
|
|
119
|
+
const extension = extname(sourcePath).toLowerCase();
|
|
120
|
+
const binDir = join(releaseRoot, "toolchain", "llvm-cross", "bin");
|
|
121
|
+
if (extension === ".c") {
|
|
122
|
+
return join(binDir, "aarch64-linux-gnu-gcc");
|
|
123
|
+
}
|
|
124
|
+
if ([".cc", ".cpp", ".cxx"].includes(extension)) {
|
|
125
|
+
return join(binDir, "aarch64-linux-gnu-g++");
|
|
126
|
+
}
|
|
127
|
+
throw new Error(`Unsupported source extension ${extension || "<none>"}; use .c, .cc, .cpp, or .cxx.`);
|
|
128
|
+
}
|
|
129
|
+
async function localCompileResult(input) {
|
|
130
|
+
await access(input.artifactPath, constants.R_OK);
|
|
131
|
+
const artifactInfo = await stat(input.artifactPath);
|
|
132
|
+
const artifactSha256 = await sha256(input.artifactPath);
|
|
133
|
+
const fileInfo = await fileInfoFor(input.artifactPath);
|
|
134
|
+
const manifestPath = `${input.artifactPath}.embedlabs-local-build.json`;
|
|
135
|
+
const result = {
|
|
136
|
+
board_id: input.boardId,
|
|
137
|
+
operation: input.operation,
|
|
138
|
+
release_root: input.releaseRoot,
|
|
139
|
+
account_id: input.accountId,
|
|
140
|
+
auth: input.auth,
|
|
141
|
+
source_path: input.sourcePath,
|
|
142
|
+
build_dir: input.buildDir,
|
|
143
|
+
artifact_path: input.artifactPath,
|
|
144
|
+
artifact_name: basename(input.artifactPath),
|
|
145
|
+
artifact_size_bytes: artifactInfo.size,
|
|
146
|
+
artifact_sha256: artifactSha256,
|
|
147
|
+
file_info: fileInfo,
|
|
148
|
+
commands: input.commands,
|
|
149
|
+
manifest_path: manifestPath
|
|
150
|
+
};
|
|
151
|
+
await writeFile(manifestPath, `${JSON.stringify(result, null, 2)}\n`, "utf8");
|
|
152
|
+
return result;
|
|
153
|
+
}
|
|
154
|
+
function assertAuthenticated(auth) {
|
|
155
|
+
if (!auth.authenticated) {
|
|
156
|
+
throw new Error("Embed Labs auth is required for local toolchain builds. Run: embedlabs auth login --token <user-api-key>");
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
async function runCommand(command, cwd) {
|
|
160
|
+
return await new Promise((resolve) => {
|
|
161
|
+
const child = spawn(command[0], command.slice(1), {
|
|
162
|
+
cwd,
|
|
163
|
+
env: process.env,
|
|
164
|
+
stdio: ["ignore", "pipe", "pipe"]
|
|
165
|
+
});
|
|
166
|
+
let stdout = "";
|
|
167
|
+
let stderr = "";
|
|
168
|
+
child.stdout.setEncoding("utf8");
|
|
169
|
+
child.stderr.setEncoding("utf8");
|
|
170
|
+
child.stdout.on("data", (chunk) => {
|
|
171
|
+
stdout += chunk;
|
|
172
|
+
});
|
|
173
|
+
child.stderr.on("data", (chunk) => {
|
|
174
|
+
stderr += chunk;
|
|
175
|
+
});
|
|
176
|
+
child.on("error", (error) => {
|
|
177
|
+
stderr += `${error.message}\n`;
|
|
178
|
+
resolve({
|
|
179
|
+
command,
|
|
180
|
+
cwd,
|
|
181
|
+
exit_code: 127,
|
|
182
|
+
stdout_tail: [],
|
|
183
|
+
stderr_tail: tailLines(stderr)
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
child.on("close", (code) => {
|
|
187
|
+
resolve({
|
|
188
|
+
command,
|
|
189
|
+
cwd,
|
|
190
|
+
exit_code: code ?? 1,
|
|
191
|
+
stdout_tail: tailLines(stdout),
|
|
192
|
+
stderr_tail: tailLines(stderr)
|
|
193
|
+
});
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
async function fileInfoFor(filePath) {
|
|
198
|
+
const result = await runCommand(["file", filePath], dirname(filePath));
|
|
199
|
+
return result.exit_code === 0 ? result.stdout_tail.join("\n") : undefined;
|
|
200
|
+
}
|
|
201
|
+
async function sha256(filePath) {
|
|
202
|
+
const content = await readFile(filePath);
|
|
203
|
+
return createHash("sha256").update(content).digest("hex");
|
|
204
|
+
}
|
|
205
|
+
async function pathExists(filePath) {
|
|
206
|
+
try {
|
|
207
|
+
await access(filePath);
|
|
208
|
+
return true;
|
|
209
|
+
}
|
|
210
|
+
catch {
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
function tailLines(text, maxLines = 80) {
|
|
215
|
+
return text.trim().split(/\r?\n/).filter(Boolean).slice(-maxLines);
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=local-toolchain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-toolchain.js","sourceRoot":"","sources":["../src/local-toolchain.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kvell007/embed-labs-cli",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.3",
|
|
4
4
|
"description": "Command-line interface for Embed Labs Cloud. Experimental npm publish.",
|
|
5
5
|
"private": false,
|
|
6
6
|
"type": "module",
|
|
@@ -14,11 +14,12 @@
|
|
|
14
14
|
"node": ">=20"
|
|
15
15
|
},
|
|
16
16
|
"bin": {
|
|
17
|
-
"embed": "dist/index.js"
|
|
17
|
+
"embed": "dist/index.js",
|
|
18
|
+
"embedlabs": "dist/index.js"
|
|
18
19
|
},
|
|
19
20
|
"dependencies": {
|
|
20
|
-
"@embed-labs/local-bridge": "npm:@kvell007/embed-labs-local-bridge@0.1.0-alpha.
|
|
21
|
-
"@embed-labs/protocol": "npm:@kvell007/embed-labs-protocol@0.1.0-alpha.
|
|
21
|
+
"@embed-labs/local-bridge": "npm:@kvell007/embed-labs-local-bridge@0.1.0-alpha.3",
|
|
22
|
+
"@embed-labs/protocol": "npm:@kvell007/embed-labs-protocol@0.1.0-alpha.3",
|
|
22
23
|
"qrcode-terminal": "^0.12.0"
|
|
23
24
|
},
|
|
24
25
|
"publishConfig": {
|