Skip to content

Commit 2df9539

Browse files
committed
fix: install platform-specific oxc-parser native bindings for jco
- Add explicit installation of platform-specific oxc-parser bindings - Map platform detection to correct npm package names: - linux_amd64 → @oxc-parser/binding-linux-x64-gnu - darwin_arm64 → @oxc-parser/binding-darwin-arm64 - darwin_amd64 → @oxc-parser/binding-darwin-x64 - windows_amd64 → @oxc-parser/binding-win32-x64-msvc - Add npm rebuild step to ensure native modules work correctly - Fixes 'Cannot find module ./parser.linux-x64-gnu.node' error - Resolves jco componentize native binding issues across platforms
1 parent 7b09026 commit 2df9539

File tree

1 file changed

+39
-3
lines changed

1 file changed

+39
-3
lines changed

toolchains/jco_toolchain.bzl

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -177,15 +177,34 @@ def _setup_downloaded_jco_tools(repository_ctx, platform, jco_version, node_vers
177177
"NODE_PATH": "", # Clear any existing NODE_PATH
178178
}
179179

180+
# Install platform-specific oxc-parser bindings first
181+
platform_binding = ""
182+
if platform == "linux_amd64":
183+
platform_binding = "@oxc-parser/binding-linux-x64-gnu"
184+
elif platform == "darwin_amd64":
185+
platform_binding = "@oxc-parser/binding-darwin-x64"
186+
elif platform == "darwin_arm64":
187+
platform_binding = "@oxc-parser/binding-darwin-arm64"
188+
elif platform == "windows_amd64":
189+
platform_binding = "@oxc-parser/binding-win32-x64-msvc"
190+
191+
install_packages = [
192+
"@bytecodealliance/jco@{}".format(jco_version),
193+
"@bytecodealliance/componentize-js", # Required dependency
194+
]
195+
196+
if platform_binding:
197+
install_packages.append(platform_binding)
198+
print("Installing platform-specific oxc-parser binding: {}".format(platform_binding))
199+
180200
npm_install_result = repository_ctx.execute(
181201
[
182202
npm_binary,
183203
"install",
184204
"--prefix",
185205
"jco_workspace",
186-
"@bytecodealliance/jco@{}".format(jco_version),
187-
"@bytecodealliance/componentize-js", # Required dependency
188-
],
206+
"--force", # Force reinstall to ensure platform-specific bindings
207+
] + install_packages,
189208
environment = npm_env,
190209
)
191210

@@ -197,6 +216,23 @@ def _setup_downloaded_jco_tools(repository_ctx, platform, jco_version, node_vers
197216
))
198217

199218
print("Successfully installed jco via hermetic npm")
219+
220+
# Try to rebuild native modules to ensure platform compatibility
221+
print("Rebuilding native modules for platform compatibility...")
222+
rebuild_result = repository_ctx.execute(
223+
[
224+
npm_binary,
225+
"rebuild",
226+
"--prefix",
227+
"jco_workspace",
228+
],
229+
environment = npm_env,
230+
)
231+
232+
if rebuild_result.return_code != 0:
233+
print("Warning: npm rebuild failed, but continuing: {}".format(rebuild_result.stderr))
234+
else:
235+
print("Successfully rebuilt native modules")
200236

201237
# Create robust wrapper script for jco that always uses hermetic Node.js
202238
# Use npx with the jco package to ensure proper module resolution

0 commit comments

Comments
 (0)