1load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
2load("@rules_apko//apko:defs.bzl", "apko_image")
3load("@rules_pkg//:pkg.bzl", "pkg_tar")
4load("//hack/build/rules/container:index.bzl", "container_push", "go_oci_image")
5
6# Pull latest alpine image and extracts tar file into /tmp
7apko_image(
8 name = "configured_alpine_image",
9 config = "apko.yaml",
10 contents = "@audio_lock//:contents",
11 tag = "configured_alpine_image:latest",
12 tags = ["requires-network"],
13)
14
15go_binary(
16 name = "pipewire",
17 embed = [":pipewire_lib"],
18 visibility = ["//visibility:public"],
19)
20
21go_library(
22 name = "pipewire_lib",
23 srcs = ["main.go"],
24 importpath = "edge-infra.dev/cmd/sds/audio/pipewire",
25 visibility = ["//visibility:private"],
26 deps = [
27 "//pkg/lib/fog",
28 "//pkg/sds/audio/k8s/controllers/pipewire",
29 "@io_k8s_sigs_controller_runtime//:controller-runtime",
30 ],
31)
32
33# Packages configuration files for pipewire and wireplumber into tar file.
34
35# Most of the files are for disabling D-Bus https://wiki.alpinelinux.org/wiki/PipeWire#Disable_D-Bus_support
36# One of them sets up a socket for pulseaudio clients to connect to.
37pkg_tar(
38 name = "config_files",
39 extension = "tgz",
40 files = {
41 ":config/pipewire/pipewire.conf.d/01-disable-dbus.conf": "/etc/pipewire/pipewire.conf.d/01-disable-dbus.conf",
42 ":config/pipewire/pipewire-pulse.conf.d/01-set-pulseaudio-socket.conf": "/etc/pipewire/pipewire-pulse.conf.d/01-set-pulseaudio-socket.conf",
43 ":config/wireplumber/wireplumber.conf": "/etc/wireplumber/wireplumber.conf",
44 ":config/wireplumber/main.lua.d/51-disable-alsa-reserve.lua": "/etc/wireplumber/main.lua.d/51-disable-alsa-reserve.lua",
45 ":config/wireplumber/main.lua.d/51-disable-flatpak-portal.lua": "/etc/wireplumber/main.lua.d/51-disable-flatpak-portal.lua",
46 ":config/wireplumber/main.lua.d/98-set-default-volume.lua": "/etc/wireplumber/main.lua.d/98-set-default-volume.lua",
47 ":config/wireplumber/main.lua.d/99-set-default-sink.lua": "/etc/wireplumber/main.lua.d/99-set-default-sink.lua",
48 },
49 mode = "755",
50 tags = [
51 "manual",
52 "no-remote-cache",
53 ],
54)
55
56go_oci_image(
57 name = "alpine_pipewire_image",
58 base = ":configured_alpine_image",
59 embed = [":pipewire_lib"],
60 tags = [
61 "manual",
62 "no-remote-cache",
63 ],
64 tars = [":config_files"],
65)
66
67# Creates and pushes final image named 'audio' to repository
68container_push(
69 image = ":alpine_pipewire_image",
70 image_name = "alpine-pipewire",
71 repository_file = "//hack/build/rules/container:workloads-repo",
72 tags = [
73 "manual",
74 "no-remote-cache",
75 ],
76)
View as plain text