rustup: handle rustup for sudo and su

If rustup is in use, and a user uses sudo or su for the make
install, the install may fail with a "no default toolchain"
error.

To prevent this, detect at configure if rustup is being used,
then set RUSTUP_HOME for all calls to cargo.
pull/4292/head
Jason Ish 6 years ago
parent 1b6eee829f
commit 389272f4c7

@ -2407,6 +2407,26 @@ fi
else else
AC_SUBST([CARGO_HOME], [$CARGO_HOME]) AC_SUBST([CARGO_HOME], [$CARGO_HOME])
fi fi
# Check for rustup. RUSTUP_HOME needs to be set if rustup is in
# use, and a user uses sudo (depending on configuration), or su to
# perform the install
rustup_home_path="no"
if test "x$RUSTUP_HOME" != "x"; then
rustup_home_path="$RUSTUP_HOME"
else
AC_PATH_PROG(have_rustup, rustup, "no")
if test "x$have_rustup" != "xno"; then
rustup_home_path=$($have_rustup show home 2>/dev/null || echo "no")
fi
fi
rustup_home=""
if test "x$rustup_home_path" != "xno"; then
rustup_home="RUSTUP_HOME=\$(RUSTUP_HOME_PATH)"
fi
AC_SUBST([RUSTUP_HOME_PATH], [$rustup_home_path])
AC_SUBST([rustup_home])
AC_CHECK_FILES([$srcdir/rust/vendor], [have_rust_vendor="yes"]) AC_CHECK_FILES([$srcdir/rust/vendor], [have_rust_vendor="yes"])
if test "x$have_rust_vendor" = "xyes"; then if test "x$have_rust_vendor" = "xyes"; then
rust_vendor_comment="" rust_vendor_comment=""

@ -33,13 +33,13 @@ if HAVE_PYTHON
endif endif
if HAVE_CYGPATH if HAVE_CYGPATH
rustpath=`cygpath -a -t mixed $(abs_top_builddir)` rustpath=`cygpath -a -t mixed $(abs_top_builddir)`
cd $(top_srcdir)/rust && \ cd $(top_srcdir)/rust && @rustup_home@ \
CARGO_HOME="$(CARGO_HOME)" \ CARGO_HOME="$(CARGO_HOME)" \
CARGO_TARGET_DIR="$$rustpath/rust/target" \ CARGO_TARGET_DIR="$$rustpath/rust/target" \
$(CARGO) build $(RELEASE) $(FROZEN) \ $(CARGO) build $(RELEASE) $(FROZEN) \
--features "$(RUST_FEATURES)" --features "$(RUST_FEATURES)"
else else
cd $(top_srcdir)/rust && \ cd $(top_srcdir)/rust && @rustup_home@ \
CARGO_HOME="$(CARGO_HOME)" \ CARGO_HOME="$(CARGO_HOME)" \
CARGO_TARGET_DIR="$(abs_top_builddir)/rust/target" \ CARGO_TARGET_DIR="$(abs_top_builddir)/rust/target" \
$(CARGO) build $(RELEASE) $(FROZEN) \ $(CARGO) build $(RELEASE) $(FROZEN) \
@ -53,14 +53,15 @@ distclean-local: clean-local
rm -rf vendor gen Cargo.lock rm -rf vendor gen Cargo.lock
check: check:
CARGO_HOME="$(CARGO_HOME)" $(CARGO) test CARGO_HOME="$(CARGO_HOME)" @rustup_home@ $(CARGO) test
Cargo.lock: Cargo.toml Cargo.lock: Cargo.toml
CARGO_HOME="$(CARGO_HOME)" $(CARGO) generate-lockfile CARGO_HOME="$(CARGO_HOME)" @rustup_home@ $(CARGO) \
generate-lockfile
if HAVE_CARGO_VENDOR if HAVE_CARGO_VENDOR
vendor: vendor:
CARGO_HOME="$(CARGO_HOME)" $(CARGO) vendor > /dev/null CARGO_HOME="$(CARGO_HOME)" @rustup_home@ $(CARGO) vendor > /dev/null
else else
vendor: vendor:
endif endif

Loading…
Cancel
Save