lim 0.43.0 → 0.44.0

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.
Files changed (58) hide show
  1. package/README.md +26 -0
  2. package/bin/lim-bazel-credentials.js +14 -0
  3. package/dist/commands/android/create.js +1 -1
  4. package/dist/commands/android/create.js.map +1 -1
  5. package/dist/commands/android/create.test.js +1 -1
  6. package/dist/commands/android/create.test.js.map +1 -1
  7. package/dist/commands/bazel/credentials/get.d.ts +13 -0
  8. package/dist/commands/bazel/credentials/get.d.ts.map +1 -0
  9. package/dist/commands/bazel/credentials/get.js +74 -0
  10. package/dist/commands/bazel/credentials/get.js.map +1 -0
  11. package/dist/commands/bazel/setup.d.ts +21 -0
  12. package/dist/commands/bazel/setup.d.ts.map +1 -0
  13. package/dist/commands/bazel/setup.js +101 -0
  14. package/dist/commands/bazel/setup.js.map +1 -0
  15. package/dist/commands/ios/create.js +1 -1
  16. package/dist/commands/ios/create.js.map +1 -1
  17. package/dist/commands/ios/create.test.js +1 -1
  18. package/dist/commands/ios/create.test.js.map +1 -1
  19. package/dist/commands/ios/display-routing.test.js +68 -8
  20. package/dist/commands/ios/display-routing.test.js.map +1 -1
  21. package/dist/commands/ios/record.d.ts +1 -0
  22. package/dist/commands/ios/record.d.ts.map +1 -1
  23. package/dist/commands/ios/record.js +16 -12
  24. package/dist/commands/ios/record.js.map +1 -1
  25. package/dist/commands/tunnel/create.d.ts.map +1 -1
  26. package/dist/commands/tunnel/create.js +2 -2
  27. package/dist/commands/tunnel/create.js.map +1 -1
  28. package/dist/commands/tunnel/delete.d.ts.map +1 -1
  29. package/dist/commands/tunnel/delete.js +2 -2
  30. package/dist/commands/tunnel/delete.js.map +1 -1
  31. package/dist/commands/tunnel/list.d.ts.map +1 -1
  32. package/dist/commands/tunnel/list.js +2 -2
  33. package/dist/commands/tunnel/list.js.map +1 -1
  34. package/dist/commands/tunnel/manage.test.js.map +1 -1
  35. package/dist/commands/tunnel/rotate.d.ts.map +1 -1
  36. package/dist/commands/tunnel/rotate.js +2 -2
  37. package/dist/commands/tunnel/rotate.js.map +1 -1
  38. package/dist/commands/tunnel/run.d.ts.map +1 -1
  39. package/dist/commands/tunnel/run.js +1 -1
  40. package/dist/commands/tunnel/run.js.map +1 -1
  41. package/dist/commands/tunnel/update.d.ts.map +1 -1
  42. package/dist/commands/tunnel/update.js +2 -2
  43. package/dist/commands/tunnel/update.js.map +1 -1
  44. package/dist/lib/backend.d.ts +8 -8
  45. package/dist/lib/backend.d.ts.map +1 -1
  46. package/dist/lib/backend.js.map +1 -1
  47. package/dist/lib/bazel-setup.d.ts +88 -0
  48. package/dist/lib/bazel-setup.d.ts.map +1 -0
  49. package/dist/lib/bazel-setup.js +440 -0
  50. package/dist/lib/bazel-setup.js.map +1 -0
  51. package/dist/lib/bazel-setup.test.d.ts +2 -0
  52. package/dist/lib/bazel-setup.test.d.ts.map +1 -0
  53. package/dist/lib/bazel-setup.test.js +150 -0
  54. package/dist/lib/bazel-setup.test.js.map +1 -0
  55. package/dist/lib/daemon.d.ts.map +1 -1
  56. package/dist/lib/daemon.js +3 -1
  57. package/dist/lib/daemon.js.map +1 -1
  58. package/package.json +11 -3
@@ -0,0 +1,440 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.CREDENTIAL_HELPER = void 0;
7
+ exports.credentialHelperOnPath = credentialHelperOnPath;
8
+ exports.bazelCredentials = bazelCredentials;
9
+ exports.getBazelSetup = getBazelSetup;
10
+ exports.installedBazelMajor = installedBazelMajor;
11
+ exports.bazelTooOld = bazelTooOld;
12
+ exports.detectWorkspaceKinds = detectWorkspaceKinds;
13
+ exports.missingAndroidModuleLines = missingAndroidModuleLines;
14
+ exports.appendModuleLines = appendModuleLines;
15
+ exports.renderPlaneBazelrc = renderPlaneBazelrc;
16
+ exports.writePlaneWorkspaceFiles = writePlaneWorkspaceFiles;
17
+ const child_process_1 = require("child_process");
18
+ const fs_1 = __importDefault(require("fs"));
19
+ const path_1 = __importDefault(require("path"));
20
+ const api_1 = require("@limrun/api");
21
+ /** The executable Bazel runs as its credential helper, beside `lim`. */
22
+ exports.CREDENTIAL_HELPER = 'lim-bazel-credentials';
23
+ /**
24
+ * Whether Bazel can find the credential helper on PATH. The npm package links
25
+ * it beside `lim`; a standalone tarball install links only `lim`.
26
+ */
27
+ function credentialHelperOnPath() {
28
+ const names = process.platform === 'win32' ?
29
+ ['.cmd', '.exe'].map((ext) => exports.CREDENTIAL_HELPER + ext)
30
+ : [exports.CREDENTIAL_HELPER];
31
+ return (process.env.PATH ?? '')
32
+ .split(path_1.default.delimiter)
33
+ .some((dir) => dir && names.some((name) => fs_1.default.existsSync(path_1.default.join(dir, name))));
34
+ }
35
+ /** How long a minted token lives; Bazel asks again before it expires. */
36
+ const TOKEN_TTL_SECONDS = 3600;
37
+ /** What a build needs: read and write the cache, and run actions. */
38
+ const BUILD_SCOPES = ['remotecache:*:all', 'remoteexecution:*:all'];
39
+ /** Mints a short-lived scoped token for the plane from the caller's own credential. */
40
+ async function bazelCredentials(client) {
41
+ const token = await client.scopedTokens.create({ scopes: BUILD_SCOPES, ttlSeconds: TOKEN_TTL_SECONDS });
42
+ return { headers: { Authorization: [`Bearer ${token.token}`] }, expires: token.expiresAt };
43
+ }
44
+ /** Asks the director for the build plane closest to the caller, or in region. */
45
+ async function getBazelSetup(client, region) {
46
+ return client.get('/v1/bazel_setup', { query: region ? { region } : {} });
47
+ }
48
+ /**
49
+ * The major version of the Bazel on PATH, for a workspace that pins none.
50
+ * Without a pin, bazelisk runs the latest release, but a system Bazel runs
51
+ * whatever is installed, and the startup flags must suit it. Null when no
52
+ * Bazel answers in time; bazelisk may first download the latest release.
53
+ */
54
+ function installedBazelMajor(workspaceRoot) {
55
+ try {
56
+ const out = (0, child_process_1.execFileSync)('bazel', ['--version'], {
57
+ cwd: workspaceRoot,
58
+ encoding: 'utf8',
59
+ timeout: 20000,
60
+ stdio: ['ignore', 'pipe', 'ignore'],
61
+ });
62
+ const match = out.match(/bazel (\d+)\./);
63
+ return match ? Number(match[1]) : null;
64
+ }
65
+ catch {
66
+ return null;
67
+ }
68
+ }
69
+ /** The oldest Bazel the generated configuration works with. */
70
+ const MIN_BAZEL_MAJOR = 8;
71
+ /**
72
+ * Why the workspace's pinned Bazel is too old for the build plane, or null.
73
+ * Bazel 8 named external repositories the way the generated flags do.
74
+ */
75
+ function bazelTooOld(bazelMajor) {
76
+ if (bazelMajor === null || bazelMajor >= MIN_BAZEL_MAJOR)
77
+ return null;
78
+ return `This workspace pins Bazel ${bazelMajor} in .bazelversion; the build plane setup needs Bazel ${MIN_BAZEL_MAJOR} or later.`;
79
+ }
80
+ function detectWorkspaceKinds(workspaceRoot) {
81
+ const module = readModule(workspaceRoot);
82
+ return {
83
+ // apple_support alone also serves plain macOS C++ builds, so only
84
+ // rules_apple marks an Apple workspace.
85
+ apple: hasBazelDep(module, 'rules_apple'),
86
+ android: hasBazelDep(module, 'rules_android'),
87
+ javaRuntime: setsJavaRuntime(workspaceRoot),
88
+ };
89
+ }
90
+ /** Whether the workspace's .bazelrc sets the Java runtime itself. */
91
+ function setsJavaRuntime(workspaceRoot) {
92
+ return readOrEmpty(path_1.default.join(workspaceRoot, '.bazelrc'))
93
+ .split('\n')
94
+ .some((line) => !line.trimStart().startsWith('#') && /--java_runtime_version=/.test(line));
95
+ }
96
+ function readModule(workspaceRoot) {
97
+ return readOrEmpty(path_1.default.join(workspaceRoot, 'MODULE.bazel'));
98
+ }
99
+ function readOrEmpty(file) {
100
+ try {
101
+ return fs_1.default.readFileSync(file, 'utf8');
102
+ }
103
+ catch {
104
+ return '';
105
+ }
106
+ }
107
+ function hasBazelDep(module, name) {
108
+ return new RegExp(`^\\s*bazel_dep\\(\\s*name\\s*=\\s*"${name}"`, 'm').test(module);
109
+ }
110
+ /**
111
+ * The lines an Android workspace's root MODULE.bazel needs for Linux workers,
112
+ * for each piece it lacks. These cannot live in a bazelrc. The Android SDK
113
+ * comes per OS from hermetic_android_toolchains, protobuf 35 ships a
114
+ * prebuilt protoc, and rules_cc and rules_java back the toolchains setup
115
+ * writes into .limrun.
116
+ */
117
+ function missingAndroidModuleLines(workspaceRoot) {
118
+ const module = readModule(workspaceRoot);
119
+ const blocks = [];
120
+ const deps = [
121
+ ['rules_cc', 'bazel_dep(name = "rules_cc", version = "0.2.17")'],
122
+ ['rules_java', 'bazel_dep(name = "rules_java", version = "9.3.0")'],
123
+ ['protobuf', 'bazel_dep(name = "protobuf", version = "35.1", repo_name = "com_google_protobuf")'],
124
+ ];
125
+ for (const [name, line] of deps) {
126
+ if (!hasBazelDep(module, name))
127
+ blocks.push(line);
128
+ }
129
+ if (!hasBazelDep(module, 'hermetic_android_toolchains')) {
130
+ blocks.push(`# The Android SDK for each OS a build runs on, Linux workers included.
131
+ bazel_dep(name = "hermetic_android_toolchains", version = "0.5.0")
132
+
133
+ android = use_extension("@hermetic_android_toolchains//:extensions.bzl", "android", dev_dependency = True)
134
+ android.sdk(
135
+ build_tools_version = "36.0.0",
136
+ version = "36",
137
+ )
138
+ use_repo(android, "androidsdk")
139
+
140
+ rules_android_sdk = use_extension("@rules_android//rules/android_sdk_repository:rule.bzl", "android_sdk_repository_extension", dev_dependency = True)
141
+ override_repo(rules_android_sdk, "androidsdk")
142
+
143
+ register_toolchains("@androidsdk//:all", dev_dependency = True)`);
144
+ }
145
+ if (blocks.length === 0)
146
+ return '';
147
+ return `\n# Added by lim bazel setup for Limrun's Linux build workers.\n${blocks.join('\n\n')}\n`;
148
+ }
149
+ /** Appends lines to the workspace's root MODULE.bazel. */
150
+ function appendModuleLines(workspaceRoot, lines) {
151
+ const file = path_1.default.join(workspaceRoot, 'MODULE.bazel');
152
+ const current = readModule(workspaceRoot);
153
+ fs_1.default.writeFileSync(file, current.replace(/\n*$/, '\n') + lines);
154
+ }
155
+ /** The Xcode version a build pins: the fleet's first, as `lim xcode rbe` does. */
156
+ function pinnedXcode(setup) {
157
+ const version = setup.xcodeVersions[0];
158
+ if (!version)
159
+ throw new Error('The build plane reports no Xcode version.');
160
+ return version;
161
+ }
162
+ /** major.minor from a version key such as 26.4.0.17E192, for --xcode_version. */
163
+ function shortXcode(versionKey) {
164
+ const [major, minor, patch] = versionKey.split('.');
165
+ if (!patch)
166
+ throw new Error(`The build plane reports an unexpected Xcode version: ${versionKey}`);
167
+ return `${major}.${minor}`;
168
+ }
169
+ /**
170
+ * Renders .limrun/bazelrc for the plane under --config=limrun. Every action
171
+ * runs remotely, and no token is written: Bazel asks the credential helper
172
+ * for one per host, and again before it expires.
173
+ */
174
+ function renderPlaneBazelrc(setup, kinds, isMacClient, bazelMajor) {
175
+ const host = new URL(setup.endpoint).hostname;
176
+ const lines = [
177
+ '# Generated by lim bazel setup. Do not edit; rerun the command to refresh.',
178
+ `build:limrun --remote_executor=${setup.endpoint}`,
179
+ `build:limrun --bes_backend=${setup.endpoint}`,
180
+ `build:limrun --remote_instance_name=${setup.instanceName}`,
181
+ `build:limrun --credential_helper=${host}=${exports.CREDENTIAL_HELPER}`,
182
+ 'build:limrun --bes_upload_mode=nowait_for_upload_complete',
183
+ 'build:limrun --bes_timeout=60s',
184
+ // A workspace's own --remote_cache would split inputs and outputs
185
+ // across two stores the plane cannot reconcile.
186
+ 'build:limrun --remote_cache=',
187
+ 'build:limrun --remote_timeout=600',
188
+ 'build:limrun --spawn_strategy=remote',
189
+ 'build:limrun --noremote_local_fallback',
190
+ 'build:limrun --strategy=Genrule=remote',
191
+ 'build:limrun --modify_execution_info=.*=-no-remote,.*=-no-remote-exec',
192
+ 'build:limrun --remote_download_outputs=toplevel',
193
+ ];
194
+ if (kinds.apple) {
195
+ const xcode = pinnedXcode(setup);
196
+ lines.push('build:limrun --strategy=SwiftCompile=remote', 'build:limrun --xcode_version_config=//.limrun:remote_xcode_config', `build:limrun --xcode_version=${shortXcode(xcode)}`, 'build:limrun --ios_multi_cpus=sim_arm64', 'build:limrun --action_env=PATH=/usr/bin:/bin:/usr/sbin:/sbin');
197
+ }
198
+ if (kinds.android) {
199
+ // Linux first, so Android and Java actions run on Linux workers, while
200
+ // Apple toolchains still pick the macOS platform.
201
+ lines.push('common:limrun --extra_execution_platforms=//.limrun:linux_x86_64,//.limrun:macos_arm64', 'common:limrun --platforms=//.limrun:linux_x86_64',
202
+ // Without it, output paths carry the client's CPU, so a Mac and a
203
+ // Linux client miss each other's cache entries.
204
+ 'common:limrun --experimental_platform_in_output_dir', 'common:limrun --extra_toolchains=//.limrun:all', 'common:limrun --repo_env=ACCEPTED_ANDROID_SDK_LICENSE_VERSION=36',
205
+ // Workers carry no python3; rules_python tools run on the hermetic
206
+ // Python instead.
207
+ 'common:limrun --@@rules_python+//python/config_settings:bootstrap_impl=script');
208
+ if (!kinds.javaRuntime) {
209
+ // The workers carry JDK 17, 21 and 25, and .limrun registers
210
+ // toolchains that run them by path, so clients never upload one. A
211
+ // workspace that picks its own version keeps it.
212
+ lines.push('common:limrun --java_runtime_version=remotejdk_17', 'common:limrun --tool_java_runtime_version=remotejdk_17');
213
+ }
214
+ }
215
+ else if (kinds.apple) {
216
+ lines.push('build:limrun --remote_default_exec_properties=OSFamily=macos');
217
+ if (!isMacClient) {
218
+ // A Linux client has no darwin platform of its own to route Apple
219
+ // toolchains to.
220
+ lines.push('build:limrun --extra_execution_platforms=@build_bazel_apple_support//platforms:darwin_arm64');
221
+ }
222
+ }
223
+ if ((0, api_1.isBazel9OrLater)(bazelMajor)) {
224
+ // A startup option applies to every command in the workspace, and Bazel
225
+ // before 9 refuses to start with one it does not know.
226
+ lines.push('', '# Later machines fetch external repositories from the remote cache', '# instead of the internet, once any machine of the organization has.', 'startup --experimental_remote_repo_contents_cache');
227
+ }
228
+ lines.push('', '# A user.limrun.bazelrc at the workspace root is try-imported last, so it', '# can extend or override anything above.', 'try-import %workspace%/user.limrun.bazelrc', '');
229
+ return lines.join('\n');
230
+ }
231
+ /**
232
+ * Renders .limrun/BUILD: the Xcode version pin for Apple builds, and for
233
+ * Android builds the two execution platforms and the workers' JDK and C
234
+ * toolchains.
235
+ */
236
+ function renderPlaneBuild(setup, kinds, bazelMajor) {
237
+ const parts = [];
238
+ if (kinds.apple) {
239
+ parts.push((0, api_1.renderXcodeConfigBuild)(pinnedXcode(setup), (0, api_1.isBazel9OrLater)(bazelMajor)));
240
+ }
241
+ if (kinds.android) {
242
+ parts.push(renderAndroidBuild(setup.linuxToolchains));
243
+ }
244
+ // Bazel wants every load() before the first rule, and the parts each start
245
+ // with their own, so hoist them under one header.
246
+ const lines = parts.join('\n').split('\n');
247
+ const isLoad = (line) => line.startsWith('load(');
248
+ return [
249
+ '# Generated by lim bazel setup. Do not edit; rerun the command to refresh.',
250
+ ...lines.filter(isLoad),
251
+ '',
252
+ ...lines.filter((line) => !isLoad(line) && !line.startsWith('# Generated by')),
253
+ ].join('\n');
254
+ }
255
+ function renderAndroidBuild(toolchains) {
256
+ return `load("@rules_cc//cc/toolchains:cc_toolchain.bzl", "cc_toolchain")
257
+ load("@rules_java//java/toolchains:java_runtime.bzl", "java_runtime")
258
+ load(":linux_cc_toolchain_config.bzl", "linux_cc_toolchain_config")
259
+
260
+ # The workers' platforms. limrun-toolchains names the JDKs a Linux worker's
261
+ # image carries; it is part of every Linux action's cache key.
262
+ platform(
263
+ name = "linux_x86_64",
264
+ constraint_values = [
265
+ "@platforms//os:linux",
266
+ "@platforms//cpu:x86_64",
267
+ ],
268
+ exec_properties = {
269
+ "OSFamily": "linux",
270
+ "limrun-toolchains": "${toolchains}",
271
+ },
272
+ )
273
+
274
+ platform(
275
+ name = "macos_arm64",
276
+ constraint_values = [
277
+ "@platforms//os:macos",
278
+ "@platforms//cpu:arm64",
279
+ ],
280
+ exec_properties = {"OSFamily": "macos"},
281
+ )
282
+
283
+ # Linux workers carry JDK 17, 21 and 25 at /opt/java/<version>. Each runtime
284
+ # answers both its plain and its remotejdk_ version name, so rules_java picks
285
+ # it over a downloaded JDK.
286
+ [java_runtime(
287
+ name = "worker_jdk%d" % v,
288
+ java_home = "/opt/java/%d" % v,
289
+ version = v,
290
+ ) for v in (17, 21, 25)]
291
+
292
+ [config_setting(
293
+ name = "jdk%d_%s" % (v, k),
294
+ values = {"java_runtime_version": n},
295
+ ) for v in (17, 21, 25) for (k, n) in (("plain", str(v)), ("remote", "remotejdk_%d" % v))]
296
+
297
+ [alias(
298
+ name = "jdk%d_setting" % v,
299
+ actual = select({
300
+ ":jdk%d_plain" % v: ":jdk%d_plain" % v,
301
+ "//conditions:default": ":jdk%d_remote" % v,
302
+ }),
303
+ ) for v in (17, 21, 25)]
304
+
305
+ [toolchain(
306
+ name = "worker_jdk%d_runtime" % v,
307
+ target_compatible_with = ["@platforms//os:linux", "@platforms//cpu:x86_64"],
308
+ target_settings = [":jdk%d_setting" % v],
309
+ toolchain = ":worker_jdk%d" % v,
310
+ toolchain_type = "@bazel_tools//tools/jdk:runtime_toolchain_type",
311
+ ) for v in (17, 21, 25)]
312
+
313
+ [toolchain(
314
+ name = "worker_jdk%d_bootstrap" % v,
315
+ exec_compatible_with = ["@platforms//os:linux", "@platforms//cpu:x86_64"],
316
+ target_settings = [":jdk%d_setting" % v],
317
+ toolchain = ":worker_jdk%d" % v,
318
+ toolchain_type = "@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type",
319
+ ) for v in (17, 21, 25)]
320
+
321
+ # Linux workers carry clang at fixed paths; this toolchain runs it by path,
322
+ # for build steps that compile C or C++.
323
+ filegroup(name = "empty")
324
+
325
+ linux_cc_toolchain_config(name = "linux_cc_config")
326
+
327
+ cc_toolchain(
328
+ name = "linux_cc",
329
+ all_files = ":empty",
330
+ ar_files = ":empty",
331
+ as_files = ":empty",
332
+ compiler_files = ":empty",
333
+ dwp_files = ":empty",
334
+ linker_files = ":empty",
335
+ objcopy_files = ":empty",
336
+ strip_files = ":empty",
337
+ toolchain_config = ":linux_cc_config",
338
+ )
339
+
340
+ toolchain(
341
+ name = "linux_cc_toolchain",
342
+ exec_compatible_with = [
343
+ "@platforms//os:linux",
344
+ "@platforms//cpu:x86_64",
345
+ ],
346
+ target_compatible_with = [
347
+ "@platforms//os:linux",
348
+ "@platforms//cpu:x86_64",
349
+ ],
350
+ toolchain = ":linux_cc",
351
+ toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
352
+ )
353
+ `;
354
+ }
355
+ const LINUX_CC_TOOLCHAIN_CONFIG = `# Generated by lim bazel setup. Do not edit; rerun the command to refresh.
356
+ """The Linux workers' C and C++ toolchain: clang at fixed paths in the worker
357
+ image, run by path. Its version is part of limrun-toolchains."""
358
+
359
+ load("@rules_cc//cc/common:cc_common.bzl", "cc_common")
360
+ load("@rules_cc//cc/toolchains:cc_toolchain_config_info.bzl", "CcToolchainConfigInfo")
361
+ load("@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl", "feature", "flag_group", "flag_set", "tool_path")
362
+ load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "ACTION_NAMES")
363
+
364
+ _LINK_ACTIONS = [
365
+ ACTION_NAMES.cpp_link_executable,
366
+ ACTION_NAMES.cpp_link_dynamic_library,
367
+ ACTION_NAMES.cpp_link_nodeps_dynamic_library,
368
+ ]
369
+
370
+ def _impl(ctx):
371
+ tools = {
372
+ "gcc": "/usr/bin/clang",
373
+ "cpp": "/usr/bin/clang-cpp",
374
+ "ld": "/usr/bin/ld",
375
+ "ar": "/usr/bin/ar",
376
+ "nm": "/usr/bin/nm",
377
+ "objcopy": "/usr/bin/objcopy",
378
+ "objdump": "/usr/bin/objdump",
379
+ "strip": "/usr/bin/strip",
380
+ "gcov": "/bin/false",
381
+ "dwp": "/bin/false",
382
+ "llvm-cov": "/bin/false",
383
+ }
384
+ return [cc_common.create_cc_toolchain_config_info(
385
+ ctx = ctx,
386
+ toolchain_identifier = "limrun_linux_clang",
387
+ host_system_name = "x86_64-unknown-linux-gnu",
388
+ target_system_name = "x86_64-unknown-linux-gnu",
389
+ target_cpu = "k8",
390
+ target_libc = "glibc",
391
+ compiler = "clang",
392
+ abi_version = "local",
393
+ abi_libc_version = "local",
394
+ tool_paths = [tool_path(name = k, path = v) for k, v in tools.items()],
395
+ # The image's system headers, which actions may include.
396
+ cxx_builtin_include_directories = [
397
+ "/usr/lib/llvm-18/lib/clang/18/include",
398
+ "/usr/local/include",
399
+ "/usr/include",
400
+ "/usr/lib/gcc/x86_64-linux-gnu/13",
401
+ "/usr/bin/../lib/gcc/x86_64-linux-gnu/13",
402
+ ],
403
+ features = [
404
+ feature(
405
+ name = "default_link_flags",
406
+ enabled = True,
407
+ flag_sets = [flag_set(actions = _LINK_ACTIONS, flag_groups = [flag_group(flags = ["-lstdc++", "-lm"])])],
408
+ ),
409
+ ],
410
+ )]
411
+
412
+ linux_cc_toolchain_config = rule(
413
+ implementation = _impl,
414
+ provides = [CcToolchainConfigInfo],
415
+ )
416
+ `;
417
+ /**
418
+ * Writes .limrun/{bazelrc,BUILD,.gitignore}, and the Linux C and C++
419
+ * toolchain for Android builds, then wires the try-import into the
420
+ * workspace's .bazelrc.
421
+ * The .gitignore makes the directory self-ignoring.
422
+ */
423
+ function writePlaneWorkspaceFiles(workspaceRoot, setup, kinds, bazelMajor, isMacClient = process.platform === 'darwin') {
424
+ const dir = path_1.default.join(workspaceRoot, api_1.LIMRUN_DIR);
425
+ fs_1.default.mkdirSync(dir, { recursive: true });
426
+ const bazelrc = path_1.default.join(dir, 'bazelrc');
427
+ const buildFile = path_1.default.join(dir, 'BUILD');
428
+ fs_1.default.writeFileSync(bazelrc, renderPlaneBazelrc(setup, kinds, isMacClient, bazelMajor));
429
+ fs_1.default.writeFileSync(buildFile, renderPlaneBuild(setup, kinds, bazelMajor));
430
+ const ccConfig = path_1.default.join(dir, 'linux_cc_toolchain_config.bzl');
431
+ if (kinds.android) {
432
+ fs_1.default.writeFileSync(ccConfig, LINUX_CC_TOOLCHAIN_CONFIG);
433
+ }
434
+ else {
435
+ fs_1.default.rmSync(ccConfig, { force: true });
436
+ }
437
+ fs_1.default.writeFileSync(path_1.default.join(dir, '.gitignore'), '*\n');
438
+ return { bazelrc, buildFile, bazelrcUpdated: (0, api_1.ensureTryImport)(workspaceRoot) };
439
+ }
440
+ //# sourceMappingURL=bazel-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bazel-setup.js","sourceRoot":"","sources":["../../src/lib/bazel-setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=bazel-setup.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bazel-setup.test.d.ts","sourceRoot":"","sources":["../../src/lib/bazel-setup.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const fs_1 = __importDefault(require("fs"));
7
+ const os_1 = __importDefault(require("os"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const api_1 = __importDefault(require("@limrun/api"));
10
+ const bazel_setup_1 = require("./bazel-setup");
11
+ const setup = {
12
+ endpoint: 'grpcs://buildplane.eu-north1.limrun.net:4443',
13
+ instanceName: 'org_01h455vb4pex5vsknk084sn02q',
14
+ region: 'eu-north1',
15
+ xcodeVersions: ['26.4.0.17E192'],
16
+ linuxToolchains: 'jdk-17-21-25-v1',
17
+ };
18
+ function workspace(module) {
19
+ const dir = fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'lim-bazel-setup-'));
20
+ fs_1.default.writeFileSync(path_1.default.join(dir, 'MODULE.bazel'), module);
21
+ return dir;
22
+ }
23
+ function mockResponse(status, body) {
24
+ return new Response(JSON.stringify(body), { status, headers: { 'Content-Type': 'application/json' } });
25
+ }
26
+ describe('workspace kinds', () => {
27
+ it('reads the rules the root module depends on', () => {
28
+ expect((0, bazel_setup_1.detectWorkspaceKinds)(workspace('bazel_dep(name = "rules_apple", version = "4.0.0")'))).toMatchObject({
29
+ apple: true,
30
+ android: false,
31
+ });
32
+ expect((0, bazel_setup_1.detectWorkspaceKinds)(workspace('bazel_dep(\n name = "rules_android",\n version = "0.8.0",\n)'))).toMatchObject({ apple: false, android: true, javaRuntime: false });
33
+ // apple_support alone serves macOS C++ builds too; it is not an Apple app.
34
+ expect((0, bazel_setup_1.detectWorkspaceKinds)(workspace('bazel_dep(name = "apple_support", version = "1.21.0")'))).toMatchObject({
35
+ apple: false,
36
+ });
37
+ expect((0, bazel_setup_1.detectWorkspaceKinds)(workspace('# bazel_dep(name = "rules_cc")'))).toMatchObject({
38
+ apple: false,
39
+ android: false,
40
+ });
41
+ });
42
+ });
43
+ describe('MODULE.bazel lines for Android', () => {
44
+ it('names only what the module lacks, and nothing once added', () => {
45
+ const dir = workspace('bazel_dep(name = "rules_android", version = "0.8.0")\nbazel_dep(name = "rules_cc", version = "0.2.17")\n');
46
+ const lines = (0, bazel_setup_1.missingAndroidModuleLines)(dir);
47
+ expect(lines).toContain('hermetic_android_toolchains');
48
+ expect(lines).toContain('name = "protobuf"');
49
+ expect(lines).not.toContain('name = "rules_cc"');
50
+ expect((0, bazel_setup_1.missingAndroidModuleLines)(workspace('# bazel_dep(name = "rules_cc", version = "0.2.17")\n'))).toContain('name = "rules_cc"');
51
+ (0, bazel_setup_1.appendModuleLines)(dir, lines);
52
+ expect((0, bazel_setup_1.missingAndroidModuleLines)(dir)).toBe('');
53
+ });
54
+ });
55
+ describe('plane bazelrc', () => {
56
+ it('reaches the plane with the credential helper and never a token', () => {
57
+ const rc = (0, bazel_setup_1.renderPlaneBazelrc)(setup, { apple: true, android: false, javaRuntime: false }, true, 9);
58
+ expect(rc).toContain('build:limrun --remote_executor=grpcs://buildplane.eu-north1.limrun.net:4443');
59
+ expect(rc).toContain('build:limrun --remote_instance_name=org_01h455vb4pex5vsknk084sn02q');
60
+ expect(rc).toContain('build:limrun --credential_helper=buildplane.eu-north1.limrun.net=lim-bazel-credentials');
61
+ expect(rc).toContain('build:limrun --remote_default_exec_properties=OSFamily=macos');
62
+ expect(rc).toContain('build:limrun --xcode_version=26.4');
63
+ expect(rc).not.toMatch(/lim_st_|Authorization|remote_header/);
64
+ });
65
+ it('routes Android actions to Linux workers first', () => {
66
+ const rc = (0, bazel_setup_1.renderPlaneBazelrc)(setup, { apple: false, android: true, javaRuntime: false }, true, 9);
67
+ expect(rc).toContain('common:limrun --extra_execution_platforms=//.limrun:linux_x86_64,//.limrun:macos_arm64');
68
+ expect(rc).toContain('bootstrap_impl=script');
69
+ expect(rc).not.toContain('xcode_version');
70
+ expect(rc).not.toContain('remote_default_exec_properties');
71
+ });
72
+ it("keeps a workspace's own Java runtime", () => {
73
+ const own = (0, bazel_setup_1.renderPlaneBazelrc)(setup, { apple: false, android: true, javaRuntime: true }, true, 9);
74
+ expect(own).not.toContain('java_runtime_version');
75
+ const dir = workspace('bazel_dep(name = "rules_android", version = "0.8.0")\n');
76
+ fs_1.default.writeFileSync(path_1.default.join(dir, '.bazelrc'), '# --java_runtime_version=8\nbuild --java_runtime_version=21\n');
77
+ expect((0, bazel_setup_1.detectWorkspaceKinds)(dir).javaRuntime).toBe(true);
78
+ expect((0, bazel_setup_1.renderPlaneBazelrc)(setup, { apple: false, android: true, javaRuntime: false }, true, 9)).toContain('common:limrun --java_runtime_version=remotejdk_17');
79
+ });
80
+ it('keeps Bazel before 9 starting, and refuses Bazel before 8', () => {
81
+ const startup = 'startup --experimental_remote_repo_contents_cache';
82
+ expect((0, bazel_setup_1.renderPlaneBazelrc)(setup, { apple: true, android: false, javaRuntime: false }, true, 9)).toContain(startup);
83
+ expect((0, bazel_setup_1.renderPlaneBazelrc)(setup, { apple: true, android: false, javaRuntime: false }, true, null)).toContain(startup);
84
+ expect((0, bazel_setup_1.renderPlaneBazelrc)(setup, { apple: true, android: false, javaRuntime: false }, true, 8)).not.toContain(startup);
85
+ expect((0, bazel_setup_1.bazelTooOld)(8)).toBeNull();
86
+ expect((0, bazel_setup_1.bazelTooOld)(null)).toBeNull();
87
+ expect((0, bazel_setup_1.bazelTooOld)(7)).toContain('needs Bazel 8 or later');
88
+ });
89
+ it('gives a Linux client a darwin platform for Apple toolchains', () => {
90
+ expect((0, bazel_setup_1.renderPlaneBazelrc)(setup, { apple: true, android: false, javaRuntime: false }, false, 9)).toContain('--extra_execution_platforms=@build_bazel_apple_support//platforms:darwin_arm64');
91
+ });
92
+ });
93
+ describe('workspace files', () => {
94
+ it('writes the Android platforms with the workers toolchains, and refreshes in place', () => {
95
+ const dir = workspace('bazel_dep(name = "rules_android", version = "0.8.0")\n');
96
+ const files = (0, bazel_setup_1.writePlaneWorkspaceFiles)(dir, setup, { apple: false, android: true, javaRuntime: false }, 9, true);
97
+ const build = fs_1.default.readFileSync(files.buildFile, 'utf8');
98
+ expect(build).toContain('"limrun-toolchains": "jdk-17-21-25-v1"');
99
+ expect(build).toContain('java_home = "/opt/java/%d" % v');
100
+ expect(build).not.toContain('xcode_config');
101
+ expect(build).toContain('toolchain = ":linux_cc"');
102
+ expect(fs_1.default.existsSync(path_1.default.join(dir, '.limrun', 'linux_cc_toolchain_config.bzl'))).toBe(true);
103
+ expect(files.bazelrcUpdated).toBe(true);
104
+ // A refresh after the workspace drops Android leaves no stub behind and
105
+ // the import in place.
106
+ const again = (0, bazel_setup_1.writePlaneWorkspaceFiles)(dir, setup, { apple: true, android: false, javaRuntime: false }, 9, true);
107
+ expect(again.bazelrcUpdated).toBe(false);
108
+ expect(fs_1.default.existsSync(path_1.default.join(dir, '.limrun', 'linux_cc_toolchain_config.bzl'))).toBe(false);
109
+ expect(fs_1.default.readFileSync(again.buildFile, 'utf8')).toContain('xcode_config');
110
+ });
111
+ });
112
+ describe('combined workspace', () => {
113
+ it('loads everything before the first rule, under one header', () => {
114
+ const dir = workspace('bazel_dep(name = "rules_android", version = "0.8.0")\n');
115
+ const files = (0, bazel_setup_1.writePlaneWorkspaceFiles)(dir, setup, { apple: true, android: true, javaRuntime: false }, 9, true);
116
+ const lines = fs_1.default.readFileSync(files.buildFile, 'utf8').split('\n');
117
+ const lastLoad = lines.map((line) => line.startsWith('load(')).lastIndexOf(true);
118
+ const firstRule = lines.findIndex((line) => /^[a-z_]+\($/.test(line) && !line.startsWith('load('));
119
+ expect(lastLoad).toBeLessThan(firstRule);
120
+ expect(lines.filter((line) => line.startsWith('# Generated by'))).toEqual([
121
+ '# Generated by lim bazel setup. Do not edit; rerun the command to refresh.',
122
+ ]);
123
+ });
124
+ });
125
+ describe('director and credentials', () => {
126
+ let fetchMock;
127
+ let client;
128
+ beforeEach(() => {
129
+ fetchMock = jest.spyOn(globalThis, 'fetch');
130
+ client = new api_1.default({ apiKey: 'key', baseURL: 'https://api.example.test', maxRetries: 0 });
131
+ });
132
+ afterEach(() => {
133
+ fetchMock.mockRestore();
134
+ });
135
+ it('asks for a region only when given one', async () => {
136
+ fetchMock.mockResolvedValue(mockResponse(200, setup));
137
+ await (0, bazel_setup_1.getBazelSetup)(client, 'eu-north1');
138
+ expect(String(fetchMock.mock.calls[0][0])).toBe('https://api.example.test/v1/bazel_setup?region=eu-north1');
139
+ });
140
+ it('answers in the credential helper protocol', async () => {
141
+ fetchMock.mockResolvedValue(mockResponse(200, { token: 'lim_st_abc', expiresAt: '2026-10-06T12:00:00Z', scopes: [] }));
142
+ expect(await (0, bazel_setup_1.bazelCredentials)(client)).toEqual({
143
+ headers: { Authorization: ['Bearer lim_st_abc'] },
144
+ expires: '2026-10-06T12:00:00Z',
145
+ });
146
+ const body = JSON.parse(String(fetchMock.mock.calls[0][1].body));
147
+ expect(body.scopes).toEqual(['remotecache:*:all', 'remoteexecution:*:all']);
148
+ });
149
+ });
150
+ //# sourceMappingURL=bazel-setup.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bazel-setup.test.js","sourceRoot":"","sources":["../../src/lib/bazel-setup.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/lib/daemon.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAO9D,QAAA,MAAM,aAAa,QAA8C,CAAC;AAMlE,OAAO,EAAE,aAAa,EAAE,CAAC;AASzB,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEpD;AAID,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAQD,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAGvE;AAED,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAQjE;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAcrD;AAID,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAkB3D;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK9D;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAQnD;AAyCD;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA4D3G;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,CAqC1E;AAID,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC9C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAID;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CA6WxC"}
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/lib/daemon.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAO9D,QAAA,MAAM,aAAa,QAA8C,CAAC;AAMlE,OAAO,EAAE,aAAa,EAAE,CAAC;AASzB,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEpD;AAID,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAQD,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAGvE;AAED,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAQjE;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAcrD;AAID,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAkB3D;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK9D;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAQnD;AAyCD;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA4D3G;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,CAqC1E;AAID,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC9C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAID;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAiXxC"}
@@ -541,7 +541,9 @@ function startDaemonServer() {
541
541
  }
542
542
  break;
543
543
  case 'start-recording':
544
- await client.startRecording(args[0] ? { quality: args[0] } : undefined);
544
+ await client.startRecording(type === 'ios' ? args[0]
545
+ : args[0] ? { quality: args[0] }
546
+ : undefined);
545
547
  result = { recording: true };
546
548
  break;
547
549
  case 'stop-recording':