http_archive()
This is liable to change in the future.
Anhttp_archive()
rule is used to download and extract archives from the Internet to be used as dependencies for other rules. These rules are downloaded by running buck fetch
, or can be downloaded as part ofbuck build
by setting [download].in_build
Arguments
name
(required) #The short name for this build target. This is also used for the name of the file on disk if
out
is not provided.urls
(required) #A list of urls to attempt to download from. They are tried in order, and subsequent ones are only tried if the download fails. If validation fails, a new URL is not used. Supported protocols are "http", "https", and "mvn".
sha256
(required) #The
SHA-256
hash of the downloaded artifact. Buck verifies this is correct and fails the fetch command if it doesn't match in order to guarantee repeatable builds.out
(defaults toNone
) #An optional name to call the directory that the downloaded artifact is extracted into. Buck will generate a default name if one is not provided that uses the
name
of the rule.strip_prefix
(defaults toNone
) #If set, files under this path will be extracted to the root of the output directory. Siblings or cousins to this prefix will not be extracted at all.
For example, if a tarball has the layout:- foo/bar/bar-0.1.2/data.dat
- foo/baz/baz-0.2.3
- foo_prime/bar-0.1.2
data.dat
will be extracted, and it will be extracted into the output directory specified inout
.type
(defaults toNone
) #Normally, archive type is determined by the file's extension. If
type
is set, then autodetection is overriden, and the specified type is used instead.
Supported values are:zip
,tar
,tar.gz
,tar.bz2
,tar.xz
, andtar.zst
.visibility
(defaults to[]
) #List of build target patterns that identify the build rules that can include this rule as a dependency, for example, by listing it in their
deps
orexported_deps
attributes. For more information, see visibility.licenses
(defaults to[]
) #Set of license files for this library. To get the list of license files for a given build rule and all of its dependencies, you can use
buck query
.labels
(defaults to[]
) #Set of arbitrary strings which allow you to annotate a build rule with tags that can be searched for over an entire dependency tree using
buck query attrfilter()
.
Examples
Using http_archive()
, third party packages can be downloaded from an https
URL and used in other library types.
http_archive( name = 'thrift-archive', urls = [ 'https://internal-mirror.example.com/bin/thrift-compiler-0.1.tar.gz.badextension', ], sha256 = '7baa80df284117e5b945b19b98d367a85ea7b7801bd358ff657946c3bd1b6596', type='tar.gz', strip_prefix='thrift-compiler-0.1' ) genrule( name = 'thrift-compiler-bin', out = 'thrift', cmd = 'cp $(location :thrift-archive)/bin/thrift $OUT', ) genrule( name="my-thrift-lib-cpp2", cmd="$(exe :thrift-compiler-bin) --gen cpp2 -o $OUT $(location //:thrift-file)", out="gen-cpp2", )