Firefox and GTK2

Jan Beich jbeich at FreeBSD.org
Sat Jun 29 00:50:54 UTC 2019


Steve Wills <swills at FreeBSD.org> writes:

> Hi,
>
> On 6/28/19 5:56 PM, Jan Beich wrote:
>> Steve Wills <swills at FreeBSD.org> writes:
>>
> [snip]
>>
>> How does libcanberra decide which gtk to use?
>>
>
> Wouldn't that be based on how it's built and what it's linked against?

We're back then. libcanberra.so.0 doesn't depend on gtk unlike
libcanberra-gtk.so.0 or libcanberra-gtk3.so.0. And Firefox doesn't
depend on libcanberra-gtk.so.0 or libcanberra-gtk3.so.0.

>>>> GTK3 is still optional in www/seamonkey and not supported in www/palemoon.
>>>
>>> Maybe the libcanberra dep could be moved out of bsd.gecko.mk and into
>>> the ports?
>>
>> Right. To Mk/Uses/gnome.mk where USE_GNOME=canberra can decide whether
>> to pull -gtk3 slave or not.
>
> USE_GNOME=canberra might make sense, yeah, although I'm not sure how
> it would decide which to use. Maybe that would have to specified.

Here's an ugly example:

$ make WITH=CANBERRA -V RUN_DEPENDS:M\*canberra\* -C www/firefox
/usr/local/lib/libcanberra-gtk3.so:audio/libcanberra-gtk3

$ make WITH=CANBERRA -V RUN_DEPENDS:M\*canberra\* -C www/palemoon
/usr/local/lib/libcanberra.so:audio/libcanberra

$ make WITH=CANBERRA -V RUN_DEPENDS:M\*canberra\* -C www/seamonkey
/usr/local/lib/libcanberra-gtk3.so:audio/libcanberra-gtk3

$ make WITH=CANBERRA\ GTK2 WITHOUT=GTK3 -V RUN_DEPENDS:M\*canberra\* -C www/seamonkey
/usr/local/lib/libcanberra.so:audio/libcanberra

diff --git a/Mk/Uses/gnome.mk b/Mk/Uses/gnome.mk
index 1d2b418fbe8d..3fbe55dfbc77 100644
--- a/Mk/Uses/gnome.mk
+++ b/Mk/Uses/gnome.mk
@@ -77,7 +77,7 @@ _USE_GNOME_ALL+= atk cairo \
 		gnomedocutils gnomesharp20 \
 		gnomevfs2 gtk-update-icon-cache gtk20 gtkhtml3 \
 		gtksharp20 gtksourceview2 gvfs libartlgpl2 libbonobo \
-		libbonoboui libglade2 libgnome \
+		libbonoboui libcanberra libglade2 libgnome \
 		libgnomecanvas libgnomekbd libgnomeprint libgnomeprintui \
 		libgnomeui libgsf libgtkhtml libidl librsvg2 libwnck \
 		libxml2 libxslt \
@@ -87,7 +87,7 @@ _USE_GNOME_ALL+= atk cairo \
 # GNOME 3 components
 _USE_GNOME_ALL+=dconf evolutiondataserver3 gnomecontrolcenter3 gnomedesktop3 \
 		gnomemenus3 gsound gtk30 gtkhtml4 gtksourceview3 \
-		gtksourceview4 libgda5 \
+		gtksourceview4 libcanberra-gtk3 libgda5 \
 		libgda5-ui libwnck3 metacity nautilus3 \
 		pygobject3 vte3
 
@@ -121,6 +121,13 @@ gnomeprefix_CONFIGURE_ARGS=--localstatedir=${GNOME_LOCALSTATEDIR} \
 atkmm_LIB_DEPENDS=	libatkmm-1.6.so:accessibility/atkmm
 atkmm_USE_GNOME_IMPL=	glibmm atk
 
+libcanberra_BUILD_DEPENDS=		${LOCALBASE}/include/canberra.h:audio/libcanberra
+libcanberra_LIB_DEPENDS=		libcanberra.so:audio/libcanberra
+libcanberra_RUN_DEPENDS=		${LOCALBASE}/lib/libcanberra.so:audio/libcanberra
+libcanberra-gtk3_BUILD_DEPENDS=	libcanberra-gtk3>0:audio/libcanberra-gtk3
+libcanberra-gtk3_LIB_DEPENDS=	libcanberra-gtk3.so:audio/libcanberra-gtk3
+libcanberra-gtk3_RUN_DEPENDS=	${LOCALBASE}/lib/libcanberra-gtk3.so:audio/libcanberra-gtk3
+
 libxml++26_LIB_DEPENDS=		libxml++-2.6.so:textproc/libxml++26
 libxml++26_USE_GNOME_IMPL=	glibmm libxml2
 
@@ -393,6 +400,14 @@ IGNORE=	cannot install: Unknown component ${component}
 _USE_GNOME+=	${${component}_USE_GNOME_IMPL} ${component}
 . endfor
 
+# XXX _USE_GNOME_IMPL cannot be used due to recursion e.g.,
+# libcanberra_USE_GNOME_IMPL+=${_USE_GNOME:S/gtk30/libcanberra-gtk3/}
+# gtk30_USE_GNOME_IMPL+=${_USE_GNOME:S/libcanberra/&-gtk3/}
+.if ${_USE_GNOME:Mgtk30}
+USE_GNOME:=		${USE_GNOME:S/libcanberra/&-gtk3/}
+_USE_GNOME:=	${_USE_GNOME:S/libcanberra/&-gtk3/}
+.endif
+
 # Setup the GTK+ API version for pixbuf loaders, input method modules,
 # and theme engines.
 PLIST_SUB+=			GTK2_VERSION="${GTK2_VERSION}" \
diff --git a/Mk/bsd.gecko.mk b/Mk/bsd.gecko.mk
index 28cd910ae90a..cbe2f74d844e 100644
--- a/Mk/bsd.gecko.mk
+++ b/Mk/bsd.gecko.mk
@@ -274,7 +274,7 @@ LDFLAGS+=		-B${LOCALBASE}/bin
 .endif
 
 .if ${PORT_OPTIONS:MCANBERRA}
-RUN_DEPENDS+=	libcanberra>0:audio/libcanberra
+USE_GNOME+=		libcanberra:run
 .endif
 
 .if ${PORT_OPTIONS:MDBUS}


More information about the freebsd-gecko mailing list