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

วันที่ รายงานปัญหา ดูแหล่งที่มา ตอนกลางคืน · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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

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

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

สรุป

  1. ดาวน์โหลด Bazel รุ่นล่าสุดจาก หน้าการเผยแพร่ GitHub หรือกับ Bazelisk

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

ขั้นตอนที่ 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 ก็ได้ เพื่อให้ได้ไบนารีขนาดเล็ก แต่สร้างได้ช้ากว่า

  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" everywhere.)


สร้าง Bazel ตั้งแต่เริ่มต้น (การเปิดเครื่องใหม่)

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

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

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

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

    โปรดทราบ:

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

    คุณควรยืนยันลายเซ็นที่เขียนโดย Bazel คีย์การเผยแพร่ 3D5919B448457EE0

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

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

2.1 ติดตั้งสิ่งที่ต้องมีก่อน

  • แบช

  • zip, คลายการบีบอัด

  • C++ Build Toolchain

  • 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 ติดตั้งสิ่งที่ต้องมีก่อน

  • Shell ของ 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). เวอร์ชันที่ติดตั้งผ่าน Paman ใน 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 สำหรับ 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 จาก Shell ของ MSYS2 คุณสามารถเรียกใช้ Bazel จาก Command Prompt (cmd.exe) หรือ PowerShell