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

รายงานปัญหา ดูแหล่งที่มา รุ่น Nightly · 7.4 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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

หากต้องการสร้าง Bazel จากซอร์สโค้ด ให้ทําอย่างใดอย่างหนึ่งต่อไปนี้

บิลด์ Bazel โดยใช้ Bazel

สรุป

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

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

  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: ติดตั้งข้อกําหนดเบื้องต้น

ติดตั้งข้อกําหนดเบื้องต้นเดียวกันกับการสร้าง Bootstrap (ดูด้านล่าง) เช่น JDK, C++ compiler, 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 เพื่อให้ได้ไฟล์ไบนารีขนาดเล็กลงแต่ใช้เวลาสร้างนานขึ้นก็ได้

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

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

ขั้นตอนที่ 4ข: บิลด์ Bazel ใน Windows

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

เป้าหมาย: เรียกใช้ Bazel เพื่อสร้างไฟล์ปฏิบัติการ Bazel ที่กําหนดเอง (bazel-bin\src\bazel-dev.exe)

วิธีการ

  1. เริ่ม Command Prompt (เมนู Start > Run > "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 เพื่อให้ได้ไฟล์ไบนารีขนาดเล็กลงก็ได้ แต่การสร้างจะช้าลง

    คุณสามารถสร้างด้วย Flag --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 คุณต้องใช้ไฟล์เก็บถาวรของ Distribution เพื่อเริ่มต้นใช้งาน Bazel คุณใช้สคีมาซอร์สโค้ดที่โคลนจาก GitHub ไม่ได้ (ไฟล์เก็บถาวรของรุ่นมีไฟล์ซอร์สโค้ดที่สร้างขึ้นซึ่งจําเป็นสําหรับการเริ่มต้นใช้งานและไม่ได้อยู่ในลําดับชั้นซอร์สโค้ด Git ปกติ)
  2. แตกไฟล์เก็บถาวรของรุ่นที่ใดก็ได้บนดิสก์

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

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

โปรดดูวิธีการสำหรับ Windows ที่หัวข้อBootstrap 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 เริ่มต้นใช้งาน Bazel ใน Unix

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

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

  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 ในขั้นตอน "เรียกใช้สคริปต์การคอมไพล์" ด้วย

ขั้นตอนที่ 2ข: บูตสตับ Bazel ใน Windows

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

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

  • เชลล์ MSYS2

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

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

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

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

2.2 เริ่มต้นใช้งาน 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="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="C:/Program Files/Java/jdk-21"
    
  3. cd ไปยังไดเรกทอรีที่คุณแตกไฟล์เก็บถาวรของ Distribution

  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