gốc

Một mô-đun tích hợp sẵn để hỗ trợ các quy tắc gốc và các chức năng trợ giúp gói khác. Tất cả các quy tắc gốc sẽ xuất hiện dưới dạng hàm trong mô-đun này, ví dụ: native.cc_library. Lưu ý rằng mô-đun gốc chỉ có sẵn trong giai đoạn tải (tức là cho macro, không khả dụng cho triển khai quy tắc). Các thuộc tính sẽ bỏ qua các giá trị None và xử lý các giá trị đó như thể thuộc tính chưa được đặt.
Bạn cũng có thể dùng các hàm sau:

Hội viên

existing_rule

unknown native.existing_rule(name)

Trả về một đối tượng giống lệnh chính tả không thể thay đổi mô tả các thuộc tính của một quy tắc được tạo thực thể trong gói của luồng này hoặc None nếu không có thực thể quy tắc nào có tên đó.

Ở đây, một đối tượng dạng ký tự không thể thay đổi có nghĩa là một đối tượng không thể thay đổi sâu x hỗ trợ lặp lại theo dạng nhập chính tả, len(x), name in x, x[name], x.get(name), x.items(), x.keys()x.values().

Nếu bạn đặt cờ --noincompatible_existing_rules_immutable_view, thì hệ thống sẽ trả về một lệnh chính tả mới có thể thay đổi với cùng nội dung.

Kết quả chứa một mục cho mỗi thuộc tính, ngoại trừ các thuộc tính riêng tư (tên không bắt đầu bằng một chữ cái) và một số loại thuộc tính cũ không thể hiển thị. Ngoài ra, lệnh chính tả còn chứa các mục nhập cho namekind của thực thể quy tắc (ví dụ: 'cc_binary').

Các giá trị của kết quả biểu thị các giá trị thuộc tính như sau:

  • Các thuộc tính kiểu str, int và bool được biểu thị nguyên trạng.
  • Nhãn được chuyển đổi thành các chuỗi có dạng ':foo' cho các mục tiêu trong cùng một gói hoặc '//pkg:name' cho các mục tiêu trong một gói khác.
  • Các danh sách được biểu thị dưới dạng bộ dữ liệu (tuple) và các lệnh chính tả (dicts) được chuyển đổi thành các lệnh chính tả mới, có thể thay đổi. Các phần tử của chúng được chuyển đổi đệ quy theo cùng một kiểu.
  • Giá trị select được trả về cùng với nội dung của các giá trị đó đã biến đổi như mô tả ở trên.
  • Các thuộc tính không có giá trị nào được chỉ định trong quá trình tạo quy tắc và có giá trị mặc định được tính sẽ bị loại trừ khỏi kết quả. (Không thể tính toán các giá trị mặc định đã tính cho đến giai đoạn phân tích.).

Nếu có thể, hãy tránh sử dụng hàm này. Điều này làm cho tệp BUILD trở nên dễ vỡ và phụ thuộc vào thứ tự. Ngoài ra, hãy lưu ý rằng biến này khác với hai lượt chuyển đổi khác của các giá trị thuộc tính quy tắc từ biểu mẫu nội bộ đến Starlark: một lượt chuyển đổi được sử dụng theo giá trị mặc định đã tính toán và lượt chuyển đổi còn lại được ctx.attr.foo sử dụng.

Tham số

Thông số Mô tả
name bắt buộc
Tên của mục tiêu.

existing_rules

unknown native.existing_rules()

Trả về một đối tượng giống lệnh chính tả không thể thay đổi mô tả các quy tắc cho đến nay vẫn được tạo thực thể trong gói của luồng này. Mỗi mục nhập của đối tượng giống lệnh chính tả sẽ ánh xạ tên của thực thể quy tắc với kết quả mà existing_rule(name) sẽ trả về.

Ở đây, một đối tượng dạng ký tự không thể thay đổi có nghĩa là một đối tượng không thể thay đổi sâu x hỗ trợ lặp lại theo dạng nhập chính tả, len(x), name in x, x[name], x.get(name), x.items(), x.keys()x.values().

Nếu bạn đặt cờ --noincompatible_existing_rules_immutable_view, thì hệ thống sẽ trả về một lệnh chính tả mới có thể thay đổi với cùng nội dung.

Lưu ý: Nếu có thể, hãy tránh sử dụng hàm này. Điều này làm cho tệp BUILD trở nên dễ vỡ và phụ thuộc vào thứ tự. Hơn nữa, nếu bạn đặt cờ --noincompatible_existing_rules_immutable_view , thì hàm này có thể sẽ rất tốn kém, đặc biệt là khi được gọi trong vòng lặp.

exports_files

None native.exports_files(srcs, visibility=None, licenses=None)

Chỉ định danh sách các tệp thuộc gói này được xuất sang các gói khác.

Tham số

Thông số Mô tả
srcs sequence of strings; bắt buộc
Danh sách các tệp cần xuất.
visibility sequence; or None; mặc định = Không có
Bạn có thể chỉ định khai báo về chế độ hiển thị. Tệp sẽ hiển thị cho các mục tiêu được chỉ định. Nếu bạn không chỉ định chế độ hiển thị, thì mọi gói sẽ xem được các tệp này.
licenses sequence of strings; or None; mặc định = Không có
Giấy phép sẽ được chỉ định.

hình cầu

sequence native.glob(include=[], exclude=[], exclude_directories=1, allow_empty=unbound)

Glob trả về một danh sách mới, có thể thay đổi, được sắp xếp cho mọi tệp trong gói hiện tại:
  • Khớp với ít nhất một mẫu trong include.
  • Không khớp với bất kỳ mẫu nào trong exclude (mặc định là []).
Nếu đối số exclude_directories được bật (được đặt thành 1), các tệp thuộc thư mục loại sẽ bị loại khỏi kết quả (1 mặc định).

Tham số

Thông số Mô tả
include sequence of strings; mặc định = []
Danh sách các mẫu cụm cầu cần đưa vào.
exclude sequence of strings; mặc định = []
Danh sách các mẫu cụm cầu cần loại trừ.
exclude_directories mặc định = 1
Cờ cho biết có loại trừ thư mục hay không.
allow_empty mặc định = không liên kết
Liệu chúng ta có cho phép các mẫu toàn cầu để không khớp không có giá trị nào. Nếu "allow_empty" có giá trị là False, thì mỗi mẫu bao gồm riêng lẻ phải khớp với nội dung nào đó và kết quả cuối cùng không được để trống (sau khi các kết quả trùng khớp của mẫu "loại trừ" bị loại trừ).

package_group

None native.package_group(name, packages=[], includes=[])

Hàm này xác định một tập hợp các gói và chỉ định nhãn cho nhóm. Bạn có thể tham chiếu nhãn trong các thuộc tính visibility.

Tham số

Thông số Mô tả
name bắt buộc
Tên duy nhất cho quy tắc này.
packages sequence of strings; mặc định = []
Liệt kê đầy đủ các gói trong nhóm này.
includes sequence of strings; mặc định = []
Các nhóm gói khác được bao gồm trong mục này.

package_name

string native.package_name()

Tên của gói đang được đánh giá. Ví dụ: trong tệp BUILD some/package/BUILD, giá trị của tệp này sẽ là some/package. Nếu tệp BUILD gọi một hàm được xác định trong tệp .bzl, thì package_name() sẽ khớp với gói tệp BUILD của phương thức gọi. Hàm này tương đương với biến PACKAGE_NAME không dùng nữa.

repository_name

string native.repository_name()

Tên của kho lưu trữ mà quy tắc hoặc tiện ích bản dựng được gọi từ đó. Ví dụ: trong các gói được gọi là tồn tại theo khổ WORKSPACE local_repository(name='local', path=...), thì gói này sẽ được đặt thành @local. Trong các gói thuộc kho lưu trữ chính, thuộc tính này sẽ được thiết lập thành @. Hàm này tương đương với biến REPOSITORY_NAME không dùng nữa.

gói con

sequence native.subpackages(include, exclude=[], allow_empty=False)

Trả về một danh sách mới có thể thay đổi của mọi gói con trực tiếp của gói hiện tại, bất kể độ sâu thư mục hệ thống tệp. Danh sách trả về được sắp xếp và chứa tên của các gói con tương ứng với gói hiện tại. Bạn nên sử dụng các phương thức trong mô-đun bazel_skylib.subpackages thay vì gọi trực tiếp hàm này.

Tham số

Thông số Mô tả
include sequence of strings; bắt buộc
Danh sách các mẫu cầu cầu cần đưa vào khi quét gói con.
exclude sequence of strings; mặc định = []
Danh sách các mẫu cầu cầu cần loại trừ khỏi quá trình quét gói con.
allow_empty mặc định = Sai
Liệu chúng ta có gặp lỗi hay không nếu lệnh gọi trả về danh sách trống. Theo mặc định, danh sách trống cho thấy lỗi tiềm ẩn trong tệp BUILD, trong đó lệnh gọi đến gói con() là quá mức. Nếu bạn đặt thành true, thì hàm này có thể thành công trong trường hợp đó.