Komut dosyalarından Bazel çağrılıyor

Derleme yapmak, test çalıştırmak veya bağımlılık grafiğini sorgulamak için komut dosyalarından Bazel'ı çağırabilirsiniz. Bazel, etkili komut dosyası oluşturmayı mümkün kılmak için tasarlanmıştır ancak bu bölümde, komut dosyalarınızı daha güçlü hale getirmek için göz önünde bulundurmanız gereken bazı ayrıntılar listelenmiştir.

Çıktı tabanını seçme

--output_base seçeneği, Bazel işleminin bir derlemenin çıkışlarını nerede yazması gerektiğini ve Bazel tarafından dahili olarak kullanılan çeşitli çalışma dosyalarını kontrol eder. Bu dosyalardan biri, birden fazla Bazel işlemi tarafından çıkış tabanında eşzamanlı değişikliğe karşı koruma sağlayan bir kilittir.

Komut dosyanız için doğru çıktı temel dizinini seçmek birkaç faktöre bağlıdır. Derleme çıktılarını belirli bir konuma yerleştirmeniz gerekirse kullanmanız gereken çıkış tabanı gösterilir. Bazel'a "salt okunur" çağrısı yapıyorsanız (bazel query gibi) kilitleme faktörleri daha önemli olacaktır. Özellikle, komut dosyanızın birden fazla örneğini aynı anda çalıştırmanız gerekiyorsa her birine farklı (veya rastgele) bir çıkış tabanı vermeniz gerekir.

Varsayılan çıkış taban değerini kullanırsanız kullanıcının etkileşimli Bazel komutlarının kullandığı kilit için rekabet edersiniz. Kullanıcı, derlemeler gibi uzun süreli komutlar yayınlarsa komut dosyanızın devam edebilmesi için bu komutların tamamlanmasını beklemesi gerekir.

Sunucu moduyla ilgili notlar

Bazel varsayılan olarak optimizasyon olarak uzun süreli bir sunucu işlemi kullanır. Komut dosyasında Bazel'ı çalıştırırken sunucuyla işiniz bittiğinde shutdown çağrısı yapmayı unutmayın veya boşta olan sunucuların kendilerini hemen kapanması için --max_idle_secs=5 değerini belirtin.

Hangi çıkış kodunu alacağım?

Bazel, kaynak kodundan kaynaklanan hataları Bazel'ın düzgün bir şekilde yürütülmesini engelleyen harici hatalardan ayırt etmeye çalışır. Bazel'ın yürütülmesi aşağıdaki çıkış kodlarına neden olabilir:

Tüm komutlar için ortak çıkış kodları:

  • 0 - Başarılı
  • 2 - Komut Satırı Sorunu, Kötü veya Geçersiz bayraklar veya komut kombinasyonu ya da Kötü Ortam Değişkenleri. Komut satırınız değiştirilmelidir.
  • 8: Derleme kesintiye uğradı ancak düzenli bir kapatma işlemiyle sonlandırıldı.
  • 9 - Sunucu kilidi ayarlandı ve --noblock_for_lock geçildi.
  • 32 - Bu makinede Harici Ortam Hatası yok.

  • 33 - Bazel belleği tükendi ve kilitlendi. Komut satırınızı değiştirmeniz gerekiyor.

  • 34 - Google şirket içi kullanımı için ayrılmıştır.

  • 35 - Google şirket içi kullanımı için ayrılmıştır.

  • 36 - Yerel Çevre Sorunu, kalıcı olduğundan şüpheleniliyor.

  • 37 - İşlenmemiş İstisna / Dahili Bazel Hatası.

  • 38 - Google şirket içi kullanımı için ayrılmıştır.

  • 41-44 - Google şirket içi kullanımı için ayrılmıştır.

  • 45: Sonuçlar Derleme Etkinliği Hizmetinde yayınlanırken hata oluştu.

  • 47 - Google şirket içi kullanımı için ayrılmıştır.

bazel build, bazel test komutları için dönüş kodları:

  • 1 - Derleme başarısız oldu.
  • 3 - Derleme Tamam, ancak bazı testler başarısız oldu veya zaman aşımına uğradı.
  • 4 - Derleme başarılı ancak istenen testlere rağmen hiçbir test bulunamadı.

bazel run için:

  • 1 - Derleme başarısız oldu.
  • Derleme başarılı olursa ancak yürütülen alt işlem sıfır olmayan bir çıkış kodu döndürürse bu, aynı zamanda komutun çıkış kodu olur.

bazel query için:

  • 3 - Kısmi başarı, ancak sorgu giriş BUILD dosya kümesinde 1 veya daha fazla hatayla karşılaştığı için işlemin sonuçları %100 güvenilir değildir. Bunun nedeni büyük olasılıkla komut satırındaki bir --keep_going seçeneğidir.
  • 7 - Komut hatası.

Gelecekteki Bazel sürümleri, genel hata çıkış kodunu (1) belirli bir anlama sahip, sıfır dışında farklı bir değerle değiştirerek ek çıkış kodları ekleyebilir. Bununla birlikte, sıfır olmayan tüm çıkış değerleri her zaman bir hata teşkil eder.

.bazelrc dosyasını okuma

Varsayılan olarak Bazel, .bazelrc dosyasını temel çalışma alanı dizininden veya kullanıcının ana dizininden okur. Komut dosyanız için bunun istenen bir seçim olup olmamasından bağımsız olarak, komut dosyanızın tamamen hermetik olması gerekiyorsa (örneğin, sürüm derlemeleri yaparken) --bazelrc=/dev/null seçeneğini kullanarak .bazelrc dosyasının okunmasını devre dışı bırakmalısınız. Kullanıcının tercih ettiği ayarları kullanarak bir derleme gerçekleştirmek istiyorsanız varsayılan davranış daha iyidir.

Komut günlüğü

Bazel çıkışı, aşağıdaki komutu kullanarak bulabileceğiniz komut günlüğü dosyasında da mevcuttur:

bazel info command_log

Komut günlük dosyası, en son Bazel komutunun araya eklemeli stdout ve stderr akışlarını içerir. Bu dosya en son Bazel komutu olacağından bazel info komutunun çalıştırılması durumunda dosya içeriğinin üzerine yazılacağını unutmayın. Bununla birlikte, --output_base veya --output_user_root seçeneklerinin ayarını değiştirmediğiniz sürece komut günlük dosyasının konumu değişmez.

Çıkış ayrıştırılıyor

Bazel çıktısı birçok amaç için kolayca ayrıştırılabilir. Komut dosyanız için yararlı olabilecek iki seçenek, ilerleme mesajlarını gizleyen --noshow_progress ve "güncel derleme" mesajlarının yazdırılıp yazdırılmayacağını kontrol eden --show_result n'dir. Bu mesajlar, hangi hedeflerin başarıyla oluşturulduğunu ve oluşturdukları çıkış dosyalarının konumunu keşfetmek için ayrıştırılabilir. Bu mesajlara güveniyorsanız n için çok büyük bir değer belirttiğinizden emin olun.

Profil oluşturarak performans sorunlarını giderme

Performans Profili Oluşturma bölümüne bakın.