Mengompilasi Bazel dari Sumber

Laporkan masalah Lihat sumber 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Halaman ini menjelaskan cara menginstal Bazel dari sumber dan memberikan tips pemecahan masalah untuk masalah umum.

Untuk mem-build Bazel dari sumber, Anda dapat melakukan salah satu hal 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 ekstrak di suatu tempat. Atau, Anda dapat meng-clone hierarki sumber dari https://github.com/bazelbuild/bazel

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

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

  5. Biner yang dihasilkan berada di bazel-bin/src/bazel-dev (atau bazel-bin\src\bazel-dev.exe di Windows). Anda dapat menyalinnya ke mana saja dan langsung menggunakannya tanpa penginstalan lebih lanjut.

Petunjuk mendetailnya ada di bawah.

Langkah 1: Dapatkan rilis Bazel terbaru

Sasaran: Instal atau download Bazel versi rilis. Pastikan Anda dapat menjalankannya dengan mengetikkan bazel di terminal.

Alasan: Untuk mem-build Bazel dari hierarki sumber GitHub, Anda memerlukan biner Bazel yang sudah ada. Anda dapat menginstalnya dari pengelola paket atau mendownloadnya dari GitHub. Lihat Menginstal Bazel. (Atau Anda dapat mem-build dari awal (bootstrap).)

Pemecahan masalah:

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

    • Mungkin direktori biner Bazel Anda tidak ada di PATH.

      Hal ini bukan masalah besar. Anda harus mengetik jalur lengkap, bukan mengetik bazel.

    • Mungkin biner Bazel itu sendiri tidak disebut bazel (di 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 (di Unix).

      Anda harus membuat 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. Download 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 bootstrapping (lihat di bawah) -- JDK, compiler C++, MSYS2 (jika Anda mem-build di Windows), dll.

Langkah 4a: Mem-build Bazel di Ubuntu Linux, macOS, dan sistem mirip Unix lainnya

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

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

Petunjuk:

  1. Memulai terminal Bash

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

    Misalnya, jika Anda mengekstrak sumber di direktori beranda, jalankan:

    cd ~/bazel-src
    
  3. Mem-build 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 proses build-nya lebih lambat.

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

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

Langkah 4b: Mem-build Bazel di Windows

Untuk petunjuk sistem yang mirip Unix, lihat Ubuntu Linux, macOS, dan sistem mirip Unix lainnya.

Sasaran: Jalankan Bazel untuk mem-build 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 di direktori beranda, jalankan:

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

    bazel build //src:bazel-dev.exe

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

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

  4. Outputnya 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 menyalinnya ke direktori mana pun dan langsung menggunakannya. (Sebaiknya direktori tersebut ada di PATH Anda sehingga Anda dapat menjalankan "bazel" di mana saja.)


Membangun Bazel dari awal (bootstrap)

Anda juga dapat mem-build Bazel dari awal, tanpa menggunakan biner Bazel yang 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 yang tidak bergantung pada arsitektur. Tidak ada arsip distribusi khusus arsitektur atau khusus OS.
    • Sumber ini tidak sama dengan struktur sumber GitHub. Anda harus menggunakan arsip distribusi untuk mem-bootstrap Bazel. Anda tidak dapat menggunakan hierarki sumber yang di-clone dari GitHub. (Arsip distribusi berisi file sumber yang dihasilkan yang diperlukan untuk bootstrapping 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 Bazel 3D5919B448457EE0.

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

Untuk petunjuk di Windows, lihat Mem-bootstrap Bazel di Windows.

2.1. Menginstal prasyarat

  • Bash

  • zip, unzip

  • Toolchain build C++

  • JDK. Versi 21 wajib diisi.

  • Python. Versi 2 dan 3 didukung, menginstal salah satunya 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. Melakukan bootstrap Bazel di Unix

  1. Buka shell atau jendela 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 mandiri, tanpa JDK tersemat. Anda dapat menyalinnya ke mana saja atau menggunakannya di tempat. Untuk memudahkan, salin biner ini ke direktori yang ada di PATH Anda (seperti /usr/local/bin di Linux).

Untuk mem-build biner bazel dengan cara yang dapat direproduksi, tetapkan juga SOURCE_DATE_EPOCH di langkah "Jalankan skrip kompilasi".

Langkah 2b: Bootstrap Bazel di Windows

Untuk petunjuk sistem yang mirip Unix, lihat Mem-bootstrap Bazel di Ubuntu Linux, macOS, dan sistem mirip Unix lainnya.

2.1. Menginstal prasyarat

  • Shell MMSYS2

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

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

  • JDK. Versi 21 diperlukan.

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

2.2. Melakukan bootstrap Bazel di Windows

  1. Buka shell MSYS2.

  2. Tetapkan variabel lingkungan berikut:

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

      Jangan tetapkan 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: Tetapkan 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 mandiri, tanpa JDK tersemat. Anda dapat menyalinnya ke mana saja atau menggunakannya di tempat. Untuk memudahkan, salin biner ini ke direktori yang ada di PATH Anda.

Untuk mem-build biner bazel.exe dengan cara yang dapat direproduksi, tetapkan juga SOURCE_DATE_EPOCH di langkah "Jalankan skrip kompilasi".

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