Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 5 Dec 2019 06:42:23 +0000 (UTC)
From:      Tobias Kortkamp <tobik@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r519063 - head/Mk/Scripts
Message-ID:  <201912050642.xB56gNtd044045@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: tobik
Date: Thu Dec  5 06:42:22 2019
New Revision: 519063
URL: https://svnweb.freebsd.org/changeset/ports/519063

Log:
  Mk/Uses/cargo.mk: Support new Cargo.lock format
  
  The new format [1,2] dropped the [metadata] table.  As a consequence
  our cargo-crates.awk script no longer outputs CARGO_CRATES.  We can
  get the crate list from the various [[package]] tables instead.
  This should work with the new as well as the old format.
  
  [1] https://github.com/rust-lang/cargo/pull/7070
  [2] https://github.com/rust-lang/cargo/pull/7579
  
  PR:		242416
  Reported by:	jbeich

Modified:
  head/Mk/Scripts/cargo-crates.awk

Modified: head/Mk/Scripts/cargo-crates.awk
==============================================================================
--- head/Mk/Scripts/cargo-crates.awk	Thu Dec  5 04:12:20 2019	(r519062)
+++ head/Mk/Scripts/cargo-crates.awk	Thu Dec  5 06:42:22 2019	(r519063)
@@ -6,6 +6,9 @@ BEGIN {
 	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
@@ -13,19 +16,37 @@ BEGIN {
 	gitlab_sites["https://gitlab.redox-os.org"] = 1
 }
 
-/^"checksum .* .* \(registry\+.*\)" = ".*"/ {
-	# $2: crate
-	# $3: version
-	# $4: url
-	# $6: checksum
-	crates[crates_len++] = sprintf("%s-%s", $2, $3)
-}
-
 /^name = ".*"/ {
+	crate_name = $3
+	gsub(/"/, "", crate_name)
+
 	package_name = $3
 	gsub("[^a-zA-Z_]", "", package_name)
 }
 
+/^version = ".*"/ {
+	crate_version = $3
+	gsub(/"/, "", crate_version)
+}
+
+/^source = ".*"/ {
+	crate_source = $3
+	gsub(/"/, "", crate_source)
+}
+
+/^\[\[package\]\]$/ {
+	add_crate()
+}
+
+function add_crate() {
+	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>"
+	crate_version = "<unknown>"
+	crate_source = "<unknown>"
+}
+
 function split_url(s) {
 	# scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]
 	split(s, url_scheme, "://")
@@ -112,6 +133,8 @@ function print_array(start, arr, arrlen) {
 }
 
 END {
+	add_crate()
+
 	if (gh_tuple_len > 0 && ENVIRON["USE_GITHUB"] == "") {
 		printf "USE_GITHUB=\tnodefault\n"
 	}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201912050642.xB56gNtd044045>