Files
chromebrew/packages/pulseaudio.rb
SupeChicken666 3ee0c82139 glibc-standalone: Rename to glibc, add a LD_PRELOAD library with useful features (#11911)
* crew: Add a LD_PRELOAD library for hijacking linker/library path

Signed-off-by: SupeChicken666 <me@supechicken666.dev>

* Add `glibc_{build,dev.lib}` to deprecated package list

Signed-off-by: SupeChicken666 <me@supechicken666.dev>

* Bump version

Signed-off-by: SupeChicken666 <me@supechicken666.dev>

* Minor changes

Signed-off-by: SupeChicken666 <me@supechicken666.dev>

* Move static libraries to CREW_LIB_PREFIX

Signed-off-by: SupeChicken666 <me@supechicken666.dev>

* Remove glibc_build from const.rb

Signed-off-by: SupeChicken666 <me@supechicken666.dev>

* Make rubocop happy

Signed-off-by: SupeChicken666 <me@supechicken666.dev>

* Fix arm build and add binaries.

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

* cleanup

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

* Adjust x86_64 unit tests to use the Nocturne M90 container image and armv7l unit tests to use the fievel M91 container image since we are using the same glibc for everything now.

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

* Adjust build containers to use the oldest glibc based containers.

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

* Add i686 builds.

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

* Add x86_64 build.

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

* Set LD_PRELOAD before running any command

Signed-off-by: SupeChicken666 <me@supechicken666.dev>

* Use File.join

Signed-off-by: SupeChicken666 <me@supechicken666.dev>

* Use File.join

Signed-off-by: SupeChicken666 <me@supechicken666.dev>

* adjust unit tests.

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

* Fix arm CREW_GLIBC_INTERPRETER

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

* Update Rhythmbox

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

* Update Rhythmbox

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

* lint

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

* Do not install crew_sudo in container.

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

* Bump version

Signed-off-by: SupeChicken666 <me@supechicken666.dev>

---------

Signed-off-by: SupeChicken666 <me@supechicken666.dev>
Signed-off-by: Satadru Pramanik <satadru@gmail.com>
Co-authored-by: Satadru Pramanik <satadru@gmail.com>
2025-05-20 10:21:15 +00:00

127 lines
4.8 KiB
Ruby

require 'buildsystems/meson'
class Pulseaudio < Meson
description 'PulseAudio is a sound system for POSIX OSes, meaning that it is a proxy for your sound applications.'
homepage 'https://www.freedesktop.org/wiki/Software/PulseAudio/'
version '17.0-1'
license 'LGPL-2.1 and GPL-2'
compatibility 'aarch64 armv7l x86_64'
source_url 'https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git'
git_hashtag "v#{version.split('-').first}"
binary_compression 'tar.zst'
binary_sha256({
aarch64: 'e7b80a2ed41c08c7e702459361bedb07946773631ba317f62ec3951b590f4fab',
armv7l: 'e7b80a2ed41c08c7e702459361bedb07946773631ba317f62ec3951b590f4fab',
x86_64: 'c779ca6d9f8a108dd12523185e33b683e1aa3e72abd41b06f56262a8fd72986b'
})
depends_on 'alsa_lib' # R
# depends_on 'alsa_plugins' => :build
depends_on 'avahi' # R
depends_on 'check' => :build
depends_on 'cras' # L
depends_on 'dbus' # R
depends_on 'elogind' # R
depends_on 'eudev' # R
depends_on 'gcc_lib' # R
depends_on 'glibc' # R
depends_on 'glib' # R
# depends_on 'gsettings_desktop_schemas' # L
depends_on 'gstreamer' # R
depends_on 'jack' # R
depends_on 'json_c' => :build
depends_on 'libcap' # R
depends_on 'libgconf' => :build
depends_on 'libice' # R
depends_on 'libsm' # R
depends_on 'libsndfile' # R
depends_on 'libsoxr' # R
depends_on 'libtool' # R
depends_on 'libx11' # R
depends_on 'libxcb' # R
depends_on 'libxfixes' => :build
depends_on 'libxtst' # R
depends_on 'openssl' # R
# depends_on 'pipewire' # R
depends_on 'speexdsp' # R
depends_on 'tcpwrappers' # R
depends_on 'tdb' # R
depends_on 'valgrind' => :build
git_fetchtags
meson_options "-Dsystem_user=chronos \
-Dsystem_group=cras \
-Daccess_group=cras \
-Dbluez5=disabled \
-Dalsa=enabled \
-Dgstreamer=disabled \
-Delogind=enabled \
-Dtests=false \
-Dudevrulesdir=#{CREW_PREFIX}/libexec/rules.d \
-Dalsadatadir=#{CREW_PREFIX}/share/alsa-card-profile \
-Dlocalstatedir=#{CREW_PREFIX}/var/run"
def self.check
# 39/50 thread-test FAIL 4.02s exit status 1
# >>> MALLOC_PERTURB_=232 MAKE_CHECK=1 /usr/local/tmp/crew/pulseaudio-14.2.tar.xz.dir/pulseaudio-14.2/builddir/src/tests/thread-test
# ――――――――――――――――――――――――――――――――――――― ✀ ―――――――――――――――――――――――――――――――――――――
# stdout:
# Running suite(s): Thread
# 0%: Checks: 1, Failures: 0, Errors: 1
# ../src/tests/thread-test.c:108:E:thread:thread_test:0: (after this point) Test timeout expired
# stderr:
# loop-init
# once!
# system 'ninja -C builddir test || true'
end
def self.install
system "DESTDIR=#{CREW_DEST_DIR} #{CREW_NINJA} -C builddir install"
pulseaudio_daemon_conf = <<~PAUDIO_DAEMON_CONF_HEREDOC
# Replace these with the proper values
exit-idle-time = 10 # Exit as soon as unneeded
flat-volumes = yes # Prevent messing with the master volume
PAUDIO_DAEMON_CONF_HEREDOC
File.write("#{CREW_DEST_PREFIX}/etc/pulse/daemon.conf", pulseaudio_daemon_conf, perm: 0o666)
pulseaudio_client_conf = <<~PAUDIO_CLIENT_CONF_HEREDOC
# Replace these with the proper values
# Applications that uses PulseAudio *directly* will spawn it,
# use it, and pulse will exit itself when done because of the
# exit-idle-time setting in daemon.conf
autospawn = yes
PAUDIO_CLIENT_CONF_HEREDOC
File.write("#{CREW_DEST_PREFIX}/etc/pulse/client.conf", pulseaudio_client_conf, perm: 0o666)
pulseaudio_default_pa = <<~PAUDIO_DEFAULT_PA_HEREDOC
# Replace the *entire* content of this file with these few lines and
# read the comments
.fail
# Set tsched=0 here if you experience glitchy playback. This will
# revert back to interrupt-based scheduling and should fix it.
#
# Replace the device= part if you want pulse to use a specific device
# such as "dmix" and "dsnoop" so it doesn't lock an hw: device.
# INPUT/RECORD
load-module module-alsa-source device="default" tsched=1
# OUTPUT/PLAYBACK
load-module module-alsa-sink device="default" tsched=1
# Accept clients -- very important
load-module module-native-protocol-unix
.nofail
.ifexists module-x11-publish.so
# Publish to X11 so the clients know how to connect to Pulse. Will
# clear itself on unload.
load-module module-x11-publish
.endif
PAUDIO_DEFAULT_PA_HEREDOC
File.write("#{CREW_DEST_PREFIX}/etc/pulse/default.pa", pulseaudio_default_pa, perm: 0o666)
end
end