Tổng hợp Bazel từ Nguồn

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Báo cáo vấn đề Xem nguồn

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

Để tạo Bazel từ nguồn, bạn có thể thực hiện một trong các thao tác 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 trên trang phát hành của GitHub hoặc qua Bazelisk.

  2. Tải xuống các nguồn của Bazel từ GitHub và trích xuất ở nơi nào đó. Ngoài ra, bạn có thể 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 cho các hệ thống giống Unix hoặc cho 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 thu được sẽ có giá trị là bazel-bin/src/bazel-dev (hoặc bazel-bin\src\bazel-dev.exe trên Windows). Bạn có thể sao chép tệp ở bất cứ đâu và sử dụng ngay lập tức mà không cần cài đặt thêm.

Dưới đây là hướng dẫn chi tiết.

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 phiên bản phát hành của Bazel. Hãy đảm bảo rằng bạn có thể chạy hàm này bằng cách nhập bazel vào dòng lệnh.

Lý do: Để tạo Bazel từ cây nguồn GitHub, bạn cần có một tệp nhị phân Bizel đã có từ trước. Bạn có thể cài đặt một trình quản lý gói hoặc tải một trình quản lý gói xuống từ GitHub. Xem Cài đặt Bazel. (Bạn cũng có thể tạo từ đầu (bootstrap).)

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 Terminal:

    • Có thể thư mục của tệp nhị phân Bazel của bạn không ở 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ể chính tệp nhị phân Bazel không được gọi là bazel (trên Unixes) 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ể thực thi (trên Unixes).

      Bạn phải tạo 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 thuộc với Git, thì chỉ cần git clone https://github.com/bazelbuild/bazel

Nếu không thì hãy làm như sau:

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

  2. Trích xuất nội dung ở 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 trích xuất tại đó.

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: Xây dựng Bazel trên Ubuntu Linux, macOS và các hệ thống giống Unix khác

Để biết hướng dẫn dành cho Windows, hãy xem bài viết Tạo Bazel trên Windows.

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

Hướng dẫn:

  1. Khởi động thiết bị thanh toán Bash

  2. cd vào thư mục mà bạn đã trích xuất (hoặc sao chép) nguồn của Bazel.

    Ví dụ: nếu bạn đã trích xuất các nguồn trong thư mục gốc, 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 sẽ chậm hơn khi tạo.

  4. Kết quả sẽ là bazel-bin/src/bazel-dev (hoặc bazel-bin/src/bazel).

Bước 4b: Xây dựng Bazel trên Windows

Để biết hướng dẫn cho các hệ thống giống Unix, hãy xem bài viết về Ubuntu Linux, macOS và các hệ thống giống Unix khác.

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

Hướng dẫn:

  1. Bắt đầu Dấu nhắc lệnh (Trình đơn bắt đầu > Chạy > "cmd.exe")

  2. cd vào thư mục mà bạn đã trích xuất (hoặc sao chép) nguồn của Bazel.

    Ví dụ: nếu bạn đã trích xuất các nguồn trong thư mục gốc, 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 sẽ chậm hơn khi tạo.

  4. Kết quả sẽ là 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, không có gì để cài đặt.

Đầu ra của bước trước đó là tệp nhị phân Bazel độc lập. Bạn có thể sao chép mã vào bất kỳ thư mục nào và sử dụng ngay lập tức. (Sẽ rấ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.)


Xây dựng Bazel từ đầu (khởi động)

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

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

(Bước này giống nhau cho 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.

    Thu hút sự chú ý:

    • Có một kho lưu trữ phân phối độc lập và độc lập. Không có tệp lưu trữ phân phối dành riêng cho từng cấu trúc hoặc hệ điều hành.
    • Các 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 để tự khởi động Bazel. Bạn không thể sử dụng 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 việc 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 ở nơi nào đó trên ổ đĩa.

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

Bước 2a: Bootstrap Bazel trên Ubuntu Linux, macOS và các hệ thống giống Unix khác

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

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

  • Bash

  • zip, giải nén

  • Chuỗi công cụ bản dựng C++

  • JKK. Cần có phiên bản 11.

  • Python. Phiên bản 2 và 3 được hỗ trợ, bạn chỉ cần cài đặt một trong hai phiên bản đó.

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 đây:

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

2.2. Bootstrap Bazel trên Unix

  1. Mở cửa sổ shell hoặc Terminal.

  2. cd vào thư mục mà 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.

Kết quả đã biên dịch được đặt vào output/bazel. Đây là tệp nhị phân Bielel độc lập, không có JDK được nhúng. Bạn có thể sao chép vị trí đó hoặc sử dụng 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).

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

Bước 2b: Bootstrap Bazel trên Windows

Để biết hướng dẫn cho các hệ thống giống Unix, hãy xem bài viết Bootstrap Bazel trên Ubuntu Linux, macOS và các hệ thống giống Unix khác.

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

  • Vỏ MSYS2

  • Các gói MSYS2 để nén và giải nén. Chạy lệnh sau trong vỏ 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 Công cụ tạo SDK mới cho Visual Studio 2017.

  • JKK. Cần có phiên bản 11.

  • Python. Phiên bản 2 và 3 được hỗ trợ, bạn chỉ cần cài đặt một trong hai phiên bản đó. 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 qua pacman trong MSYS2 sẽ không hoạt động.

2.2. Bootstrap Bazel trên Windows

  1. Mở vỏ MSYS2.

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

    • BAZEL_VS hoặc BAZEL_VC (chúng 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 đặt một trong hai giới hạn này.
    • BAZEL_SH: Đường dẫn của MSYS2 bash.exe. Hãy xem lệnh trong ví dụ bên dưới.

      Không được đặt giá trị này thành C:\Windows\System32\bash.exe. (Bạn có tệp đó nếu đã cài đặt Windows Subsystem for 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/jdk1.8.0_112"
    

    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/jdk1.8.0_112"
    
  3. cd vào thư mục mà 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

Kết quả đã biên dịch được đặt vào output/bazel.exe. Đây là tệp nhị phân Bielel độc lập, không có JDK được nhúng. Bạn có thể sao chép vị trí đó hoặc sử dụng 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 có trên PATH.

Để xây dựng tệp nhị phân bazel.exe theo cách có thể mô phỏng, 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 trong shell MSYS2. Bạn có thể chạy Bazel từ Dấu nhắc lệnh (cmd.exe) hoặc PowerShell.