Skip to content

Commit

Permalink
Create Debian packages (#563)
Browse files Browse the repository at this point in the history
* Adjust build-stamp to always reflect the most recent tag

* Create Debian packages

---------

Co-authored-by: Florian Weikert <fwe@google.com>
  • Loading branch information
jwnimmer-tri and fweikert authored Sep 6, 2024
1 parent 0b27498 commit 22bef8d
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 3 deletions.
1 change: 1 addition & 0 deletions MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ module(
bazel_dep(name = "gazelle", version = "0.38.0")
bazel_dep(name = "platforms", version = "0.0.10")
bazel_dep(name = "rules_go", version = "0.50.0")
bazel_dep(name = "rules_pkg", version = "0.10.1")
bazel_dep(name = "aspect_rules_js", version = "1.42.3")

go_sdk = use_extension("@rules_go//go:extensions.bzl", "go_sdk")
Expand Down
52 changes: 52 additions & 0 deletions deb/BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
load("@rules_pkg//pkg:deb.bzl", "pkg_deb")
load("@rules_pkg//pkg:tar.bzl", "pkg_tar")

config_setting(
name = "stamp_detect",
values = {"stamp": "1"},
)

genrule(
name = "parse_version",
outs = ["version.txt"],
cmd_bash = select({
":stamp_detect": "sed -ne 's#^STABLE_VERSION v##p' bazel-out/stable-status.txt > $@",
"//conditions:default": "echo 0.0.0 > $@",
}),
cmd_bat = "echo 0.0.0 >> $@",
stamp = True,
)

ARCHES = ["amd64", "arm64"]

[
pkg_tar(
name = "bazelisk-{}_tar".format(arch),
out = "bazelisk-{}.tar".format(arch),
srcs = ["//:bazelisk-linux-{}".format(arch)],
remap_paths = {"bazelisk-linux_{}".format(arch): "bazelisk"},
package_dir = "/usr/bin",
stamp = -1,
symlinks = {"bazel": "bazelisk"},
)
for arch in ARCHES
]

[
pkg_deb(
name = "bazelisk-{}_deb".format(arch),
architecture = arch,
conflicts = ["bazel"],
data = ":bazelisk-{}_tar".format(arch),
description_file = ":description.txt",
homepage = "https://github.com/bazelbuild/bazelisk",
license = "Apache-2.0",
maintainer = "The Bazel Authors <bazel-dev@googlegroups.com>",
out = "bazelisk-{}.deb".format(arch),
package = "bazelisk",
section = "contrib/devel",
version_file = ":version.txt",
visibility = ["//visibility:public"],
)
for arch in ARCHES
]
6 changes: 6 additions & 0 deletions deb/description.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
A user-friendly launcher for Bazel
Bazelisk is a wrapper for Bazel written in Go. It automatically picks a good
version of Bazel given your current working directory, downloads it from the
official server (if required) and then transparently passes through all
command-line arguments to the real Bazel binary. You can call it just like you
would call Bazel.
7 changes: 4 additions & 3 deletions stamp.sh
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
#!/bin/bash

# Use the first tag that points to the current HEAD
# if no tag is found, the latest git commit is used as a fallback
# Use the first tag that points to the current HEAD. If no tag is found, the
# summary given by `git describe` is used as a fallback (it contains the most
# recent tag name, the number of commits since, and the short git hash).

CURRENT_TAG=$(git tag -l --points-at HEAD | head -n1)
CURRENT_COMMIT=$(git rev-parse HEAD)
CURRENT_COMMIT=$(git describe --tags HEAD)

echo "STABLE_VERSION ${CURRENT_TAG:-$CURRENT_COMMIT}"
# rules_nodejs expects to read from volatile-status.txt
Expand Down

0 comments on commit 22bef8d

Please sign in to comment.