diff options
author | Goffert van Gool <ruphin@ruphin.net> | 2018-12-13 22:16:58 +0100 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2018-12-13 16:16:58 -0500 |
commit | 40d6daf8240f9dc090c23f975488c424b88f120f (patch) | |
tree | 5b502de7a3d286861fb826f4242004a2e8218b25 | |
parent | 07369a6270473a2e4eb74d0c1936284d3b9558f3 (diff) |
Read version from Cargo.toml (#1267)
-rw-r--r-- | BUILD.gn | 19 | ||||
-rw-r--r-- | build_extra/rust/get_cargo_info.cmd | 1 | ||||
-rwxr-xr-x | build_extra/rust/get_cargo_info.py | 14 | ||||
-rw-r--r-- | build_extra/rust/run.py | 17 | ||||
-rw-r--r-- | build_extra/rust/rust.gni | 8 | ||||
-rw-r--r-- | src/version.rs | 3 |
6 files changed, 57 insertions, 5 deletions
@@ -119,12 +119,25 @@ group("deno_deps") { ] } +# Reads the cargo info from Cargo.toml +deno_cargo_info = exec_script("build_extra/rust/get_cargo_info.py", + [ rebase_path("Cargo.toml", root_build_dir) ], + "json") + rust_executable("deno") { source_root = "src/main.rs" extern = main_extern deps = [ ":deno_deps", ] + + # Extract version from Cargo.toml + # TODO integrate this into rust.gni by allowing the rust_executable template + # to specify a cargo.toml from which it will extract a version. + crate_version = deno_cargo_info.version + inputs = [ + "Cargo.toml", + ] } rust_test("test_rs") { @@ -133,6 +146,12 @@ rust_test("test_rs") { deps = [ ":deno_deps", ] + + # Extract version from Cargo.toml + crate_version = deno_cargo_info.version + inputs = [ + "Cargo.toml", + ] } rust_executable("hyper_hello") { diff --git a/build_extra/rust/get_cargo_info.cmd b/build_extra/rust/get_cargo_info.cmd new file mode 100644 index 000000000..9d5ce12a1 --- /dev/null +++ b/build_extra/rust/get_cargo_info.cmd @@ -0,0 +1 @@ +@"%PYTHON_EXE%" "%~dpn0.py" %* diff --git a/build_extra/rust/get_cargo_info.py b/build_extra/rust/get_cargo_info.py new file mode 100755 index 000000000..43c964ab7 --- /dev/null +++ b/build_extra/rust/get_cargo_info.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python +# Copyright 2018 the Deno authors. All rights reserved. MIT license. + +import sys +import re + +# Read the package version from Cargo.toml and output as json +cargo_toml_path = sys.argv[1] + +for line in open(cargo_toml_path): + match = re.search('version = "(.*)"', line) + if match: + print('{"version": "' + match.group(1) + '"}') + break diff --git a/build_extra/rust/run.py b/build_extra/rust/run.py index 3a86c423c..dc89c09a1 100644 --- a/build_extra/rust/run.py +++ b/build_extra/rust/run.py @@ -1,13 +1,24 @@ #!/usr/bin/env python -# This file just executes its arguments, except that also adds GN_OUT_DIR to the -# environ. This is for compatibility with cargo. +# This file just executes its arguments, except that also adds GN_OUT_DIR and +# CARGO_PKG_VERSION to the environ. This is for compatibility with cargo. import subprocess import sys import os +import re # This is for src/msg.rs to know where to find msg_generated.rs. # When building with Cargo this variable is set by build.rs. os.environ["GN_OUT_DIR"] = os.path.abspath(".") assert os.path.isdir(os.environ["GN_OUT_DIR"]) -sys.exit(subprocess.call(sys.argv[1:])) +# Set the CARGO_PKG_VERSION env variable if provided as an argument +# When building with Cargo this variable is set automatically +args = sys.argv[1:] +for i, arg in enumerate(args): + match = re.search('--cargo-pkg-version="?([^"]*)"?', arg) + if match: + os.environ["CARGO_PKG_VERSION"] = match.group(1) + del args[i] + break + +sys.exit(subprocess.call(args)) diff --git a/build_extra/rust/rust.gni b/build_extra/rust/rust.gni index 3263f0018..61731d21c 100644 --- a/build_extra/rust/rust.gni +++ b/build_extra/rust/rust.gni @@ -49,6 +49,7 @@ template("rust_crate") { "crate_type", "crate_version", "deps", + "inputs", "features", "is_test", "libs", @@ -190,6 +191,13 @@ template("rust_crate") { "--color=always", ] + if (defined(crate_version)) { + args += [ + # This is used to set env variables for Cargo build compatibility + "--cargo-pkg-version=$crate_version", + ] + } + if (is_debug) { args += [ "-g" ] } diff --git a/src/version.rs b/src/version.rs index 85238749e..0d4c7b953 100644 --- a/src/version.rs +++ b/src/version.rs @@ -2,8 +2,7 @@ use libdeno; use std::ffi::CStr; -// TODO Extract this version string from Cargo.toml. -pub const DENO: &str = "0.2.2"; +pub const DENO: &str = env!("CARGO_PKG_VERSION"); pub fn v8() -> &'static str { let version = unsafe { libdeno::deno_v8_version() }; |