On Tue, 18 Mar 2025 14:14:02 +0000
Stuart Henderson <s...@spacehopper.org> wrote:

> On 2025/03/18 17:04, emu...@disroot.org wrote:
> > On Mon, 17 Mar 2025 19:53:39 +0000
> > Stuart Henderson <s...@spacehopper.org> wrote:
> > 
> > > adding port maintainer to CCs;
> > > 
> > > On 2025/03/18 00:35, emu...@disroot.org wrote:
> > > > I would like to try and enable the Bonjour/mDNS protocol for 
> > > > net/pidgin, to trial it as a serverless instant messaging solution for 
> > > > a deployment of diskless OpenBSD clients. 
> > > > 
> > > > Looking back through the archives, it seems Bonjour was disabled in the 
> > > > port as long ago as 2008 (when 2.4.2 was committed), though no reason 
> > > > was mentioned in the commit message.
> > > > 
> > > > I naively tried to remove the --disable-avahi line in the 
> > > > CONFIGURE_ARGS, and adding avahi-client and avahi-glib to WANTLIBS for 
> > > > libpurple, as this is what the configure script seems to look for:
> > > 
> > > WANTLIB updates are normally done based on "make port-lib-depends-check"
> > > but you'll need to take care of PLISTs fiiii.
> > > 
> > > > $ diff Makefile.orig Makefile 
> > > > 43c43
> > > > < WANTLIB-libpurple= crypto gadu meanwhile ssl silc silcclient 
> > > > ${WANTLIB}
> > > > ---
> > > > > , = avahi-glib avahi-client crypto gadu meanwhile ssl silc silcclient 
> > > > > ${WANTLIB}
> > > > 64a65
> > > > >                       net/avahi \
> > > > 76,77c77
> > > > < CONFIGURE_ARGS+= --disable-avahi \
> > > > <                --disable-cap \
> > > > ---
> > > > > CONFIGURE_ARGS+= --disable-cap \
> > > > 
> > > > The Bonjour plugin gets built, and there are no build errors. But on 
> > > > launching Pidgin, and attempting to create a new account, Bonjour is 
> > > > absent from the list of protocols. Avahi is installed and avahi-daemon 
> > > > is running. 
> > > > 
> > > > No doubt this is because I have left out something essential in the 
> > > > Makefile due to lack of porting experience. Can anyone assist with 
> > > > advice on how to proceed?
> > > 
> > > A new plugin module is built, libbonjour.so, this needs adding to the
> > > relevant PLIST. "make uodate-plist" is the normal way to update this but
> > > it sometimes needs tweaking - in this case it ends up in the wrong PLIST
> > > by default. So you'd need to add
> > > 
> > > @so lib/purple-2/libbonjour.so
> > > 
> > > to PLIST-libpurple, and then update wantlib as mentioned above.
> > > 
> > > > Is there a particular reason for disabling Bonjour in Pidgin, such as 
> > > > security concerns? The protocol won't be used by Pidgin unless an 
> > > > account is added with that protocol, as I understand it. If it can be 
> > > > simply re-enabled and there are no blocking concerns, can Bonjour 
> > > > support be added back to the port?
> > > 
> > > Prior to that the port would have picked up avahi and built the extra
> > > plugin if avahi was present during configure, but it wouldn't be
> > > included in the package. This causes problems during bulk builds where
> > > other packages are added/removed all the time. So that commit didn't
> > > change anything for packages, just fix a sporadic problem.
> > > 
> > > Regarding adding it, the question would be about whether the extra
> > > runtime dependency is wanted. Over to the maintainer for that.
> > > 
> > > > thanks in advance for all assistance
> > > > 
> > > > -- 
> > > > Chris Billington 
> > > > 
> > 
> > Thanks for the help Stuart.
> > I added avahi-common avahiclient and avahi-glib to WANTLIB-libpurple
> > make port-lib-depends-check   gives:
> > 
> > libpurple-2.14.13p1(net/pidgin,-libpurple):
> > Bogus WANTLIB: avahi-glib.0 (/usr/local/lib/purple-2/libbonjour.so) (NOT 
> > REACHABLE)
> > *** Error 1 in target 'port-lib-depends-check' (ignored)
> > 
> > But if I remove avahi-glib from WANTLIB, it complains:
> > 
> > libpurple-2.14.13p1(net/pidgin,-libpurple):
> > Missing lib: avahi-glib.0 (/usr/local/lib/purple-2/libbonjour.so) (NOT 
> > REACHABLE)
> > *** Error 1 in target 'port-lib-depends-check' (ignored)
> > 
> > But the package avahi-glib is installed and is used in the build below.
> > I haven't been able to work out why this happens.
> > 
> > Trying to follow the steps in the Porters Guide, I made the manual changes 
> > to PLIST as described, then
> > 
> > make fake (libbonjour.so gets built)
> > 
> > make update-plist (and confirmed @so lib/purple-2/libbonjour.so still 
> > exists in pkg/PLIST-libpurple:
> > 
> > grep bonjour pkg/*                                                          
> >                  
> > pkg/PLIST-libpurple:@so lib/purple-2/libbonjour.so
> > pkg/PLIST-libpurple.orig:@so lib/purple-2/libbonjour.so
> > 
> > But doing amake clean,  'make build' followed by 'doas make install', 
> > libbonjour.so doesn't get installed in /usr/local/lib/purple-2, so there is 
> > still no bonjour protocol available when the application is run.
> > 
> > No doubt I am doing something silly...? But what?
> 
> Diff (with a little other cleanup) looks like this. Some people
> do have _opinions_ on avahi though.
> 
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/net/pidgin/Makefile,v
> diff -u -p -r1.167 Makefile
> --- Makefile  28 Jan 2025 14:49:51 -0000      1.167
> +++ Makefile  18 Mar 2025 14:12:54 -0000
> @@ -14,9 +14,9 @@ FULLPKGPATH$i= ${PKGPATH},$i${FLAVOR_EXT
>  CATEGORIES=  net
>  SITES=               ${SITE_SOURCEFORGE:=pidgin/}
>  EXTRACT_SUFX=        .tar.bz2
> -REVISION-finch=      1
> -REVISION-libpurple= 2
> -REVISION-main=       1
> +REVISION-finch=      2
> +REVISION-libpurple= 3
> +REVISION-main=       2
>  
>  SHARED_LIBS= jabber          0.0 \
>               purple          7.1 \
> @@ -31,7 +31,7 @@ PERMIT_PACKAGE=     Yes
>  
>  COMPILER=    base-clang ports-gcc
>  
> -WANTLIB=     c dbus-1 dbus-glib-1 execinfo ffi gio-2.0 glib-2.0 gmodule-2.0 \
> +WANTLIB=     c dbus-1 dbus-glib-1 ffi gio-2.0 glib-2.0 gmodule-2.0 \
>               gobject-2.0 gthread-2.0 iconv idn intl lzma m pcre2-8 pthread \
>               xml2 z
>  WANTLIB-main=        X11 Xau Xdmcp ICE SM Xcomposite Xcursor Xdamage Xext 
> Xfixes \
> @@ -40,7 +40,8 @@ WANTLIB-main=       X11 Xau Xdmcp ICE SM Xcomp
>               gtk-x11-2.0 harfbuzz jpeg pango-1.0 pangocairo-1.0 \
>               pangoft2-1.0 pixman-1 png purple xcb-render xcb-shm xcb \
>               ${COMPILER_LIBCXX} ${WANTLIB}
> -WANTLIB-libpurple= crypto gadu meanwhile ssl silc silcclient ${WANTLIB}
> +WANTLIB-libpurple= avahi-client avahi-common avahi-glib crypto gadu \
> +             meanwhile silc silcclient ssl ${WANTLIB}
>  WANTLIB-finch=       X11 curses gnt panel purple xcb ${WANTLIB}
>  
>  MODULES=     textproc/intltool \
> @@ -56,12 +57,12 @@ LIB_DEPENDS-main= ${LIB_DEPENDS} \
>                       x11/gtk+2
>  RUN_DEPENDS-finch=   # empty
>  LIB_DEPENDS-finch=   ${LIB_DEPENDS} \
> -                     ${MODPY_LIB_DEPENDS} \
>                       devel/libgnt
>  RUN_DEPENDS-libpurple=       ${MODGCONF2_RUN_DEPENDS}
>  LIB_DEPENDS-libpurple=       ${LIB_DEPENDS} \
>                       devel/libidn \
>                       devel/silc-toolkit \
> +                     net/avahi,-glib \
>                       net/meanwhile \
>                       net/libgadu
>  
> @@ -73,8 +74,7 @@ USE_GMAKE=  Yes
>  CONFIGURE_STYLE= autoreconf
>  AUTOCONF_VERSION= 2.71
>  AUTOMAKE_VERSION= 1.16
> -CONFIGURE_ARGS+= --disable-avahi \
> -              --disable-cap \
> +CONFIGURE_ARGS+= --disable-cap \
>                --disable-doxygen \
>                --disable-farstream \
>                --disable-gevolution \
> Index: pkg/PLIST-libpurple
> ===================================================================
> RCS file: /cvs/ports/net/pidgin/pkg/PLIST-libpurple,v
> diff -u -p -r1.28 PLIST-libpurple
> --- pkg/PLIST-libpurple       11 Mar 2022 19:46:55 -0000      1.28
> +++ pkg/PLIST-libpurple       18 Mar 2025 14:12:54 -0000
> @@ -90,6 +90,7 @@ lib/libpurple.la
>  lib/pkgconfig/purple.pc
>  lib/purple-2/
>  @so lib/purple-2/autoaccept.so
> +@so lib/purple-2/libbonjour.so
>  @so lib/purple-2/buddynote.so
>  @so lib/purple-2/dbus-example.so
>  @so lib/purple-2/idle.so

thanks very much indeed Stuart.
+                       net/avahi,-glib \
This was the missing piece. So avahi-glib is a "Multi-package" rather than 
something that exists in its own right?
make port-lib-depends-check still seems to suggest execinfo be in WANTLIB. This 
seems to be some sort of backtracing utility. By removing it, are you 
indicating that it's non-essential? Bonjour in Pidgin now works fine in my 
tests, without enabling Multicast. 
I also have my reservations about avahi (and complexity-adding things like 
gvfs, d-bus, and other Gnome-y stuff). In the current use case I am 
investigating, of Diskless clients running an Xfce desktop, it already gets 
pulled in by packages like cups-browsed, used to discover printer queues set up 
on the server in a configurationless manner. Similarly gvfs/dbus are required 
for the Trash support in file managers that basic-level users expect to have. 
My approach to this mDNS necessary evil is to confine it to the client network 
with pf.
Maybe the port could have a flavor added to include Bonjour, so that 
avahi-adverse folks can avoid it? But if a user has got as far as installing 
Pidgin, they probably have a load of desktop stuff anyway.
-- 
Chris Billington

Reply via email to