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

รายงานปัญหา ดูแหล่งที่มา

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

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

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

สรุป

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

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

การแก้ปัญหา

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

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

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

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

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

    • ไบนารีนั้นอาจดำเนินการไม่ได้ (ใน Unixes)

      คุณต้องกำหนดให้ไฟล์สั่งการแบบไบนารีโดยเรียกใช้ 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) เป็นต้น

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

สำหรับคำแนะนำสำหรับ Windows โปรดดู Build 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 เพื่อให้ได้ไบนารีที่เล็กลงแต่สร้างได้ช้ากว่า

  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. เริ่มพรอมต์คำสั่ง (เมนูเริ่มต้น > เรียกใช้ > "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 เพื่อให้ได้ไบนารีที่เล็กลง แต่สร้างได้ช้ากว่า

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

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

อันที่จริงยังไม่มีอะไรให้ติดตั้ง

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


สร้าง Bazel ใหม่ตั้งแต่ต้น (รองเท้าบู๊ต)

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

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

(ขั้นตอนนี้จะเหมือนกันในทุกแพลตฟอร์ม)

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

    โปรดทราบ:

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

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

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

ดูวิธีการสำหรับ Windows ได้ที่ Bootstrap Bazel ใน Windows

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

  • แบช

  • บีบอัด, แตกไฟล์

  • เครื่องมือเชนของบิลด์ C++

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

  • Python เวอร์ชัน 2 และ 3 ได้รับการรองรับ ติดตั้งแค่เวอร์ชันเดียวก็เพียงพอแล้ว

เช่น ติดตั้งข้อกำหนดเหล่านี้ด้วยคำสั่งต่อไปนี้ใน Ubuntu Linux

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

2.2. Bootstrap Bazel ใน Unix

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

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

ขั้นตอนที่ 2ข: Bootstrap Bazel ใน Windows

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

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

  • เชลล์ MSYS2

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

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

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

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

2.2. Bootstrap Bazel ใน Windows

  1. เปิด Shell 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 สำหรับ 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/jdk1.8.0_112"
    

    หรือ (โดยใช้ 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/jdk1.8.0_112"
    
  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