rust-for-linux.vger.kernel.org archive mirror
 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 00/11] `scripts/rust_is_available.sh` improvements
Date: Fri, 16 Jun 2023 02:16:20 +0200	[thread overview]
Message-ID: <20230616001631.463536-1-ojeda@kernel.org> (raw)

This is the patch series to improve `scripts/rust_is_available.sh`.

The major addition in v2 is the test suite in the last commit. I added
it because I wanted to have a proper way to test any further changes to
it (such as the suggested `set --` idea to avoid forking by Masahiro),
and so that adding new checks was easier to justify too (i.e. vs. the
added complexity).

In addition, there are also a few new checks in the script, to cover for
even some more cases, which hopefully make problematic setups easier to
identify and solve by users building the kernel. For instance, running
the script externally gives:

    $ scripts/rust_is_available.sh
    ***
    *** Environment variable 'RUSTC' is not set.
    ***
    *** This script is intended to be called from Kbuild.
    *** Please use the 'rustavailable' target to call it instead.
    *** Otherwise, the results may not be meaningful.
    ***
    *** Please see Documentation/rust/quick-start.rst for details
    *** on how to set up the Rust support.
    ***

I also changed it to avoid setting `-e` as Masahiro suggested.
Similarly, I now check for `$RUSTC`, `$BINDGEN` and `$CC`, instead of
`$MAKEFLAGS`, as he also suggested (but I gave it their own error
message rather than use the `${CC?: is not set}` approach. This goes in
line with the reasons outlined above, i.e. trying to give users a clear
error of what step exactly failed).

In the test suite I included previously problematic compiler version
strings we got reports for. The test suite covers all current branches
in the script, and we should keep it that way in the future.

The patch series also include Masahiro's patch to remove the `-v`
option, as well as Russell's patch for supporting multiple arguments
in `$CC`.

All in all, this should solve all the issues we got so far (unless I
have missed something) and improve things further with the new checks
plus the test suite to hopefully have an easier time in the future.

Testers for this one are appreciated, especially if you have uncommon or
custom setups for building the kernel.

This could go through either the Kbuild or the Rust tree.

Masahiro Yamada (1):
  kbuild: rust_is_available: remove -v option

Miguel Ojeda (9):
  docs: rust: add paragraph about finding a suitable `libclang`
  kbuild: rust_is_available: print docs reference
  kbuild: rust_is_available: add check for `bindgen` invocation
  kbuild: rust_is_available: check that environment variables are set
  kbuild: rust_is_available: fix confusion when a version appears in the
    path
  kbuild: rust_is_available: normalize version matching
  kbuild: rust_is_available: handle failures calling `$RUSTC`/`$BINDGEN`
  kbuild: rust_is_available: check that output looks as expected
  kbuild: rust_is_available: add test suite

Russell Currey (1):
  kbuild: rust_is_available: fix version check when CC has multiple
    arguments

 Documentation/rust/quick-start.rst |  17 ++
 Makefile                           |   4 +-
 scripts/rust_is_available.sh       | 233 +++++++++++++------
 scripts/rust_is_available_test.py  | 346 +++++++++++++++++++++++++++++
 4 files changed, 532 insertions(+), 68 deletions(-)
 create mode 100755 scripts/rust_is_available_test.py


base-commit: 858fd168a95c5b9669aac8db6c14a9aeab446375
-- 
2.41.0


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

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-16  0:16 Miguel Ojeda [this message]
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 ` [PATCH v2 08/11] kbuild: rust_is_available: normalize version matching Miguel Ojeda
2023-06-16 14:12   ` 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-1-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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).