On Tue, Jan 10, 2023 at 5:46 AM Miguel Ojeda <ojeda@xxxxxxxxxx> wrote: > > Sometimes [1] users may attempt to setup the Rust support by > checking what Kbuild does and they end up finding out about > `scripts/rust_is_available.sh`. Inevitably, they run the script > directly, but unless they setup the required variables, > the result of the script is not meaningful. > > We could add some defaults to the variables, but that could be > confusing for those that may override the defaults (compared > to their kernel builds), and `$CC` would not be a simple default > in any case. > > Therefore, instead, print a warning when the script detects > the user may be invoking it, by testing `$MAKEFLAGS`. > > Link: https://lore.kernel.org/oe-kbuild-all/Y6r4mXz5NS0+HVXo@xxxxxxx/ [1] > Signed-off-by: Miguel Ojeda <ojeda@xxxxxxxxxx> > --- > scripts/rust_is_available.sh | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/scripts/rust_is_available.sh b/scripts/rust_is_available.sh > index cd87729ca3bf..0c082a248f15 100755 > --- a/scripts/rust_is_available.sh > +++ b/scripts/rust_is_available.sh > @@ -35,6 +35,16 @@ print_docs_reference() > warning=0 > trap 'if [ $? -ne 0 ] || [ $warning -ne 0 ]; then print_docs_reference; fi' EXIT > > +# Check whether the script was invoked from Kbuild. > +if [ -z "${MAKEFLAGS+x}" ]; then > + echo >&2 "***" > + echo >&2 "*** This script is intended to be called from Kbuild." > + echo >&2 "*** Please use the 'rustavailable' target to call it instead." > + echo >&2 "*** Otherwise, the results may not be meaningful." > + echo >&2 "***" > + warning=1 > +fi I do not like this. We do not need to cater to every oddity. Checking MAKEFLAGS is too much. You can check RUSTC/BINDGEN/CC if you persist in this. diff --git a/scripts/rust_is_available.sh b/scripts/rust_is_available.sh index a6f84dd2f71c..524aee03384a 100755 --- a/scripts/rust_is_available.sh +++ b/scripts/rust_is_available.sh @@ -34,7 +34,7 @@ warning=0 trap 'if [ $? -ne 0 ] || [ $warning -ne 0 ]; then print_docs_reference; fi' EXIT # Check that the Rust compiler exists. -if ! command -v "$RUSTC" >/dev/null; then +if ! command -v "${RUSTC:?RUSTC is not set}" >/dev/null; then echo >&2 "***" echo >&2 "*** Rust compiler '$RUSTC' could not be found." echo >&2 "***" @@ -42,7 +42,7 @@ if ! command -v "$RUSTC" >/dev/null; then fi # Check that the Rust bindings generator exists. -if ! command -v "$BINDGEN" >/dev/null; then +if ! command -v "${BINDGEN:?BINDGEN is not set}" >/dev/null; then echo >&2 "***" echo >&2 "*** Rust bindings generator '$BINDGEN' could not be found." echo >&2 "***" @@ -150,7 +150,7 @@ fi # # In the future, we might be able to perform a full version check, see # https://github.com/rust-lang/rust-bindgen/issues/2138. -cc_name=$($(dirname $0)/cc-version.sh "$CC" | cut -f1 -d' ') +cc_name=$($(dirname $0)/cc-version.sh ${CC:?CC is not set} | cut -f1 -d' ') if [ "$cc_name" = Clang ]; then clang_version=$( \ LC_ALL=C "$CC" --version 2>/dev/null \ -- Best Regards Masahiro Yamada