รวบรวม Bazel จากแหล่งที่มา

รายงานปัญหา ดูแหล่งที่มา Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

หน้านี้จะอธิบายวิธีติดตั้ง Bazel จากแหล่งที่มาและให้ เคล็ดลับในการแก้ปัญหาที่พบบ่อย

หากต้องการสร้าง Bazel จากแหล่งที่มา คุณสามารถทำอย่างใดอย่างหนึ่งต่อไปนี้

สร้าง Bazel โดยใช้ Bazel

สรุป

  1. ดาวน์โหลด Bazel เวอร์ชันล่าสุดจากหน้าเวอร์ชันใน GitHub หรือใช้ Bazelisk

  2. ดาวน์โหลดแหล่งที่มาของ Bazel จาก GitHub แล้วแตกไฟล์ไว้ที่ใดที่หนึ่ง หรือจะใช้คำสั่ง git clone เพื่อโคลนซอร์สทรีจาก https://github.com/bazelbuild/bazel ก็ได้

  3. ติดตั้งข้อกำหนดเบื้องต้นเดียวกันกับการเริ่มต้นระบบ (ดูสำหรับระบบที่คล้าย Unix หรือสำหรับ Windows)

  4. สร้างบิลด์การพัฒนาของ Bazel โดยใช้ Bazel: bazel build //src:bazel-dev (หรือ bazel build //src:bazel-dev.exe ใน Windows)

  5. ไบนารีที่ได้จะอยู่ที่ bazel-bin/src/bazel-dev (หรือ bazel-bin\src\bazel-dev.exe ใน Windows) คุณสามารถคัดลอกไปไว้ที่ใดก็ได้ และใช้งานได้ทันทีโดยไม่ต้องติดตั้งเพิ่มเติม

ดูวิธีการโดยละเอียดได้ที่ด้านล่าง

ขั้นตอนที่ 1: ดาวน์โหลด Bazel เวอร์ชันล่าสุด

เป้าหมาย: ติดตั้งหรือดาวน์โหลด Bazel เวอร์ชันที่เผยแพร่ ตรวจสอบว่าคุณเรียกใช้ได้โดยพิมพ์ bazel ในเทอร์มินัล

เหตุผล: หากต้องการสร้าง Bazel จากซอร์สทรีของ GitHub คุณต้องมีไบนารี Bazel ที่มีอยู่ก่อนแล้ว คุณติดตั้งได้จากตัวจัดการแพ็กเกจหรือดาวน์โหลดจาก GitHub ดูการติดตั้ง Bazel (หรือคุณจะสร้างตั้งแต่ต้น (Bootstrap) ก็ได้)

การแก้ปัญหา:

  • หากเรียกใช้ Bazel โดยพิมพ์ bazel ในเทอร์มินัลไม่ได้ ให้ทำดังนี้

    • ไดเรกทอรีของไบนารี Bazel อาจไม่ได้อยู่ใน PATH

      นี่ไม่ใช่ปัญหาใหญ่ คุณจะต้องพิมพ์เส้นทางแบบเต็มแทนการพิมพ์ bazel

    • ไบนารี Bazel เองอาจไม่ได้ชื่อ bazel (ใน Unix) หรือ bazel.exe (ใน Windows)

      นี่ไม่ใช่ปัญหาใหญ่ คุณจะเปลี่ยนชื่อไบนารีหรือพิมพ์ชื่อไบนารีแทน bazel ก็ได้

    • ไบนารีอาจเรียกใช้งานไม่ได้ (ใน Unix)

      คุณต้องทำให้ไบนารีเรียกใช้งานได้โดยการเรียกใช้ chmod +x /path/to/bazel

ขั้นตอนที่ 2: ดาวน์โหลดแหล่งที่มาของ Bazel จาก GitHub

หากคุ้นเคยกับ Git ให้ใช้คำสั่ง git clone https://github.com/bazelbuild/bazel

กรณีอื่น:

  1. ดาวน์โหลดแหล่งข้อมูลล่าสุดเป็นไฟล์ ZIP

  2. แตกไฟล์เนื้อหาไปยังที่ใดที่หนึ่ง

    เช่น สร้างไดเรกทอรี bazel-src ภายใต้ไดเรกทอรีบ้านของคุณ แล้ว แตกไฟล์ที่นั่น

ขั้นตอนที่ 3: ติดตั้งข้อกำหนดเบื้องต้น

ติดตั้งข้อกำหนดเบื้องต้นเดียวกันกับการเริ่มต้นระบบ (ดูด้านล่าง) เช่น JDK, คอมไพเลอร์ C++, MSYS2 (หากคุณสร้างใน Windows) เป็นต้น

ขั้นตอนที่ 4ก: สร้าง Bazel ใน Ubuntu Linux, macOS และระบบอื่นๆ ที่คล้าย Unix

โปรดดูวิธีการสำหรับ Windows ที่หัวข้อสร้าง Bazel ใน Windows

เป้าหมาย: เรียกใช้ Bazel เพื่อสร้างไบนารี Bazel ที่กำหนดเอง (bazel-bin/src/bazel-dev)

วิธีการ

  1. เริ่มเทอร์มินัล Bash

  2. cd ไปยังไดเรกทอรีที่คุณแตกไฟล์ (หรือโคลน) แหล่งที่มาของ Bazel

    เช่น หากคุณแตกไฟล์แหล่งที่มาภายใต้ไดเรกทอรีหลัก ให้เรียกใช้คำสั่งต่อไปนี้

    cd ~/bazel-src
    
  3. สร้าง Bazel จากแหล่งที่มา

    bazel build //src:bazel-dev
    

    หรือจะเรียกใช้ bazel build //src:bazel --compilation_mode=opt เพื่อสร้างไบนารีขนาดเล็กกว่าก็ได้ แต่จะสร้างได้ช้ากว่า

    คุณสามารถสร้างด้วยแฟล็ก --stamp --embed_label=X.Y.Z เพื่อฝังเวอร์ชัน Bazel สำหรับไบนารีเพื่อให้ bazel --version แสดงเวอร์ชันที่ระบุ

  4. ผลลัพธ์จะอยู่ที่ bazel-bin/src/bazel-dev (หรือ bazel-bin/src/bazel)

ขั้นตอนที่ 4b: สร้าง Bazel ใน Windows

ดูวิธีการสำหรับระบบที่คล้าย Unix ได้ที่ Ubuntu Linux, macOS และระบบอื่นๆ ที่คล้าย Unix

เป้าหมาย: เรียกใช้ Bazel เพื่อสร้างไบนารี Bazel ที่กำหนดเอง (bazel-bin\src\bazel-dev.exe)

วิธีการ

  1. เริ่ม Command Prompt (เมนูเริ่ม > เรียกใช้ > "cmd.exe")

  2. cd ไปยังไดเรกทอรีที่คุณแตกไฟล์ (หรือโคลน) แหล่งที่มาของ Bazel

    เช่น หากคุณแตกไฟล์แหล่งที่มาภายใต้ไดเรกทอรีหลัก ให้เรียกใช้คำสั่งต่อไปนี้

    cd %USERPROFILE%\bazel-src
    
  3. สร้าง Bazel จากแหล่งที่มา

    bazel build //src:bazel-dev.exe

    หรือจะเรียกใช้ bazel build //src:bazel.exe --compilation_mode=opt เพื่อให้ได้ไบนารีที่เล็กลงก็ได้ แต่จะสร้างได้ช้ากว่า

    คุณสามารถสร้างด้วยแฟล็ก --stamp --embed_label=X.Y.Z เพื่อฝังเวอร์ชัน Bazel สำหรับไบนารีเพื่อให้ bazel --version แสดงเวอร์ชันที่ระบุ

  4. เอาต์พุตจะอยู่ที่ bazel-bin\src\bazel-dev.exe (หรือ bazel-bin\src\bazel.exe)

ขั้นตอนที่ 5: ติดตั้งไบนารีที่สร้างขึ้น

จริงๆ แล้วคุณไม่ต้องติดตั้งอะไรเลย

เอาต์พุตของขั้นตอนก่อนหน้าคือไบนารี Bazel แบบสแตนด์อโลน คุณสามารถคัดลอก ไปยังไดเรกทอรีใดก็ได้และใช้งานได้ทันที (มีประโยชน์หากไดเรกทอรีนั้นอยู่ใน PATH เพื่อให้คุณเรียกใช้ "bazel" ได้ทุกที่)


สร้าง Bazel ตั้งแต่ต้น (การเริ่มต้น)

นอกจากนี้ คุณยังสร้าง Bazel ตั้งแต่ต้นได้โดยไม่ต้องใช้ไบนารี Bazel ที่มีอยู่

ขั้นตอนที่ 1: ดาวน์โหลดแหล่งที่มาของ Bazel (ที่เก็บถาวรสำหรับการเผยแพร่)

(ขั้นตอนนี้เหมือนกันสำหรับทุกแพลตฟอร์ม)

  1. ดาวน์โหลด bazel-<version>-dist.zip จาก GitHub เช่น bazel-0.28.1-dist.zip

    โปรดทราบ

    • มีที่เก็บการจัดจำหน่ายที่เดียวซึ่งไม่ขึ้นอยู่กับสถาปัตยกรรม ไม่มีไฟล์เก็บถาวรสำหรับการจัดจำหน่ายที่เฉพาะเจาะจงกับสถาปัตยกรรมหรือระบบปฏิบัติการ
    • แหล่งข้อมูลเหล่านี้ไม่เหมือนกับโครงสร้างแหล่งที่มาของ GitHub คุณต้องใช้ที่เก็บถาวรสำหรับการจัดจำหน่ายเพื่อเริ่มต้น Bazel คุณใช้ ไม่ได้ (ที่เก็บถาวรสำหรับการเผยแพร่มี ไฟล์ต้นฉบับที่สร้างขึ้นซึ่งจำเป็นสำหรับการเริ่มต้นระบบและไม่ได้เป็นส่วนหนึ่ง ของโครงสร้างแหล่งที่มาของ Git ปกติ)
  2. แตกไฟล์เก็บถาวรของการจัดจำหน่ายไว้ที่ใดก็ได้บนดิสก์

    คุณควรยืนยันลายเซ็นที่สร้างโดยคีย์รุ่นของ Bazel ซึ่งคือ 3D5919B448457EE0

ขั้นตอนที่ 2ก: เริ่มต้น Bazel ใน Ubuntu Linux, macOS และระบบอื่นๆ ที่คล้าย Unix

ดูวิธีการสำหรับ Windows ได้ที่เริ่มต้นใช้งาน Bazel ใน Windows

2.1 ติดตั้งข้อกำหนดเบื้องต้น

  • Bash

  • zip, unzip

  • เครื่องมือสร้าง C++

  • JDK ต้องใช้เวอร์ชัน 21

  • Python ระบบรองรับเวอร์ชัน 2 และ 3 คุณจึงติดตั้งเพียงเวอร์ชันใดเวอร์ชันหนึ่งก็เพียงพอ

เช่น ใน Ubuntu Linux คุณสามารถติดตั้งข้อกำหนดเหล่านี้ได้โดยใช้คำสั่งต่อไปนี้

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

2.2 Bootstrap Bazel ใน Unix

  1. เปิดหน้าต่างเชลล์หรือเทอร์มินัล

  2. cd ไปยังไดเรกทอรีที่คุณแตกไฟล์ที่เก็บการเผยแพร่

  3. เรียกใช้สคริปต์การคอมไพล์: env EXTRA_BAZEL_ARGS="--tool_java_runtime_version=local_jdk" bash ./compile.sh

ระบบจะวางเอาต์พุตที่คอมไพล์แล้วไว้ใน output/bazel นี่คือไบนารี Bazel แบบสแตนด์อโลน ที่ไม่มี JDK แบบฝัง คุณสามารถคัดลอกไปวางที่ใดก็ได้หรือใช้ในตำแหน่งเดิม เพื่อความสะดวก ให้คัดลอกไบนารีนี้ไปยังไดเรกทอรีที่อยู่ใน PATH (เช่น /usr/local/bin ใน Linux)

หากต้องการสร้างไบนารี bazel ในลักษณะที่ทำซ้ำได้ ให้ตั้งค่า SOURCE_DATE_EPOCH ในขั้นตอน "เรียกใช้สคริปต์การคอมไพล์" ด้วย

ขั้นตอนที่ 2b: เริ่มต้น Bazel ใน Windows

ดูวิธีการสำหรับระบบที่คล้าย Unix ได้ที่ Bootstrap Bazel ใน Ubuntu Linux, macOS และระบบอื่นๆ ที่คล้าย Unix

2.1 ติดตั้งข้อกำหนดเบื้องต้น

  • เชลล์ MSYS2

  • แพ็กเกจ MSYS2 สำหรับ zip และ unzip เรียกใช้คำสั่งต่อไปนี้ในเชลล์ MSYS2

    pacman -S zip unzip patch
    
  • คอมไพเลอร์ Visual C++ ติดตั้งคอมไพเลอร์ Visual C++ เป็นส่วนหนึ่ง ของ Visual Studio 2015 ขึ้นไป หรือติดตั้งเครื่องมือบิลด์ สำหรับ Visual Studio 2017 เวอร์ชันล่าสุด

  • JDK ต้องใช้เวอร์ชัน 21

  • Python ระบบรองรับเวอร์ชัน 2 และ 3 คุณจึงติดตั้งเพียงเวอร์ชันใดเวอร์ชันหนึ่งก็เพียงพอ คุณต้องใช้เวอร์ชันที่ทำงานบน Windows (ดาวน์โหลดได้จาก https://www.python.org) เวอร์ชันที่ติดตั้งผ่าน pacman ใน MSYS2 จะใช้งานไม่ได้

2.2 Bootstrap Bazel ใน Windows

  1. เปิดเชลล์ MSYS2

  2. ตั้งค่าตัวแปรสภาพแวดล้อมต่อไปนี้

    • BAZEL_VS หรือ BAZEL_VC (ไม่เหมือนกัน): ตั้งค่าเป็น เส้นทางไปยังไดเรกทอรี Visual Studio (BAZEL_VS) หรือไปยังไดเรกทอรี Visual C++ (BAZEL_VC) การตั้งค่าอย่างใดอย่างหนึ่งก็เพียงพอแล้ว
    • BAZEL_SH: เส้นทางของ MSYS2 bash.exe ดูคำสั่งใน ตัวอย่างด้านล่าง

      อย่าตั้งค่าเป็น C:\Windows\System32\bash.exe (คุณจะมีไฟล์ดังกล่าว หากติดตั้ง Windows Subsystem for Linux) Bazel ไม่รองรับ bash.exe เวอร์ชันนี้

    • PATH: เพิ่มไดเรกทอรี Python

    • JAVA_HOME: ตั้งค่าเป็นไดเรกทอรี JDK

    ตัวอย่าง (ใช้ 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=&quot;C:/Program Files/Java/jdk-21"
    

    หรือ (ใช้ 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=&quot;C:/Program Files/Java/jdk-21"
    
  3. cd ไปยังไดเรกทอรีที่คุณแตกไฟล์ที่เก็บการเผยแพร่

  4. เรียกใช้สคริปต์การคอมไพล์: env EXTRA_BAZEL_ARGS="--tool_java_runtime_version=local_jdk" ./compile.sh

ระบบจะวางเอาต์พุตที่คอมไพล์แล้วไว้ใน output/bazel.exe นี่คือไบนารี Bazel แบบสแตนด์อโลน ที่ไม่มี JDK แบบฝัง คุณสามารถคัดลอกไปวางที่ใดก็ได้หรือใช้ในตำแหน่งเดิม เพื่อความสะดวก ให้คัดลอกไบนารีนี้ไปยังไดเรกทอรีที่อยู่ในPATH

หากต้องการสร้างไบนารี bazel.exe ในลักษณะที่ทำซ้ำได้ ให้ตั้งค่า SOURCE_DATE_EPOCH ในขั้นตอน "เรียกใช้สคริปต์การคอมไพล์" ด้วย

คุณไม่จำเป็นต้องเรียกใช้ Bazel จากเชลล์ MSYS2 คุณเรียกใช้ Bazel ได้จาก Command Prompt (cmd.exe) หรือ PowerShell