In questa sezione

Lette da QuickRust

Proprie di QuickRust

Variabile Effetto
QRUST_HOME la directory home di QuickRust; default ~/.qrust
QRUST_MODE, QRUST_OUTPUT, QRUST_REPORT, QRUST_NESTED, … chiavi di configurazione, una variabile per chiave; l’elenco completo è in Configurazione

Qualsiasi altra variabile il cui nome inizia con QRUST_ è un errore, tranne le variabili interne.

Toolchain e build

Variabile Effetto
RUSTUP_TOOLCHAIN seleziona la toolchain, dopo un argomento +toolchain e prima di un file di toolchain (Configurazione); un nome di toolchain o una directory di toolchain assoluta
CARGO_TARGET_DIR, CARGO_BUILD_TARGET_DIR una directory target scelta dall’utente: usata così com’è al posto della directory del workspace nella cache di QuickRust, a meno che il suo valore non sia uguale a QRUST_MANAGED_TARGET_DIR (impostata da un QuickRust che lo racchiude)
RUSTC_WRAPPER, CARGO_BUILD_RUSTC_WRAPPER un wrapper di rustc configurato dall’utente (letto anche da build.rustc-wrapper nella configurazione di Cargo): viene mantenuto ed eseguito dentro qrust-rustc-wrapper. Quando ce n’è uno, la cache degli artefatti, il frontend parallelo, il linker e l’early cut-off sono disattivati, e sccache non viene concatenato
RUSTC_WORKSPACE_WRAPPER lasciata a Cargo, che la applica dentro la catena dei wrapper
RUSTC, RUSTDOC un compilatore o un rustdoc scelto dall’utente: lasciati così come sono; altrimenti QuickRust li imposta su quelli della toolchain
RUSTC_BOOTSTRAP quando è impostata dall’utente, non si applica alcuna impostazione della fast mode che richieda flag -Z (frontend parallelo, linker, ripetizione del link)
CARGO_INCREMENTAL quando è impostata, prevale su incremental.local-dev e incremental.ci
CARGO_PROFILE_* un’impostazione di profilo fatta dall’utente: l’impostazione della fast mode che la riguarda non viene toccata (Fast mode)
CARGO_INSTALL_ROOT un errore per qrust install senza --root
CARGO_HOME letta da qrust setup per trovare la home di Cargo da cui importare (default ~/.cargo); mai usata per le build, che usano ~/.qrust/cargo (qrust doctor segnala quando è impostata)

Rilevamento della CI

Un comando viene eseguito in CI quando una tra CI, GITHUB_ACTIONS, GITLAB_CI, BUILDKITE, JENKINS_URL, TF_BUILD, TEAMCITY_VERSION è impostata su un valore diverso da vuoto, false o 0. La CI seleziona incremental.ci, viene registrata nei report delle esecuzioni e disattiva l’aggiornamento della toolchain in background.

Terminale

Variabile Effetto
NO_COLOR (non vuota) nessun colore in tutto ciò che QuickRust scrive
CARGO_TERM_COLOR never: nessun colore; always: colore sulle righe con tag di QuickRust anche quando non vanno a un terminale
COLUMNS la larghezza del terminale quando non è possibile chiederla al terminale (default 100)

Il fatto che l’output di un comando venga reso dipende dal fatto che stderr sia un terminale (Output).

Impostate per il Cargo che QuickRust esegue

Ogni comando esegue il Cargo della toolchain con queste variabili. Cargo le trasmette agli script di build, ai sottocomandi esterni, ai programmi di cargo run e ai test.

Variabile Valore
CARGO_HOME ~/.qrust/cargo
RUSTUP_TOOLCHAIN l’id della toolchain selezionata (1.99.0-x86_64-unknown-linux-gnu), così che un cargo o un rustc annidato usi la stessa toolchain
RUSTC, RUSTDOC il rustc e il rustdoc della toolchain, a meno che l’utente non li abbia impostati su qualcos’altro
PATH prima ~/.qrust/bin, poi il PATH ereditato, poi la bin della toolchain
LD_LIBRARY_PATH (Linux), DYLD_FALLBACK_LIBRARY_PATH (macOS) prima la lib della toolchain, poi il valore ereditato
CARGO_CACHE_AUTO_CLEAN_FREQUENCY never: Cargo non elimina di sua iniziativa i crate scaricati; quello spazio è gestito dalla cache di QuickRust
CARGO ~/.qrust/bin/cargo, così che una build annidata tramite $CARGO passi per QuickRust (tranne sotto qrust upstream, e con una toolchain collegata)
CARGO_TARGET_DIR, CARGO_BUILD_BUILD_DIR la directory del workspace nella cache di QuickRust (qrust path), a meno che l’utente non abbia scelto una directory target
CARGO_INCREMENTAL 1 o 0 quando incremental.* è on o off (e l’utente non l’ha impostata)

In un comando di build registrato, inoltre:

Variabile Valore
RUSTC_WRAPPER qrust-rustc-wrapper

+toolchain viene consumato da QuickRust e non raggiunge Cargo. Le impostazioni di profilo della fast mode e le impostazioni del terminale (term.progress.*, term.unicode, term.color) raggiungono Cargo come argomenti --config, mai come variabili d’ambiente, quindi non raggiungono gli script di build, i Cargo annidati o i programmi.

Impostate per i processi del compilatore

qrust-rustc-wrapper esegue rustc (o il driver del compilatore di QuickRust) per le unità che Cargo pianifica con:

Variabile Valore
RUSTC_BOOTSTRAP 1, quando all’unità si applica un’impostazione della fast mode che richiede flag -Z; su un compilatore stable o beta insieme a -Zallow-features=, così che #![feature] resti rifiutato. Mai per gli script di build o per le sonde del compilatore che eseguono, e mai quando l’utente ha impostato RUSTC_BOOTSTRAP

Variabili interne

QuickRust le imposta per i propri processi. Non sono configurazione, e impostarle a mano non è supportato.

Variabile Scopo
QRUST_SESSION_ID la sessione a cui appartiene un comando annidato
QRUST_EVENT_DIR dove il wrapper di rustc registra i suoi eventi
QRUST_INNER_WRAPPER il wrapper dell’utente (o sccache) che il wrapper di rustc esegue al proprio interno
QRUST_WRAPPER_FAIL open o closed: se una cache concatenata può essere saltata quando non riesce ad avviarsi
QRUST_EXEC_GUARD rilevamento della ricorsione
QRUST_ENGINE la directory della toolchain per cui QuickRust ha impostato RUSTC, RUSTDOC e PATH, così che un QuickRust annidato possa distinguere le proprie impostazioni da quelle dell’utente
QRUST_MANAGED_TARGET_DIR indica che CARGO_TARGET_DIR e CARGO_BUILD_BUILD_DIR sono state impostate da QuickRust
QRUST_DRIVER_INTERFACE_HASH, QRUST_DRIVER_KEEP_OBJECTS, QRUST_DRIVER_READY_FD tra il wrapper di rustc e il driver del compilatore di QuickRust

Registrate nei report delle esecuzioni

Con security.persist-environment = "allowlist" (il default), la registrazione di un’esecuzione conserva i valori di queste variabili quando sono impostate: RUSTFLAGS, CARGO_ENCODED_RUSTFLAGS, RUSTDOCFLAGS, CARGO_ENCODED_RUSTDOCFLAGS, CARGO_INCREMENTAL, CARGO_BUILD_TARGET, CARGO_TARGET_DIR, CARGO_BUILD_TARGET_DIR, CARGO_BUILD_BUILD_DIR, CARGO_BUILD_JOBS, CARGO_BUILD_RUSTFLAGS, RUSTC, RUSTC_WRAPPER, RUSTC_WORKSPACE_WRAPPER, CARGO_BUILD_RUSTC_WRAPPER, RUSTUP_TOOLCHAIN, RUSTC_BOOTSTRAP, CC, CXX, AR, CFLAGS, CXXFLAGS, LDFLAGS, MACOSX_DEPLOYMENT_TARGET, SDKROOT, PKG_CONFIG_PATH, CI, CARGO_NET_OFFLINE, CARGO_HOME, MAKEFLAGS, e ogni variabile CARGO_PROFILE_*, CARGO_TARGET_*, CARGO_UNSTABLE_* e SCCACHE_*. Le variabili i cui nomi sembrano credenziali vengono registrate come impostate, con il valore <redacted> (Sicurezza). security.persist-environment = "none" non ne registra nessuna.