All of lore.kernel.org
 help / color / mirror / Atom feed
From: Miguel Ojeda <ojeda@kernel.org>
To: Masahiro Yamada <masahiroy@kernel.org>,
	Miguel Ojeda <ojeda@kernel.org>,
	Wedson Almeida Filho <wedsonaf@gmail.com>,
	Alex Gaynor <alex.gaynor@gmail.com>
Cc: "Nathan Chancellor" <nathan@kernel.org>,
	"Nick Desaulniers" <ndesaulniers@google.com>,
	"Nicolas Schier" <nicolas@fjasle.eu>,
	"Boqun Feng" <boqun.feng@gmail.com>,
	"Gary Guo" <gary@garyguo.net>,
	"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
	"Benno Lossin" <benno.lossin@proton.me>,
	"Alice Ryhl" <aliceryhl@google.com>,
	"Andreas Hindborg" <nmi@metaspace.dk>,
	linux-kbuild@vger.kernel.org, rust-for-linux@vger.kernel.org,
	linux-kernel@vger.kernel.org, patches@lists.linux.dev
Subject: [PATCH v2 08/11] kbuild: rust_is_available: normalize version matching
Date: Fri, 16 Jun 2023 02:16:28 +0200	[thread overview]
Message-ID: <20230616001631.463536-9-ojeda@kernel.org> (raw)
In-Reply-To: <20230616001631.463536-1-ojeda@kernel.org>

In order to match the version string, `sed` is used in a couple
cases, and `grep` and `head` in a couple others.

Make the script more consistent and easier to understand by
using the same method, `sed`, for all of them.

This makes the version matching also a bit more strict for
the changed cases, since the strings `rustc ` and `bindgen `
will now be required, which should be fine since `rustc`
complains if one attempts to call it with another program
name, and `bindgen` uses a hardcoded string.

In addition, clarify why one of the existing `sed` commands
does not provide an address like the others.

Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
---
 scripts/rust_is_available.sh | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/scripts/rust_is_available.sh b/scripts/rust_is_available.sh
index 810691af66eb..b7e0781fdea9 100755
--- a/scripts/rust_is_available.sh
+++ b/scripts/rust_is_available.sh
@@ -83,8 +83,7 @@ fi
 # Non-stable and distributions' versions may have a version suffix, e.g. `-dev`.
 rust_compiler_version=$( \
 	LC_ALL=C "$RUSTC" --version 2>/dev/null \
-		| head -n 1 \
-		| grep -oE '[0-9]+\.[0-9]+\.[0-9]+' \
+		| sed -nE '1s:.*rustc ([0-9]+\.[0-9]+\.[0-9]+).*:\1:p'
 )
 rust_compiler_min_version=$($min_tool_version rustc)
 rust_compiler_cversion=$(get_canonical_version $rust_compiler_version)
@@ -111,8 +110,7 @@ fi
 # Non-stable and distributions' versions may have a version suffix, e.g. `-dev`.
 rust_bindings_generator_version=$( \
 	LC_ALL=C "$BINDGEN" --version 2>/dev/null \
-		| head -n 1 \
-		| grep -oE '[0-9]+\.[0-9]+\.[0-9]+' \
+		| sed -nE '1s:.*bindgen ([0-9]+\.[0-9]+\.[0-9]+).*:\1:p'
 )
 rust_bindings_generator_min_version=$($min_tool_version bindgen)
 rust_bindings_generator_cversion=$(get_canonical_version $rust_bindings_generator_version)
@@ -155,6 +153,9 @@ fi
 
 # `bindgen` returned successfully, thus use the output to check that the version
 # of the `libclang` found by the Rust bindings generator is suitable.
+#
+# Unlike other version checks, note that this one does not necessarily appear
+# in the first line of the output, thus no `sed` address is provided.
 bindgen_libclang_version=$( \
 	echo "$bindgen_libclang_output" \
 		| sed -nE 's:.*clang version ([0-9]+\.[0-9]+\.[0-9]+).*:\1:p'
-- 
2.41.0


  parent reply	other threads:[~2023-06-16  0:19 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-16  0:16 [PATCH v2 00/11] `scripts/rust_is_available.sh` improvements Miguel Ojeda
2023-06-16  0:16 ` [PATCH v2 01/11] kbuild: rust_is_available: remove -v option Miguel Ojeda
2023-06-16 13:56   ` Martin Rodriguez Reboredo
2023-06-16  0:16 ` [PATCH v2 02/11] kbuild: rust_is_available: fix version check when CC has multiple arguments Miguel Ojeda
2023-06-16 13:58   ` Martin Rodriguez Reboredo
2023-06-16 17:06   ` Nathan Chancellor
2023-06-16  0:16 ` [PATCH v2 03/11] docs: rust: add paragraph about finding a suitable `libclang` Miguel Ojeda
2023-06-16 14:00   ` Martin Rodriguez Reboredo
2023-06-16 17:07   ` Nathan Chancellor
2023-06-16  0:16 ` [PATCH v2 04/11] kbuild: rust_is_available: print docs reference Miguel Ojeda
2023-06-16 14:02   ` Martin Rodriguez Reboredo
2023-06-16 17:07   ` Nathan Chancellor
2023-06-20  5:26   ` Masahiro Yamada
2023-06-16  0:16 ` [PATCH v2 05/11] kbuild: rust_is_available: add check for `bindgen` invocation Miguel Ojeda
2023-06-16 14:06   ` Martin Rodriguez Reboredo
2023-06-16 17:11   ` Nathan Chancellor
2023-06-20  4:40   ` Masahiro Yamada
2023-06-16  0:16 ` [PATCH v2 06/11] kbuild: rust_is_available: check that environment variables are set Miguel Ojeda
2023-06-16 14:08   ` Martin Rodriguez Reboredo
2023-06-16 17:13   ` Nathan Chancellor
2023-06-20  4:59   ` Masahiro Yamada
2023-06-16  0:16 ` [PATCH v2 07/11] kbuild: rust_is_available: fix confusion when a version appears in the path Miguel Ojeda
2023-06-16 14:10   ` Martin Rodriguez Reboredo
2023-06-16 17:13   ` Nathan Chancellor
2023-06-17 15:33   ` Ethan D. Twardy
2023-06-16  0:16 ` Miguel Ojeda [this message]
2023-06-16 14:12   ` [PATCH v2 08/11] kbuild: rust_is_available: normalize version matching Martin Rodriguez Reboredo
2023-06-16 17:14   ` Nathan Chancellor
2023-06-20  5:16   ` Masahiro Yamada
2023-06-16  0:16 ` [PATCH v2 09/11] kbuild: rust_is_available: handle failures calling `$RUSTC`/`$BINDGEN` Miguel Ojeda
2023-06-16 14:14   ` Martin Rodriguez Reboredo
2023-06-16 17:15   ` Nathan Chancellor
2023-06-16  0:16 ` [PATCH v2 10/11] kbuild: rust_is_available: check that output looks as expected Miguel Ojeda
2023-06-16 14:16   ` Martin Rodriguez Reboredo
2023-06-16 17:15   ` Nathan Chancellor
2023-06-16  0:16 ` [PATCH v2 11/11] kbuild: rust_is_available: add test suite Miguel Ojeda
2023-06-16 15:00   ` Martin Rodriguez Reboredo
2023-06-16  7:45 ` [PATCH v2 00/11] `scripts/rust_is_available.sh` improvements Heghedus Razvan
2023-06-20  5:13 ` Masahiro Yamada
2023-08-09 23:20 ` Miguel Ojeda

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230616001631.463536-9-ojeda@kernel.org \
    --to=ojeda@kernel.org \
    --cc=alex.gaynor@gmail.com \
    --cc=aliceryhl@google.com \
    --cc=benno.lossin@proton.me \
    --cc=bjorn3_gh@protonmail.com \
    --cc=boqun.feng@gmail.com \
    --cc=gary@garyguo.net \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=masahiroy@kernel.org \
    --cc=nathan@kernel.org \
    --cc=ndesaulniers@google.com \
    --cc=nicolas@fjasle.eu \
    --cc=nmi@metaspace.dk \
    --cc=patches@lists.linux.dev \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=wedsonaf@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.