Hội viên
- phần phụ thuộc
- existing_rule
- existing_rules
- exports_files
- toàn cầu
- module_name
- module_version
- package_group
- package_name
- package_relative_label
- repository_name
- chọn
- gói con
phần phụ thuộc
depset depset(direct=None, order="default", *, transitive=None)Tạo một phần phụ thuộc. Tham số
direct
là danh sách các phần tử trực tiếp của phần phụ thuộc, còn tham số transitive
là danh sách các phần phụ thuộc có các phần tử trở thành phần tử gián tiếp của phần phụ thuộc đã tạo. Tham số order
chỉ định thứ tự các phần tử được trả về khi phần phụ thuộc được chuyển đổi thành danh sách. Hãy xem bài viết Tổng quan về phần cài đặt để biết thêm thông tin.
Tất cả các phần tử (trực tiếp và gián tiếp) của một tập hợp phụ thuộc phải cùng loại, như có được qua biểu thức type(x)
.
Vì tập hợp dựa trên hàm băm được dùng để loại bỏ trùng lặp trong quá trình lặp lại, nên tất cả các phần tử của tập hợp phụ thuộc đều phải có thể băm. Tuy nhiên, sự bất biến này hiện chưa được kiểm tra một cách nhất quán trong mọi hàm khởi tạo. Dùng cờ --incompatible_always_check_depset_element để bật tính năng kiểm tra nhất quán. Đây sẽ là hành vi mặc định trong các bản phát hành sau này; hãy xem Vấn đề 10313.
Ngoài ra, các phần tử hiện phải không thể thay đổi được, dù quy định hạn chế này sẽ được nới lỏng trong tương lai.
Thứ tự của các phần phụ thuộc đã tạo phải tương thích với thứ tự của các phần phụ thuộc transitive
. Đơn đặt hàng "default"
tương thích với mọi đơn đặt hàng khác, tất cả các đơn đặt hàng khác chỉ tương thích với chính chúng.
Các tham số
Thông số | Nội dung mô tả |
---|---|
direct
|
trình tự; hoặc None ; mặc định là None Danh sách các phần tử trực tiếp của một phần phụ thuộc. |
order
|
mặc định là "default" Chiến lược truyền tải cho phần phụ thuộc mới. Hãy xem tại đây để biết các giá trị có thể có. |
transitive
|
trình tự của phần phụ thuộc; hay None ; mặc định là None Danh sách các phần phụ thuộc có phần tử sẽ trở thành phần tử gián tiếp của phần phụ thuộc. |
existing_rule
unknown existing_rule(name)Trả về một đối tượng giống như lệnh không thể thay đổi mô tả các thuộc tính của 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ủa tên đó.Ở đây, một đối tượng giống lệnh không thể thay đổi có nghĩa là một đối tượng không thể thay đổi sâu x
hỗ trợ việc lặp lại giống lệnh, len(x)
, name in x
, x[name]
, x.get(name)
, x.items()
, x.keys()
và x.values()
.
Nếu bạn đặt cờ --noincompatible_existing_rules_immutable_view
, thì hệ thống sẽ trả về một lệnh có thể thay đổi mớ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ư (có tên không bắt đầu bằng chữ cái) và một vài loại thuộc tính cũ không thể hiển thị. Ngoài ra, câu lệnh chứa các mục nhập cho name
và kind
của phiên bản quy tắc (ví dụ: 'cc_binary'
).
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 của loại str, int và bool được biểu thị như nguyên trạng.
- Nhãn được chuyển đổi thành chuỗi ở 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. - Danh sách được biểu thị dưới dạng bộ dữ liệu (tuple) và các lượt đọc chính tả được chuyển đổi thành các lệnh 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 cách.
- Các giá trị
select
được trả về cùng với nội dung đã được chuyể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 bản sao quy tắc và có giá trị mặc định được tính sẽ bị loại trừ khỏi kết quả. (Hệ thống 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. Chế độ cài đặt này khiến tệp BUILD trở nên dễ hỏng và không phụ thuộc vào thứ tự. Ngoài ra, hãy lưu ý rằng nó khác với hai lượt chuyển đổi khác của giá trị thuộc tính quy tắc từ dạng nội bộ sang Starlark: một lượt chuyển đổi theo giá trị mặc định được tính toán và lượt chuyển đổi còn lại do ctx.attr.foo
sử dụng.
Các tham số
Thông số | Nội dung mô tả |
---|---|
name
|
bắt buộc Tên mục tiêu. |
existing_rules
unknown existing_rules()Trả về một đối tượng giống lệnh không thể thay đổi mô tả các quy tắc đã tạo thực thể từ trước đến nay trong gói của luồng này. Mỗi mục nhập của đối tượng giống như lệnh liên kết tên của thực thể quy tắc với kết quả sẽ được
existing_rule(name)
trả về.Ở đây, một đối tượng giống lệnh không thể thay đổi có nghĩa là một đối tượng không thể thay đổi sâu x
hỗ trợ việc lặp lại giống lệnh, len(x)
, name in x
, x[name]
, x.get(name)
, x.items()
, x.keys()
và x.values()
.
Nếu bạn đặt cờ --noincompatible_existing_rules_immutable_view
, thì hệ thống sẽ trả về một lệnh có thể thay đổi mớ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. Chế độ cài đặt này khiến tệp BUILD trở nên dễ hỏng và không phụ thuộc vào thứ tự. Hơn nữa, nếu cờ --noincompatible_existing_rules_immutable_view
được đặt, hàm này có thể rất tốn kém, đặc biệt là khi được gọi trong một vòng lặp.
exports_files
None
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.
Các tham số
Thông số | Nội dung mô tả |
---|---|
srcs
|
trình tự của chuỗi; bắt buộc Danh sách các tệp cần xuất. |
visibility
|
sequence (trình tự); hoặc None ; mặc định là None (bạn có thể chỉ định nội dung khai báo chế độ hiển thị). Các tệp sẽ hiển thị với các mục tiêu đã chỉ định. Nếu bạn không chỉ định chế độ hiển thị, thì các tệp sẽ hiển thị cho mọi gói. |
licenses
|
trình tự của chuỗi; hoặc None ;
mặc định là None Giấy phép cần được chỉ định. |
toàn cầu
sequence glob(include=[], exclude=[], exclude_directories=1, allow_empty=unbound)Glob trả về một danh sách mới, có thể thay đổi và được sắp xếp của 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).
exclude_directories
được bật (đặt thành 1
), các tệp thuộc loại thư mục sẽ bị loại bỏ khỏi kết quả (1
mặc định).
Các tham số
Thông số | Nội dung mô tả |
---|---|
include
|
trình tự của chuỗi; mặc định là [] Danh sách các mẫu toàn cầu cần đưa vào. |
exclude
|
trình tự của chuỗi;
mặc định là [] Danh sách các mẫu toàn cầu cần loại trừ. |
exclude_directories
|
mặc định là 1 Cờ cho dù có loại trừ thư mục hay không. |
allow_empty
|
mặc định là unbound Liệu chúng tôi có cho phép các mẫu toàn cầu không khớp với giá trị nào hay không. Nếu `cho_trống` là Sai, mỗi mẫu bao gồm riêng lẻ phải khớp với nội dung nào đó và cũng phải có kết quả cuối cùng không được trống (sau khi loại trừ kết quả trùng khớp của mẫu "loại trừ"). |
module_name
string module_name()Tên của mô-đun Bazel liên kết với kho lưu trữ chứa gói này. Nếu gói này nằm trong một kho lưu trữ được xác định trong WORKSPACE thay vì MODULE.bazel, thì gói này trống. Đối với các kho lưu trữ được tạo bởi tiện ích mô-đun, đây là tên của mô-đun lưu trữ tiện ích. Trường này giống với trường
module.name
trong module_ctx.modules
.
Có thể trả về None
.
module_version
string module_version()Phiên bản của mô-đun Bazel liên kết với kho lưu trữ chứa gói này. Nếu gói này nằm trong một kho lưu trữ được xác định trong WORKSPACE thay vì MODULE.bazel, thì gói này trống. Đối với các kho lưu trữ được tạo bởi tiện ích mô-đun, đây là phiên bản của mô-đun lưu trữ tiện ích. Trường này giống với trường
module.version
trong module_ctx.modules
.
Có thể trả về None
.
package_group
None
package_group(name, packages=[], includes=[])
Hàm này xác định một tập hợp các gói và gán một nhãn cho nhóm đó. Nhãn có thể được tham chiếu trong các thuộc tính visibility
.
Các tham số
Thông số | Nội dung mô tả |
---|---|
name
|
bắt buộc Tên dành riêng cho quy tắc này. |
packages
|
trình tự của chuỗi; mặc định là [] Bảng liệt kê đầy đủ các gói trong nhóm này. |
includes
|
trình tự của chuỗi; mặc định là [] Các nhóm gói khác có trong chuỗi này. |
package_name
string 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 sẽ là some/package
. Nếu tệp BUILD gọi một hàm được xác định trong tệp .bzl, 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.
package_relative_label
Label package_relative_label(input)Chuyển đổi chuỗi đầu vào thành đối tượng Nhãn trong ngữ cảnh gói hiện đang được khởi tạo (nghĩa là tệp
BUILD
mà macro hiện tại đang thực thi). Nếu dữ liệu đầu vào đã là Label
thì giá trị trả về sẽ không thay đổi.Hàm này chỉ có thể được gọi trong khi đánh giá tệp BUILD và các macro mà hàm này gọi trực tiếp hoặc gián tiếp; hàm có thể không được gọi trong (ví dụ:) hàm triển khai quy tắc.
Kết quả của hàm này là cùng một giá trị Label
được tạo ra bằng cách truyền chuỗi đã cho đến thuộc tính có giá trị nhãn của mục tiêu đã khai báo trong tệp BUILD.
Lưu ý sử dụng: Sự khác biệt giữa hàm này và Label() là Label()
sử dụng ngữ cảnh của gói của tệp .bzl
đã gọi tệp này, chứ không phải gói của tệp BUILD
. Sử dụng Label()
khi bạn cần tham chiếu đến một mục tiêu cố định được mã hoá cứng vào macro, chẳng hạn như trình biên dịch. Hãy sử dụng package_relative_label()
khi bạn cần chuẩn hoá chuỗi nhãn do tệp BUILD cung cấp cho đối tượng Label
. (Không có cách nào để chuyển đổi chuỗi thành Label
trong ngữ cảnh một gói khác với tệp BUILD hoặc tệp .bzl đang gọi. Vì lý do đó, các macro bên ngoài nên luôn ưu tiên chuyển đối tượng Nhãn vào macro bên trong thay vì chuỗi nhãn.)
Các tham số
Thông số | Nội dung mô tả |
---|---|
input
|
string; hoặc Label;
bắt buộc Chuỗi nhãn đầu vào hoặc đối tượng Nhãn. Nếu đối tượng Nhãn được truyền, đối tượng này sẽ được trả về y nguyên. |
repository_name
string repository_name()Tên của kho lưu trữ dùng để gọi quy tắc hoặc tiện ích bản dựng. Ví dụ: trong các gói được gọi vào sự tồn tại theo khổ WORKSPACE
local_repository(name='local', path=...)
, nó sẽ được đặt thành @local
. Trong các gói trong kho lưu trữ chính, chế độ 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.
chọn
unknown select(x, no_match_error='')
select()
là hàm trợ giúp tạo thuộc tính quy tắc có thể định cấu hình. Xem nội dung bách khoa toàn thư về xây dựng để biết thông tin chi tiết.
Các tham số
Thông số | Nội dung mô tả |
---|---|
x
|
bắt buộc Một lệnh ánh xạ điều kiện cấu hình với các giá trị. Mỗi khoá là một Nhãn hoặc một chuỗi nhãn giúp xác định một thực thể config_setting hoặcconstrain_value. Xem tài liệu về macro để biết thời điểm sử dụng Nhãn thay vì chuỗi. |
no_match_error
|
mặc định là '' Lỗi tuỳ chỉnh (không bắt buộc) cần báo cáo nếu không có điều kiện nào khớp. |
gói con
sequence subpackages(include, exclude=[], allow_empty=False)Trả về danh sách có thể thay đổi mới của mọi gói con trực tiếp của gói hiện tại, bất kể chiều sâu thư mục của hệ thống tệp là bao nhiêu. Danh sách trả về được sắp xếp và chứa tên của các gói con so 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 hàm này trực tiếp.
Các tham số
Thông số | Nội dung mô tả |
---|---|
include
|
trình tự của chuỗi; bắt buộc Danh sách các mẫu toàn cầu cần đưa vào lần quét các gói con. |
exclude
|
trình tự của chuỗi;
mặc định là [] Danh sách các mẫu toàn cầu cần loại trừ khỏi quá trình quét các gói con. |
allow_empty
|
mặc định là False Liệu chúng tôi có bị lỗi hay không nếu lệnh gọi trả về một danh sách trống. Theo mặc định, danh sách trống cho biết lỗi có thể xảy ra trong tệp BUILD khi lệnh gọi đến gói con() là siêu dữ liệu. Nếu bạn đặt thành true (đúng), thì hàm này sẽ hoạt động thành công trong trường hợp đó. |