From 7e866ceb0ef53a7aeaed442890ca2fb1bab4e1e6 Mon Sep 17 00:00:00 2001 From: Yuri Victorovich Date: Tue, 11 Jul 2023 22:18:21 -0700 Subject: [PATCH] Tools/scripts: Add update-rust-port.sh script to simplify Rust port updates The command 'update-rust-port.sh ', when run in the Rust port directory, updates this port to the requested version. update-rust-port.sh should work in most cases. --- Tools/scripts/update-rust-port.sh | 69 +++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100755 Tools/scripts/update-rust-port.sh 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 " + 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