추가 작업 규칙

문제 신고 소스 보기

규칙

action_listener

규칙 소스 보기
action_listener(name, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, extra_actions, features, licenses, mnemonics, restricted_to, tags, target_compatible_with, testonly, visibility)

경고: 추가 작업은 지원 중단되었습니다. 대신 측면을 사용하세요.

action_listener 규칙은 자체적으로 출력을 생성하지 않습니다. 대신, 작업으로부터 extra_action 로의 매핑을 제공하여 도구 개발자가 extra_action를 빌드 시스템에 삽입할 수 있습니다.

이 규칙의 인수는 작업 니모닉을 extra_action 규칙에 매핑합니다.

--experimental_action_listener=<label> 옵션을 지정하면 빌드에서 지정된 action_listener를 사용하여 extra_action를 빌드 그래프에 삽입합니다.

예시

action_listener(
    name = "index_all_languages",
    mnemonics = [
        "Javac",
        "CppCompile",
        "Python",
    ],
    extra_actions = [":indexer"],
)

action_listener(
    name = "index_java",
    mnemonics = ["Javac"],
    extra_actions = [":indexer"],
)

extra_action(
    name = "indexer",
    tools = ["//my/tools:indexer"],
    cmd = "$(location //my/tools:indexer)" +
          "--extra_action_file=$(EXTRA_ACTION_FILE)",
)

인수

특성
name

이름. 필수 항목입니다.

이 대상의 고유한 이름입니다.

extra_actions

라벨 목록, 필수

extra_action 목록은 이 action_listener가 빌드 그래프에 추가해야 하는 대상을 지정합니다. 예: [ "//my/tools:analyzer" ]
mnemonics

문자열 목록, 필수

action_listener가 수신 대기해야 하는 작업 니모닉의 목록입니다(예: [ "Javac" ]).

니모닉은 공개 인터페이스가 아닙니다. 니모닉과 관련 작업이 변경되지 않는다는 보장은 없습니다.

extra_action

규칙 소스 보기
extra_action(name, data, cmd, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, out_templates, requires_action_output, restricted_to, tags, target_compatible_with, testonly, toolchains, tools, visibility)

경고: 추가 작업은 지원 중단되었습니다. 대신 측면을 사용하세요.

extra_action 규칙이 일반 빌드 타겟으로 지정되면 의미 있는 출력을 생성하지 않습니다. 대신 도구 개발자가 빌드 그래프에 기존 작업을 섀도잉하는 추가 작업을 삽입할 수 있습니다.

extra_action를 사용 설정하는 방법에 관한 자세한 내용은 action_listener를 참고하세요.

extra_action는 명령줄로 실행됩니다. 명령줄 도구는 섀도잉 중인 원래 작업에 관한 자세한 정보와 함께 $(EXTRA_ACTION_FILE) 형식의 프로토콜 버퍼를 포함하는 파일에 액세스합니다. 또한 원래 작업에서 액세스할 수 있는 모든 입력 파일에 액세스할 수 있습니다. 프로토콜 버퍼 내부에 저장된 데이터에 대한 자세한 내용은 extra_actions_base.proto를 참조하세요. 각 proto 파일에는 ExtraActionInfo 메시지가 포함됩니다.

다른 모든 작업과 마찬가지로 추가 작업은 샌드박스 처리되며 이를 처리하도록 설계해야 합니다.

인수

특성
name

이름. 필수 항목입니다.

이 대상의 고유한 이름입니다.

action_listener 규칙의 extra_actions 인수에서 label로 이 규칙을 참조할 수 있습니다.
cmd

문자열, 필수

실행할 명령어입니다.

genrule cmd 속성과 유사하지만 다음과 같은 차이점이 있습니다.

  1. 휴리스틱 라벨 확장이 없습니다. $(location ...)를 사용하는 라벨만 확장됩니다.

  2. 추가 패스가 문자열에 적용되어 out_templates 속성에서 생성된 출력의 모든 일치하는 항목을 대체합니다. $(output out_template)과 일치하는 모든 항목은 label로 표시된 파일의 경로로 대체됩니다.

    예를 들어 out_template $(ACTION_ID).analysis$(output $(ACTION_ID).analysis)와 일치시킬 수 있습니다.

    실제로 이는 $(location)와 동일하지만 범위가 다릅니다.

out_templates

문자열 목록. 기본값은 []입니다.

extra_action 명령어로 생성되는 파일의 템플릿 목록입니다.

템플릿은 다음 변수를 사용할 수 있습니다.

  • $(ACTION_ID): 이 extra_action를 고유하게 식별하는 ID입니다. 고유한 출력 파일을 생성하는 데 사용됩니다.

requires_action_output

부울. 기본값은 False입니다.

extra_action를 사용하려면 원래 작업의 출력이 이 extra_action에 대한 입력으로 있어야 함을 나타냅니다.

true (기본값 false)인 경우 extra_action은 원래 작업 출력을 입력의 일부로 사용할 수 있다고 가정할 수 있습니다.

tools

라벨 목록. 기본값은 []입니다.

이 규칙의 종속 항목 tool개 목록입니다.

자세한 내용은 종속 항목 정의를 참조하세요.

이러한 기본 요건은 extra_action 명령어를 실행하기 전에 빌드되며, 이러한 기본 요건은 빌드 중에 도구로 실행되어야 하므로 exec 구성을 사용하여 빌드됩니다. 개별 tools 타겟 //x:y의 경로는 $(location //x:y)를 사용하여 가져올 수 있습니다.

모든 도구와 데이터 종속 항목은 명령어가 상대 경로를 사용할 수 있는 단일 트리로 통합됩니다. 작업 디렉터리는 통합 트리의 루트가 됩니다.