Các phương thức có trong tệp BUILD. Ngoài ra, hãy xem Bách khoa toàn thư về bản dựng để biết thêm về các hàm và quy tắc xây dựng khác, cũng có thể dùng trong tệp BUILD.
Hội viên
- phần phụ thuộc
- existing_rule
- existing_rules
- exports_files
- hình cầu
- module_name
- module_version
- package_group
- package_name
- package_relative_label
- repository_name
- chọn
- gói con
phần tách rời
depset depset(direct=None, order="default", *, transitive=None)
direct
là một danh sách các phần tử trực tiếp của tập hợp lại và tham số transitive
là một danh sách các phần tử phụ thuộc mà các phần tử đó trở thành phần tử gián tiếp của tập hợp đã tạo. Thứ tự các phần tử được trả về khi tập hợp được chuyển đổi thành một danh sách được chỉ định bằng tham số order
. Xem Tổng quan về phần phụ thuộc để 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ải thuộc cùng một kiểu, như thu được trong 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ỏ các bản sao trong quá trình lặp lại, nên tất cả phần tử của một tập hợp đều có thể băm được. Tuy nhiên, bất biến này hiện không được kiểm tra một cách nhất quán trong tất cả các hàm khởi tạo. Sử dụng cờ --incompatible_always_check_depset_classes để cho phép 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 thành phần hiện phải ở dạng 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 phần phụ thuộc đượ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 đơn đặt hàng đó.
Tham số
Thông số | Mô tả |
---|---|
direct
|
trình tự; hoặc None ;
giá trị mặc định là None Danh sách các phần tử trực tiếp của một tập hợp. |
order
|
giá trị 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ụ; hoặc None ;
mặc định là None Danh sách các phần tử phụ thuộc mà các phần tử của nó sẽ trở thành phần tử gián tiếp của tập hợp. |
existing_rule
unknown existing_rule(name)
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()
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 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 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 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ừ dạng 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 existing_rules()
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()
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 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
exports_files(srcs, visibility=None, licenses=None)
Tham số
Thông số | 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
|
trình tự; hoặc None ;
giá trị mặc định là None 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
|
trình tự của chuỗi; hoặc None ;
mặc định là None Giấy phép sẽ được chỉ định. |
hình cầu
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 bất kỳ mẫu nào trong
exclude
(mặc định là[]
).
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
|
trình tự của chuỗi;
mặc định là [] Danh sách các mẫu cụm 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 cụm cầu cần loại trừ. |
exclude_directories
|
giá trị mặc định là 1 Cờ cho biết có loại trừ thư mục hay không. |
allow_empty
|
giá trị mặc định là unbound 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ừ). |
module_name
string module_name()
module.name
mà bạn thấy trong module_ctx.modules
.
Có thể trả về None
.
module_version
string module_version()
module.version
mà bạn thấy 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 duy nhấ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 bao gồm trong mục 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 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ì kết quả 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; nó có thể không được gọi trong (ví dụ) trong hàm triển khai quy tắc.
Kết quả của hàm này giống với giá trị Label
như được tạo bằng cách truyền chuỗi đã cho vào thuộc tính nhãn có giá trị của mục tiêu được 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
được gọi, 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ư một trình biên dịch. Sử dụng package_relative_label()
khi bạn cần chuẩn hoá chuỗi nhãn mà 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 gói khác ngoài tệp BUILD hoặc tệp .bzl đang gọi. Vì lý do đó, macro bên ngoài phải luôn ưu tiên truyền đối tượng Nhãn vào 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 một đố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=...)
, 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.
chọn
unknown select(x, no_match_error='')
select()
là hàm trợ giúp giúp định cấu hình thuộc tính quy tắc. Xem b bách khoa toàn thư về bản dựng để biết thông tin chi tiết.
Tham số
Thông số | Mô tả |
---|---|
x
|
bắt buộc Lệnh chính ánh xạ các đ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 xác định một bản sao config_setting hoặc Constraintt_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
|
giá trị 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)
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 cầu cầu cần đưa vào khi quét gói con. |
exclude
|
trình tự của chuỗi;
mặc định là [] 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
|
giá trị mặc định là False 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 đó. |