Adium SVN with MSNP14

这几天一直在折腾im, 今天终于搞定了adium svn + libpurple with msnp14, 大致过程如下

1. 下载pidgin的source

    题外话: 现在的版本控制工具真是让人眼花缭乱, 在学校的时候用cvs, 上班了由于项目需要又在用perforce, 后来东京公司这边还有google code, sf等等都流行svn, 然后折腾pidgin的时候用msn-pecan插件, 是用的git. 再到后来下pidgin的代码, 又冒出个monotone...

    像上面写的, 下pidgin的source需要用到monotone, 所以需要先到官方下个monotone来.

    参考pidgin的wiki下载pidgin的代码, 但是需要把最后一句

        mtn -d $DATABASE co -b im.pidgin.pidgin $WORKINGDIR

    改为

        mtn -d $DATABASE co -b im.pidgin.pidgin.next.minor $WORKINGDIR 

2. export PIDGIN_SOURCE=$WORKINGDIR

3. 下载adium source

    svn co svn://svn.adiumx.com/adium/trunk

4. cd trunk/Utilities/dep-build-scripts

    python download.py `cat urls.txt`   (仅限10.5或者python不低于2.5.1的时候, 其他情况需要用wget)

    ./general_dependencies_make.sh

    ./purple_dependencies_make.sh

    修改purple_make.sh, 在139行--disable-dbus 之后加入 --enable-msnp14

    ./purple_make.sh

    ./universalize.sh (可以不用理会cp命令的错误)

    ./make_po_files.sh

    ./copy_frameworks.sh

5. 用xcode打开Adium.xcodeproj, build

6. 遇到的问题:

    注: 可能会根据pidgin源码的更新而不同, 编译或运行时出错请参照:

    1) msn_got_photo重复定义.

      其实是msn_got_photo函数的定义和声明不一样

      cd $WORKINGDIR/libpurple/protocols/msn

      编辑msn.c, 找到1741行

        static void msn_got_photo(PurpleUtilFetchUrlData *url_data, gpointer data,
              const gchar *url_text, size_t len, const gchar *error_message);

      修改len的类型为gsize

        static void msn_got_photo(PurpleUtilFetchUrlData *url_data, gpointer data,
              const gchar *url_text, gsize len, const gchar *error_message);

    2) adium连接msn, 停在Authentication (75%)

      貌似msn的连接服务器有所变动, 而libpurple对返回的redirectUrl的soap消息处理有问题, 懒得修代码了, 直接改:

      修改nexus.h

      找到30行, 修改

        #define MSN_TWN_SERVER        "login.live.com"

      为

        #define MSN_TWN_SERVER  "msnia.login.live.com"

      35行

        #define TWN_POST_URL                    "/RST.srf"

      为

        #define TWN_POST_URL                    "/pp550/RST.srf"

      尽管这样可以连到服务器, 但是在接受下一个服务器消息的时候会出错, 所以还需要另一个patch, 详细可以看pidgin的trac

7. 至于为什么费老劲了去上msnp14, 主要是支持个性签名 #$"&$'"#$#! , 据说也可以支持离线消息了, 不过还没试过

嗯...下一步干什么呢, 有空写个msn-pecan的adium插件吧, 大致看了一下代码, 因为是libpurple的插件, 所以接口都和pidgin的msn protocol的plugin差不多, 照着msn的adium插件写应该不是难事吧. 不过奇怪为什么这么就了还没有人写一个出来, 莫非大家都不屑于? 其实个人觉得msn-pecan要比pidgin目前维护的msnp14好

顺便, 实在懒得自己动手的, 可以点这里下载:

Adium SVN 2008 05 29 with MSNP14

« 如果有一天 用iChat / Goolge Talk上MSN »

3 Responses to Adium SVN with MSNP14

gravatar dimlau at May 30, 2008 7:32pm

不懂,路过

gravatar MIYU-G at July 8, 2008 2:44am

直接用emesene或者amsn不就好了嘛,呵呵,感觉兄弟很强

gravatar wayne at July 8, 2008 4:04am

@MIYU-G: emesene和amsn都只能上msn啊,我还有gtalk和aim要用。。。
其实pidgin不错的,不过在macos上跑gtk的话输入法配置貌似很麻烦

Name (*)

Email Address (*)

Web Address

Other  Receive Email Notify

Comment