Verify that the Cargo lockfile is complete

cargo-raze will happily just use the newest versions of anything missing
from here, which leads to CI failures when new versions are released.

Apparently we had a lot of dependencies that didn't meet the correct
version requirements, so they had to get upgraded along with this change
to validate those. I did verify that this isn't just upgrading
everything to the newest versions by doing that manually, it picks up a
few more.

Change-Id: I2c1363a977a159e54c376d50bf376a98fddde10c
Signed-off-by: Brian Silverman <bsilver16384@gmail.com>
diff --git a/tools/lint/run-ci.sh b/tools/lint/run-ci.sh
index 33a3bf9..6e026ee 100755
--- a/tools/lint/run-ci.sh
+++ b/tools/lint/run-ci.sh
@@ -64,6 +64,13 @@
     ./tools/lint/rustfmt
 }
 
+cargo_lockfile() {
+    cd "${BUILD_WORKSPACE_DIRECTORY}"
+    cp third_party/cargo/Cargo.raze.lock Cargo.lock
+    external/rust__x86_64-unknown-linux-gnu_tools/bin/cargo generate-lockfile --locked --manifest-path=Cargo.toml
+    rm Cargo.lock
+}
+
 cargo_raze() {
     local -r cargo_raze="$(readlink -f external/cargo_raze/impl/cargo_raze_bin)"
     export CARGO="$(readlink -f external/rust__x86_64-unknown-linux-gnu_tools/bin/cargo)"
@@ -110,6 +117,7 @@
     tweak_gazelle_go_deps
     clean_up_go_mirrors
     rustfmt
+    cargo_lockfile
     cargo_raze
     tweak_cargo_raze
     buildifier