ctx.actions
.
Hội viên
- args
- declare_directory
- declare_file
- declare_symlink
- do_nothing
- expand_template
- run
- run_shell
- đường liên kết tượng trưng
- template_dict
- ghi
args
Args actions.args()Trả về một đối tượng Args có thể dùng để xây dựng các dòng lệnh tiết kiệm bộ nhớ.
declare_directory
File actions.declare_directory(filename, *, sibling=None)Khai báo rằng quy tắc hoặc khung hiển thị sẽ tạo một thư mục có tên đã cho trong gói hiện tại. Bạn phải tạo một thao tác để tạo thư mục. Không thể truy cập trực tiếp vào nội dung của thư mục này qua Starlark, nhưng có thể mở rộng nội dung của thư mục này bằng lệnh hành động bằng
Args.add_all()
.
Tham số
Thông số | Nội dung mô tả |
---|---|
filename
|
bắt buộc Nếu không có "tệp đồng cấp" nào được cung cấp, thì đường dẫn của thư mục mới, so với gói hiện tại. Nếu không, tên cơ sở cho một tệp ('tệp anh em' xác định một thư mục). |
sibling
|
File; or None ;
mặc định = Không cóTệp nằm trong cùng thư mục với thư mục mới khai báo. Tệp phải nằm trong gói hiện tại. |
declare_file
File actions.declare_file(filename, *, sibling=None)Khai báo rằng quy tắc hoặc phương diện sẽ tạo tệp có tên tệp cho trước. Nếu bạn không chỉ định
sibling
thì tên tệp sẽ tương ứng với thư mục gói, nếu không thì tệp sẽ nằm trong cùng thư mục với sibling
. Không thể tạo tệp bên ngoài gói hiện tại.Hãy nhớ rằng ngoài việc khai báo tệp, bạn phải tạo riêng một thao tác phát tệp. Khi tạo thao tác đó, bạn sẽ phải truyền đối tượng File
được trả về đến hàm xây dựng của thao tác đó.
Lưu ý rằng các tệp đầu ra được khai báo trước không cần phải (và không được) khai báo bằng hàm này. Bạn có thể lấy đối tượng File
của các đối tượng này từ ctx.outputs
. Xem ví dụ về cách sử dụng.
Tham số
Thông số | Nội dung mô tả |
---|---|
filename
|
bắt buộc Nếu không có "tệp đồng cấp" nào được cung cấp, thì đường dẫn của tệp mới, so với gói hiện tại. Nếu không, tên cơ sở cho một tệp ("đồng nghiệp" xác định một thư mục). |
sibling
|
File; or None ;
default = Không cóMột tệp nằm trong cùng thư mục với tệp mới tạo. Tệp phải nằm trong gói hiện tại. |
declare_symlink
File actions.declare_symlink(filename, *, sibling=None)
Thử nghiệm. Tham số này đang trong giai đoạn thử nghiệm và có thể thay đổi bất cứ lúc nào. Vui lòng không phụ thuộc vào nó. Tính năng này có thể được bật trên cơ sở thử nghiệm bằng cách đặt --experimental_allow_unresolved_symlinks
Khai báo rằng quy tắc hoặc khung hình sẽ tạo một đường liên kết tượng trưng với tên đã đặt trong gói hiện tại. Bạn phải tạo một hành động để tạo ra đường liên kết tượng trưng này. Bazel sẽ không bao giờ huỷ bỏ liên kết tượng trưng này và sẽ chuyển nguyên văn đường liên kết đến các hộp cát hoặc thực thi hành động từ xa.
Tham số
Thông số | Nội dung mô tả |
---|---|
filename
|
bắt buộc Nếu không có "tệp đồng cấp" nào được cung cấp, thì đường dẫn của đường liên kết tượng trưng mới, so với gói hiện tại. Nếu không, tên cơ sở cho một tệp ('tệp anh em' xác định một thư mục). |
sibling
|
File; or None ;
mặc định = Không cóMột tệp nằm trong cùng thư mục với đường liên kết tượng trưng mới được khai báo. |
do_nothing
None actions.do_nothing(mnemonic, inputs=[])Tạo một thao tác trống mà không thực thi lệnh cũng như không tạo ra bất kỳ đầu ra nào, nhưng rất hữu ích khi chèn "thao tác bổ sung".
Tham số
Thông số | Nội dung mô tả |
---|---|
mnemonic
|
bắt buộc Nội dung mô tả gồm một từ về hành động, ví dụ: CppCompile hoặc GoLink. |
inputs
|
sequence of Files; or depset ;
mặc định = []Danh sách tệp đầu vào của hành động. |
expand_template
None actions.expand_template(template, output, substitutions={}, is_executable=False, computed_substitutions=unbound)Tạo một thao tác mở rộng mẫu. Khi thao tác được thực thi, thao tác đó sẽ tạo một tệp dựa trên mẫu. Các phần của mẫu sẽ được thay thế bằng từ điển
substitutions
, theo thứ tự chỉ định các phần thay thế. Bất cứ khi nào một khoá của từ điển xuất hiện trong mẫu (hoặc là kết quả của một thay thế trước đó), khoá đó sẽ được thay thế bằng giá trị tương ứng. Không có cú pháp đặc biệt cho các khoá này. Chẳng hạn, bạn có thể sử dụng dấu ngoặc nhọn để tránh xung đột (ví dụ: {KEY}
). Xem ví dụ về cách sử dụng.
Tham số
Thông số | Nội dung mô tả |
---|---|
template
|
bắt buộc Tệp mẫu là tệp văn bản được mã hoá UTF-8. |
output
|
bắt buộc Tệp đầu ra là tệp văn bản được mã hoá UTF-8. |
substitutions
|
mặc định = {} Các lựa chọn thay thế cần thực hiện khi mở rộng mẫu. |
is_executable
|
mặc định = Sai Liệu tệp đầu ra có thể thực thi hay không. |
computed_substitutions
|
TemplateDict ;
mặc định = không liên kếtThử nghiệm. Tham số này đang trong giai đoạn thử nghiệm và có thể thay đổi bất cứ lúc nào. Vui lòng không phụ thuộc vào nó. Bạn có thể bật tính năng này trong giai đoạn thử nghiệm bằng cách đặt --+experimental_lazy_template_expansion Thử nghiệm: Các lựa chọn thay thế cần thực hiện khi mở rộng mẫu. |
run
None actions.run(outputs, inputs=[], unused_inputs_list=None, executable, tools=unbound, arguments=[], mnemonic=None, progress_message=None, use_default_shell_env=False, env=None, execution_requirements=None, input_manifests=None, exec_group=None, shadowed_action=None, resource_set=None, toolchain=None)Tạo một thao tác chạy tệp thực thi. Xem ví dụ về cách sử dụng.
Tham số
Thông số | Nội dung mô tả |
---|---|
outputs
|
sequence of Files ;
bắt buộcDanh sách các tệp đầu ra của hành động. |
inputs
|
sequence of Files; or depset ;
default = []Danh sách hoặc phần phụ thuộc của tệp đầu vào của hành động. |
unused_inputs_list
|
File; or None ;
mặc định = Không cóTệp chứa danh sách dữ liệu đầu vào mà hành động không sử dụng. Nội dung của tệp này (thường là một trong các kết quả đầu ra của hành động) tương ứng với danh sách các tệp đầu vào không được sử dụng trong toàn bộ quá trình thực thi hành động. Mọi thay đổi trong các tệp đó không được ảnh hưởng theo bất kỳ cách nào đến kết quả của hành động. |
executable
|
File; or string; or FilesToRunProvider ;
bắt buộcTệp thực thi cần được gọi bằng thao tác. |
tools
|
sequence; or depset ;
default = unboundLiệt kê hoặc phần phụ thuộc bất kỳ công cụ nào cần đến thao tác. Công cụ là dữ liệu đầu vào có các tệp chạy bổ sung được tự động cung cấp cho thao tác. Khi một danh sách được cung cấp, đó có thể là một tập hợp không đồng đều các thực thể Files, FilesToRunProvider hoặc các phần phụ thuộc của Files. Các tệp có trong danh sách và đến từ ctx.executable sẽ được tự động thêm vào các tệp chạy. Khi được cung cấp một phần phụ thuộc, phần phụ thuộc đó chỉ được chứa Tệp. Trong cả hai trường hợp, các tệp trong phần phụ thuộc không được tham chiếu chéo với ctx.executable cho tệp runfile. |
arguments
|
sequence ;
mặc định = []Đối số dòng lệnh của thao tác. Phải là một danh sách chuỗi hoặc đối tượng actions.args() .
|
mnemonic
|
string; or None ;
mặc định = Không cóNội dung mô tả gồm một từ về thao tác, ví dụ: CppCompile hoặc GoLink. |
progress_message
|
string; or None ;
mặc định = Không cóThông báo tiến trình sẽ hiển thị với người dùng trong quá trình tạo, ví dụ: "Biên dịch foo.cc để tạo foo.o". Thông báo này có thể chứa các mẫu %{label} , %{input} hoặc %{output} , được thay bằng chuỗi nhãn, đường dẫn của đầu vào hoặc đầu ra đầu tiên tương ứng. Ưu tiên sử dụng mẫu thay vì chuỗi tĩnh, vì mẫu trước hiệu quả hơn.
|
use_default_shell_env
|
mặc định = Sai Liệu hành động có sử dụng môi trường shell tích hợp sẵn hay không. |
env
|
dict; or None ;
mặc định = Không cóThiết lập từ điển của các biến môi trường. |
execution_requirements
|
dict; or None ;
mặc định = Không cóThông tin để lên lịch hành động. Xem các thẻ để tìm các khoá hữu ích. |
input_manifests
|
sequence; or None ;
mặc định = Không(Thử nghiệm) đặt siêu dữ liệu tệp chạy đầu vào; các siêu dữ liệu này thường do resolve_command tạo. |
exec_group
|
string; or None ;
mặc định = Không cóChạy hành động trên nền tảng thực thi của nhóm thực thi đã cho. Nếu không có, hãy sử dụng nền tảng thực thi mặc định của mục tiêu. |
shadowed_action
|
Action ;
mặc định = Không cóChạy hành động bằng cách sử dụng dữ liệu đầu vào và môi trường của hành động bị ẩn đã thêm vào danh sách đầu vào và môi trường của hành động đó. Môi trường hành động có thể ghi đè bất kỳ biến môi trường nào của hành động bị ẩn. Nếu không có, chỉ sử dụng đầu vào của hành động và môi trường nhất định. |
resource_set
|
callable; or None ;
mặc định = Không cóHàm callback trả về từ điển nhóm tài nguyên, dùng để ước tính mức sử dụng tài nguyên tại thời điểm thực thi nếu hành động này được chạy trên máy. Hàm này chấp nhận 2 đối số vị trí: một chuỗi biểu thị tên hệ điều hành (ví dụ: "osx") và một số nguyên biểu thị số dữ liệu đầu vào cho hành động. Từ điển được trả về có thể chứa các mục nhập sau, mỗi mục nhập có thể là một số thực hoặc số nguyên:
Nếu tham số này được đặt thành Lệnh gọi lại phải ở cấp cao nhất (không được phép dùng lambda và các hàm lồng nhau). |
toolchain
|
Label; or string; or None ;
mặc định = Không cóLoại chuỗi công cụ của tệp thực thi hoặc các công cụ dùng trong hành động này. Bạn phải thiết lập tham số này để hành động được thực thi trên đúng nền tảng thực thi. Hiện tại, đây là phương thức không hoạt động, nhưng bạn nên thiết lập chế độ này khi sử dụng chuỗi công cụ, vì đây sẽ là yêu cầu bắt buộc trong các bản phát hành sau này của Bazel. Xin lưu ý rằng quy tắc tạo hành động này cần phải xác định chuỗi công cụ này bên trong hàm "quy tắc()". Khi bạn đặt cả hai thông số "toolchain" và "exec_group", "exec_group" sẽ được sử dụng. Sẽ xảy ra lỗi trong trường hợp "exec_group" không chỉ định dữ liệu tương tự. |
run_shell
None actions.run_shell(outputs, inputs=[], tools=unbound, arguments=[], mnemonic=None, command, progress_message=None, use_default_shell_env=False, env=None, execution_requirements=None, input_manifests=None, exec_group=None, shadowed_action=None, resource_set=None, toolchain=None)Tạo một thao tác chạy lệnh shell. Xem ví dụ về cách sử dụng.
Tham số
Thông số | Nội dung mô tả |
---|---|
outputs
|
sequence of Files ;
bắt buộcDanh sách các tệp đầu ra của hành động. |
inputs
|
sequence of Files; or depset ;
default = []Danh sách hoặc phần phụ thuộc của tệp đầu vào của hành động. |
tools
|
sequence of Files; or depset ;
default = unboundLiệt kê hoặc phần phụ thuộc bất kỳ công cụ nào cần đến thao tác. Công cụ là dữ liệu đầu vào có các tệp chạy bổ sung được tự động cung cấp cho thao tác. Danh sách này có thể chứa các thực thể Files hoặc FilesToRunProvider. |
arguments
|
sequence ;
mặc định = []Đối số dòng lệnh của thao tác. Phải là một danh sách chuỗi hoặc đối tượng actions.args() .Bazel truyền các phần tử trong thuộc tính này làm đối số cho lệnh. Lệnh này có thể truy cập vào các đối số này bằng các thay thế biến shell như Trong trường hợp |
mnemonic
|
string; or None ;
mặc định = Không cóNội dung mô tả gồm một từ về thao tác, ví dụ: CppCompile hoặc GoLink. |
command
|
string; or sequence of strings ;
bắt buộcLệnh shell để thực thi. Đây có thể là một chuỗi (ưu tiên) hoặc một chuỗi các (không dùng nữa). Nếu (Không dùng nữa) Nếu Bazel sử dụng cùng một shell để thực thi lệnh như với genrules. |
progress_message
|
string; or None ;
mặc định = Không cóThông báo tiến trình sẽ hiển thị với người dùng trong quá trình tạo, ví dụ: "Biên dịch foo.cc để tạo foo.o". Thông báo này có thể chứa các mẫu %{label} , %{input} hoặc %{output} , được thay bằng chuỗi nhãn, đường dẫn của đầu vào hoặc đầu ra đầu tiên tương ứng. Ưu tiên sử dụng mẫu thay vì chuỗi tĩnh, vì mẫu trước hiệu quả hơn.
|
use_default_shell_env
|
mặc định = Sai Liệu hành động có sử dụng môi trường shell tích hợp sẵn hay không. |
env
|
dict; or None ;
mặc định = Không cóThiết lập từ điển của các biến môi trường. |
execution_requirements
|
dict; or None ;
mặc định = Không cóThông tin để lên lịch hành động. Xem các thẻ để tìm các khoá hữu ích. |
input_manifests
|
sequence; or None ;
mặc định = Không(Thử nghiệm) đặt siêu dữ liệu tệp chạy đầu vào; các siêu dữ liệu này thường do resolve_command tạo. |
exec_group
|
string; or None ;
mặc định = Không cóChạy hành động trên nền tảng thực thi của nhóm thực thi đã cho. Nếu không có, hãy sử dụng nền tảng thực thi mặc định của mục tiêu. |
shadowed_action
|
Action ;
mặc định = Không cóChạy hành động bằng cách sử dụng dữ liệu đầu vào đã phát hiện của hành động bị ẩn nhất định được thêm vào danh sách dữ liệu đầu vào của hành động đó. Nếu không có, chỉ sử dụng dữ liệu đầu vào của hành động. |
resource_set
|
callable; or None ;
mặc định = Không cóHàm callback để ước tính mức sử dụng tài nguyên nếu chạy cục bộ. Hãy xem ctx.actions.run() .
|
toolchain
|
Label; or string; or None ;
mặc định = Không cóLoại chuỗi công cụ của tệp thực thi hoặc các công cụ dùng trong hành động này. Bạn phải thiết lập tham số này để hành động được thực thi trên đúng nền tảng thực thi. Hiện tại, đây là phương thức không hoạt động, nhưng bạn nên thiết lập chế độ này khi sử dụng chuỗi công cụ, vì đây sẽ là yêu cầu bắt buộc trong các bản phát hành sau này của Bazel. Xin lưu ý rằng quy tắc tạo hành động này cần phải xác định chuỗi công cụ này bên trong hàm "quy tắc()". Khi bạn đặt cả hai thông số "toolchain" và "exec_group", "exec_group" sẽ được sử dụng. Sẽ xảy ra lỗi trong trường hợp "exec_group" không chỉ định cùng một chuỗi công cụ. |
liên kết tượng trưng
None actions.symlink(output, target_file=None, target_path=None, is_executable=False, progress_message=None)Tạo một thao tác ghi một đường liên kết tượng trưng trong hệ thống tệp.
Hàm này phải được gọi bằng chính xác một trong các giá trị target_file
hoặc target_path
đã chỉ định.
Khi bạn sử dụng target_file
, hãy khai báo output
bằng declare_file()
hoặc declare_directory()
và so khớp với loại target_file
. Thao tác này làm cho đường liên kết tượng trưng trỏ đến target_file
. Bazel vô hiệu hoá kết quả của hành động này mỗi khi mục tiêu của đường liên kết tượng trưng hoặc nội dung của đường liên kết đó thay đổi.
Ngược lại, khi bạn sử dụng target_path
, hãy khai báo output
bằng declare_symlink()
). Trong trường hợp này, đường liên kết tượng trưng sẽ trỏ đến target_path
. Bazel không bao giờ phân giải đường liên kết tượng trưng và kết quả của thao tác này chỉ bị vô hiệu hoá khi nội dung văn bản của đường liên kết tượng trưng (tức là giá trị của readlink()
) thay đổi. Cụ thể, bạn có thể dùng tính năng này để tạo một đường liên kết tượng trưng lơ lửng.
Tham số
Thông số | Nội dung mô tả |
---|---|
output
|
bắt buộc Kết quả của hành động này. |
target_file
|
File; or None ;
mặc định = Không cóTệp mà đường liên kết tượng trưng đầu ra sẽ trỏ đến. |
target_path
|
string; or None ;
mặc định = Không có(Thử nghiệm) Đường dẫn chính xác mà đường liên kết tượng trưng đầu ra sẽ trỏ đến. Không áp dụng quá trình chuẩn hoá hoặc xử lý nào khác. Để sử dụng tính năng này, bạn phải đặt --experimental_allow_unresolved_symlinks .
|
is_executable
|
mặc định = Sai Chỉ dùng được với target_file , không dùng với target_path . Nếu đúng, khi hành động được thực thi, đường dẫn của target_file sẽ được kiểm tra để xác nhận rằng tệp này có thể thực thi và hệ thống sẽ báo cáo lỗi nếu không thể. Việc đặt is_executable thành False không có nghĩa là mục tiêu không thể thực thi, mà chỉ là chưa xác minh xong.Tính năng này không phù hợp với |
progress_message
|
string; or None ;
mặc định = Không cóThông báo tiến trình sẽ hiển thị cho người dùng trong quá trình tạo bản dựng. |
template_dict
TemplateDict actions.template_dict()Thử nghiệm. API này đang trong giai đoạn thử nghiệm và có thể thay đổi bất cứ lúc nào. Vui lòng không phụ thuộc vào nó. Bạn có thể bật tính năng này trong giai đoạn thử nghiệm bằng cách thiết lập
--+experimental_lazy_template_expansion
Experimental: Trả về đối tượng TemplateDict để mở rộng mẫu tiết kiệm bộ nhớ.
ghi
None actions.write(output, content, is_executable=False)Tạo một thao tác ghi tệp. Khi hành động được thực thi, hành động sẽ ghi nội dung đã cho vào tệp. Tệp này được dùng để tạo tệp bằng thông tin có sẵn trong giai đoạn phân tích. Nếu tệp lớn và có nhiều nội dung tĩnh, hãy cân nhắc sử dụng
expand_template
.
Tham số
Thông số | Nội dung mô tả |
---|---|
output
|
bắt buộc Tệp đầu ra. |
content
|
string; or Args ;
bắt buộcnội dung của tệp. Có thể là một chuỗi hoặc một đối tượng actions.args() .
|
is_executable
|
mặc định = Sai Liệu tệp đầu ra có thể thực thi hay không. |