Quy tắc
nhị phân
Xem nguồn quy tắcsh_binary(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, exec_compatible_with, exec_properties, features, licenses, output_licenses, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
Quy tắc sh_binary
được dùng để khai báo các tập lệnh shell có thể thực thi.
(sh_binary
là một tên khác: kết quả của hàm này không nhất thiết là tệp nhị phân.) Quy tắc này đảm bảo việc tất cả phần phụ thuộc đều được tạo và xuất hiện trong khu vực runfiles
tại thời điểm thực thi.
Bạn nên đặt tên cho các quy tắc sh_binary()
sau tên của tập lệnh trừ đi phần mở rộng (ví dụ: .sh
); tên quy tắc và tên tệp phải khác biệt.
sh_binary
tuân theo shebangs, vì vậy, bất kỳ người phiên dịch nào có sẵn đều có thể được sử dụng (ví dụ:
#!/bin/zsh
)
Ví dụ:
Đối với tập lệnh shell đơn giản không có phần phụ thuộc và một số tệp dữ liệu:
sh_binary( name = "foo", srcs = ["foo.sh"], data = glob(["datafiles/*.txt"]), )
Đối số
Thuộc tính | |
---|---|
name |
Tên duy nhất cho mục tiêu này. |
deps
|
deps tại Các thuộc tính thông thường được xác định theo hầu hết các quy tắc tạo bản dựng.
Bạn nên sử dụng thuộc tính này để liệt kê các quy tắc |
srcs
|
Thuộc tính này phải là một danh sách singleton có phần tử là tập lệnh shell.
Tập lệnh này phải có thể thực thi và có thể là tệp nguồn hoặc tệp được tạo.
Tất cả các tệp khác cần thiết trong thời gian chạy (cho dù tập lệnh hay dữ liệu) đều thuộc về
thuộc tính |
thư viện sh_
Xem nguồn quy tắcsh_library(name, deps, srcs, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)
Mục đích chính của quy tắc này là tổng hợp cùng nhau một "thư viện" logic bao gồm các tập lệnh có liên quan – các chương trình bằng một ngôn ngữ được diễn giải không yêu cầu biên dịch hoặc liên kết, chẳng hạn như shell Bourne – và mọi dữ liệu mà các chương trình đó cần trong thời gian chạy. Sau đó, bạn có thể dùng những "thư viện" như vậy trong thuộc tính data
của một hoặc nhiều quy tắc sh_binary
.
Bạn có thể sử dụng quy tắc filegroup
để tổng hợp các tệp dữ liệu.
Trong các ngôn ngữ lập trình đã diễn giải, không phải lúc nào cũng có sự khác biệt rõ ràng giữa "mã" và "dữ liệu": xét cho cùng, chương trình chỉ là "dữ liệu" từ quan điểm của người phiên dịch. Vì lý do này,
quy tắc này có ba thuộc tính về cơ bản là tương đương:
srcs
, deps
và data
.
Cách triển khai hiện tại không phân biệt được các thành phần của những danh sách này.
Cả ba thuộc tính này đều chấp nhận quy tắc, tệp nguồn và tệp được tạo.
Tuy nhiên, bạn nên sử dụng các thuộc tính cho mục đích thông thường (như với các quy tắc khác).
Ví dụ
sh_library( name = "foo", data = [ ":foo_service_script", # an sh_binary with srcs ":deploy_foo", # another sh_binary with srcs ], )
Đối số
Thuộc tính | |
---|---|
name |
Tên duy nhất cho mục tiêu này. |
deps
|
deps tại Các thuộc tính thông thường được xác định theo hầu hết các quy tắc tạo bản dựng.
Bạn nên sử dụng thuộc tính này để liệt kê các quy tắc |
srcs
|
Bạn nên dùng thuộc tính này để liệt kê các tệp nguồn tập lệnh shell thuộc
thư viện này. Các tập lệnh có thể tải các tập lệnh khác bằng lệnh |
thử_nghiệm
Xem nguồn quy tắcsh_test(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_properties, features, flaky, licenses, local, restricted_to, shard_count, size, tags, target_compatible_with, testonly, timeout, toolchains, visibility)
Quy tắc sh_test()
tạo một mã kiểm thử được viết dưới dạng tập lệnh Bourne shell.
Xem các thuộc tính phổ biến đối với tất cả các quy tắc kiểm thử (*_test).
Ví dụ
sh_test( name = "foo_integration_test", size = "small", srcs = ["foo_integration_test.sh"], deps = [":foo_sh_lib"], data = glob(["testdata/*.txt"]), )
Đối số
Thuộc tính | |
---|---|
name |
Tên duy nhất cho mục tiêu này. |
deps
|
deps tại Các thuộc tính thông thường được xác định theo hầu hết các quy tắc tạo bản dựng.
Bạn nên sử dụng thuộc tính này để liệt kê các quy tắc |
srcs
|
Thuộc tính này phải là một danh sách singleton có phần tử là tập lệnh shell.
Tập lệnh này phải có thể thực thi và có thể là tệp nguồn hoặc tệp được tạo.
Tất cả các tệp khác cần thiết trong thời gian chạy (cho dù tập lệnh hay dữ liệu) đều thuộc về
thuộc tính |