diff options
Diffstat (limited to 'Mk/Scripts/cargo-crates.awk')
-rw-r--r-- | Mk/Scripts/cargo-crates.awk | 80 |
1 files changed, 10 insertions, 70 deletions
diff --git a/Mk/Scripts/cargo-crates.awk b/Mk/Scripts/cargo-crates.awk index 56b3beafac11..0cc8fe7a27f9 100644 --- a/Mk/Scripts/cargo-crates.awk +++ b/Mk/Scripts/cargo-crates.awk @@ -1,26 +1,15 @@ # MAINTAINER: rust@FreeBSD.org BEGIN { - gh_tuple_len = 0 - gl_tuple_len = 0 crates_len = 0 - package_name = "<unknown>" crate_name = "<unknown>" crate_version = "<unknown>" crate_source = "<unknown>" - - gitlab_sites["https://gitlab.com"] = 1 - gitlab_sites["https://gitlab.freedesktop.org"] = 1 - gitlab_sites["https://gitlab.gnome.org"] = 1 - gitlab_sites["https://gitlab.redox-os.org"] = 1 } /^name = ".*"/ { crate_name = $3 gsub(/"/, "", crate_name) - - package_name = $3 - gsub("[^a-zA-Z_]", "", package_name) } /^version = ".*"/ { @@ -38,7 +27,14 @@ BEGIN { } function add_crate() { - if (crate_source == "registry+https://github.com/rust-lang/crates.io-index") { + if (crate_source ~ /^git\+/) { + gsub(/#/, "\\#", crate_source) + if (git_crates[crate_source]) { + git_crates[crate_source] = git_crates[crate_source] "," crate_name + } else { + git_crates[crate_source] = crate_name + } + } else if (crate_source == "registry+https://github.com/rust-lang/crates.io-index") { crates[crates_len++] = sprintf("%s-%s", crate_name, crate_version) } crate_name = "<unknown>" @@ -46,50 +42,6 @@ function add_crate() { crate_source = "<unknown>" } -!gh_tuple_seen[$0] && /^source = "git\+(https|http|git):\/\/.*\/.*#.*"/ { - gh_tuple_seen[$0] = 1 - split_url(url, substr($3, 1 + length("\"git+"), length($3) - 1 - length("\"git+"))) - - split(url["path"], path, "/") - account = path[2] - project = path[3] - gsub("\.git$", "", project) - - if (match(url["query"], "^tag=")) { - split(url["query"], tag_, "=") - tag = tag_[2] - } else { - tag = url["fragment"] - } - - added = 0 - if (url["host"] == "github.com") { - added = 1 - gh_tuple[gh_tuple_len++] = sprintf(\ - "%s:%s:%s:%s", account, project, tag, package_name) - } else { - repo_site = sprintf("%s://%s", url["scheme"], url["host"]) - for (site in gitlab_sites) { - if (repo_site != site) { - continue - } - if (ENVIRON["GL_SITE"] == site) { - gl_tuple[gl_tuple_len++] = sprintf(\ - "%s:%s:%s:%s", account, project, tag, package_name) - } else { - gl_tuple[gl_tuple_len++] = sprintf(\ - "%s:%s:%s:%s:%s", site, account, project, tag, package_name) - } - added = 1 - break - } - } - - if (!added) { - printf "Warning: Ignoring git source on line %d: %s\n", NR, $3 > "/dev/stderr" - } -} - function print_array(start, arr, arrlen) { end = " \\\n" for (i = 0; i < arrlen; i++) { @@ -103,20 +55,8 @@ function print_array(start, arr, arrlen) { END { add_crate() - - if (gh_tuple_len > 0 && ENVIRON["USE_GITHUB"] == "") { - printf "USE_GITHUB=\tnodefault\n" - } - print_array("GH_TUPLE=", gh_tuple, gh_tuple_len) - if (gl_tuple_len > 0 && ENVIRON["USE_GITLAB"] == "") { - printf "USE_GITLAB=\tnodefault\n" + for (crate_source in git_crates) { + crates[crates_len++] = git_crates[crate_source] "@" crate_source } - print_array("GL_TUPLE=", gl_tuple, gl_tuple_len) print_array("CARGO_CRATES=", crates, crates_len) - if (gh_tuple_len > 0) { - printf "CARGO_USE_GITHUB=\tyes\n" - } - if (gl_tuple_len > 0) { - printf "CARGO_USE_GITLAB=\tyes\n" - } } |