...

Text file src/edge-infra.dev/cmd/sds/audio/pipewire/BUILD.bazel

Documentation: edge-infra.dev/cmd/sds/audio/pipewire

     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