User Tools

Site Tools


general:rust

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
general:rust [2023/02/21 11:05] sunkangeneral:rust [2024/10/30 15:09] (current) – [User cargo config] sunkan
Line 9: Line 9:
   * mkdir -p /usr/local/rust/lib/rustlib/src/rust   * mkdir -p /usr/local/rust/lib/rustlib/src/rust
   * cp -dR --preserve=timestamps rustc-1.XX.X-src/library/ /usr/local/rust/lib/rustlib/src/rust/   * cp -dR --preserve=timestamps rustc-1.XX.X-src/library/ /usr/local/rust/lib/rustlib/src/rust/
 +
 +====== Script to update after verifying GPG signatures ======
 +<code>
 +#!/bin/sh
 +
 +# Update to rust release by downloading and verifying GPG keys
 +
 +set -u
 +
 +if [ $# -ne 1 ]; then
 +    echo "Usage: $0 <version>"
 +    echo "Example: $0 1.67.1"
 +    exit 1
 +fi
 +
 +TMPDIR_BASE=/tmp
 +
 +RUST_VERSION=$1
 +TARGET="x86_64-unknown-linux-gnu"
 +RUST_REPO="https://static.rust-lang.org/dist"
 +RUST_FILE="rust-${RUST_VERSION}-${TARGET}.tar.xz"
 +RUSTC_FILE="rustc-${RUST_VERSION}-src.tar.xz"
 +
 +ARMV7HF_EXT="armv7-unknown-linux-gnueabihf"
 +MUSL_EXT="x86_64-unknown-linux-musl"
 +WASM_EXT="wasm32-unknown-unknown"
 +WINX64_EXT="x86_64-pc-windows-gnu"
 +
 +#EXTENSIONS="$ARMV7HF_EXT $MUSL_EXT $WASM_EXT $WINX64_EXT"
 +EXTENSIONS=""
 +
 +create_rust_pgp_key_file() {
 +    echo | base64 -d > rust.key <<EOF
 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
 +EOF
 +}
 +
 +download_if_missing () {
 +    local filename=$1
 +    local dest=$2
 +
 +    if [ -f $TMPDIR_BASE/$filename ]; then
 + mv $TMPDIR_BASE/$filename $dest
 +    else
 + wget -c $RUST_REPO/$filename
 +    fi
 +    
 +}
 +
 +tmpdir=$( mktemp -d $TMPDIR_BASE/rust-update-tmp.XXXXXXXXXX )
 +cd $tmpdir
 +
 +download_if_missing $RUST_FILE $tmpdir
 +download_if_missing $RUST_FILE.asc $tmpdir
 +
 +download_if_missing $RUSTC_FILE $tmpdir
 +download_if_missing $RUSTC_FILE.asc $tmpdir
 +
 +for ext in $EXTENSIONS; do
 +    tarfile="rust-std-${RUST_VERSION}-$ext.tar.xz"
 +
 +    download_if_missing $tarfile $tmpdir
 +    download_if_missing $tarfile.asc $tmpdir
 +done
 +
 +create_rust_pgp_key_file
 +
 +gpgv --keyring ./rust.key $RUST_FILE.asc $RUST_FILE || exit 2
 +gpgv --keyring ./rust.key $RUSTC_FILE.asc $RUSTC_FILE || exit 3
 +
 +exitcode=10
 +for ext in $EXTENSIONS; do
 +    tarfile="rust-std-${RUST_VERSION}-$ext.tar.xz"
 +
 +    gpgv --keyring ./rust.key $tarfile.asc $tarfile || exit $exitcode
 +    exitcode=$((exitcode + 1))
 +done
 +
 +# Remove previously installed rustlibs
 +find /usr/local/rust/lib/rustlib -depth -mindepth 1 -maxdepth 1 -type d \! -name $TARGET \! -name 'etc' \! -name 'src' | xargs --no-run-if-empty rm -r
 +
 +tar xaf $RUST_FILE
 +cd rust-${RUST_VERSION}-${TARGET}
 +./install.sh --prefix=/usr/local/rust
 +cd ..
 +rm -rf rust-${RUST_VERSION}-${TARGET}
 +
 +tar xaf $RUSTC_FILE
 +cd rustc-${RUST_VERSION}-src
 +rm -rf /usr/local/rust/lib/rustlib/src/rust/library
 +mkdir -p /usr/local/rust/lib/rustlib/src/rust
 +cp -dR --preserve=timestamps library /usr/local/rust/lib/rustlib/src/rust/
 +cd ..
 +
 +for ext in $EXTENSIONS; do
 +    tarfile="rust-std-${RUST_VERSION}-$ext.tar.xz"
 +    tar xaf $tarfile
 +    cd rust-std-${RUST_VERSION}-$ext
 +    rm -rf "/usr/local/rust/lib/rustlib/$ext"
 +    cp -dR --preserve=timestamps "rust-std-$ext/lib/rustlib/$ext" /usr/local/rust/lib/rustlib/
 +    cd ..
 +done
 +
 +read -p "Keep the downloaded archives? (y/N) " keep_archives
 +
 +if [ ${keep_archives}X = "yX" -o ${keep_archives}X = "YX" ]; then
 +    mv $tmpdir/$RUST_FILE $TMPDIR_BASE
 +    mv $tmpdir/$RUST_FILE.asc $TMPDIR_BASE
 +
 +    mv $tmpdir/$RUSTC_FILE $TMPDIR_BASE
 +    mv $tmpdir/$RUSTC_FILE.asc $TMPDIR_BASE
 +
 +    for ext in $EXTENSIONS; do
 + tarfile="rust-std-${RUST_VERSION}-$ext.tar.xz"
 +
 + mv $tmpdir/$tarfile $TMPDIR_BASE
 + mv $tmpdir/$tarfile.asc $TMPDIR_BASE
 +    done
 +fi
 +
 +rm -rf $tmpdir
 +</code>
  
 ====== Add WASM support ====== ====== Add WASM support ======
Line 89: Line 278:
 </code> </code>
  
-The -F99 tells perf to sample at 99 Hz, which avoids generating too much data for longer runs (why 99 Hz you ask? It is often chosen because it is unlikely to be in lockstep with other periodic activity). The --call-graph dwarf tells perf to get call-graph information from debuginfo, which is accurate. The XXX is the command you want to profile. So, for example, you might do:+The -F99 tells perf to sample at 99 Hz, which avoids generating too much data for longer runs (why 99 Hz you ask? It is often chosen because it is unlikely to be in lockstep with other periodic activity). The --call-graph dwarf tells perf to get call-graph information from debuginfo, which is accurate. The XXX is the command you want to profile. 
 + 
 +====== Find unused source files ====== 
 +<code> 
 +rustc --emit=dep-info src/main.rs 2> /dev/null; for file in $(find src/ -name '*.rs'); do grep -q -E "^${file}:$" main.d || echo "$file"; done; rm main.d 
 +</code> 
 + 
 +====== User cargo config ====== 
 +~/.cargo/config.toml 
 +<code> 
 +[registries.crates-io] 
 +protocol = "sparse" 
 + 
 +[target.x86_64-unknown-linux-gnu] 
 +# linker = "clang" 
 +# rustflags = ["-C", "link-arg=-fuse-ld=/usr/bin/mold"
 +rustflags = ["-C", "link-arg=-fuse-ld=mold"
 + 
 +[profile.profiling] 
 +inherits = "release" 
 +debug = true 
 +</code>
  
 +To build release with debug info: ''cargo build --profile profiling''
general/rust.1676977555.txt.gz · Last modified: 2023/02/21 11:05 by sunkan

Donate Powered by PHP Valid HTML5 Valid CSS Run on Debian Driven by DokuWiki