switch to vpython, add linux/win node binaries
diff --git a/.vpython3 b/.vpython3
new file mode 100644
index 0000000..af24a02
--- /dev/null
+++ b/.vpython3
@@ -0,0 +1,44 @@
+# This is a vpython "spec" file.
+#
+# It describes patterns for python wheel dependencies of the python scripts in
+# the chromium repo, particularly for dependencies that have compiled components
+# (since pure-python dependencies can be easily vendored into third_party).
+#
+# When vpython is invoked, it finds this file and builds a python VirtualEnv,
+# containing all of the dependencies described in this file, fetching them from
+# CIPD (the "Chrome Infrastructure Package Deployer" service). Unlike `pip`,
+# this never requires the end-user machine to have a working python extension
+# compilation environment. All of these packages are built using:
+#   https://chromium.googlesource.com/infra/infra/+/main/infra/tools/dockerbuild/
+#
+# All python scripts in the repo share this same spec, to avoid dependency
+# fragmentation.
+#
+# If you have depot_tools installed in your $PATH, you can invoke python scripts
+# in this repo by running them as you normally would run them, except
+# substituting `vpython` instead of `python` on the command line, e.g.:
+#   vpython path/to/script.py some --arguments
+#
+# Read more about `vpython` and how to modify this file here:
+#   https://chromium.googlesource.com/infra/infra/+/main/doc/users/vpython.md
+
+python_version: "3.8"
+
+# The default set of platforms vpython checks does not yet include mac-arm64.
+# Setting `verify_pep425_tag` to the list of platforms we explicitly must support
+# allows us to ensure that vpython specs stay mac-arm64-friendly
+verify_pep425_tag: [
+    {python: "cp38", abi: "cp38", platform: "manylinux1_x86_64"},
+    {python: "cp38", abi: "cp38", platform: "linux_arm64"},
+
+    {python: "cp38", abi: "cp38", platform: "macosx_10_10_intel"},
+    {python: "cp38", abi: "cp38", platform: "macosx_11_0_arm64"},
+
+    {python: "cp38", abi: "cp38", platform: "win32"},
+    {python: "cp38", abi: "cp38", platform: "win_amd64"}
+]
+
+wheel <
+  name: "infra/python/wheels/pyyaml/${vpython_platform}"
+  version: "version:5.4.1"
+>
diff --git a/DEPS b/DEPS
index 26b55a9..069abf0 100644
--- a/DEPS
+++ b/DEPS
@@ -41,6 +41,14 @@
 
 hooks = [
   {
+    'name': 'vpython3_init',
+    'pattern': '.',
+    'action': [ 'vpython3',
+                '-vpython-spec', '.vpython3',
+                '-vpython-tool', 'install',
+    ],
+  },
+  {
     'name': 'node_linux64',
     'pattern': '.',
     'condition': 'host_os == "linux"',
@@ -94,7 +102,6 @@
                 '-s', 'third_party/node/win/node.exe.sha1',
     ],
   },
-
   {
     'name': 'fetch LOBs',
     'pattern': '.',
diff --git a/scripts/export.py b/scripts/export.py
index 2648fcc..ffab5bd 100755
--- a/scripts/export.py
+++ b/scripts/export.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python3
+#!/usr/bin/env vpython3
 # Copyright 2021 Google LLC
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
diff --git a/scripts/fetch-lobs.py b/scripts/fetch-lobs.py
new file mode 100644
index 0000000..ee98e2b
--- /dev/null
+++ b/scripts/fetch-lobs.py
@@ -0,0 +1,19 @@
+#!/usr/bin/env python3
+#
+# TODO(dpranke): Right now this is a stub file that relies on
+# you having `node` already in your environment, and installs
+# packages by downloading them from npmjs.com. Fix this to
+# pull down the appropriate binaries from CIPD and/or packages from
+# a GCS bucket.
+
+import argparse
+import os
+import subprocess
+import sys
+
+SRC_ROOT = os.path.dirname(os.path.dirname(__file__))
+
+parser = argparse.ArgumentParser()
+parser.parse_args()
+
+sys.exit(0)
diff --git a/third_party/node/linux/node-linux-x64.tar.gz.sha1 b/third_party/node/linux/node-linux-x64.tar.gz.sha1
new file mode 100644
index 0000000..e99bd50
--- /dev/null
+++ b/third_party/node/linux/node-linux-x64.tar.gz.sha1
@@ -0,0 +1 @@
+b2e40ddbac04d05baafbb007f203c6663c9d4ca9
diff --git a/third_party/node/win/node.exe.sha1 b/third_party/node/win/node.exe.sha1
new file mode 100644
index 0000000..90d3903
--- /dev/null
+++ b/third_party/node/win/node.exe.sha1
@@ -0,0 +1 @@
+58bca4fea5196d856e41f928c02f6d6af2421865