Mengompilasi Bazel dari Sumber

Laporkan masalah Lihat sumber Per malam · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

Laman ini menjelaskan cara menginstal Bazel dari sumber dan menyediakan kiat pemecahan masalah untuk masalah umum.

Untuk mem-build Bazel dari sumber, Anda dapat melakukan salah satu langkah berikut:

Membuat Bazel menggunakan Bazel

Ringkasan

  1. Dapatkan rilis Bazel terbaru dari Halaman rilis GitHub atau dengan Bazelisk.

  2. Download sumber Bazel dari GitHub dan mengekstrak di suatu tempat. Atau, Anda dapat melakukan git clone hierarki sumber dari https://github.com/bazelbuild/bazel

  3. Instal prasyarat yang sama seperti untuk bootstrap (lihat untuk sistem mirip Unix atau untuk Windows)

  4. Bangun build pengembangan Bazel menggunakan Bazel: bazel build //src:bazel-dev (atau bazel build //src:bazel-dev.exe aktif Windows)

  5. Biner yang dihasilkan bernilai bazel-bin/src/bazel-dev (atau bazel-bin\src\bazel-dev.exe di Windows). Anda dapat menyalinnya di mana pun Anda sukai dan gunakan langsung tanpa instalasi lebih lanjut.

Petunjuk detailnya ikuti di bawah ini.

Langkah 1: Dapatkan rilis Bazel terbaru

Sasaran: Menginstal atau mendownload Bazel versi rilis. Pastikan Anda dapat menjalankan dengan mengetikkan bazel di terminal.

Alasan: Untuk mem-build Bazel dari hierarki sumber GitHub, Anda memerlukan file Bazel yang sudah ada Biner bazel. Anda dapat menginstalnya dari pengelola paket atau mengunduhnya dari GitHub. Lihat Menginstal Bazel. (Atau Anda dapat membangun dari gosok (bootstrap).)

Pemecahan masalah:

  • Jika Anda tidak dapat menjalankan Bazel dengan mengetik bazel di terminal:

    • Mungkin direktori biner Bazel Anda tidak ada dalam PATH.

      Ini bukan masalah besar. Anda harus mengetik bazel, bukan ketik jalur lengkap.

    • Mungkin biner Bazel itu sendiri tidak disebut bazel (pada Unix) atau bazel.exe (di Windows).

      Ini bukan masalah besar. Anda dapat mengganti nama biner, atau mengetik nama biner, bukan bazel.

    • Mungkin biner tidak dapat dieksekusi (pada Unix).

      Anda harus menjadikan biner sebagai file yang dapat dieksekusi dengan menjalankan chmod +x /path/to/bazel.

Langkah 2: Download sumber Bazel dari GitHub

Jika Anda terbiasa dengan Git, cukup git clone https://github.com/bazelbuild/bazel

Atau:

  1. Unduh sumber terbaru sebagai file ZIP.

  2. Ekstrak konten di suatu tempat.

    Misalnya, buat direktori bazel-src di bawah direktori utama Anda dan ekstrak di sana.

Langkah 3: Instal prasyarat

Instal prasyarat yang sama seperti untuk bootstrap (lihat di bawah) -- JDK, C++ compiler, MSYS2 (jika Anda membangun di Windows), dll.

Langkah 4a: Bangun Bazel di Ubuntu Linux, macOS, dan sistem mirip Unix lainnya

Guna mengetahui petunjuk untuk Windows, lihat Membangun Bazel di Windows.

Sasaran: Jalankan Bazel untuk membuat biner Bazel kustom (bazel-bin/src/bazel-dev).

Petunjuk:

  1. Memulai terminal Bash

  2. cd ke direktori tempat Anda mengekstrak (atau meng-clone) sumber Bazel.

    Misalnya, jika Anda mengekstrak sumber yang ada di direktori utama, jalankan:

    cd ~/bazel-src
    
  3. Buat Bazel dari sumber:

    bazel build //src:bazel-dev
    

    Atau, Anda dapat menjalankan bazel build //src:bazel --compilation_mode=opt untuk menghasilkan biner yang lebih kecil tetapi lebih lambat untuk dibangun.

    Anda dapat membuat aplikasi dengan flag --stamp --embed_label=X.Y.Z untuk menyematkan Bazel versi untuk biner sehingga bazel --version menghasilkan versi yang diberikan.

  4. Output-nya akan berada di bazel-bin/src/bazel-dev (atau bazel-bin/src/bazel).

Langkah 4b: Bangun Bazel di Windows

Untuk instruksi untuk sistem serupa Unix, lihat Ubuntu Linux, macOS, dan sistem mirip Unix lainnya.

Sasaran: Jalankan Bazel untuk membuat biner Bazel kustom (bazel-bin\src\bazel-dev.exe).

Petunjuk:

  1. Mulai Command Prompt (Menu Mulai > Jalankan > "cmd.exe")

  2. cd ke direktori tempat Anda mengekstrak (atau meng-clone) sumber Bazel.

    Misalnya, jika Anda mengekstrak sumber yang ada di direktori utama, jalankan:

    cd %USERPROFILE%\bazel-src
    
  3. Buat Bazel dari sumber:

    {i>bazel build //src:bazel-dev.exe<i}

    Atau, Anda dapat menjalankan bazel build //src:bazel.exe --compilation_mode=opt untuk menghasilkan biner yang lebih kecil, tetapi lebih lambat untuk di-build.

    Anda dapat membuat aplikasi dengan flag --stamp --embed_label=X.Y.Z untuk menyematkan Bazel versi untuk biner sehingga bazel --version menghasilkan versi yang diberikan.

  4. Output-nya akan berada di bazel-bin\src\bazel-dev.exe (atau bazel-bin\src\bazel.exe).

Langkah 5: Instal biner yang dibangun

Sebenarnya, tidak ada yang perlu diinstal.

Output dari langkah sebelumnya adalah biner Bazel mandiri. Anda dapat menyalin ke direktori mana pun dan segera digunakan. (Akan berguna jika direktori itu aktif PATH Anda sehingga Anda dapat menjalankan "bazel" everywhere.)


Membangun Bazel dari awal (bootstrap)

Anda juga bisa membangun Bazel dari awal, tanpa menggunakan biner Bazel yang sudah ada.

Langkah 1: Download sumber Bazel (arsip distribusi)

(Langkah ini sama untuk semua platform.)

  1. Download bazel-<version>-dist.zip dari GitHub, misalnya bazel-0.28.1-dist.zip.

    Perhatian:

    • Ada arsip distribusi tunggal dan tidak bergantung pada arsitektur. Tidak ada arsip distribusi khusus arsitektur atau OS tertentu.
    • Sumber ini tidak sama dengan hierarki sumber GitHub. Anda harus menggunakan arsip distribusi untuk {i>bootstrap<i} Bazel. Anda tidak dapat menggunakan hierarki sumber yang di-clone dari GitHub. (Arsip distribusi berisi file sumber yang dihasilkan yang diperlukan untuk bootstrap dan bukan bagian dari hierarki sumber Git normal.)
  2. Ekstrak arsip distribusi di suatu tempat dalam {i>disk<i}.

    Anda harus memverifikasi tanda tangan yang dibuat oleh kunci rilis 3D5919B448457EE0.

Langkah 2a: Bootstrap Bazel di Ubuntu Linux, macOS, dan sistem mirip Unix lainnya

Untuk mengetahui petunjuk untuk Windows, lihat Bootstrap Bazel di Windows.

2.1. Instal prasyarat

  • Bash

  • zip, ekstrak

  • Toolchain build C++

  • JDK. Versi 21 wajib diisi.

  • Python. Versi 2 dan 3 didukung, menginstal salah satunya adalah sudah cukup.

Misalnya, di Ubuntu Linux Anda dapat menginstal persyaratan ini menggunakan perintah berikut:

sudo apt-get install build-essential openjdk-21-jdk python zip unzip

2.2. Bazel Bootstrap di Unix

  1. Buka jendela shell atau Terminal.

  2. cd ke direktori tempat Anda mengekstrak arsip distribusi.

  3. Jalankan skrip kompilasi: env EXTRA_BAZEL_ARGS="--tool_java_runtime_version=local_jdk" bash ./compile.sh.

Output yang dikompilasi ditempatkan ke dalam output/bazel. Ini adalah Biner bazel, tanpa JDK tersemat. Anda dapat menyalinnya di mana saja atau menggunakannya diterapkan. Untuk memudahkan, salin biner ini ke direktori yang ada di PATH (seperti /usr/local/bin di Linux).

Untuk membangun biner bazel dengan cara yang dapat direproduksi, tetapkan juga SOURCE_DATE_EPOCH di perintah "Run theCompile script" langkah waktu ini.

Langkah 2b: Bootstrap Bazel di Windows

Untuk instruksi untuk sistem serupa Unix, lihat Bootstrap Bazel di Ubuntu Linux, macOS, dan sistem mirip Unix lainnya.

2.1. Instal prasyarat

  • Shell MMSYS2

  • Paket MSYS2 untuk zip dan ekstrak. Jalankan perintah berikut di shell MSYS2:

    pacman -S zip unzip patch
    
  • Compiler Visual C++. Instal compiler Visual C++ sebagai bagian Visual Studio 2015 atau yang lebih baru, atau dengan menginstal Build Tools terbaru untuk Visual Studio 2017.

  • JDK. Versi 21 wajib diisi.

  • Python. Versi 2 dan 3 didukung, menginstal salah satunya adalah sudah cukup. Anda memerlukan versi asli Windows (dapat diunduh dari https://www.python.org). Versi diinstal melalui pacman di MSYS2 tidak akan berfungsi.

2.2. Bazel Bootstrap di Windows

  1. Buka shell MSYS2.

  2. Tetapkan variabel lingkungan berikut:

    • BAZEL_VS atau BAZEL_VC (keduanya tidak sama): Setel ke jalur ke direktori Visual Studio (BAZEL_VS) atau ke Direktori C++ (BAZEL_VC). Menetapkan salah satunya sudah cukup.
    • BAZEL_SH: Jalur MSYS2 bash.exe. Lihat perintah di contoh di bawah ini.

      Jangan tetapkan ini ke C:\Windows\System32\bash.exe. (Anda memiliki file tersebut jika Anda menginstal Windows Subsystem untuk Linux.) Bazel tidak mendukung versi bash.exe ini.

    • PATH: Menambahkan direktori Python.

    • JAVA_HOME: Menyetel ke direktori JDK.

    Contoh (menggunakan BAZEL_VS):

    export BAZEL_VS="C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools"
    export BAZEL_SH="$(cygpath -m $(realpath $(which bash)))"
    export PATH="/c/python27:$PATH"
    export JAVA_HOME="C:/Program Files/Java/jdk-21"
    

    atau (menggunakan BAZEL_VC):

    export BAZEL_VC="C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/VC"
    export BAZEL_SH="$(cygpath -m $(realpath $(which bash)))"
    export PATH="/c/python27:$PATH"
    export JAVA_HOME="C:/Program Files/Java/jdk-21"
    
  3. cd ke direktori tempat Anda mengekstrak arsip distribusi.

  4. Jalankan skrip kompilasi: env EXTRA_BAZEL_ARGS="--tool_java_runtime_version=local_jdk" ./compile.sh

Output yang dikompilasi ditempatkan ke dalam output/bazel.exe. Ini adalah Biner bazel, tanpa JDK tersemat. Anda dapat menyalinnya di mana saja atau menggunakannya diterapkan. Untuk memudahkan, salin biner ini ke direktori yang ada PATH Anda.

Untuk membangun biner bazel.exe dengan cara yang dapat direproduksi, tetapkan juga SOURCE_DATE_EPOCH di perintah "Run theCompile script" langkah waktu ini.

Anda tidak perlu menjalankan Bazel dari shell MSYS2. Anda bisa menjalankan Bazel dari Command Prompt (cmd.exe) atau PowerShell.