144 lines
4.7 KiB
Bash
144 lines
4.7 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
cd /var/tmp
|
|
|
|
USER=rust-lang
|
|
PROJECT=rustup
|
|
PRERELEASE=false
|
|
RELEASE=$(curl "https://api.github.com/repos/${USER}/${PROJECT}/tags?per_page=5" | jq -r '.[0] | .name')
|
|
# VERSION=$(echo "${RELEASE}" | cut -c 2- | cut -f1 -d"-")
|
|
VERSION=$(date +%Y-%m-%d_)git
|
|
DOWNLOAD_DIR=/tmp
|
|
|
|
RSS_FEED="https://github.com/${USER}/${PROJECT}/releases.atom"
|
|
#xdg-open ${RSS_FEED}
|
|
echo ${RSS_FEED}
|
|
|
|
# make a containing directory
|
|
mkdir -p /var/tmp/${PROJECT}-"${RELEASE}"
|
|
cd /var/tmp/${PROJECT}-"${RELEASE}" || exit
|
|
|
|
cat >./description-pak <<EOF
|
|
The Rustup tool installs and manages the Rust development environment.
|
|
EOF
|
|
|
|
cat >./checkinstall_it.sh <<'EOF'
|
|
|
|
echo "ENTERING CHECKINSTALL"
|
|
|
|
BASE_URL='https://api.github.com/repos'
|
|
BASE_USER='rust-lang'
|
|
BASE_REPO='rustup'
|
|
LICENSE_PAGE_URL="${BASE_URL}/${BASE_USER}/${BASE_REPO}"/license
|
|
RELEASES_URL="${BASE_URL}/${BASE_USER}/${BASE_REPO}"/releases
|
|
|
|
# CONTENT=$(curl -s ${RELEASES_URL}/latest)
|
|
# LATEST_URL=$(echo "${CONTENT}" | jq --raw-output '.assets[] | select(.browser_download_url | test("Linux-x86_64")) | .browser_download_url')
|
|
|
|
echo "LATEST_URL: " "${LATEST_URL}"
|
|
|
|
# RELEASE=$(echo "${CONTENT}" | jq --raw-output '.tag_name')
|
|
|
|
# LICENSE_URL=$(curl "${LICENSE_PAGE_URL}" | jq --raw-output '.download_url')
|
|
# wget -c ${LICENSE_URL}
|
|
|
|
VERSION=$( date +%Y-%m-%d_ )git
|
|
#VERSION="1.0"
|
|
RELEASE="git"
|
|
REQUIRES=""
|
|
|
|
# make a new temporary directory for this use
|
|
BASE_TMP_DIR=~/tmptmp/checkinstall_tmp
|
|
mkdir -p ${BASE_TMP_DIR}
|
|
|
|
# do your work
|
|
checkinstall -y --fstrans \
|
|
--pkgname=rustup \
|
|
--pkgversion=${VERSION}\
|
|
--pkgrelease=${RELEASE} \
|
|
--pkgarch=amd64 \
|
|
--pkggroup=admin \
|
|
--pkglicense=LICENSE \
|
|
--pkgsource=${LATEST_URL} \
|
|
--maintainer=cyteen@ring-zero.co.uk \
|
|
--requires=${REQUIRES} \
|
|
-D \
|
|
bash ./install.sh
|
|
EOF
|
|
|
|
cat >./install.sh <<'EOF'
|
|
# https://hoverbear.org/blog/setting-up-a-rust-devenv/
|
|
|
|
export CARGO_HOME=${HOME}/.cargo/bin
|
|
export RUSTUP_HOME=${HOME}/.rustup
|
|
|
|
|
|
|
|
# RUSTUP_HOME (default: ~/.rustup or %USERPROFILE%/.rustup) Sets the root rustup folder, used for storing installed toolchains and configuration options.
|
|
RUSTUP_HOME
|
|
|
|
# RUSTUP_TOOLCHAIN (default: none) If set, will override the toolchain used for all rust tool invocations. A toolchain with this name should be installed, or invocations will fail.
|
|
RUSTUP_TOOLCHAIN
|
|
|
|
# RUSTUP_DIST_SERVER (default: https://static.rust-lang.org) Sets the root URL for downloading static resources related to Rust. You can change this to instead use a local mirror, or to test the binaries from the staging directory.
|
|
RUSTUP_DIST_SERVER
|
|
|
|
# RUSTUP_DIST_ROOT (default: https://static.rust-lang.org/dist) Deprecated. Use RUSTUP_DIST_SERVER instead.
|
|
RUSTUP_DIST_ROOT
|
|
|
|
# RUSTUP_UPDATE_ROOT (default https://static.rust-lang.org/rustup) Sets the root URL for downloading self-updates.
|
|
RUSTUP_UPDATE_ROOT
|
|
|
|
# RUSTUP_IO_THREADS unstable (defaults to reported cpu count). Sets the number of threads to perform close IO in. Set to disabled to force single-threaded IO for troubleshooting, or an arbitrary number to override automatic detection.
|
|
RUSTUP_IO_THREADS
|
|
|
|
# RUSTUP_TRACE_DIR unstable (default: no tracing) Enables tracing and determines the directory that traces will be written too. Traces are of the form PID.trace. Traces can be read by the Catapult project tracing viewer.
|
|
RUSTUP_TRACE_DIR
|
|
|
|
# RUSTUP_UNPACK_RAM unstable (default 400M, min 100M) Caps the amount of RAM rustup will use for IO tasks while unpacking.
|
|
RUSTUP_UNPACK_RAM
|
|
|
|
# RUSTUP_NO_BACKTRACE Disables backtraces on non-panic errors even when RUST_BACKTRACE is set.
|
|
RUSTUP_NO_BACKTRACE
|
|
|
|
|
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
|
|
|
|
## Completions
|
|
# Bash
|
|
rustup completions bash > ~/.local/share/bash-completion/completions/rustup
|
|
|
|
# Zsh completions
|
|
rustup completions zsh > ~/.zfunc/_rustup
|
|
|
|
|
|
# update the current shell with the changes
|
|
source $HOME/.cargo/env
|
|
|
|
# install the Rust source and documentation locally
|
|
rustup component add rust-src
|
|
rustup component add rust-docs
|
|
|
|
# rust-clippy linter
|
|
cargo +nightly install clippy
|
|
|
|
# rustfmt standard automated styling
|
|
cargo install rustfmt
|
|
|
|
# racer code completion utility
|
|
cargo install racer
|
|
|
|
# set path to rust sources in the environment
|
|
export RUST_SRC_PATH=${HOME}/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/src
|
|
|
|
# rls is a language server implementation for Rust. It provides things like code completion, goto definitions, rich refactoring
|
|
rustup component add rls --toolchain nightly-x86_64-unknown-linux-gnu
|
|
rustup component add rust-analysis --toolchain nightly-x86_64-unknown-linux-gnu
|
|
rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu
|
|
|
|
export DYLD_LIBRARY_PATH=${HOME}/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib
|
|
export RLS_ROOT=${HOME}/git/rust/rls
|
|
EOF
|
|
|
|
bash ./checkinstall_it.sh
|