Configurazione dell'ambiente per sviluppatori

Configurazione di LSP con clangd

Sfondo

Editor come Emacs, Vim o VS Code supportano funzionalità come la navigazione nel codice, il completamento del codice, i messaggi di errore del compilatore in linea e altre ancora, tramite LSP, il protocollo Language Server. Un server di linguaggio comune con supporto LSP è clangd, che si basa sulla presenza di compile_commands.json, un file JSON con un record dei comandi di compilazione per ogni file di un progetto.

Come faccio a generare compile_commands.json per il codice sorgente XLA?

Utilizza lo script build_tools/lint/generate_compile_commands.py. La seguente chiamata dalla radice del repository XLA genera un file compile_commands.json in loco: bazel aquery "mnemonic(CppCompile, //xla/...)" --output=jsonproto | python3 build_tools/lint/generate_compile_commands.py

Build Cleaner

XLA CI all'interno di Google esegue controlli aggiuntivi per verificare che tutti i target elenchino correttamente tutte le dipendenze nei file BUILD, che non sono abilitate per impostazione predefinita in OSS Bazel CI. L'esecuzione dei seguenti comandi prima dell'invio della richiesta di pull al team XLA velocizzerà notevolmente i tempi di unione della richiesta di pull, altrimenti dovrai chiedere a un Googler di apportare queste correzioni internamente oppure dovrai eseguire altri cicli di revisione della richiesta di pull per correggerle in base al feedback dei Googler.

Layering Check

La compilazione con --features=layering_check assicura di non includere accidentalmente un'intestazione tramite dipendenza transitiva senza elencarla nelle dipendenze di destinazione.

Rimuovere le dipendenze inutilizzate dai file BUILD

Installa lo strumento Buildozer:

sudo curl -fsSL -o /usr/bin/buildozer https://github.com/bazelbuild/buildtools/releases/download/6.0.0/buildozer-linux-amd64
sudo chmod 755 /usr/bin/buildozer

Installa lo strumento Bant:

# To some writable directory that does not require root access
bazel build -c opt //bant && install -D --strip bazel-bin/bant/bant ~/bin/bant

# For a system directory that requires root-access
sudo install -D --strip bazel-bin/bant/bant /usr/local/bin/bant

Utilizza bant per generare comandi buildozer per rimuovere le dipendenze inutilizzate:

bant dwyu //xla/core/collectives:symmetric_memory

Se ti senti fortunato, puoi eseguirli direttamente:

. <(bant dwyu //xla/core/collectives:symmetric_memory)