]> git.draconx.ca Git - gentoo-draconx.git/commitdiff
bitlbee: Add new ebuild with MSN profile name fix.
authorNick Bowler <nbowler@elliptictech.com>
Fri, 24 Dec 2010 18:15:56 +0000 (13:15 -0500)
committerNick Bowler <nbowler@elliptictech.com>
Fri, 24 Dec 2010 18:16:28 +0000 (13:16 -0500)
net-im/bitlbee/Manifest [new file with mode: 0644]
net-im/bitlbee/bitlbee-3.0.1.ebuild [new file with mode: 0644]
net-im/bitlbee/files/bitlbee-3.0-configure.patch [new file with mode: 0644]
net-im/bitlbee/files/bitlbee-3.0.1-msn-unfuck.patch [new file with mode: 0644]
net-im/bitlbee/files/bitlbee.confd [new file with mode: 0644]
net-im/bitlbee/files/bitlbee.initd [new file with mode: 0644]

diff --git a/net-im/bitlbee/Manifest b/net-im/bitlbee/Manifest
new file mode 100644 (file)
index 0000000..ba96300
--- /dev/null
@@ -0,0 +1,6 @@
+AUX bitlbee-3.0-configure.patch 393 RMD160 eb546e7271549cd56b87168ccf0ccb3ffb80742d SHA1 7762bae624acf765d3905b46b84448762694a25f SHA256 615e0cadb52abea5c133f8588b7d772c787bee725f11a986bed90226e5da4acd
+AUX bitlbee-3.0.1-msn-unfuck.patch 6180 RMD160 3b361d79f9f2f883da4de6cc0cc933ed584ba1fa SHA1 4eee87d5837ea8be4862257152904c12a099cb81 SHA256 8031efaf1c8c507eb5d7b3b2acf79293e3d5c5437fe93cbce0d48cdd389df2fa
+AUX bitlbee.confd 62 RMD160 f71fff4ab4fe49eebc071d693896f567291bee54 SHA1 80beb974922b2ff6cf9732a7bce1eb03cc10d870 SHA256 105afc0382fc5adc03ed644dba4e78817015a55432349f259a286ac3c1b06628
+AUX bitlbee.initd 605 RMD160 183c4a8117556cb474c01ba4038b357a6716f98e SHA1 3427fa5f558b2957046ef1a6afdd4bc2bb8807e3 SHA256 037091df1746b9a477f07cdac52d99f9310055646ce0e10f859835ba105e3fb4
+DIST bitlbee-3.0.1.tar.gz 668353 RMD160 cc62179e807ef175db0c2351d9363f118e28f394 SHA1 f3a0651d723b71b08f0dad3b5cb2843608d5c265 SHA256 408a737b35db4b9c407e3db09b2d2e7b528836a68e2d783373254b78812bf608
+EBUILD bitlbee-3.0.1.ebuild 5534 RMD160 d25dabb5dc3193fb8000295aab988fa8d9049959 SHA1 22039953994c885f90309ae02b5ab19b55358270 SHA256 2f6ed1bb7c818bdf569da7182975d2478bb4a0b5334f60ce889b2f1fa377c253
diff --git a/net-im/bitlbee/bitlbee-3.0.1.ebuild b/net-im/bitlbee/bitlbee-3.0.1.ebuild
new file mode 100644 (file)
index 0000000..f726083
--- /dev/null
@@ -0,0 +1,194 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-im/bitlbee/bitlbee-3.0.1.ebuild,v 1.1 2010/11/25 05:08:12 radhermit Exp $
+
+EAPI="3"
+inherit eutils toolchain-funcs confutils multilib
+
+DESCRIPTION="irc to IM gateway that support multiple IM protocols"
+HOMEPAGE="http://www.bitlbee.org/"
+SRC_URI="http://get.bitlbee.org/src/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~ia64 ~ppc ~sparc ~x86 ~x86-fbsd"
+IUSE="debug gnutls ipv6 +jabber libevent msn nss +oscar otr +plugins purple ssl test twitter +yahoo xinetd" # ldap - Bug 195758
+
+COMMON_DEPEND="purple? ( net-im/pidgin )
+       libevent? ( dev-libs/libevent )
+       !libevent? ( >=dev-libs/glib-2.4 )
+       otr? ( net-libs/libotr )
+       msn? ( gnutls? ( net-libs/gnutls )
+               !gnutls? ( nss? ( dev-libs/nss ) )
+               !gnutls? ( !nss? ( ssl? ( dev-libs/openssl ) ) )
+               )
+       jabber? ( gnutls? ( net-libs/gnutls )
+               !gnutls? ( nss? ( dev-libs/nss ) )
+               !gnutls? ( !nss? ( ssl? ( dev-libs/openssl ) ) )
+               )"
+       # ldap? ( net-nds/openldap )"
+DEPEND="${COMMON_DEPEND}
+       dev-util/pkgconfig
+       test? ( dev-libs/check )"
+
+RDEPEND="${COMMON_DEPEND}
+       virtual/logger
+       xinetd? ( sys-apps/xinetd )"
+
+pkg_setup() {
+       if use purple ; then
+               elog "You have enabled libpurple support. This disables all the other"
+               elog "    protocol modules, since everything is handled by libpurple."
+               elog
+       else
+               elog "Support for all IM protocols are controlled by use flags."
+               elog "    Make sure you've enabled the flags you want."
+               elog
+       fi
+
+       confutils_require_any jabber msn oscar twitter yahoo purple
+
+       # At the request of upstream, die if MSN Messenger support is enabled
+       # but no SSL support has been enabled
+       confutils_use_depend_any msn gnutls nss ssl
+
+       if use jabber && ! use gnutls && ! use ssl ; then
+               if use nss ; then
+                       ewarn ""
+                       ewarn "You have enabled nss and jabber"
+                       ewarn "but nss doesn't work with jabber"
+                       ewarn "Enable ONE of the following use instead"
+                       ewarn "flags: gnutls or ssl"
+                       ewarn ""
+                       die "nss with jabber doesn't work"
+               fi
+               elog ""
+               elog "You have enabled support for Jabber but do not have SSL"
+               elog "support enabled.  This *will* prevent bitlbee from being"
+               elog "able to connect to SSL enabled Jabber servers.  If you need to"
+               elog "connect to Jabber over SSL, enable ONE of the following use"
+               elog "flags: gnutls or ssl"
+               elog ""
+       fi
+
+       enewgroup bitlbee
+       enewuser bitlbee -1 -1 /var/lib/bitlbee bitlbee
+}
+
+src_prepare() {
+       sed -i \
+               -e "s@/usr/local/sbin/bitlbee@/usr/sbin/bitlbee@" \
+               -e "s/nobody/bitlbee/" \
+               -e "s/}/        disable         = yes\n}/" \
+               doc/bitlbee.xinetd || die "sed failed in xinetd"
+
+       sed -i \
+               -e "s@mozilla-nss@nss@g" \
+               configure || die "sed failed in configure"
+
+       epatch "${FILESDIR}"/${PN}-3.0-configure.patch
+       epatch "${FILESDIR}"/${P}-msn-unfuck.patch
+}
+
+src_configure() {
+       # ldap hard-disabled for now
+       local myconf="--ldap=0"
+
+       # setup plugins, protocol, ipv6 and debug
+       for flag in debug ipv6 msn jabber oscar plugins purple twitter yahoo ; do
+               if use ${flag} ; then
+                       myconf="${myconf} --${flag}=1"
+               else
+                       myconf="${myconf} --${flag}=0"
+               fi
+       done
+
+       # set otr
+       if use otr && use plugins ; then
+               myconf="${myconf} --otr=plugin"
+       else
+               if use otr ; then
+                       ewarn "OTR support has been disabled automatically because it"
+                       ewarn "requires the plugins USE flag."
+               fi
+               myconf="${myconf} --otr=0"
+       fi
+
+       # setup ssl use flags
+       if use gnutls ; then
+               myconf="${myconf} --ssl=gnutls"
+               einfo "Using gnutls for SSL support"
+       elif use ssl ; then
+               myconf="${myconf} --ssl=openssl"
+               einfo "Using openssl for SSL support"
+       elif use nss ; then
+               myconf="${myconf} --ssl=nss"
+               einfo "Using nss for SSL support"
+       else
+               myconf="${myconf} --ssl=bogus"
+               einfo "You will not have any encryption support enabled."
+       fi
+
+       # set event handler
+       if use libevent ; then
+               myconf="${myconf} --events=libevent"
+       else
+               myconf="${myconf} --events=glib"
+       fi
+
+       # NOTE: bitlbee's configure script is not an autotool creation,
+       # so that is why we don't use econf.
+       ./configure --prefix=/usr --datadir=/usr/share/bitlbee \
+               --etcdir=/etc/bitlbee --plugindir=/usr/$(get_libdir)/bitlbee \
+               --strip=0 ${myconf} || die "econf failed"
+
+       sed -i \
+               -e "s/CFLAGS=.*$/CFLAGS=${CFLAGS}/" \
+               -e "/^EFLAGS/s:=:&${LDFLAGS} :" \
+               Makefile.settings || die "sed failed"
+}
+
+src_install() {
+       emake install install-etc install-doc install-dev DESTDIR="${D}" ||
+               die "install failed"
+
+       keepdir /var/lib/bitlbee
+       fperms 700 /var/lib/bitlbee
+       fowners bitlbee:bitlbee /var/lib/bitlbee
+
+       dodoc doc/{AUTHORS,CHANGES,CREDITS,FAQ,README}
+       dodoc doc/user-guide/user-guide.txt
+       dohtml -A xml doc/user-guide/*.xml
+       dohtml -A xsl doc/user-guide/*.xsl
+       dohtml doc/user-guide/*.html
+
+       doman doc/bitlbee.8 doc/bitlbee.conf.5
+
+       if use xinetd ; then
+               insinto /etc/xinetd.d
+               newins doc/bitlbee.xinetd bitlbee
+       fi
+
+       newinitd "${FILESDIR}"/bitlbee.initd bitlbee || die
+       newconfd "${FILESDIR}"/bitlbee.confd bitlbee || die
+
+       keepdir /var/run/bitlbee
+       fowners bitlbee:bitlbee /var/run/bitlbee
+
+       dodir /usr/share/bitlbee
+       insinto /usr/share/bitlbee
+       cd utils
+       doins convert_purple.py bitlbee-ctl.pl
+}
+
+pkg_postinst() {
+       chown -R bitlbee:bitlbee "${ROOT}"/var/lib/bitlbee
+       chown -R bitlbee:bitlbee "${ROOT}"/var/run/bitlbee
+
+       elog "The utils included in bitlbee are now located in /usr/share/bitlbee"
+       elog
+       elog "NOTE: The IRSSI script is no longer provided by BitlBee."
+       elog
+       elog "The bitlbeed init script has been replaced by bitlbee."
+       elog "You must update your configuration."
+}
diff --git a/net-im/bitlbee/files/bitlbee-3.0-configure.patch b/net-im/bitlbee/files/bitlbee-3.0-configure.patch
new file mode 100644 (file)
index 0000000..811f9d5
--- /dev/null
@@ -0,0 +1,17 @@
+--- bitlbee-3.0/configure.orig 2010-10-21 17:51:31.000000000 -0700
++++ bitlbee-3.0/configure      2010-10-26 22:07:44.620843056 -0700
+@@ -609,14 +609,6 @@
+       fi
+ fi
+-case "$CC" in
+-*gcc* )
+-      echo CFLAGS+=-MD -MF .depend/\$@.d >> Makefile.settings
+-      for i in . lib protocols protocols/*/; do
+-              mkdir -p $i/.depend
+-      done
+-esac
+-
+ if [ "$msn" = 0 ]; then
+       echo '#undef WITH_MSN' >> config.h
+ else
diff --git a/net-im/bitlbee/files/bitlbee-3.0.1-msn-unfuck.patch b/net-im/bitlbee/files/bitlbee-3.0.1-msn-unfuck.patch
new file mode 100644 (file)
index 0000000..25eae83
--- /dev/null
@@ -0,0 +1,186 @@
+=== modified file 'protocols/msn/msn.c'
+--- protocols/msn/msn.c        2010-11-19 21:00:14 +0000
++++ protocols/msn/msn.c        2010-12-12 00:25:17 +0000
+@@ -107,6 +107,8 @@
+                       md->groups = g_slist_remove( md->groups, mg );
+               }
+               
++              g_free( md->profile_rid );
++              
+               g_tree_destroy( md->domaintree );
+               md->domaintree = NULL;
+               
+@@ -321,21 +323,15 @@
+       struct im_connection *ic = acc->ic;
+       struct msn_data *md = ic->proto_data;
+       
+-      if( strlen( value ) > 129 )
+-      {
+-              imcb_log( ic, "Maximum name length exceeded" );
+-              return NULL;
+-      }
+-      
+-      if( md->flags & MSN_GOT_PROFILE_DN )
+-              imcb_log( ic, "Warning: Persistent name changes for this account have to be done "
+-                            "in the profile. BitlBee doesn't currently support this." );
+-      
+       if( md->flags & MSN_EMAIL_UNVERIFIED )
+               imcb_log( ic, "Warning: Your e-mail address is unverified. MSN doesn't allow "
+                             "changing your display name until your e-mail address is verified." );
+       
+-      msn_soap_addressbook_set_display_name( ic, value );
++      if( md->flags & MSN_GOT_PROFILE_DN )
++              msn_soap_profile_set_dn( ic, value );
++      else
++              msn_soap_addressbook_set_display_name( ic, value );
++      
+       return msn_ns_set_display_name( ic, value ) ? value : NULL;
+ }
+@@ -362,7 +358,7 @@
+       struct prpl *ret = g_new0(struct prpl, 1);
+       
+       ret->name = "msn";
+-    ret->mms = 1409;         /* this guess taken from libotr UPGRADING file */
++      ret->mms = 1409;         /* this guess taken from libotr UPGRADING file */
+       ret->login = msn_login;
+       ret->init = msn_init;
+       ret->logout = msn_logout;
+
+=== modified file 'protocols/msn/msn.h'
+--- protocols/msn/msn.h        2010-11-13 13:01:40 +0000
++++ protocols/msn/msn.h        2010-12-12 00:25:17 +0000
+@@ -118,6 +118,7 @@
+       
+       const struct msn_away_state *away_state;
+       GSList *groups;
++      char *profile_rid;
+       
+       /* Mostly used for sending the ADL command; since MSNP13 the client
+          is responsible for downloading the contact list and then sending
+
+=== modified file 'protocols/msn/soap.c'
+--- protocols/msn/soap.c       2010-11-20 15:39:58 +0000
++++ protocols/msn/soap.c       2010-12-12 00:25:17 +0000
+@@ -397,7 +397,10 @@
+               return MSN_SOAP_RETRY;
+       
+       if( md->soapq )
++      {
++              md->flags &= ~MSN_REAUTHING; 
+               return msn_soapq_flush( ic, TRUE );
++      }
+       
+       if( sd->secret == NULL )
+       {
+@@ -1071,8 +1074,20 @@
+       return XT_HANDLED;
+ }
++static xt_status msn_soap_profile_get_rid( struct xt_node *node, gpointer data )
++{
++      struct msn_soap_req_data *soap_req = data;
++      struct msn_data *md = soap_req->ic->proto_data;
++      
++      g_free( md->profile_rid );
++      md->profile_rid = g_strdup( node->text );
++      
++      return XT_HANDLED;
++}
++
+ static const struct xt_handler_entry msn_soap_profile_get_parser[] = {
+       { "ExpressionProfile", "GetProfileResult", msn_soap_profile_get_result },
++      { "ResourceID",        "GetProfileResult", msn_soap_profile_get_rid },
+       { NULL,               NULL,     NULL                        }
+ };
+@@ -1100,3 +1115,40 @@
+                              msn_soap_profile_get_handle_response,
+                              msn_soap_profile_get_free_data );
+ }
++
++/* Update profile (display name). */
++static int msn_soap_profile_set_dn_build_request( struct msn_soap_req_data *soap_req )
++{
++      struct msn_data *md = soap_req->ic->proto_data;
++      
++      soap_req->url = g_strdup( SOAP_STORAGE_URL );
++      soap_req->action = g_strdup( SOAP_PROFILE_SET_DN_ACTION );
++      soap_req->payload = g_markup_printf_escaped( SOAP_PROFILE_SET_DN_PAYLOAD,
++              md->tokens[3], md->profile_rid, (char*) soap_req->data );
++      
++      return 1;
++}
++
++static const struct xt_handler_entry msn_soap_profile_set_dn_parser[] = {
++      { NULL,               NULL,     NULL                        }
++};
++
++static int msn_soap_profile_set_dn_handle_response( struct msn_soap_req_data *soap_req )
++{
++      return MSN_SOAP_OK;
++}
++
++static int msn_soap_profile_set_dn_free_data( struct msn_soap_req_data *soap_req )
++{
++      g_free( soap_req->data );
++      return 0;
++}
++
++int msn_soap_profile_set_dn( struct im_connection *ic, const char *dn )
++{
++      return msn_soap_start( ic, g_strdup( dn ),
++                             msn_soap_profile_set_dn_build_request,
++                             msn_soap_profile_set_dn_parser,
++                             msn_soap_profile_set_dn_handle_response,
++                             msn_soap_profile_set_dn_free_data );
++}
+
+=== modified file 'protocols/msn/soap.h'
+--- protocols/msn/soap.h       2010-10-02 06:56:33 +0000
++++ protocols/msn/soap.h       2010-12-12 00:25:17 +0000
+@@ -302,6 +302,7 @@
+ #define SOAP_STORAGE_URL "https://storage.msn.com/storageservice/SchematizedStore.asmx"
+ #define SOAP_PROFILE_GET_ACTION "http://www.msn.com/webservices/storage/w10/GetProfile"
++#define SOAP_PROFILE_SET_DN_ACTION "http://www.msn.com/webservices/storage/w10/UpdateProfile"
+ #define SOAP_PROFILE_GET_PAYLOAD \
+ "<?xml version=\"1.0\" encoding=\"utf-8\"?>" \
+@@ -344,7 +345,34 @@
+   "</soap:Body>" \
+ "</soap:Envelope>"
++#define SOAP_PROFILE_SET_DN_PAYLOAD \
++"<?xml version=\"1.0\" encoding=\"utf-8\"?>" \
++"<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" \
++  "<soap:Header xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" \
++    "<StorageApplicationHeader xmlns=\"http://www.msn.com/webservices/storage/w10\">" \
++      "<ApplicationID>Messenger Client 9.0</ApplicationID>" \
++      "<Scenario>Initial</Scenario>" \
++    "</StorageApplicationHeader>" \
++    "<StorageUserHeader xmlns=\"http://www.msn.com/webservices/storage/w10\">" \
++      "<Puid>0</Puid>" \
++      "<TicketToken>%s</TicketToken>" \
++    "</StorageUserHeader>" \
++  "</soap:Header>" \
++  "<soap:Body xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" \
++    "<UpdateProfile xmlns=\"http://www.msn.com/webservices/storage/w10\">" \
++      "<profile>" \
++        "<ResourceID>%s</ResourceID>" \
++        "<ExpressionProfile>" \
++          "<FreeText>Update</FreeText>" \
++          "<DisplayName>%s</DisplayName>" \
++          "<Flags>0</Flags>" \
++        "</ExpressionProfile>" \
++      "</profile>" \
++    "</UpdateProfile>" \
++  "</soap:Body>" \
++"</soap:Envelope>"
++
+ int msn_soap_profile_get( struct im_connection *ic, const char *cid );
+-
++int msn_soap_profile_set_dn( struct im_connection *ic, const char *dn );
+ #endif /* __SOAP_H__ */
+
diff --git a/net-im/bitlbee/files/bitlbee.confd b/net-im/bitlbee/files/bitlbee.confd
new file mode 100644 (file)
index 0000000..c4003ce
--- /dev/null
@@ -0,0 +1,2 @@
+#Bitlbee options (see /usr/sbin/bitlbee -h)
+BITLBEE_OPTS="-F"
diff --git a/net-im/bitlbee/files/bitlbee.initd b/net-im/bitlbee/files/bitlbee.initd
new file mode 100644 (file)
index 0000000..b68a078
--- /dev/null
@@ -0,0 +1,27 @@
+#!/sbin/runscript
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or
+# later
+# $Header: /var/cvsroot/gentoo-x86/net-im/bitlbee/files/bitlbee.initd,v 1.2 2010/03/04 17:47:00 cedk Exp $
+
+DAEMON=/usr/sbin/bitlbee
+PIDFILE=/var/run/bitlbee/bitlbee.pid
+
+depend() {
+       need logger net
+}
+
+start () {
+       ebegin "Starting bitlbee"
+       start-stop-daemon --start --quiet \
+               -c bitlbee:bitlbee  --exec ${DAEMON} -- -P ${PIDFILE} \
+               ${BITLBEE_OPTS}
+       eend $?
+}
+
+stop() {
+       ebegin "Stopping bitlbee"
+       start-stop-daemon --stop --quiet --pidfile ${PIDFILE}
+       eend $?
+}
+