다음 함수가
@bazel_tools//tools/build_defs/repo:http.bzl
HTTP를 통해 파일 및 보관 파일을 다운로드하기 위한 규칙입니다.
설정
이러한 규칙을 사용하려면 다음과 같이 WORKSPACE
파일에 규칙을 로드합니다.
load(
"@bazel_tools//tools/build_defs/repo:http.bzl",
"http_archive",
"http_file",
"http_jar",
)
이러한 규칙은 기본 http 규칙의 개선된 버전이며 결국에는 네이티브 규칙을 대체합니다.
http_archive
http_archive(name, add_prefix, auth_patterns, build_file, build_file_content, canonical_id, integrity, netrc, patch_args, patch_cmds, patch_cmds_win, patch_tool, patches, remote_file_integrity, remote_file_urls, remote_patch_strip, remote_patches, repo_mapping, sha256, strip_prefix, type, url, urls, workspace_file, workspace_file_content)
Bazel 저장소를 압축된 보관 파일로 다운로드하여 압축을 해제합니다. 대상을 바인딩에 사용할 수 있도록 합니다.
지원되는 파일 확장자는 "zip"
, "jar"
, "war"
, "aar"
, "tar"
,
"tar.gz"
, "tgz"
, "tar.xz"
, "txz"
, "tar.zst"
, "tzst"
, tar.bz2
, "ar"
,
또는 "deb"
일 수 있습니다.
예:
현재 저장소에 채팅 프로그램의 소스 코드가 포함되어 있다고 가정해 보겠습니다.
~/chat-app
디렉터리에 루팅되었습니다. SSL 라이브러리에 의존해야 함
이 URL은 http://example.com/openssl.zip에서 제공됩니다. 이 .zip
파일
에는 다음과 같은 디렉터리 구조가 포함됩니다.
WORKSPACE
src/
openssl.cc
openssl.h
로컬 저장소에서 사용자는 openssl.BUILD
파일을 만듭니다.
다음 대상 정의가 포함됩니다.
cc_library(
name = "openssl-lib",
srcs = ["src/openssl.cc"],
hdrs = ["src/openssl.h"],
)
~/chat-app
저장소의 대상은 다음과 같은 경우 이 대상에 종속될 수 있습니다.
다음 줄이 ~/chat-app/WORKSPACE
에 추가됩니다.
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "my_ssl",
url = "http://example.com/openssl.zip",
sha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
build_file = "@//:openssl.BUILD",
)
그러면 대상은 @my_ssl//:openssl-lib
를 종속 항목으로 지정합니다.
속성
name |
이름 필수
이 저장소의 고유한 이름입니다. |
add_prefix |
String; 선택사항
저장소 디렉터리를 기준으로 한 대상 디렉터리입니다. `strip_prefix`를 적용한 후 보관 파일이 이 디렉터리로 압축 해제됩니다. (있는 경우)를 아카이브 내의 파일 경로로 변경합니다. 예: 파일 `add_prefix = "bar"`인 경우 `foo-1.2.3/src/foo.h` 는 `bar/src/foo.h`로 압축 해제됩니다. `strip_prefix = "foo-1.2.3"`입니다. |
auth_patterns |
사전: 문자열 -> String; 선택사항
호스트 이름을 커스텀 승인 패턴에 매핑하는 사전(선택사항)입니다.
URL의 호스트 이름이 이 사전에 있으면
http 요청에 대한 승인 헤더를 생성합니다. 이렇게 하면 커스텀
승인 체계가 사용됩니다.
이 패턴은 현재 토큰 2개( auth_patterns = { "storage.cloudprovider.com": "Bearer <password>" } machine storage.cloudprovider.com password RANDOM-TOKEN Authorization: Bearer RANDOM-TOKEN |
build_file |
라벨 선택사항
이 저장소의 BUILD 파일로 사용할 파일입니다.이 속성은 절대 라벨입니다 (기본 저장소에 '@//' 사용). 파일의 이름을 BUILD로 지정할 필요는 없지만 그렇게 해도 됩니다 (BUILD.new-repo-name과 같은 것이 저장소의 실제 BUILD 파일과 구분되는 데 적합할 수 있음). build_file 또는 build_file_content 중 하나를 지정할 수 있지만 둘 다 지정할 수는 없습니다. |
build_file_content |
String; 선택사항
이 저장소에 대한 BUILD 파일의 콘텐츠. build_file 또는 build_file_content 중 하나를 지정할 수 있지만 둘 다 지정할 수는 없습니다. |
canonical_id |
String; 선택사항
다운로드한 파일의 표준 ID. 지정된 파일 및 비어 있지 않은 경우 Bazel은 파일이 삭제되지 않는 이상 캐시에서 파일을 가져오지 않습니다. 가 캐시에 추가되었습니다. 지정하지 않거나 비어 있으면 Bazel이 기본적으로 파일의 URL을 표준 ID가 아닙니다. 이렇게 하면 URL을 업데이트하지 않고 URL을 업데이트하는 일반적인 실수를 해시를 업데이트하여 로컬에서는 성공하지만 빌드에 실패하는 결과를 초래 자동으로 삭제되도록 합니다. 이 동작은 --repo_env=BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID=0. |
integrity |
String; 선택사항
다운로드한 파일의 하위 리소스 무결성 형식 체크섬이 필요합니다. 이는 다운로드한 파일의 체크섬과 일치해야 합니다. _보안 위험입니다. 원격 파일이 변경될 수 있으므로 체크섬을 생략하는 것이 좋습니다. 필드를 사용하여 빌드가 밀폐되지 않게 합니다. 개발은 선택사항으로 더 쉽지만 배송 전에 이 속성 또는 `sha256` 을 설정해야 합니다. |
netrc |
String; 선택사항
인증에 사용할 .netrc 파일의 위치입니다. |
patch_args |
문자열 목록 선택사항
패치 도구에 지정된 인수입니다. 기본값은 -p0이지만 git에서 생성된 패치에는 일반적으로 -p1이 필요합니다. -p 인수가 여러 개 지정되면 마지막 인수가 적용됩니다. -p 이외의 인수가 지정된 경우 Bazel은 Bazel 네이티브 패치 구현 대신 패치 명령줄 도구를 사용하도록 대체합니다. 패치 명령줄 도구로 대체하고 patch_tool 속성이 지정되지 않으면 `patch` 가 사용됩니다. 이는 `patches` 속성의 패치 파일에만 영향을 미칩니다. |
patch_cmds |
문자열 목록 선택사항
패치가 적용된 후 Linux/Macos에서 적용될 Bash 명령어 시퀀스 |
patch_cmds_win |
문자열 목록 선택사항
패치가 적용된 후 Windows에 적용될 Powershell 명령어 시퀀스 이 속성을 설정하지 않으면 Windows에서 patch_cmds가 실행되므로 Bash 바이너리가 있어야 합니다. |
patch_tool |
String; 선택사항
사용할 패치(1) 유틸리티입니다. 이를 지정하면 Bazel은 Bazel 네이티브 패치 구현 대신 지정된 패치 도구를 사용합니다. |
patches |
라벨 목록 선택사항
보관 파일을 추출한 후 패치로 적용할 파일의 목록입니다. 기본적으로 퍼즈 일치 및 바이너리 패치를 지원하지 않는 Bazel 네이티브 패치 구현을 사용하지만 `patch_tool` 속성이 지정되거나 `patch_args` 속성에 `-p` 이외의 인수가 있는 경우 Bazel은 패치 명령줄 도구를 다시 사용합니다. |
remote_file_integrity |
사전: 문자열 -> String; 선택사항
파일 상대 경로 (키)를 무결성 값 (값)에 매핑합니다. 이러한 상대 경로는 `remote_file_urls` 속성의 파일 (키)에 매핑되어야 합니다. |
remote_file_urls |
사전: 문자열 -> 문자열 목록 선택사항
저장소에 다운로드되어 오버레이된 파일로 제공되는 URL (값) 목록에 대한 상대 경로 (키) 맵입니다. 이는 기존 저장소 위에 WORKSPACE 또는 BUILD.bazel 파일을 추가할 때 유용합니다. `patches` 속성에 패치를 적용하기 전에 파일이 다운로드되며, URL 목록은 모두 동일한 파일의 미러여야 합니다. URL은 하나의 성공할 때까지 순서대로 시도됩니다. |
remote_patch_strip |
정수; 선택사항
원격 패치의 파일 이름에서 제거할 선행 슬래시의 수입니다. |
remote_patches |
사전: 문자열 -> String; 선택사항
무결성 값에 대한 패치 파일 URL의 매핑으로, 보관 파일을 추출한 후 `patches` 속성에서 패치 파일을 적용하기 전에 적용됩니다. Bazel 네이티브 패치 구현을 사용하므로 `remote_patch_strip`를 사용하여 패치 스트립 번호를 지정할 수 있습니다. |
repo_mapping |
사전: 문자열 -> String; 필수
로컬 저장소 이름에서 전역 저장소 이름으로의 사전입니다. 이렇게 하면 이 저장소의 종속 항목에 대한 작업공간 종속 항목 해결을 제어할 수 있습니다. 예를 들어 항목 "@foo": "@bar"`는 이 저장소가 항상 `@foo`에 종속될 때마다 (예: `@foo//some:target`의 종속 항목) 전역적으로 선언된 `@bar` (`@bar//some:target`) 내에서 이 종속 항목을 실제로 해결해야 한다고 선언합니다. |
sha256 |
String; 선택사항
다운로드한 파일의 예상 SHA-256입니다. 다운로드한 파일의 SHA-256과 일치해야 합니다. _보안 위험입니다. 원격 파일이 변경될 수 있으므로 SHA-256을 생략하는 것이 좋습니다. 필드를 사용하여 빌드가 밀폐되지 않게 합니다. 개발은 선택사항으로 이 속성 또는 `무결성` 은 배송 전에 설정해야 합니다. |
strip_prefix |
String; 선택사항
추출된 파일에서 삭제할 디렉터리 프리픽스입니다. 많은 아카이브에는 유용한 모든 정보가 포함된 최상위 디렉토리가 보관 파일이 있습니다. 이 접두어를 반복해서 지정하는 대신 `build_file`에서 이 필드는 모든 빌드 파일에서 추출해야 합니다. 예를 들어, `foo-lib-latest.zip`을 사용한다고 가정해 보겠습니다. 이 파일에는 `foo-lib-1.2.3/` 디렉터리 아래에 `WORKSPACE` 파일이 있고 `src/`, `lib/`, `test/` 디렉토리로 이동하고 지정할 수 있습니다 `strip_prefix = "foo-lib-1.2.3"`을 지정하여 다음을 사용합니다. `foo-lib-1.2.3` 디렉터리를 최상위 디렉터리로 설정합니다. 참고로, 이 디렉터리 외부에 파일이 있으면 또는 액세스 불가 (예: 최상위 라이선스 파일)가 되기 때문입니다. 여기에는 접두사로 시작하지만 디렉터리에 없는 파일/디렉터리 (예: `foo-lib-1.2.3.release-notes`). 지정된 접두사가 아카이브의 디렉터리가 일치하면 Bazel이 오류를 반환합니다. |
type |
String; 선택사항
다운로드한 파일의 보관 파일 유형입니다. 기본적으로 보관 파일 형식은 URL입니다. 파일에 확장자가 없는 경우 "zip"`, "jar"`, "war"`, "aar"`, "tar"`, "tar.gz"`, `"tgz"`, ` |
url |
String; 선택사항
Bazel이 사용할 수 있는 파일의 URL입니다. 파일, http 또는 https URL이어야 합니다. 리디렉션이 적용됩니다. 인증이 지원되지 않습니다. urls 매개변수를 사용하면 가져올 대체 URL을 지정합니다. |
urls |
문자열 목록 선택사항
Bazel이 사용할 수 있는 파일의 URL 목록입니다. 각 항목은 파일, http 또는 https URL이어야 합니다. 리디렉션이 적용됩니다. 인증이 지원되지 않습니다. URL은 성공할 때까지 순서대로 시도되므로 먼저 로컬 미러를 나열해야 합니다. 모든 다운로드가 실패하면 규칙이 실패합니다. |
workspace_file |
라벨 선택사항
이 저장소의 `WORKSPACE` 파일로 사용할 파일입니다. `workspace_file` 또는 `workspace_file_content` 중 하나를 지정하거나 둘 다 지정할 수 있지만 둘 다 지정할 수는 없습니다. |
workspace_file_content |
String; 선택사항
이 저장소에 대한 WORKSPACE 파일의 콘텐츠입니다. `workspace_file` 또는 `workspace_file_content` 중 하나를 지정하거나 둘 다 지정할 수 있지만 둘 다 지정할 수는 없습니다. |
http_file
http_file(name, auth_patterns, canonical_id, downloaded_file_path, executable, integrity, netrc, repo_mapping, sha256, url, urls)
URL에서 파일을 다운로드하여 파일로 사용할 수 있도록 설정합니다. 그룹
예: 사용자 지정 규칙에 Debian 패키지가 있어야 한다고 가정해 보겠습니다. 이 패키지 http://example.com/package.deb에서 다운로드할 수 있습니다. 그런 다음 WORKSPACE 파일:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file")
http_file(
name = "my_deb",
url = "http://example.com/package.deb",
sha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
)
대상은 이 파일에 종속되도록 @my_deb//file
를 종속 항목으로 지정합니다.
속성
name |
이름 필수
이 저장소의 고유한 이름입니다. |
auth_patterns |
사전: 문자열 -> String; 선택사항
호스트 이름을 커스텀 승인 패턴에 매핑하는 사전(선택사항)입니다.
URL의 호스트 이름이 이 사전에 있으면
http 요청에 대한 승인 헤더를 생성합니다. 이렇게 하면 커스텀
승인 체계가 사용됩니다.
이 패턴은 현재 토큰 2개( auth_patterns = { "storage.cloudprovider.com": "Bearer <password>" } machine storage.cloudprovider.com password RANDOM-TOKEN Authorization: Bearer RANDOM-TOKEN |
canonical_id |
String; 선택사항
다운로드한 파일의 표준 ID. 지정된 파일 및 비어 있지 않은 경우 Bazel은 파일이 삭제되지 않는 이상 캐시에서 파일을 가져오지 않습니다. 가 캐시에 추가되었습니다. 지정하지 않거나 비어 있으면 Bazel이 기본적으로 파일의 URL을 표준 ID가 아닙니다. 이렇게 하면 URL을 업데이트하지 않고 URL을 업데이트하는 일반적인 실수를 해시를 업데이트하여 로컬에서는 성공하지만 빌드에 실패하는 결과를 초래 자동으로 삭제되도록 합니다. 이 동작은 --repo_env=BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID=0. |
downloaded_file_path |
String; 선택사항
다운로드된 파일에 할당된 경로 |
executable |
부울; 선택사항
다운로드한 파일을 실행 파일로 만들어야 하는지 여부입니다. |
integrity |
String; 선택사항
다운로드한 파일의 하위 리소스 무결성 형식 체크섬이 필요합니다. 이는 다운로드한 파일의 체크섬과 일치해야 합니다. _보안 위험입니다. 원격 파일이 변경될 수 있으므로 체크섬을 생략하는 것이 좋습니다. 필드를 사용하여 빌드가 밀폐되지 않게 합니다. 개발은 선택사항으로 더 쉽지만 배송 전에 이 속성 또는 `sha256` 을 설정해야 합니다. |
netrc |
String; 선택사항
인증에 사용할 .netrc 파일의 위치입니다. |
repo_mapping |
사전: 문자열 -> String; 필수
로컬 저장소 이름에서 전역 저장소 이름으로의 사전입니다. 이렇게 하면 이 저장소의 종속 항목에 대한 작업공간 종속 항목 해결을 제어할 수 있습니다. 예를 들어 항목 "@foo": "@bar"`는 이 저장소가 항상 `@foo`에 종속될 때마다 (예: `@foo//some:target`의 종속 항목) 전역적으로 선언된 `@bar` (`@bar//some:target`) 내에서 이 종속 항목을 실제로 해결해야 한다고 선언합니다. |
sha256 |
String; 선택사항
다운로드한 파일의 예상 SHA-256입니다. 다운로드한 파일의 SHA-256과 일치해야 합니다. _보안 위험입니다. 원격 파일이 변경될 수 있으므로 SHA-256을 생략하는 것이 좋습니다. 필드를 사용하여 빌드가 밀폐되지 않게 합니다. 개발은 선택사항으로 배송 전에 설정해야 합니다. |
url |
String; 선택사항
Bazel이 사용할 수 있는 파일의 URL입니다. 파일, http 또는 https URL이어야 합니다. 리디렉션이 적용됩니다. 인증이 지원되지 않습니다. urls 매개변수를 사용하면 가져올 대체 URL을 지정합니다. |
urls |
문자열 목록 선택사항
Bazel이 사용할 수 있는 파일의 URL 목록입니다. 각 항목은 파일, http 또는 https URL이어야 합니다. 리디렉션이 적용됩니다. 인증이 지원되지 않습니다. URL은 성공할 때까지 순서대로 시도되므로 먼저 로컬 미러를 나열해야 합니다. 모든 다운로드가 실패하면 규칙이 실패합니다. |
http_jar
http_jar(name, auth_patterns, canonical_id, downloaded_file_name, integrity, netrc, repo_mapping, sha256, url, urls)
URL에서 jar를 다운로드하여 java_import로 사용할 수 있도록 설정
다운로드한 파일의 확장자는 .jar이어야 합니다.
예:
현재 저장소에
디렉터리 ~/chat-app
SSL 준수 라이브러리에 의존해야 하는데, 이 라이브러리는
http://example.com/openssl-0.2.jar
~/chat-app
저장소의 대상은 다음 행이 있는 경우 이 대상에 종속될 수 있습니다.
~/chat-app/WORKSPACE
에 추가됨:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_jar")
http_jar(
name = "my_ssl",
url = "http://example.com/openssl-0.2.jar",
sha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
)
대상은 이 jar에 종속될 종속 항목으로 @my_ssl//jar
를 지정합니다.
'file:///path/to/file'을 사용하여 현재 시스템 (localhost)의 파일을 참조할 수도 있습니다.
(Unix 기반 시스템) Windows를 사용하는 경우 'file:///c:/path/to/file'을 사용합니다. 둘 다
예를 들어 슬래시 3개 (/
)를 확인합니다. 처음 두 개의 슬래시는 file://
에 속하고 세 번째 슬래시는 file://
에 속합니다.
파일의 절대 경로에 속합니다.
속성
name |
이름 필수
이 저장소의 고유한 이름입니다. |
auth_patterns |
사전: 문자열 -> String; 선택사항
호스트 이름을 커스텀 승인 패턴에 매핑하는 사전(선택사항)입니다.
URL의 호스트 이름이 이 사전에 있으면
http 요청에 대한 승인 헤더를 생성합니다. 이렇게 하면 커스텀
승인 체계가 사용됩니다.
이 패턴은 현재 토큰 2개( auth_patterns = { "storage.cloudprovider.com": "Bearer <password>" } machine storage.cloudprovider.com password RANDOM-TOKEN Authorization: Bearer RANDOM-TOKEN |
canonical_id |
String; 선택사항
다운로드한 파일의 표준 ID. 지정된 파일 및 비어 있지 않은 경우 Bazel은 파일이 삭제되지 않는 이상 캐시에서 파일을 가져오지 않습니다. 가 캐시에 추가되었습니다. 지정하지 않거나 비어 있으면 Bazel이 기본적으로 파일의 URL을 표준 ID가 아닙니다. 이렇게 하면 URL을 업데이트하지 않고 URL을 업데이트하는 일반적인 실수를 해시를 업데이트하여 로컬에서는 성공하지만 빌드에 실패하는 결과를 초래 자동으로 삭제되도록 합니다. 이 동작은 --repo_env=BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID=0. |
downloaded_file_name |
String; 선택사항
다운로드된 jar에 할당된 파일 이름 |
integrity |
String; 선택사항
다운로드한 파일의 하위 리소스 무결성 형식 체크섬이 필요합니다. 이는 다운로드한 파일의 체크섬과 일치해야 합니다. _보안 위험입니다. 원격 파일이 변경될 수 있으므로 체크섬을 생략하는 것이 좋습니다. 필드를 사용하여 빌드가 밀폐되지 않게 합니다. 개발은 선택사항으로 더 쉽지만 배송 전에 이 속성 또는 `sha256` 을 설정해야 합니다. |
netrc |
String; 선택사항
인증에 사용할 .netrc 파일의 위치입니다. |
repo_mapping |
사전: 문자열 -> String; 필수
로컬 저장소 이름에서 전역 저장소 이름으로의 사전입니다. 이렇게 하면 이 저장소의 종속 항목에 대한 작업공간 종속 항목 해결을 제어할 수 있습니다. 예를 들어 항목 "@foo": "@bar"`는 이 저장소가 항상 `@foo`에 종속될 때마다 (예: `@foo//some:target`의 종속 항목) 전역적으로 선언된 `@bar` (`@bar//some:target`) 내에서 이 종속 항목을 실제로 해결해야 한다고 선언합니다. |
sha256 |
String; 선택사항
다운로드한 파일의 예상 SHA-256입니다. 다운로드한 파일의 SHA-256과 일치해야 합니다. _보안 위험입니다. 원격 파일이 변경될 수 있으므로 SHA-256을 생략하는 것이 좋습니다. 필드를 사용하여 빌드가 밀폐되지 않게 합니다. 개발은 선택사항으로 이 속성 또는 `무결성` 은 배송 전에 설정해야 합니다. |
url |
String; 선택사항
Bazel이 사용할 수 있는 파일의 URL입니다. 파일, http 또는 https URL이어야 합니다. 리디렉션이 적용됩니다. 인증이 지원되지 않습니다. urls 매개변수를 사용하면 가져올 대체 URL을 지정합니다. URL은 `.jar`로 끝나야 합니다. |
urls |
문자열 목록 선택사항
Bazel이 사용할 수 있는 파일의 URL 목록입니다. 각 항목은 파일, http 또는 https URL이어야 합니다. 리디렉션이 적용됩니다. 인증이 지원되지 않습니다. URL은 성공할 때까지 순서대로 시도되므로 먼저 로컬 미러를 나열해야 합니다. 모든 다운로드가 실패하면 규칙이 실패합니다. 모든 URL은 `.jar`로 끝나야 합니다. |