mirror of
https://github.com/chromebrew/chromebrew.git
synced 2026-01-08 23:18:10 -05:00
107 lines
4.4 KiB
Ruby
107 lines
4.4 KiB
Ruby
require 'package'
|
|
|
|
class Libcanberra < Package
|
|
description 'XDG Sound Theme and Name Specification library implementation'
|
|
homepage 'http://0pointer.de/lennart/projects/libcanberra/'
|
|
version '0.30-1'
|
|
license 'LGPL-2.1+'
|
|
compatibility 'aarch64 armv7l x86_64'
|
|
source_url 'http://pkgs.fedoraproject.org/repo/pkgs/libcanberra/libcanberra-0.30.tar.xz/34cb7e4430afaf6f447c4ebdb9b42072/libcanberra-0.30.tar.xz'
|
|
source_sha256 'c2b671e67e0c288a69fc33dc1b6f1b534d07882c2aceed37004bf48c601afa72'
|
|
binary_compression 'tar.xz'
|
|
|
|
binary_sha256({
|
|
aarch64: '2a8d173a95f304fdfe202184fbf842d0f5f543a273c18df91bfd52109d16d8ca',
|
|
armv7l: '2a8d173a95f304fdfe202184fbf842d0f5f543a273c18df91bfd52109d16d8ca',
|
|
x86_64: '8fb64b8552e9340a97fe1eaae7ca4f8326dcb4bcc534737847c9b151c3876fcf'
|
|
})
|
|
|
|
depends_on 'pygtk'
|
|
depends_on 'libvorbis'
|
|
depends_on 'gstreamer'
|
|
depends_on 'alsa_lib'
|
|
depends_on 'tdb'
|
|
depends_on 'pulseaudio'
|
|
depends_on 'eudev'
|
|
depends_on 'vala'
|
|
|
|
def self.patch
|
|
# via https://github.com/jgibbons94/stable-guix/commit/ec82d58526c27a9ca26f6c5e39cec90a48cbc1cc
|
|
@libcanberra_wayland_crash_patch = <<~LIBCANBERRA_WAYLAND_PATCH_HEREDOC
|
|
# This patch comes from upstream commit c0620e432650e81062c1967cc669829dbd29b310.
|
|
# gtk: Don't assume all GdkDisplays are GdkX11Displays: broadway/wayland
|
|
#{' '}
|
|
--- src/canberra-gtk-module.c.orig
|
|
+++ src/canberra-gtk-module.c
|
|
@@ -307,6 +307,11 @@ static gint window_get_desktop(GdkDisplay *d, GdkWindow *w) {
|
|
guchar *data = NULL;
|
|
gint ret = -1;
|
|
#{' '}
|
|
+#ifdef GDK_IS_X11_DISPLAY
|
|
+ if (!GDK_IS_X11_DISPLAY(d))
|
|
+ return 0;
|
|
+#endif
|
|
+
|
|
if (XGetWindowProperty(GDK_DISPLAY_XDISPLAY(d), GDK_WINDOW_XID(w),
|
|
gdk_x11_get_xatom_by_name_for_display(d, "_NET_WM_DESKTOP"),
|
|
0, G_MAXLONG, False, XA_CARDINAL, &type_return,
|
|
@@ -335,6 +340,11 @@ static gint display_get_desktop(GdkDisplay *d) {
|
|
guchar *data = NULL;
|
|
gint ret = -1;
|
|
#{' '}
|
|
+#ifdef GDK_IS_X11_DISPLAY
|
|
+ if (!GDK_IS_X11_DISPLAY(d))
|
|
+ return 0;
|
|
+#endif
|
|
+
|
|
if (XGetWindowProperty(GDK_DISPLAY_XDISPLAY(d), DefaultRootWindow(GDK_DISPLAY_XDISPLAY(d)),
|
|
gdk_x11_get_xatom_by_name_for_display(d, "_NET_CURRENT_DESKTOP"),
|
|
0, G_MAXLONG, False, XA_CARDINAL, &type_return,
|
|
@@ -365,6 +375,11 @@ static gboolean window_is_xembed(GdkDisplay *d, GdkWindow *w) {
|
|
gboolean ret = FALSE;
|
|
Atom xembed;
|
|
#{' '}
|
|
+#ifdef GDK_IS_X11_DISPLAY
|
|
+ if (!GDK_IS_X11_DISPLAY(d))
|
|
+ return FALSE;
|
|
+#endif
|
|
+
|
|
/* Gnome Panel applets are XEMBED windows. We need to make sure we
|
|
* ignore them */
|
|
#{' '}
|
|
--- src/canberra-gtk.c.orig
|
|
+++ src/canberra-gtk.c
|
|
@@ -185,6 +185,11 @@ static gint window_get_desktop(GdkDisplay *d, GdkWindow *w) {
|
|
guchar *data = NULL;
|
|
gint ret = -1;
|
|
#{' '}
|
|
+#ifdef GDK_IS_X11_DISPLAY
|
|
+ if (!GDK_IS_X11_DISPLAY(d))
|
|
+ return 0;
|
|
+#endif
|
|
+
|
|
if (XGetWindowProperty(GDK_DISPLAY_XDISPLAY(d), GDK_WINDOW_XID(w),
|
|
gdk_x11_get_xatom_by_name_for_display(d, "_NET_WM_DESKTOP"),
|
|
0, G_MAXLONG, False, XA_CARDINAL, &type_return,
|
|
LIBCANBERRA_WAYLAND_PATCH_HEREDOC
|
|
File.write('libcanberra-wayland-crash.patch', @libcanberra_wayland_crash_patch, perm: 0o555)
|
|
system 'patch -p0 < libcanberra-wayland-crash.patch'
|
|
end
|
|
|
|
def self.build
|
|
system "env #{CREW_ENV_OPTIONS} \
|
|
./configure #{CREW_CONFIGURE_OPTIONS} \
|
|
--enable-alsa \
|
|
--enable-null \
|
|
--disable-lynx \
|
|
--enable-gstreamer \
|
|
--disable-oss \
|
|
--with-builtin=dso"
|
|
system "make -j#{CREW_NPROC}"
|
|
end
|
|
|
|
def self.install
|
|
system "make install DESTDIR=#{CREW_DEST_DIR}"
|
|
end
|
|
end
|