Read version from Cargo.toml (#1267)

This commit is contained in:
Goffert van Gool 2018-12-13 22:16:58 +01:00 committed by Ryan Dahl
parent 07369a6270
commit 40d6daf824
6 changed files with 57 additions and 5 deletions

View file

@ -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") {

View file

@ -0,0 +1 @@
@"%PYTHON_EXE%" "%~dpn0.py" %*

View file

@ -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

View file

@ -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))

View file

@ -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" ]
}

View file

@ -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() };