<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://tech.uvoo.io/index.php?action=history&amp;feed=atom&amp;title=Bazel</id>
	<title>Bazel - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://tech.uvoo.io/index.php?action=history&amp;feed=atom&amp;title=Bazel"/>
	<link rel="alternate" type="text/html" href="https://tech.uvoo.io/index.php?title=Bazel&amp;action=history"/>
	<updated>2026-04-26T01:18:54Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.2</generator>
	<entry>
		<id>https://tech.uvoo.io/index.php?title=Bazel&amp;diff=64&amp;oldid=prev</id>
		<title>imported&gt;Jeremy-busk at 01:42, 19 January 2019</title>
		<link rel="alternate" type="text/html" href="https://tech.uvoo.io/index.php?title=Bazel&amp;diff=64&amp;oldid=prev"/>
		<updated>2019-01-19T01:42:29Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;# Bazel for all builds&lt;br /&gt;
&lt;br /&gt;
While the march has begun to get out of packaging Hell has begun by just using a contained &amp;amp; throttled process on a host via containers(docker/lxd) or just simple User Space and the benefits of SELinux/AppArmor, you will still need to package and distribute packaged builds in at least the near future. Bazel is your best friend in this area. Use it. &lt;br /&gt;
&lt;br /&gt;
https://bazel.build/&lt;br /&gt;
&lt;br /&gt;
There are many tools for building packages but many of them **suck**, especially in Debian land.&amp;lt;br&amp;gt;&lt;br /&gt;
Bazel is a wonderful tool built, backed and used by Google.&lt;br /&gt;
&lt;br /&gt;
## Getting Started&lt;br /&gt;
&lt;br /&gt;
https://docs.bazel.build/versions/master/getting-started.html&lt;br /&gt;
&lt;br /&gt;
### Bazel for deb &amp;amp; rpm packages&lt;br /&gt;
&lt;br /&gt;
* https://docs.bazel.build/versions/master/be/pkg.html&lt;br /&gt;
* https://docs.bazel.build/versions/master/build-ref.html#packages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
### Example for Shell&lt;br /&gt;
&lt;br /&gt;
* https://github.com/bazelbuild/bazel/tree/master/examples/shell&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Simple example extending simple shell example above&lt;br /&gt;
&lt;br /&gt;
### Get examples&lt;br /&gt;
```&lt;br /&gt;
git clone https://github.com/bazelbuild/bazel&lt;br /&gt;
cd bazel&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
### Edit shell example BUILD file&lt;br /&gt;
```&lt;br /&gt;
nano examples/shell/BUILD&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
# shell example BUILD text&lt;br /&gt;
package(default_visibility = [&amp;quot;//visibility:public&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
sh_binary(&lt;br /&gt;
    name = &amp;quot;bin&amp;quot;,&lt;br /&gt;
    srcs = [&amp;quot;bin.sh&amp;quot;],&lt;br /&gt;
    deps = [&lt;br /&gt;
        &amp;quot;:lib&amp;quot;,&lt;br /&gt;
        &amp;quot;@bazel_tools//tools/bash/runfiles&amp;quot;,&lt;br /&gt;
    ],&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
sh_library(&lt;br /&gt;
    name = &amp;quot;lib&amp;quot;,&lt;br /&gt;
    data = [&lt;br /&gt;
        &amp;quot;data/file.txt&amp;quot;,&lt;br /&gt;
        &amp;quot;lib.sh&amp;quot;,&lt;br /&gt;
    ],&lt;br /&gt;
    deps = [&amp;quot;@bazel_tools//tools/bash/runfiles&amp;quot;],&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
sh_test(&lt;br /&gt;
    name = &amp;quot;test&amp;quot;,&lt;br /&gt;
    size = &amp;quot;small&amp;quot;,&lt;br /&gt;
    srcs = [&amp;quot;test.sh&amp;quot;],&lt;br /&gt;
    data = [&amp;quot;data/test_file.txt&amp;quot;],&lt;br /&gt;
    deps = [&lt;br /&gt;
        &amp;quot;:lib&amp;quot;,&lt;br /&gt;
        &amp;quot;@bazel_tools//tools/bash/runfiles&amp;quot;,&lt;br /&gt;
    ],&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
filegroup(&lt;br /&gt;
    name = &amp;quot;srcs&amp;quot;,&lt;br /&gt;
    srcs = glob([&amp;quot;**&amp;quot;]),&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
# Add in packaging output.&lt;br /&gt;
load(&amp;quot;@bazel_tools//tools/build_defs/pkg:pkg.bzl&amp;quot;, &amp;quot;pkg_tar&amp;quot;, &amp;quot;pkg_deb&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
pkg_tar(&lt;br /&gt;
    name = &amp;quot;bazel-bin&amp;quot;,&lt;br /&gt;
    strip_prefix = &amp;quot;/src&amp;quot;,&lt;br /&gt;
    package_dir = &amp;quot;/usr/bin&amp;quot;,&lt;br /&gt;
    # srcs = [&amp;quot;//src:bazel&amp;quot;],&lt;br /&gt;
    srcs = [&amp;quot;bin.sh&amp;quot;],&lt;br /&gt;
    mode = &amp;quot;0755&amp;quot;,&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
pkg_tar(&lt;br /&gt;
    name = &amp;quot;bazel-tools&amp;quot;,&lt;br /&gt;
    strip_prefix = &amp;quot;/&amp;quot;,&lt;br /&gt;
    package_dir = &amp;quot;/usr/share/lib/bazel/tools&amp;quot;,&lt;br /&gt;
    # srcs = [&amp;quot;//tools:package-srcs&amp;quot;],&lt;br /&gt;
    srcs = [&amp;quot;bin.sh&amp;quot;],&lt;br /&gt;
    mode = &amp;quot;0644&amp;quot;,&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
pkg_tar(&lt;br /&gt;
    name = &amp;quot;debian-data&amp;quot;,&lt;br /&gt;
    srcs = [&amp;quot;bin.sh&amp;quot;],&lt;br /&gt;
    extension = &amp;quot;tar.gz&amp;quot;,&lt;br /&gt;
    deps = [&lt;br /&gt;
        &amp;quot;:bazel-bin&amp;quot;,&lt;br /&gt;
        &amp;quot;:bazel-tools&amp;quot;,&lt;br /&gt;
    ],&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
pkg_deb(&lt;br /&gt;
    name = &amp;quot;bazel-debian&amp;quot;,&lt;br /&gt;
    architecture = &amp;quot;amd64&amp;quot;,&lt;br /&gt;
    built_using = &amp;quot;bazel (0.1.1)&amp;quot;,&lt;br /&gt;
    data = &amp;quot;:debian-data&amp;quot;,&lt;br /&gt;
    depends = [&lt;br /&gt;
        &amp;quot;zlib1g-dev&amp;quot;,&lt;br /&gt;
        &amp;quot;unzip&amp;quot;,&lt;br /&gt;
    ],&lt;br /&gt;
    description_file = &amp;quot;debian/description&amp;quot;,&lt;br /&gt;
    homepage = &amp;quot;http://bazel.build&amp;quot;,&lt;br /&gt;
    maintainer = &amp;quot;The Bazel Authors &amp;lt;bazel-dev@googlegroups.com&amp;gt;&amp;quot;,&lt;br /&gt;
    package = &amp;quot;bazel&amp;quot;,&lt;br /&gt;
    version = &amp;quot;0.1.1&amp;quot;,&lt;br /&gt;
)&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
# Populate the following files with the appropriate information for deb package build lintian.&lt;br /&gt;
&lt;br /&gt;
ref: https://www.debian.org/doc/manuals/maint-guide/dreq.en.html&lt;br /&gt;
&lt;br /&gt;
* debian/description&lt;br /&gt;
* debian/control&lt;br /&gt;
* debian/copyright&lt;br /&gt;
* debian/changelog&lt;br /&gt;
* debian/rules&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
### Run some commands&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
bazel build examples/shell:bin&lt;br /&gt;
bazel build examples/shell:lib&lt;br /&gt;
bazel build examples/shell:bazel-bin&lt;br /&gt;
bazel build examples/shell:bazel-tools&lt;br /&gt;
bazel build examples/shell:debian-data&lt;br /&gt;
bazel build examples/shell:bazel-debian&lt;br /&gt;
bazel test examples/shell:test&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
### Run lintian &lt;br /&gt;
lintian bazel-bin/examples/shell/bazel_0.1.1_amd64.deb&lt;br /&gt;
&lt;br /&gt;
https://www.debian.org/doc/manuals/maint-guide/dreq.en.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
### Get the output&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
ls bazel-bin/examples/shell/&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
Notice how much better this is than the garbage build libraries that Debian has.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
### WIP - Builder script.&lt;br /&gt;
```&lt;br /&gt;
#!/usr/bin/env bash&lt;br /&gt;
set -exo pipefail&lt;br /&gt;
# https://www.debian.org/doc/manuals/maint-guide/dreq.en.html&lt;br /&gt;
D=&amp;quot;examples/shell&amp;quot;&lt;br /&gt;
DD=&amp;quot;scripts/packages/debian&amp;quot;&lt;br /&gt;
mkdir $D/debian || true&lt;br /&gt;
&lt;br /&gt;
for i in $(find scripts/packages/debian/ -type f | grep -v &amp;quot;BUILD&amp;quot;); do&lt;br /&gt;
        cp $i $D/debian/ || true&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
bazel build $D:bin&lt;br /&gt;
bazel build $D:lib&lt;br /&gt;
bazel build $D:bazel-bin&lt;br /&gt;
bazel build $D:bazel-tools&lt;br /&gt;
touch examples/shell/debian/description&lt;br /&gt;
bazel build $D:debian-data&lt;br /&gt;
bazel build $D:bazel-debian&lt;br /&gt;
bazel test $D:test&lt;br /&gt;
lintian bazel-bin/examples/shell/bazel_0.1.1_amd64.deb&lt;br /&gt;
dpkg-deb --contents bazel-bin/examples/shell/bazel_0.1.1_amd64.deb&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
### Other Useful Commands&lt;br /&gt;
&lt;br /&gt;
example&lt;br /&gt;
&lt;br /&gt;
https://github.com/bazelbuild/bazel/blob/master/scripts/packages/debian/BUILD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
dpkg-deb --contents bazel-bin/examples/shell/bazel_0.1.1_amd64.deb&lt;br /&gt;
dpkg-deb --extract bazel-bin/examples/shell/bazel_0.1.1_amd64.deb&lt;/div&gt;</summary>
		<author><name>imported&gt;Jeremy-busk</name></author>
	</entry>
</feed>