Index: tools/v8/fetch_deps.py
--- tools/v8/fetch_deps.py.orig
+++ tools/v8/fetch_deps.py
@@ -13,9 +13,17 @@ Usage: fetch_deps.py <v8-path>
 from __future__ import print_function
 
 import os
+import shlex
+import shutil
 import subprocess
 import sys
+import types
 
+if "pipes" not in sys.modules:
+  pipes = types.ModuleType("pipes")
+  pipes.quote = shlex.quote
+  sys.modules["pipes"] = pipes
+
 import node_common
 
 GCLIENT_SOLUTION = [
@@ -24,8 +32,8 @@ GCLIENT_SOLUTION = [
     "deps_file"   : "DEPS",
     "managed"     : False,
     "custom_deps" : {
-      # Update depot_tools for compatibility with Python 3.12.
-      "v8/third_party/depot_tools"            : "https://chromium.googlesource.com/chromium/tools/depot_tools.git@284c5ccb591c3de4e9f71be4a4beb5d1916d5383",
+      # Use the system gclient/depot_tools from the OpenBSD package.
+      "v8/third_party/depot_tools"            : None,
       # These deps are already part of Node.js.
       "v8/base/trace_event/common"            : None,
       "v8/third_party/abseil-cpp"             : None,
@@ -73,21 +81,34 @@ def EnsureGit(v8_path):
   git("commit --allow-empty -m init")
   return True
 
+def FindSystemGClient():
+  gclient = shutil.which("gclient")
+  candidates = []
+  if gclient is not None:
+    gclient_dir = os.path.dirname(os.path.realpath(gclient))
+    candidates.append(os.path.join(gclient_dir, "gclient.py"))
+  candidates.append("/usr/local/libexec/gclient/gclient.py")
+
+  for candidate in candidates:
+    if os.path.isfile(candidate):
+      return candidate, os.path.dirname(candidate)
+
+  raise RuntimeError("Could not find system gclient.py")
+
 def FetchDeps(v8_path):
   # Verify path.
   v8_path = os.path.abspath(v8_path)
   assert os.path.isdir(v8_path)
 
-  # Check out depot_tools if necessary.
-  depot_tools = node_common.EnsureDepotTools(v8_path, True)
+  gclient, depot_tools = FindSystemGClient()
 
   temporary_git = EnsureGit(v8_path)
   try:
     print("Fetching dependencies.")
     env = os.environ.copy()
-    # gclient needs to have depot_tools in the PATH.
+    # gclient needs depot_tools in the PATH.
     env["PATH"] = depot_tools + os.pathsep + env["PATH"]
-    gclient = os.path.join(depot_tools, "gclient.py")
+    env["PYTHONPATH"] = depot_tools + os.pathsep + env.get("PYTHONPATH", "")
     spec = "solutions = %s" % GCLIENT_SOLUTION
     subprocess.check_call([sys.executable, gclient, "sync", "--spec", spec],
                            cwd=os.path.join(v8_path, os.path.pardir),
