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