Biên dịch Bazel từ nguồn

Báo cáo vấn đề Xem nguồn Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

Trang này mô tả cách cài đặt Bazel từ nguồn và cung cấp các mẹo khắc phục sự cố cho những vấn đề thường gặp.

Để tạo Bazel từ nguồn, bạn có thể làm theo một trong những cách sau:

Tạo Bazel bằng Bazel

Tóm tắt

  1. Tải bản phát hành Bazel mới nhất xuống từ trang phát hành trên GitHub hoặc bằng Bazelisk.

  2. Tải các nguồn của Bazel xuống từ GitHub và giải nén ở một nơi nào đó. Ngoài ra, bạn có thể dùng lệnh git clone để sao chép cây nguồn từ https://github.com/bazelbuild/bazel

  3. Cài đặt các điều kiện tiên quyết tương tự như khi khởi động (xem đối với các hệ thống tương tự như Unix hoặc đối với Windows)

  4. Tạo bản dựng phát triển của Bazel bằng Bazel: bazel build //src:bazel-dev (hoặc bazel build //src:bazel-dev.exe trên Windows)

  5. Tệp nhị phân kết quả nằm ở bazel-bin/src/bazel-dev (hoặc bazel-bin\src\bazel-dev.exe trên Windows). Bạn có thể sao chép ứng dụng này ở bất cứ đâu bạn muốn và sử dụng ngay mà không cần cài đặt thêm.

Hướng dẫn chi tiết có ở bên dưới.

Bước 1: Tải bản phát hành Bazel mới nhất

Mục tiêu: Cài đặt hoặc tải xuống một phiên bản phát hành của Bazel. Đảm bảo bạn có thể chạy bằng cách nhập bazel vào một thiết bị đầu cuối.

Lý do: Để tạo Bazel từ một cây nguồn GitHub, bạn cần có một tệp nhị phân Bazel có sẵn. Bạn có thể cài đặt một trình điều khiển từ trình quản lý gói hoặc tải một trình điều khiển xuống từ GitHub. Xem phần Cài đặt Bazel. (Hoặc bạn có thể tạo từ đầu (khởi động).)

Khắc phục sự cố:

  • Nếu bạn không thể chạy Bazel bằng cách nhập bazel vào một thiết bị đầu cuối:

    • Có thể thư mục nhị phân Bazel của bạn không nằm trên PATH.

      Đây không phải là vấn đề lớn. Thay vì nhập bazel, bạn cần nhập đường dẫn đầy đủ.

    • Có thể bản thân tệp nhị phân Bazel không được gọi là bazel (trên Unix) hoặc bazel.exe (trên Windows).

      Đây không phải là vấn đề lớn. Bạn có thể đổi tên tệp nhị phân hoặc nhập tên của tệp nhị phân thay vì bazel.

    • Có thể tệp nhị phân không thực thi được (trên Unix).

      Bạn phải thực hiện tệp thực thi nhị phân bằng cách chạy chmod +x /path/to/bazel.

Bước 2: Tải các nguồn của Bazel xuống từ GitHub

Nếu bạn đã quen với Git, thì chỉ cần git clone https://github.com/bazelbuild/bazel

Nếu không thì:

  1. Tải các nguồn mới nhất xuống dưới dạng tệp zip.

  2. Giải nén nội dung ở một nơi nào đó.

    Ví dụ: tạo một thư mục bazel-src trong thư mục gốc của bạn rồi giải nén vào đó.

Bước 3: Cài đặt các điều kiện tiên quyết

Cài đặt các điều kiện tiên quyết tương tự như khi khởi động (xem bên dưới) – JDK, trình biên dịch C++, MSYS2 (nếu bạn đang tạo trên Windows), v.v.

Bước 4a: Tạo Bazel trên Ubuntu Linux, macOS và các hệ thống tương tự Unix khác

Để xem hướng dẫn cho Windows, hãy xem phần Tạo Bazel trên Windows.

Mục tiêu: Chạy Bazel để tạo một tệp nhị phân Bazel tuỳ chỉnh (bazel-bin/src/bazel-dev).

Hướng dẫn:

  1. Khởi động một cửa sổ dòng lệnh Bash

  2. cd vào thư mục nơi bạn đã giải nén (hoặc sao chép) các nguồn của Bazel.

    Ví dụ: nếu bạn đã trích xuất các nguồn trong thư mục chính, hãy chạy:

    cd ~/bazel-src
    
  3. Tạo Bazel từ nguồn:

    bazel build //src:bazel-dev
    

    Ngoài ra, bạn có thể chạy bazel build //src:bazel --compilation_mode=opt để tạo ra một tệp nhị phân nhỏ hơn nhưng quá trình tạo sẽ chậm hơn.

    Bạn có thể tạo bằng cờ --stamp --embed_label=X.Y.Z để nhúng một phiên bản Bazel cho tệp nhị phân để bazel --version xuất ra phiên bản đã cho.

  4. Dữ liệu đầu ra sẽ ở bazel-bin/src/bazel-dev (hoặc bazel-bin/src/bazel).

Bước 4b: Tạo Bazel trên Windows

Để biết hướng dẫn cho các hệ thống tương tự Unix, hãy xem phần Ubuntu Linux, macOS và các hệ thống tương tự Unix khác.

Mục tiêu: Chạy Bazel để tạo một tệp nhị phân Bazel tuỳ chỉnh (bazel-bin\src\bazel-dev.exe).

Hướng dẫn:

  1. Khởi động Dấu nhắc lệnh (Trình đơn Start > Run > "cmd.exe")

  2. cd vào thư mục nơi bạn đã giải nén (hoặc sao chép) các nguồn của Bazel.

    Ví dụ: nếu bạn đã trích xuất các nguồn trong thư mục chính, hãy chạy:

    cd %USERPROFILE%\bazel-src
    
  3. Tạo Bazel từ nguồn:

    bazel build //src:bazel-dev.exe

    Ngoài ra, bạn có thể chạy bazel build //src:bazel.exe --compilation_mode=opt để tạo ra một tệp nhị phân nhỏ hơn nhưng quá trình tạo sẽ chậm hơn.

    Bạn có thể tạo bằng cờ --stamp --embed_label=X.Y.Z để nhúng một phiên bản Bazel cho tệp nhị phân để bazel --version xuất ra phiên bản đã cho.

  4. Dữ liệu đầu ra sẽ ở bazel-bin\src\bazel-dev.exe (hoặc bazel-bin\src\bazel.exe).

Bước 5: Cài đặt tệp nhị phân đã tạo

Thực ra, bạn không cần cài đặt gì cả.

Đầu ra của bước trước là một tệp nhị phân Bazel độc lập. Bạn có thể sao chép tệp này vào bất kỳ thư mục nào và sử dụng ngay lập tức. (Thật hữu ích nếu thư mục đó nằm trên PATH của bạn để bạn có thể chạy "bazel" ở mọi nơi.)


Tạo Bazel từ đầu (khởi động)

Bạn cũng có thể tạo Bazel từ đầu mà không cần dùng tệp nhị phân Bazel hiện có.

Bước 1: Tải các nguồn của Bazel xuống (tệp lưu trữ phân phối)

(Bước này giống nhau đối với tất cả các nền tảng.)

  1. Tải bazel-<version>-dist.zip xuống từ GitHub, ví dụ: bazel-0.28.1-dist.zip.

    Chú ý:

    • Có một kho lưu trữ phân phối độc lập, không phụ thuộc vào cấu trúc. Không có kho lưu trữ phân phối dành riêng cho kiến trúc hoặc hệ điều hành.
    • Những nguồn này không giống với cây nguồn GitHub. Bạn phải sử dụng kho lưu trữ phân phối để khởi động Bazel. Bạn không thể sử dụng một cây nguồn được sao chép từ GitHub. (Kho lưu trữ phân phối chứa các tệp nguồn được tạo cần thiết cho quá trình khởi động và không thuộc cây nguồn Git thông thường.)
  2. Giải nén tệp lưu trữ phân phối ở một vị trí nào đó trên ổ đĩa.

    Bạn nên xác minh chữ ký do khoá phát hành 3D5919B448457EE0 của Bazel tạo.

Bước 2a: Khởi động Bazel trên Ubuntu Linux, macOS và các hệ thống tương tự Unix khác

Để biết hướng dẫn cho Windows, hãy xem bài viết Khởi động Bazel trên Windows.

2.1. Cài đặt các điều kiện tiên quyết

  • Bash

  • zip, unzip

  • Chuỗi công cụ tạo C++

  • JDK. Bạn phải dùng phiên bản 21.

  • Python. Chúng tôi hỗ trợ phiên bản 2 và 3, bạn chỉ cần cài đặt một trong hai phiên bản này.

Ví dụ: trên Ubuntu Linux, bạn có thể cài đặt các yêu cầu này bằng lệnh sau:

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

2.2. Khởi động Bazel trên Unix

  1. Mở một cửa sổ dòng lệnh hoặc cửa sổ Thiết bị đầu cuối.

  2. cd đến thư mục nơi bạn giải nén tệp lưu trữ phân phối.

  3. Chạy tập lệnh biên dịch: env EXTRA_BAZEL_ARGS="--tool_java_runtime_version=local_jdk" bash ./compile.sh.

Đầu ra đã biên dịch được đặt vào output/bazel. Đây là một tệp nhị phân Bazel độc lập, không có JDK được nhúng. Bạn có thể sao chép mã này ở bất cứ đâu hoặc sử dụng mã này tại chỗ. Để thuận tiện, hãy sao chép tệp nhị phân này vào một thư mục trên PATH (chẳng hạn như /usr/local/bin trên Linux).

Để tạo tệp nhị phân bazel theo cách có thể tái tạo, hãy đặt SOURCE_DATE_EPOCH trong bước "Chạy tập lệnh biên dịch".

Bước 2b: Khởi động Bazel trên Windows

Để biết hướng dẫn về các hệ thống tương tự Unix, hãy xem bài viết Khởi động Bazel trên Ubuntu Linux, macOS và các hệ thống tương tự Unix khác.

2.1. Cài đặt các điều kiện tiên quyết

  • MSYS2 shell

  • Các gói MSYS2 cho zip và unzip. Chạy lệnh sau trong shell MSYS2:

    pacman -S zip unzip patch
    
  • Trình biên dịch Visual C++. Cài đặt trình biên dịch Visual C++ trong Visual Studio 2015 trở lên hoặc bằng cách cài đặt Build Tools for Visual Studio 2017 (Công cụ xây dựng cho Visual Studio 2017) mới nhất.

  • JDK. Bạn phải dùng phiên bản 21.

  • Python. Chúng tôi hỗ trợ phiên bản 2 và 3, bạn chỉ cần cài đặt một trong hai phiên bản này. Bạn cần phiên bản gốc của Windows (có thể tải xuống từ https://www.python.org). Các phiên bản được cài đặt thông qua pacman trong MSYS2 sẽ không hoạt động.

2.2. Khởi động Bazel trên Windows

  1. Mở trình bao MSYS2.

  2. Thiết lập các biến môi trường sau:

    • BAZEL_VS hoặc BAZEL_VC (không giống nhau): Đặt thành đường dẫn đến thư mục Visual Studio (BAZEL_VS) hoặc đến thư mục Visual C++ (BAZEL_VC). Bạn chỉ cần thiết lập một trong số các chế độ này.
    • BAZEL_SH: Đường dẫn của MSYS2 bash.exe. Hãy xem lệnh trong các ví dụ bên dưới.

      Đừng đặt giá trị này thành C:\Windows\System32\bash.exe. (Bạn có tệp đó nếu đã cài đặt Hệ thống con Windows dành cho Linux.) Bazel không hỗ trợ phiên bản bash.exe này.

    • PATH: Thêm thư mục Python.

    • JAVA_HOME: Đặt thành thư mục JDK.

    Ví dụ (sử dụng 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"
    

    hoặc (sử dụng 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 đến thư mục nơi bạn giải nén tệp lưu trữ phân phối.

  4. Chạy tập lệnh biên dịch: env EXTRA_BAZEL_ARGS="--tool_java_runtime_version=local_jdk" ./compile.sh

Đầu ra đã biên dịch được đặt vào output/bazel.exe. Đây là một tệp nhị phân Bazel độc lập, không có JDK được nhúng. Bạn có thể sao chép mã này ở bất cứ đâu hoặc sử dụng mã này tại chỗ. Để thuận tiện, hãy sao chép tệp nhị phân này vào một thư mục trên PATH.

Để tạo tệp nhị phân bazel.exe theo cách có thể tái tạo, hãy đặt SOURCE_DATE_EPOCH trong bước "Chạy tập lệnh biên dịch".

Bạn không cần chạy Bazel từ trình bao MSYS2. Bạn có thể chạy Bazel từ Dấu nhắc lệnh (cmd.exe) hoặc PowerShell.