aboutsummaryrefslogtreecommitdiff
path: root/Tools
diff options
context:
space:
mode:
authorYuri Victorovich <yuri@FreeBSD.org>2023-07-12 05:18:21 +0000
committerYuri Victorovich <yuri@FreeBSD.org>2023-07-12 05:18:21 +0000
commit7e866ceb0ef53a7aeaed442890ca2fb1bab4e1e6 (patch)
treefb7bf6c30d142da13e7eb1769eb43a54f06a4a86 /Tools
parent793fc74d3db2a383ca76d6b53b5b47acc92c7ee9 (diff)
Diffstat (limited to 'Tools')
-rwxr-xr-xTools/scripts/update-rust-port.sh69
1 files changed, 69 insertions, 0 deletions
diff --git a/Tools/scripts/update-rust-port.sh b/Tools/scripts/update-rust-port.sh
new file mode 100755
index 000000000000..7e479f87822a
--- /dev/null
+++ b/Tools/scripts/update-rust-port.sh
@@ -0,0 +1,69 @@
+#!/bin/sh
+#
+# MAINTAINER: yuri@FreeBSD.org
+
+## args
+
+VERSION="$1"
+
+## checks
+
+if [ -z "$VERSION" ]; then
+ echo "Usage: $0 <new-version>"
+ exit 1
+fi
+if ! [ -f Makefile ] || ! [ -f pkg-descr ] || ! grep -q "CARGO_CRATES=" Makefile; then
+ echo "$0 should be run in a Rust-based port directory"
+ exit 1
+fi
+
+## MAIN
+
+# copy Makefile
+cp Makefile Makefile.new
+
+# substitute version
+sed -i '' -E "s/(VERSION=[\t ]*)[0-9.]+/\1${VERSION}/" Makefile.new
+
+# replace CARGO_CRATES with a placeholder
+/usr/bin/awk '
+BEGIN {
+ in_cargo_crates = 0
+}
+/^CARGO_CRATES=.*/ {
+ in_cargo_crates = 1
+ print "#@@@PLACEHOLDER@@@"
+}
+/^\t.*/ {
+ if (in_cargo_crates) {
+ // skip line
+ } else {
+ print $0
+ }
+}
+!/^CARGO_CRATES=.*|^\t.*/ {
+ if (in_cargo_crates) {
+ in_cargo_crates = 0
+ }
+ print $0
+}' < Makefile.new > Makefile.new1 &&
+/bin/mv Makefile.new1 Makefile.new
+
+# update distinfo
+make -f Makefile.new makesum
+
+# replace the placeholder
+while IFS= read -r line; do
+ if [ "$line" = "#@@@PLACEHOLDER@@@" ]; then
+ make -f Makefile.new cargo-crates | grep -v '^='
+ else
+ echo "$line"
+ fi
+done < Makefile.new > Makefile.new1 &&
+mv Makefile.new1 Makefile.new
+
+# move Makefile.new
+mv Makefile.new Makefile
+
+# update distinfo
+make clean makesum