LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Slackware (https://www.linuxquestions.org/questions/slackware-14/)
-   -   Pidgin: no Gadu-Gadu protocol after upgrading to 2.10.10 (https://www.linuxquestions.org/questions/slackware-14/pidgin-no-gadu-gadu-protocol-after-upgrading-to-2-10-10-a-4175523815/)

arcctgx 10-30-2014 01:47 PM

Pidgin: no Gadu-Gadu protocol after upgrading to 2.10.10
 
I upgraded pidgin-2.10.9 to 2.10.10 on Slackware64-14.1 using slackpkg. Now when I start the application the buddy list is empty. When I open "Manage accounts", my previously configured Gadu-Gadu account is listed as unknown protocol. In the "Modify account" window, Gadu-Gadu is not in the list of available protocols. Pidgin's debug window doesn't show any messages that could be related to the issue. Build information window states:

Quote:

Arguments to ./configure: '--prefix=/usr' '--libdir=/usr/lib64' '--sysconfdir=/etc' '--mandir=/usr/man' '--enable-dot=no' '--disable-schemas-install' '--enable-dbus' '--enable-gnutls=no' '--enable-nss=yes' '--with-nss-includes=/usr/include/nss' '--with-nss-libs=/usr/lib64/' '--with-nspr-includes=/usr/include/nspr' '--with-nspr-libs=/usr/lib64/' '--disable-vv' '--enable-gtkspell' '--enable-cyrus-sasl' '--enable-perl' '--disable-meanwhile' '--disable-avahi' '--disable-nm' '--program-prefix=' '--program-suffix=' '--build=x86_64-slackware-linux' 'build_alias=x86_64-slackware-linux' 'CFLAGS=-O2 -fPIC' 'PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:/usr/lib64/pkgconfig'

Print debugging messages: No
Plugins: Enabled
SSL: SSL support is present.

Library Support
Cyrus SASL: Enabled
D-Bus: Enabled
Evolution Addressbook: Disabled
Gadu-Gadu library (libgadu): Internal
GtkSpell: Enabled
GnuTLS: Disabled
GStreamer: Enabled
Mono: Disabled
NetworkManager: Disabled
Network Security Services (NSS): Enabled
Perl: Enabled
Tcl: Enabled
Tk: Enabled
UTF-8 DNS (IDN): Enabled
Voice and Video: Disabled
X Session Management: Enabled
XScreenSaver: Enabled
Zephyr library (libzephyr): Internal
Zephyr uses Kerberos: No
That's a standard Slackware64-14.1 package. After downgrading pidgin to 2.10.7 everything is back to normal (I can't downgrade to exactly 2.10.9 anymore, that package is gone from ftp servers).

Does anyone else have this issue? I'm trying to figure out whether it's a Slackware64 bug, an upstream bug, or somehow my fault.

willysr 10-30-2014 04:27 PM

In 2.10.10, the developer bumped libgadu internal to 1.12.0.
I'm not sure why this caused it to break

Anyway, i tried to make a SlackBuild for libgadu
Code:

#!/bin/sh

# Copyright 2014 Willy Sudiarto Raharjo <willysr@slackware-id.org>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
#  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
#  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
#  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
#  EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
#  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
#  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
#  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
#  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

PKGNAM=libgadu
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}

# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
  case "$( uname -m )" in
    i?86) export ARCH=i486 ;;
    arm*) export ARCH=arm ;;
    # Unless $ARCH is already set, use uname -m for all other archs:
      *) export ARCH=$( uname -m ) ;;
  esac
fi

NUMJOBS=${NUMJOBS:-" -j6 "}

CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-${PKGNAM}
rm -rf $PKG
mkdir -p $TMP $PKG

if [ "$ARCH" = "i486" ]; then
  SLKCFLAGS="-O2 -march=i486 -mtune=i686"
  LIBDIRSUFFIX=""
  ARCHQUADLET=""
elif [ "$ARCH" = "s390" ]; then
  SLKCFLAGS="-O2"
  LIBDIRSUFFIX=""
  ARCHQUADLET=""
elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2 -fPIC"
  LIBDIRSUFFIX="64"
  ARCHQUADLET=""
elif [ "$ARCH" = "arm" ]; then
  SLKCFLAGS="-O2 -march=armv4t"
  LIBDIRSUFFIX=""
  ARCHQUADLET="-gnueabi"
else
  SLKCFLAGS="-O2"
  LIBDIRSUFFIX=""
  ARCHQUADLET=""
fi

cd $TMP
rm -rf ${PKGNAM}-${VERSION}
tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
cd ${PKGNAM}-$VERSION || exit 1

# Make sure ownerships and permissions are sane:
chown -R root:root .
find . \
  \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
  -exec chmod 755 {} \; -o \
  \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
  -exec chmod 644 {} \;

CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
  --prefix=/usr \
  --libdir=/usr/lib${LIBDIRSUFFIX} \
  --sysconfdir=/etc \
  --mandir=/usr/man \
  --enable-static=no \
  --disable-tests \
  --build=$ARCH-slackware-linux$ARCHQUADLET || exit 1

# Build and install:
make $NUMJOBS || make || exit 1
make install DESTDIR=$PKG || exit 1

# Strip binaries:
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
  | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null

# Compress and link manpages, if any:
if [ -d $PKG/usr/man ]; then
  ( cd $PKG/usr/man
    for manpagedir in $(find . -type d -name "man*") ; do
      ( cd $manpagedir
        for eachpage in $( find . -type l -maxdepth 1) ; do
          ln -s $( readlink $eachpage ).gz $eachpage.gz
          rm $eachpage
        done
        gzip -9 *.*
      )
    done
  )
fi

# Compress info files, if any:
if [ -d $PKG/usr/info ]; then
  ( cd $PKG/usr/info
    rm -f dir
    gzip -9 *
  )
fi

# Add a documentation directory:
mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
cp -a \
  AUTHORS COPYING ChangeLog NEWS README \
  $PKG/usr/doc/${PKGNAM}-$VERSION

mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc

cd $PKG
/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz

Code:

# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description.  Line
# up the first '|' above the ':' following the base package name, and the '|'
# on the right side marks the last column you can put a character in.  You must
# make exactly 11 lines for the formatting to be correct.  It's also
# customary to leave one space after the ':'.

      |-----handy-ruler------------------------------------------------------|
libgadu: libgadu (Gadu Client Library)
libgadu:
libgadu: This library implements the client side of the Gadu-Gadu protocol
libgadu:
libgadu:
libgadu:
libgadu:
libgadu:
libgadu: For more info, see:  http://libgadu.net/
libgadu:
libgadu:

after installing libgadu and recompile pidgin, i got
Quote:

Pidgin 2.10.10 (libpurple 2.10.10)
unknown

Build Information
Arguments to ./configure: '--prefix=/usr' '--libdir=/usr/lib' '--sysconfdir=/etc' '--mandir=/usr/man' '--enable-dot=no' '--disable-schemas-install' '--enable-dbus' '--enable-gnutls=no' '--enable-nss=yes' '--with-nss-includes=/usr/include/nss' '--with-nss-libs=/usr/lib/' '--with-nspr-includes=/usr/include/nspr' '--with-nspr-libs=/usr/lib/' '--disable-vv' '--enable-gtkspell' '--enable-cyrus-sasl' '--enable-perl' '--disable-meanwhile' '--disable-avahi' '--disable-nm' '--program-prefix=' '--program-suffix=' '--build=i486-slackware-linux' 'build_alias=i486-slackware-linux' 'CFLAGS=-O2 -march=i486 -mtune=i686' 'LDFLAGS=-lgadu' 'PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig'
Print debugging messages: No
Plugins: Enabled
SSL: SSL support is present.

Library Support
Cyrus SASL: Enabled
D-Bus: Enabled
Evolution Addressbook: Disabled
Gadu-Gadu library (libgadu): External
GtkSpell: Enabled
GnuTLS: Disabled
GStreamer: Enabled
Mono: Disabled
NetworkManager: Disabled
Network Security Services (NSS): Enabled
Perl: Enabled
Tcl: Enabled
Tk: Enabled
UTF-8 DNS (IDN): Enabled
Voice and Video: Disabled
X Session Management: Enabled
XScreenSaver: Enabled
Zephyr library (libzephyr): Internal
Zephyr uses Kerberos: No
please check if installing libgadu and recompiling pidgin solves your problem?

elesmod 11-01-2014 07:29 AM

I also have this problem. I've checked on my laptop, which is running Debian, and there gadu protocol on Pidgin 2.10.10 works fine. I'm going to check the slackbuild willysr wrote.

elesmod 11-01-2014 08:21 AM

It worked! Thanks willysr!

arcctgx 11-01-2014 11:24 AM

Thanks for your replies.

This problem is not Slackware specific, I'm also having the same issue on Gentoo. It seems that since version 2.10.10 there's no Gadu-Gadu protocol support when Pidgin's internal libgadu is used. As willysr and elesmod proved, using external libgadu fixes this. I guess this problem should be reported upstream.

mancha 11-04-2014 04:18 AM

Quote:

Originally Posted by arcctgx (Post 5262004)
I upgraded pidgin-2.10.9 to 2.10.10 on Slackware64-14.1 using slackpkg. Now when I start the application the buddy list is empty. When I open "Manage accounts", my previously configured Gadu-Gadu account is listed as unknown protocol. In the "Modify account" window, Gadu-Gadu is not in the list of available protocols...I'm trying to figure out whether it's a Slackware64 bug, an upstream bug, or somehow my fault.

I looked into this and found Pidgin's GnuTLS checking logic is a bit broken now because of this commit. Basically, the problem manifests when
you build Pidgin without GnuTLS (Slackware uses NSS for SSL support) and the internal libgadu (as Slackware does).

You can fix with pidgin-2.10.10_internal-libgadu.diff. Download the patch and add line 82 to pidgin.SlackBuild:

Code:

80    -exec chmod 644 {} \;
81
82  patch -p1 --verbose < $CWD/pidgin-2.10.10_internal-libgadu.diff || exit 1
83
84  CFLAGS="$SLKCFLAGS" \
85  CXXFLAGS="$SLKCFLAGS" \
86  ./configure \

However, there's a catch. The patch does fix Slackware's Pidgin package but note that Gadu-Gadu communications won't be encrypted. I
am not familiar with Gadu-Gadu but wikipedia says SSL support in G-G is new and experimental. If you know Polish you can look through
official docs and confirm.

Why? Because libgadu only supports GnuTLS & OpenSSL while Pidgin/libpurple only supports GnuTLS & NSS (they intentionally don't support
OpenSSL). Seems the only way to have SSL for everything when using the internal libgadu is by building Pidgin against GnuTLS (not NSS).

Note: Slackware's Pidgin has not had SSL-capable Gadu-Gadu since at least Slackware 14.0 because that is when it started building Pidgin
against NSS. Earlier Slackware versions might have had SSL-ized Gadu-Gadu depending on when SSL was introduced to Gadu-Gadu and
when it was adopted by Pidgin.

You might want to let Pat know Slackware's Pidgin package is broken as is. He has a few options:
  • fix with the above patch (but then Gadu-Gadu will continue to lack SSL support)
  • build Pidgin against GnuTLS instead of NSS (then everything will link GnuTLS)
  • ship a system libgadu library and build Pidgin against that (libgadu can link GnuTLS and Pidgin can link NSS)
Also, you can let Pidgin upstream know its GnuTLS checking logic needs fixing.

--mancha

arcctgx 11-04-2014 11:19 AM

mancha, that's very informative, thank you!

I already opened a ticket at Pidgin's Trac, I just forgot to mention this in this thread. In case anyone wants to take a look, it's here: https://developer.pidgin.im/ticket/16431. One of the devs indeed suspects that the issue has something to do with GnuTLS. I'm going to try to help as much as I can, but I believe it would be great if others could contribute as well. :)

Regarding encryption in Gadu-Gadu, I must confess that I don't know much about it. I just remember that it has been "considered" for a very long time, but I didn't follow the development of the official client closely. Right now I found this blog post. Abbreviating and paraphrasing, it says that since GG10 build 784 the official client supports SSL encryption with key size of 256 bits. I have no idea if Pidgin ever supported this.

mancha 11-04-2014 01:53 PM

Quote:

Originally Posted by arcctgx (Post 5264426)
mancha, that's very informative, thank you!

You're welcome.

Quote:

Originally Posted by arcctgx (Post 5264426)
I already opened a ticket at Pidgin's Trac, I just forgot to mention this in this thread. In case anyone wants to take a look, it's here: https://developer.pidgin.im/ticket/16431. One of the devs indeed suspects that the issue has something to do with GnuTLS. I'm going to try to help as much as I can, but I believe it would be great if others could contribute as well.

I just posted my analysis to the ticket you linked.

--mancha

EDIT: upstream fixed with this commit.

mancha 11-06-2014 11:06 PM

[deleted]

mancha 11-18-2014 05:43 PM

This thread should be marked solved. Pat pushed upgrades on 20141113 for Slackware 14.0, 14.1, and -current that address the issue.

--mancha

aaazen 11-26-2014 11:49 AM

Quote:

Originally Posted by mancha (Post 5271633)
This thread should be marked solved. Pat pushed upgrades on 20141113 for Slackware 14.0, 14.1, and -current that address the issue.

--mancha

I just built Pidgin 2.10.11 and the pidgin.gadugadu.diff.gz patch is no longer needed.


All times are GMT -5. The time now is 01:09 PM.