Packaging for Bazel
Deprecated
These rules have been extracted from the Bazel sources and are now available at bazelbuild/rules_pkg (docs).
Issues and PRs against the built-in versions of these rules will no longer be addressed. This page will exist for reference until the code is removed from Bazel.
For more information, follow issue 8857
rules_pkg
Rules
Overview
pkg_tar()
is available for building a .tar file without depending
on anything besides Bazel. Since this feature is deprecated and will
eventually be removed from Bazel, you should migrate to @rules_pkg
.
Basic Example
This example is a simplification of building Bazel and creating a distribution tarball.
load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar")
pkg_tar(
name = "bazel-bin",
strip_prefix = "/src",
package_dir = "/usr/bin",
srcs = ["//src:bazel"],
mode = "0755",
)
pkg_tar(
name = "bazel-tools",
strip_prefix = "/",
package_dir = "/usr/share/lib/bazel/tools",
srcs = ["//tools:package-srcs"],
mode = "0644",
)
pkg_tar(
name = "bazel-all",
extension = "tar.gz",
deps = [
":bazel-bin",
":bazel-tools",
],
)
Here, a package is built from three pkg_tar
targets:
bazel-bin
creates a tarball with the main binary (mode0755
) in/usr/bin
,bazel-tools
create a tarball with the base workspace (mode0644
) to/usr/share/bazel/tools
; themodes
attribute let us specifies executable files,bazel-all
creates a gzip-compressed tarball that merge the two previous tarballs.
pkg_tar
pkg_tar(name, extension, strip_prefix, package_dir, srcs,
mode, modes, deps, symlinks)
Creates a tar file from a list of inputs.
Attributes | |
---|---|
name |
Name, required
A unique name for this rule. |
extension |
String, default to 'tar'
The extension for the resulting tarball. The output
file will be 'name.extension'. This extension
also decide on the compression: if set to |
strip_prefix |
String, optional
Root path of the files.
The directory structure from the files is preserved inside the
tarball but a prefix path determined by |
package_dir |
String, optional
Target directory. The directory in which to expand the specified files, defaulting to '/'. Only makes sense accompanying files. |
srcs |
List of files, optional
File to add to the layer. A list of files that should be included in the archive. |
mode |
String, default to 0555
Set the mode of files added by the |
mtime |
int, seconds since Jan 1, 1970, default to -1 (ignored)
Set the mod time of files added by the |
portable_mtime |
bool, default True
Set the mod time of files added by the |
modes |
Dictionary, default to '{}'
A string dictionary to change default mode of specific files from
|
owner |
String, default to '0.0'
|
owners |
Dictionary, default to '{}'
A string dictionary to change default owner of specific files from
|
ownername |
String, optional
|
ownernames |
Dictionary, default to '{}'
A string dictionary to change default owner of specific files from
|
deps |
List of labels, optional
Tar files to extract and include in this tar package. A list of tarball labels to merge into the output tarball. |
symlinks |
Dictionary, optional
Symlinks to create in the output tarball.
|
remap_paths |
Dictionary, optional
Source path prefixes to remap in the tarfile.
|