pidgin/purple-plugin-pack

propagate from branch 'org.guifications.plugins.buildsystem_rewrite' (head ed231df4462445a7baa33c8c8980bc938696b292)
to branch 'org.guifications.plugins' (head e4c1fd8cdd4c6149669b989d3dbde3bb829a5608)
  • +2 -1
    .mtn-ignore
  • +7 -24
    Makefile.am
  • +6 -4
    album/Makefile.am
  • +9 -0
    album/plugins.cfg
  • +24 -6
    autogen.sh
  • +1 -2
    autoprofile/Makefile.am
  • +9 -0
    autoprofile/plugins.cfg
  • +3 -1
    autoreply/Makefile.am
  • +9 -0
    autoreply/plugins.cfg
  • +2 -1
    awaynotify/Makefile.am
  • +9 -0
    awaynotify/plugins.cfg
  • +2 -3
    bash/Makefile.am
  • +9 -0
    bash/plugins.cfg
  • +3 -1
    bit/Makefile.am
  • +9 -0
    bit/plugins.cfg
  • +3 -1
    blistops/Makefile.am
  • +9 -0
    blistops/plugins.cfg
  • +2 -1
    buddytime/Makefile.am
  • +18 -0
    buddytime/plugins.cfg
  • +2 -1
    chronic/Makefile.am
  • +9 -0
    chronic/plugins.cfg
  • +3 -1
    colorize/Makefile.am
  • +9 -0
    colorize/plugins.cfg
  • +48 -95
    configure.ac
  • +2 -3
    convbadger/Makefile.am
  • +10 -0
    convbadger/plugins.cfg
  • +3 -1
    dewysiwygification/Makefile.am
  • +9 -0
    dewysiwygification/plugins.cfg
  • +3 -1
    dice/Makefile.am
  • +9 -0
    dice/plugins.cfg
  • +3 -1
    difftopic/Makefile.am
  • +9 -0
    difftopic/plugins.cfg
  • +3 -1
    eight_ball/Makefile.am
  • +9 -0
    eight_ball/plugins.cfg
  • +2 -3
    enhancedhist/Makefile.am
  • +9 -0
    enhancedhist/plugins.cfg
  • +3 -1
    findip/Makefile.am
  • +9 -0
    findip/plugins.cfg
  • +3 -1
    flip/Makefile.am
  • +10 -0
    flip/plugins.cfg
  • +3 -1
    gRIM/Makefile.am
  • +9 -0
    gRIM/plugins.cfg
  • +3 -1
    google/Makefile.am
  • +8 -0
    google/plugins.cfg
  • +3 -1
    groupmsg/Makefile.am
  • +9 -0
    groupmsg/plugins.cfg
  • +3 -1
    hideconv/Makefile.am
  • +10 -0
    hideconv/plugins.cfg
  • +3 -1
    highlight/Makefile.am
  • +9 -0
    highlight/plugins.cfg
  • +6 -4
    ignorance/Makefile.am
  • +10 -0
    ignorance/plugins.cfg
  • +3 -1
    ignore/Makefile.am
  • +9 -0
    ignore/plugins.cfg
  • +1 -2
    infopane/Makefile.am
  • +10 -0
    infopane/plugins.cfg
  • +3 -1
    irc-more/Makefile.am
  • +10 -0
    irc-more/plugins.cfg
  • +3 -1
    irchelper/Makefile.am
  • +9 -0
    irchelper/plugins.cfg
  • +6 -4
    irssi/Makefile.am
  • +10 -0
    irssi/plugins.cfg
  • +3 -1
    lastseen/Makefile.am
  • +10 -0
    lastseen/plugins.cfg
  • +6 -4
    listhandler/Makefile.am
  • +9 -0
    listhandler/plugins.cfg
  • +0 -2
    m4/Makefile.am
  • +0 -208
    m4/pluginpack.m4
  • +8 -0
    msglen/plugins.cfg
  • +3 -1
    mystatusbox/Makefile.am
  • +9 -0
    mystatusbox/plugins.cfg
  • +6 -4
    napster/Makefile.am
  • +10 -0
    napster/plugins.cfg
  • +3 -1
    nicksaid/Makefile.am
  • +9 -0
    nicksaid/plugins.cfg
  • +3 -1
    oldlogger/Makefile.am
  • +8 -0
    oldlogger/plugins.cfg
  • +2 -1
    plonkers/Makefile.am
  • +9 -0
    plonkers/plugins.cfg
  • +504 -0
    plugin_pack.py
  • +1 -0
    po/POTFILES.skip
  • +6 -1
    schedule/Makefile.am
  • +10 -0
    schedule/plugins.cfg
  • +3 -1
    sepandtab/Makefile.am
  • +9 -0
    sepandtab/plugins.cfg
  • +3 -1
    showoffline/Makefile.am
  • +9 -0
    showoffline/plugins.cfg
  • +3 -1
    simfix/Makefile.am
  • +8 -0
    simfix/plugins.cfg
  • +3 -1
    slashexec/Makefile.am
  • +9 -0
    slashexec/plugins.cfg
  • +2 -3
    snpp/Makefile.am
  • +9 -0
    snpp/plugins.cfg
  • +3 -1
    splitter/Makefile.am
  • +9 -0
    splitter/plugins.cfg
  • +3 -1
    sslinfo/Makefile.am
  • +9 -0
    sslinfo/plugins.cfg
  • +5 -3
    stocker/Makefile.am
  • +10 -0
    stocker/plugins.cfg
  • +3 -1
    switchspell/Makefile.am
  • +10 -0
    switchspell/plugins.cfg
  • +2 -1
    talkfilters/Makefile.am
  • +10 -0
    talkfilters/plugins.cfg
  • +2 -1
    timelog/Makefile.am
  • +9 -0
    timelog/plugins.cfg
  • +2 -1
    xchat-chats/Makefile.am
  • +9 -0
    xchat-chats/plugins.cfg
  • +13 -2
    xmmsremote/Makefile.am
  • +0 -0
    xmmsremote/next.png
  • +0 -0
    xmmsremote/pause.png
  • +0 -11
    xmmsremote/pixmaps/Makefile.am
  • +0 -0
    xmmsremote/pixmaps/next.png
  • +0 -0
    xmmsremote/pixmaps/pause.png
  • +0 -0
    xmmsremote/pixmaps/play.png
  • +0 -0
    xmmsremote/pixmaps/previous.png
  • +0 -0
    xmmsremote/pixmaps/stop.png
  • +0 -0
    xmmsremote/pixmaps/xmms.png
  • +0 -0
    xmmsremote/play.png
  • +10 -0
    xmmsremote/plugins.cfg
  • +0 -0
    xmmsremote/previous.png
  • +0 -0
    xmmsremote/stop.png
  • +0 -0
    xmmsremote/xmms.png
  • --- a/.mtn-ignore Sat Apr 26 17:57:38 2008 -0400
    +++ b/.mtn-ignore Thu May 01 02:56:32 2008 -0400
    @@ -15,10 +15,11 @@
    local.mak
    ltmain.sh
    missing
    +^plugin_pack.m4$
    po/Makefile.in.in
    po/missing
    po/notexist
    -po/POTFILES
    +po/POTFILES$
    po/stamp-it
    po/.+\.pot
    purple-plugin_pack-[0-9]+\.[0-9]+([Bb][Ee][Tt][Aa][0-9]+)?(mtn)?\/?
    --- a/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -13,7 +13,8 @@
    README \
    VERSION \
    VERSION.in \
    - pp_config.h.mingw \
    + plugin_pack.m4 \
    + plugin_pack.py \
    plugin_pack.spec \
    menuconfig \
    win_pp.mak \
    @@ -26,9 +27,9 @@
    PO_DIR=po
    endif
    -DIST_SUBDIRS = common doc m4 po $(PP_PURPLE) $(PP_PIDGIN) $(PP_FINCH)
    +DIST_SUBDIRS = common doc po $(PP_DIST_DIRS)
    -SUBDIRS = common doc m4 $(PO_DIR) $(PP_PURPLE_BUILD) $(PP_PIDGIN_BUILD) $(PP_FINCH_BUILD)
    +SUBDIRS = common doc $(PO_DIR) $(PP_BUILD_DIRS)
    DISTCLEANFILES=\
    pp_config.h \
    @@ -52,25 +53,7 @@
    echo $(DIST_ARCHIVES) | xargs -n 1 gpg -a -b
    info:
    - @echo "---------------------------------------"
    - @echo "Plugin Pack Info"
    - @echo "---------------------------------------"
    - @echo "Purple Plugins:"
    - @echo " Available..: $(PP_PURPLE)"
    - @echo " Abusive....: $(PP_PURPLE_ABUSIVE)"
    - @echo " Incomplete.: $(PP_PURPLE_INCOMPLETE)"
    - @echo " Building...: $(PP_PURPLE_BUILD)"
    - @echo "---------------------------------------"
    - @echo "Pidgin Plugins:"
    - @echo " Available..: $(PP_PIDGIN)"
    - @echo " Abusive....: $(PP_PIDGIN_ABUSIVE)"
    - @echo " Incomplete.: $(PP_PIDGIN_INCOMPLETE)"
    - @echo " Building...: $(PP_PIDGIN_BUILD)"
    - @echo "---------------------------------------"
    - @echo "Finch Plugins:"
    - @echo " Available..: $(PP_FINCH)"
    - @echo " Abusive....: $(PP_FINCH_ABUSIVE)"
    - @echo " Incomplete.: $(PP_FINCH_INCOMPLETE)"
    - @echo " Building...: $(PP_FINCH_BUILD)"
    - @echo "---------------------------------------"
    + @echo $(PP_DIST_DIRS)
    +stats:
    + @$(PYTHON) plugin_pack.py stats
    --- a/album/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/album/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,10 +1,12 @@
    -EXTRA_DIST = \
    - .build \
    - .pidgin-plugin \
    - Makefile.mingw \
    +HEADER_FILES = \
    album.h \
    album-ui.h
    +EXTRA_DIST = \
    + Makefile.mingw \
    + plugins.cfg \
    + $(HEADER_FILES)
    +
    albumdir = $(PIDGIN_LIBDIR)
    album_la_LDFLAGS = -module -avoid-version
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/album/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[Album]
    +type=default
    +depends=pidgin
    +provides=album
    +summary=Archives buddy icons
    +description=%(summary)s
    +authors=Richard Laager,Sadrul Habib Chowdhury
    +introduced=2.0.0
    +
    --- a/autogen.sh Sat Apr 26 17:57:38 2008 -0400
    +++ b/autogen.sh Thu May 01 02:56:32 2008 -0400
    @@ -53,9 +53,11 @@
    ###############################################################################
    check () {
    CMD=$1
    + shift
    + ARGS=$@
    echo -n "checking for ${CMD}... "
    - BIN=`which ${CMD}`
    + BIN=`which ${CMD} $@ 2>/dev/null`
    if [ x"${BIN}" = x"" ] ; then
    echo "not found."
    @@ -70,17 +72,23 @@
    CMD=$1
    shift
    + OUTPUT=`mktemp autogen-XXXX`
    +
    echo -n "running ${CMD} ${@}... "
    - OUTPUT=`${CMD} ${@} 2>&1`
    + ${CMD} ${@} >${OUTPUT} 2>&1
    +
    if [ $? != 0 ] ; then
    echo "failed."
    - echo ${OUTPUT}
    + cat ${OUTPUT}
    + rm -f ${OUTPUT}
    exit 1
    else
    echo "done."
    - if [ x"${OUTPUT}" != x"" ] ; then
    - echo ${OUTPUT}
    + if [ `stat --printf="%s" ${OUTPUT}` -ge 0 ] ; then
    + cat ${OUTPUT}
    fi
    +
    + rm -f ${OUTPUT}
    fi
    }
    @@ -117,13 +125,23 @@
    check "autoheader"; AUTOHEADER=${BIN};
    check "automake"; AUTOMAKE=${BIN};
    check "autoconf"; AUTOCONF=${BIN};
    +check "python" -V; PYTHON=${BIN};
    +
    +###############################################################################
    +# Build pluginpack.m4
    +###############################################################################
    +CONFIG_FILE="plugin_pack.m4"
    +
    +echo -n "creating ${CONFIG_FILE} ..."
    +${PYTHON} plugin_pack.py config_file > ${CONFIG_FILE} 2>/dev/null
    +echo " done."
    ###############################################################################
    # Run all of our helpers
    ###############################################################################
    run_or_die ${LIBTOOLIZE} -c -f --automake ${LIBTOOLIZE_FLAGS}
    run_or_die ${INTLTOOLIZE} -c -f --automake ${INTLTOOLIZE_FLAGS}
    -run_or_die ${ACLOCAL} -I m4 ${ACLOCAL_FLAGS}
    +run_or_die ${ACLOCAL} ${ACLOCAL_FLAGS}
    run_or_die ${AUTOHEADER} ${AUTOHEADER_FLAGS}
    run_or_die ${AUTOMAKE} -a -c -f --gnu ${AUTOMAKE_FLAGS}
    run_or_die ${AUTOCONF} -f ${AUTOCONF_FLAGS}
    --- a/autoprofile/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/autoprofile/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,6 +1,5 @@
    EXTRA_DIST = \
    - .build \
    - .pidgin-plugin
    + plugins.cfg
    autoprofiledir = $(PURPLE_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/autoprofile/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[AutoProfile]
    +type=default
    +depends=pidgin
    +provides=autoprofile
    +summary=User profile and status message content generator
    +description=Allows user to place dynamic text into profiles and status messages, with the text automatically updated whenever content changes
    +authors=Casey Ho
    +introduced=2.4.0
    +
    --- a/autoreply/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/autoreply/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,6 @@
    -EXTRA_DIST = .purple-plugin .build Makefile.mingw
    +EXTRA_DIST = \
    + Makefile.mingw \
    + plugins.cfg
    autoreplydir = $(PURPLE_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/autoreply/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[Autoreply]
    +type=default
    +depends=purple
    +provides=autoreply
    +summary=Autoreply for all the protocols
    +description=This plugin lets you set autoreply message for any protocol. You can set the global autoreply message from the plugin options dialog. To set some specific autoreply message for a particular buddy, right click on the buddy in the buddy-list window. To set autoreply messages for some accounts, go to the `Advanced' tab of the account edit dialog.
    +authors=Sadrul Habib Chowdhury
    +introduced=1.0beta1
    +
    --- a/awaynotify/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/awaynotify/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,5 @@
    -EXTRA_DIST = .purple-plugin .incomplete
    +EXTRA_DIST = \
    + plugins.cfg
    plugindir=$(PURPLE_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/awaynotify/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[Away State Notification]
    +type=incomplete
    +depends=purple
    +provides=awaynotify
    +summary=Notifies in a conversation window when a buddy goes or returns from away
    +description=%(summary)s
    +authors=Matt Perry
    +introduced=1.0beta6
    +
    --- a/bash/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/bash/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,7 +1,6 @@
    EXTRA_DIST = \
    - .purple-plugin \
    - .build \
    - Makefile.mingw
    + Makefile.mingw \
    + plugins.cfg
    bashdir = $(PURPLE_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/bash/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[bash.org]
    +type=default
    +depends=purple
    +provides=bash
    +summary=Generates links for quotes at bash.org
    +description=Generates links for quotes at bash.org or allows the user to specify a quote. Provides the /bash command.
    +authors=John Bailey
    +introduced=1.0beta1
    +
    --- a/bit/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/bit/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,6 @@
    -EXTRA_DIST = .pidgin-plugin Makefile.mingw .incomplete
    +EXTRA_DIST = \
    + Makefile.mingw \
    + plugins.cfg
    bitdir = $(PIDGIN_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/bit/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[Buddy Icon Tools]
    +type=incomplete
    +depends=pidgin
    +provides=bit
    +summary=Tools to manipulate buddy icons. *DANGEROUS*
    +description=Whilst working on Purple 2.0.0, I found a need to destroy all my buddies' buddy icons. There's nothing to do these functions in Purple, so here they are. Completely, thoroughly untested.
    +authors=Peter Lawler
    +introduced=1.0beta1
    +
    --- a/blistops/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/blistops/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,6 @@
    -EXTRA_DIST = .pidgin-plugin .build Makefile.mingw
    +EXTRA_DIST = \
    + Makefile.mingw \
    + plugins.cfg
    blistopsdir = $(PIDGIN_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/blistops/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[Buddy List Options]
    +type=default
    +depends=pidgin
    +provides=blistops
    +summary=Gives extended options to the buddy list
    +description=%(summary)s
    +authors=Gary Kramlich
    +introduced=1.0beta1
    +
    --- a/buddytime/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/buddytime/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,5 @@
    -EXTRA_DIST = .incomplete .purple-plugin .pidgin-plugin
    +EXTRA_DIST = \
    + plugins.cfg
    noinst_PROGRAMS = recursetest
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/buddytime/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,18 @@
    +[Buddy Time]
    +type=incomplete
    +depends=purple
    +provides=buddytime
    +summary=Quickly see the local time of a buddy
    +description=%(summary)s
    +authors=Gary Kramlich,Richard Laager
    +introduced=2.2.0
    +
    +[Buddy Time (Pidgin UI)]
    +type=incomplete
    +depends=pidgin buddytime
    +provides=gtkbuddytime
    +summary=Pidgin user interface for the Buddy Time plugin.
    +description=%(summary)s
    +authors=Gary Kramlich,Richard Laager
    +introduced=2.2.0
    +
    --- a/chronic/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/chronic/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,5 @@
    -EXTRA_DIST = .purple-plugin .incomplete
    +EXTRA_DIST = \
    + plugins.cfg
    chronicdir=$(PURPLE_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/chronic/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[Chronic]
    +type=incomplete
    +depends=purple
    +provides=chronic
    +summary=Sound playing triggers
    +description=Allows buddies to remotely trigger sound playing in your running libpurple client with {S <sound>. Inspired by IRC channel resident EvilDennisR and ancient versions of AOL. THIS PLUGIN IS NOT YET FUNCTIONAL! IT IS USELESS!
    +authors=John Bailey
    +introduced=1.0beta3.1
    +
    --- a/colorize/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/colorize/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,6 @@
    -EXTRA_DIST = .purple-plugin .build Makefile.mingw
    +EXTRA_DIST = \
    + Makefile.mingw \
    + plugins.cfg
    colorizedir = $(PURPLE_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/colorize/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[Colorize]
    +type=default
    +depends=purple
    +provides=colorize
    +summary=Colorizes outgoing message text.
    +description=Colorizes outgoing message text to a gradient of specified starting and ending RGB values.
    +authors=Ike Gingerich
    +introduced=2.4.0
    +
    --- a/configure.ac Sat Apr 26 17:57:38 2008 -0400
    +++ b/configure.ac Thu May 01 02:56:32 2008 -0400
    @@ -11,10 +11,10 @@
    AC_PATH_PROG(sedpath, sed)
    AC_DISABLE_STATIC
    -dnl This disables check of libtool for these compilers
    -CXX=no
    -F77=no
    -GCJ=no
    +dnl #######################################################################
    +dnl # Initialize some variables that get passed to plugin_pack.py
    +dnl #######################################################################
    +DEPENDENCIES=""
    dnl #######################################################################
    dnl # Setup libtool
    @@ -77,6 +77,7 @@
    HAVE_PURPLE="yes"
    AM_CONDITIONAL(HAVE_PURPLE, true)
    +DEPENDENCIES="$DEPENDENCIES,purple"
    if test x"$prefix" = x"NONE" ; then
    PURPLE_LIBDIR=`pkg-config --variable=libdir purple`
    @@ -118,6 +119,7 @@
    AC_DEFINE(HAVE_PIDGIN, 1, [Define if we've found pidgin.])
    HAVE_PIDGIN="yes"
    AM_CONDITIONAL(HAVE_PIDGIN, true)
    + DEPENDENCIES="$DEPENDENCIES,pidgin"
    ], [
    AC_MSG_RESULT([no])
    HAVE_PIDGIN="no"
    @@ -157,6 +159,7 @@
    AC_DEFINE(HAVE_FINCH, 1, [Define if we've found finch.])
    HAVE_FINCH="yes"
    AM_CONDITIONAL(HAVE_FINCH, true)
    + DEPENDENCIES="$DEPENDENCIES,finch"
    ], [
    AC_MSG_RESULT([no])
    HAVE_FINCH="no"
    @@ -210,10 +213,8 @@
    AC_SUBST(GTK_LIBS)
    dnl #######################################################################
    -dnl # Plugin dependency checking
    +dnl # Check for talkfilters
    dnl #######################################################################
    -
    -# talkfilters
    AC_CHECK_HEADER(talkfilters.h, HAVE_TALKFILTERS=yes, AC_MSG_WARN([
    *** GNU Talk Filters is required to build the talkfilters plugin;
    *** please make sure you have the GNU Talk Filters development headers installed.
    @@ -226,11 +227,13 @@
    dnl work out that the library exists
    AC_CHECK_LIB(talkfilters, gtf_filter_count, TALKFILTERS_LIBS="-ltalkfilters")
    AC_SUBST(TALKFILTERS_LIBS)
    +
    + DEPENDENCIES="$DEPENDENCIES,talkfilters"
    fi
    -# switchspell
    -
    -# check for gtkspell
    +dnl #######################################################################
    +dnl # Check for switchspell
    +dnl #######################################################################
    gtkspell=yes
    PKG_CHECK_MODULES(GTKSPELL, gtkspell-2.0 >= 2.0.2, [], [gtkspell=no])
    AC_SUBST(GTKSPELL_CFLAGS)
    @@ -263,7 +266,13 @@
    AM_CONDITIONAL(BUILD_SWITCH_SPELL, test x"$BUILD_SWITCH_SPELL" = x"yes")
    -# xmmsremote
    +if test x"$BUILD_SWITCH_SPELL" = x"yes" ; then
    + DEPENDENCIES="$DEPENDENCIES,gtkspell,aspell"
    +fi
    +
    +dnl #######################################################################
    +dnl # Check for xmms
    +dnl #######################################################################
    XMMS_LIBS=""
    XMMS_CFLAGS=""
    HAVE_XMMS="no"
    @@ -287,6 +296,8 @@
    if test x"$HAVE_XMMS" = x"yes" ; then
    AC_MSG_RESULT([yes])
    +
    + DEPENDENCIES="$DEPENDENCIES,xmms"
    else
    AC_MSG_RESULT([no])
    fi
    @@ -295,6 +306,9 @@
    AC_SUBST(XMMS_LIBS)
    AC_SUBST(XMMS_CFLAGS)
    +dnl #######################################################################
    +dnl # Check for some basic headers
    +dnl #######################################################################
    AC_CHECK_HEADERS(regex.h)
    dnl #######################################################################
    @@ -305,11 +319,6 @@
    AM_CONDITIONAL(INSTALL_I18N, test "x$enable_i18n" = "xyes")
    dnl #######################################################################
    -dnl # Run our plugin checking
    -dnl #######################################################################
    -AM_BUILD_PLUGIN_LIST()
    -
    -dnl #######################################################################
    dnl # Version stuff
    dnl #######################################################################
    AC_CONFIG_COMMANDS_PRE([
    @@ -324,69 +333,24 @@
    ])
    dnl #######################################################################
    +dnl # plugin_pack.py has already done our heavy lifting from the boot
    +dnl # strap. So we'll include our config file it created and call it to
    +dnl # determine our build directories
    +dnl #######################################################################
    +AC_PATH_PROG([PYTHON], [python], [no])
    +
    +dnl # include the config file we created during bootstrapping
    +m4_include([plugin_pack.m4])
    +
    +dnl #######################################################################
    dnl # Finish up
    dnl #######################################################################
    -AC_OUTPUT([
    - Makefile
    - common/Makefile
    - doc/Makefile
    - m4/Makefile
    - po/Makefile.in
    - VERSION
    - plugin_pack.spec
    - album/Makefile
    - autoprofile/Makefile
    - autoreply/Makefile
    - awaynotify/Makefile
    - bash/Makefile
    - bit/Makefile
    - blistops/Makefile
    - buddytime/Makefile
    - chronic/Makefile
    - colorize/Makefile
    - convbadger/Makefile
    - dewysiwygification/Makefile
    - dice/Makefile
    - difftopic/Makefile
    - eight_ball/Makefile
    - enhancedhist/Makefile
    - findip/Makefile
    - flip/Makefile
    - google/Makefile
    - gRIM/Makefile
    - groupmsg/Makefile
    - hideconv/Makefile
    - highlight/Makefile
    - ignorance/Makefile
    - ignore/Makefile
    - infopane/Makefile
    - irc-more/Makefile
    - irchelper/Makefile
    - irssi/Makefile
    - lastseen/Makefile
    - listhandler/Makefile
    - manualsize/Makefile
    - msglen/Makefile
    - mystatusbox/Makefile
    - napster/Makefile
    - nicksaid/Makefile
    - oldlogger/Makefile
    - plonkers/Makefile
    - schedule/Makefile
    - sepandtab/Makefile
    - showoffline/Makefile
    - simfix/Makefile
    - slashexec/Makefile
    - snpp/Makefile
    - splitter/Makefile
    - sslinfo/Makefile
    - stocker/Makefile
    - switchspell/Makefile
    - talkfilters/Makefile
    - timelog/Makefile
    - xchat-chats/Makefile
    - xmmsremote/Makefile
    - xmmsremote/pixmaps/Makefile
    +AC_OUTPUT([Makefile
    + common/Makefile
    + doc/Makefile
    + po/Makefile.in
    + VERSION
    + plugin_pack.spec
    ])
    dnl #######################################################################
    @@ -402,12 +366,8 @@
    if test x"$HAVE_PURPLE" = x"yes" ; then
    echo Installing purple plugins to.....: `eval eval echo $PURPLE_LIBDIR`
    echo Installing purple plugin data to.: `eval eval echo $PURPLE_DATADIR`
    - if test x"$PP_PURPLE_BUILD" = x"" ; then
    - echo Purple plugins to be built.......: none
    - else
    - echo Purple plugins to be built.......:
    - echo $PP_PURPLE_BUILD | xargs -n 4 echo " "
    - fi
    + echo Purple plugins to be built.......:
    + eval $PP_PURPLE_BUILD
    fi
    echo;
    @@ -415,12 +375,8 @@
    if test x"$HAVE_PIDGIN" = x"yes" ; then
    echo Installing pidgin plugins to.....: `eval eval echo $PIDGIN_LIBDIR`
    echo Installing pidgin plugin data to.: `eval eval echo $PIDGIN_DATADIR`
    - if test x"$PP_PIDGIN_BUILD" = x"" ; then
    - echo Pidgin plugins to be built.......: none
    - else
    - echo Pidgin plugins to be built.......:
    - echo $PP_PIDGIN_BUILD | xargs -n 4 echo " "
    - fi
    + echo Pidgin plugins to be built.......:
    + eval $PP_PIDGIN_BUILD
    fi
    echo;
    @@ -428,12 +384,9 @@
    if test x"$HAVE_FINCH" = x"yes" ; then
    echo Installing finch plugins to......: `eval eval echo $FINCH_LIBDIR`
    echo Installing finch plugin data to..: `eval eval echo $FINCH_DATADIR`
    - if test x"$PP_FINCH_BUILD" = x"" ; then
    - echo Finch plugins to be built........: none - THIS IS NORMAL
    - else
    - echo Finch plugins to be built........:
    - echo $PP_FINCH_BUILD | xargs -n 4 echo " "
    - fi
    + echo Finch plugins to be built........: none - THIS IS NORMAL
    + # uncomment this when we have finch plugins
    + # eval $PP_FINCH_BUILD
    fi
    echo;
    --- a/convbadger/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/convbadger/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,7 +1,6 @@
    EXTRA_DIST = \
    - .build \
    - .pidgin-plugin \
    - Makefile.mingw
    + Makefile.mingw \
    + plugins.cfg
    convbadgerdir = $(PIDGIN_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/convbadger/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,10 @@
    +[Conversation Badger]
    +type=default
    +depends=pidgin
    +provides=convbadger
    +summary=Badges conversations with the protocol icon.
    +description=%(summary)s
    +authors=Gary Kramlich
    +introduced=2.0.0
    +notes=Completed for 2.1.0, buildsystem issues fixed in 2.1.1.
    +
    --- a/dewysiwygification/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/dewysiwygification/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,6 @@
    -EXTRA_DIST = .purple-plugin .build Makefile.mingw
    +EXTRA_DIST = \
    + Makefile.mingw \
    + plugins.cfg
    dewysiwygificationdir = $(PURPLE_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/dewysiwygification/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[DeWYSIWYGification Plugin]
    +type=default
    +depends=purple
    +provides=dewysiwygification
    +summary=Lets you type in HTML without it being escaped to entities.
    +description=%(summary)s This will not work well for some protocols. Use "&lt;" for a literal "<".
    +authors=Tim Ringenbach
    +introduced=2.2.0
    +
    --- a/dice/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/dice/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,6 @@
    -EXTRA_DIST = .purple-plugin .build Makefile.mingw
    +EXTRA_DIST = \
    + Makefile.mingw \
    + plugins.cfg
    dicedir = $(PURPLE_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/dice/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[Dice]
    +type=default
    +depends=purple
    +provides=dice
    +summary=Rolls dice in a chat or im
    +description=Adds a command (/dice) to roll an arbitrary number of dice with an arbitrary number of sides. Now supports dice notation! /help dice for details
    +authors=Gary Kramlich
    +introduced=1.0beta1
    +
    --- a/difftopic/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/difftopic/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,6 @@
    -EXTRA_DIST = .pidgin-plugin Makefile.mingw .build
    +EXTRA_DIST = \
    + Makefile.mingw \
    + plugins.cfg
    difftopicdir = $(PIDGIN_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/difftopic/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[DiffTopic]
    +type=default
    +depends=pidgin
    +provides=difftopic
    +summary=Show the old topic when the topic in a chat room changes.
    +description=%(summary)s
    +authors=Sadrul Habib Chowdhury
    +introduced=1.0beta4
    +
    --- a/eight_ball/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/eight_ball/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,6 @@
    -EXTRA_DIST = .build .purple-plugin Makefile.mingw
    +EXTRA_DIST = \
    + Makefile.mingw \
    + plugins.cfg
    eight_balldir = $(PURPLE_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/eight_ball/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[Magic 8 Ball]
    +type=default
    +depends=purple
    +provides=eight_ball
    +summary=Provides Magic 8-ball like functionality
    +description=%(summary)s with the /8ball command, as well as similar functionality for common Stargate words or phrases with the /sg-ball command.
    +authors=John Bailey
    +introduced=1.0beta1
    +
    --- a/enhancedhist/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/enhancedhist/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,7 +1,6 @@
    EXTRA_DIST = \
    - .build \
    - .pidgin-plugin \
    - Makefile.mingw
    + Makefile.mingw \
    + plugins.cfg
    enhancedhistdir = $(PIDGIN_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/enhancedhist/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[Enhanced History]
    +type=default
    +depends=pidgin
    +provides=enhancedhist
    +summary=An enhanced version of the history plugin.
    +description=%(summary)s Grants ability to select the number of previous conversations to show instead of just one.
    +authors=Andrew Pangborn
    +introduced=2.3.0
    +
    --- a/findip/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/findip/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,6 @@
    -EXTRA_DIST = .purple-plugin .abusive Makefile.mingw
    +EXTRA_DIST = \
    + Makefile.mingw \
    + plugins.cfg
    findipdir = $(PURPLE_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/findip/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[Find IP]
    +type=abusive
    +depends=purple
    +provides=findip
    +summary=Find the IP of a person in the buddylist.
    +description=%(summary)s This doesn't really work.
    +authors=Sadrul Habib Chowdhury
    +introduced=2.2.0
    +
    --- a/flip/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/flip/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,6 @@
    -EXTRA_DIST = .purple-plugin .build Makefile.mingw
    +EXTRA_DIST = \
    + Makefile.mingw \
    + plugins.cfg
    flipdir = $(PURPLE_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/flip/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,10 @@
    +[Coin Flip]
    +name=Coin Flip
    +type=default
    +depends=purple
    +provides=flip
    +summary=Flips a coin and outputs the result
    +description=Adds a command (/flip) to flip a coin and outputs the result in the active conversation
    +authors=Gary Kramlich
    +introduced=1.0beta1
    +
    --- a/gRIM/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/gRIM/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,6 @@
    -EXTRA_DIST = .pidgin-plugin Makefile.mingw .build
    +EXTRA_DIST = \
    + Makefile.mingw \
    + plugins.cfg
    gRIMdir = $(PIDGIN_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/gRIM/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[gRIM]
    +type=default
    +depends=pidgin
    +provides=gRIM
    +summary=A completely stupid and pointless plugin
    +description=Adds commands to annoy buddies with. Inspired by a dumb IRC convo and Red Dwarf.
    +authors=Peter Lawler,Sadrul Habib Chowdhury
    +introduced=1.0beta1
    +
    --- a/google/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/google/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,6 @@
    -EXTRA_DIST = .purple-plugin .build Makefile.mingw
    +EXTRA_DIST = \
    + Makefile.mingw \
    + plugins.cfg
    googledir = $(PURPLE_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/google/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,8 @@
    +[Google]
    +type=default
    +depends=purple
    +provides=google
    +summary=Writes the url for a Google I'm feeling lucky search to the active conversation
    +description=%(summary)s
    +authors=Gary Kramlich
    +introduced=2.4.0
    --- a/groupmsg/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/groupmsg/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,6 @@
    -EXTRA_DIST = .purple-plugin .abusive Makefile.mingw
    +EXTRA_DIST = \
    + Makefile.mingw \
    + plugins.cfg
    groupmsgdir = $(PURPLE_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/groupmsg/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[Group IM]
    +type=abusive
    +depends=purple
    +provides=groupmsg
    +summary=Send an IM to a group of buddies.
    +description=Adds the option to send an IM to every online buddy in a group.
    +authors=Stu Tomlinson
    +introduced=1.0beta1
    +
    --- a/hideconv/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/hideconv/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,6 @@
    -EXTRA_DIST = .pidgin-plugin Makefile.mingw .incomplete
    +EXTRA_DIST = \
    + Makefile.mingw \
    + plugins.cfg
    hideconvdir = $(PIDGIN_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/hideconv/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,10 @@
    +[Hide Conversation]
    +type=incomplete
    +depends=pidgin
    +provides=hideconv
    +summary=Hide conversations without closing them.
    +description=%(summary)s
    +authors=Sadrul Habib Chowdhury
    +introduced=1.0
    +notes=Superseded by functionality present in Pidgin 2.3.0 and newer
    +
    --- a/highlight/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/highlight/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,6 @@
    -EXTRA_DIST = .purple-plugin Makefile.mingw .build
    +EXTRA_DIST = \
    + Makefile.mingw \
    + plugins.cfg
    highlightdir = $(PURPLE_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/highlight/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[Highlight]
    +type=default
    +depends=purple
    +provides=highlight
    +summary=Support for highlighting words.
    +description=%(summary)s
    +authors=Sadrul Habib Chowdhury
    +introduced=2.0.0
    +
    --- a/ignorance/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/ignorance/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,8 +1,5 @@
    -EXTRA_DIST = \
    - .pidgin-plugin \
    - .incomplete \
    +INCLUDES = \
    callbacks.h \
    - ignorance.conf \
    ignorance.h \
    ignorance_denizen.h \
    ignorance_internal.h \
    @@ -13,6 +10,11 @@
    regex.h \
    support.h
    +EXTRA_DIST = \
    + plugins.cfg \
    + ignorance.conf \
    + $(INCLUDES)
    +
    ignorancedir = $(PIDGIN_LIBDIR)/pidgin
    ignorance_la_LDFLAGS = -module -avoid-version
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/ignorance/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,10 @@
    +[Ignorance]
    +type=incomplete
    +depends=pidgin
    +provides=ignorance
    +summary=Allows you to manage lists of users with various levels of allowable activity.
    +description=%(summary)s
    +authors=Levi Bard
    +introduced=1.0beta7
    +notes=Needs some TLC. It builds and probably works, but is far from an acceptible state.
    +
    --- a/ignore/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/ignore/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,6 @@
    -EXTRA_DIST = .build .purple-plugin Makefile.mingw
    +EXTRA_DIST = \
    + Makefile.mingw \
    + plugins.cfg
    ignoredir = $(PURPLE_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/ignore/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[Ignore]
    +type=default
    +depends=purple
    +provides=ignore
    +summary=Flexible plugin to selectively ignore people. Please do not use if you have amnesia.
    +description=%(summary)s
    +authors=Sadrul Habib Chowdhury
    +introduced=2.0.0
    +
    --- a/infopane/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/infopane/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,7 +1,6 @@
    EXTRA_DIST = \
    - .pidgin-plugin \
    Makefile.mingw \
    - .build
    + plugins.cfg
    infopanedir = $(PIDGIN_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/infopane/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,10 @@
    +[Infopane Options]
    +type=default
    +depends=pidgin
    +provides=infopane
    +summary=Allow customizing the details information in conversation windows.
    +description=%(summary)s
    +authors=Sadrul Habib Chowdhury
    +introduced=2.2.0
    +notes=Requires Pidgin 2.1.0 or newer.
    +
    --- a/irc-more/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/irc-more/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,6 @@
    -EXTRA_DIST = .build .purple-plugin Makefile.mingw
    +EXTRA_DIST = \
    + Makefile.mingw \
    + plugins.cfg
    irc_moredir = $(PURPLE_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/irc-more/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,10 @@
    +[IRC More]
    +type=default
    +depends=purple
    +provides=ircmore
    +summary=Adds additional IRC features.
    +description=Adds additional IRC features, including a customizable quit message, a customizable CTCP VERSION reply, and the /notice command for notices where libpurple does not support it.
    +authors=Sadrul Habib Chowdhury,John Bailey
    +introduced=2.2.0
    +notes=Support for /notice only when built with libpurple older than 2.4.0.
    +
    --- a/irchelper/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/irchelper/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,6 @@
    -EXTRA_DIST = .purple-plugin .build Makefile.mingw
    +EXTRA_DIST = \
    + Makefile.mingw \
    + plugins.cfg
    irchelperdir = $(PURPLE_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/irchelper/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[IRC Helper]
    +type=default
    +depends=purple
    +provides=irchelper
    +summary=Handles the rough edges of the IRC protocol.
    +description=Provides transparent authentication with a variety of services and suppresses various useless messages
    +authors=Richard Laager
    +introduced=1.0beta7
    +
    --- a/irssi/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/irssi/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,13 +1,15 @@
    -EXTRA_DIST=\
    - .pidgin-plugin \
    - .build \
    - Makefile.mingw \
    +HEADER_FILES = \
    datechange.h \
    lastlog.h \
    layout.h \
    textfmt.h \
    window.h
    +EXTRA_DIST=\
    + Makefile.mingw \
    + plugins.cfg \
    + $(HEADER_FILES)
    +
    irssidir = $(PIDGIN_LIBDIR)
    irssi_la_LDFLAGS = -module -avoid-version
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/irssi/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,10 @@
    +[Irssi Features]
    +type=default
    +depends=pidgin
    +provides=irssi
    +summary=Implements features of the irssi IRC client for use in Pidgin.
    +description=Implements some features of the IRC client irssi to be used in Purple. It lets you know in all open conversations when the day has changed, adds the lastlog command, adds the window command, etc. The day changed message is not logged.
    +authors=Gary Kramlich,John Bailey,Sadrul Habib Chowdhury
    +introduced=1.0beta1
    +notes=Originally introduced as 'irssidate', but renamed in version 1.0beta3.1 when additional functionality was added.
    +
    --- a/lastseen/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/lastseen/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,6 @@
    -EXTRA_DIST = .pidgin-plugin .build Makefile.mingw
    +EXTRA_DIST = \
    + Makefile.mingw \
    + plugins.cfg
    lastseendir = $(PIDGIN_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/lastseen/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,10 @@
    +[Last Seen]
    +type=default
    +depends=pidgin
    +provides=lastseen
    +summary=Record when a buddy was last seen.
    +description=Logs the time of a last received message, what they said, when they logged in, and when they logged out, for buddies on your buddy list.
    +authors=Stu Tomlinson
    +introduced=1.0beta1
    +notes=Partially superseded by functionality added in Pidgin 2.1.0.
    +
    --- a/listhandler/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/listhandler/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,7 +1,4 @@
    -EXTRA_DIST=\
    - .build \
    - .purple-plugin \
    - Makefile.mingw \
    +HEADER_FILES = \
    aim_blt_files.h \
    alias_xml_files.h \
    gen_xml_files.h \
    @@ -10,6 +7,11 @@
    migrate.h \
    purple_blist_xml.h
    +EXTRA_DIST=\
    + Makefile.mingw \
    + plugins.cfg \
    + $(HEADER_FILES)
    +
    listhandlerdir = $(PURPLE_LIBDIR)
    listhandler_la_LDFLAGS = -module -avoid-version
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/listhandler/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[List Handler]
    +type=default
    +depends=purple
    +provides=listhandler
    +summary=Provides numerous user-requested list-handling capabilities.
    +description=Provides numerous user-requested list-handling capabilities, such as importing and exporting of AIM .blt files and generic protocol-agnostic XML .blist files, as well as direct copying of buddies from one account to another.
    +authors=John Bailey
    +introduced=1.0beta1
    +
    --- a/m4/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,2 +0,0 @@
    -EXTRA_DIST = \
    - pluginpack.m4
    --- a/m4/pluginpack.m4 Sat Apr 26 17:57:38 2008 -0400
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,208 +0,0 @@
    -dnl ###########################################################################
    -dnl # m4 Build Helper for the purple plugin pack
    -dnl # Copyright (C) 2005-2007 Gary Kramlich <grim@reaperworld.com>
    -dnl #
    -dnl # awk foo and other sanity graciously provided by Caleb Gilmour
    -dnl #
    -dnl ###########################################################################
    -dnl # AM_BUILD_PLUGIN_LIST
    -dnl #
    -dnl # Searches a dir, for subdir's which have a .plugin file defining them
    -dnl # as plugins for the plugin pack.
    -dnl #
    -dnl ###########################################################################
    -
    -AC_DEFUN([AM_BUILD_PLUGIN_LIST],
    -[dnl
    - PP_PURPLE=""
    - PP_PURPLE_ABUSIVE=""
    - PP_PURPLE_INCOMPLETE=""
    - PP_PURPLE_BUILD=""
    -
    - PP_PIDGIN=""
    - PP_PIDGIN_ABUSIVE=""
    - PP_PIDGIN_INCOMPLETE=""
    - PP_PIDGIN_BUILD=""
    -
    - PP_FINCH=""
    - PP_FINCH_ABUSIVE=""
    - PP_FINCH_INCOMPLETE=""
    - PP_FINCH_BUILD=""
    -
    - dnl #######################################################################
    - dnl # Build a list of all the available plugins
    - dnl #######################################################################
    - for d in $srcdir/*; do
    - if ! test -d "$d"; then
    - continue
    - fi
    -
    - if test -f "$d/Makefile.am" -a ! "$d" = "$srcdir/common" -a ! "$d" = "$srcdir/doc" -a ! "$d" = "$srcdir/m4" -a ! -f "$d/configure" -a ! -f "$d/.abusive" -a ! -f "$d/.build" -a ! -f "$d/.incomplete" ; then
    - AC_ERROR(
    -[
    -*** Plugin Directory $d is misconfigured
    -***
    -*** You should *NEVER* see this in a release. If this is a release and not
    -*** monotone, please file a ticket at http://plugins.guifications.org/
    -***
    -*** If you are a developer, please ensure that $d contains a .build,
    -*** .incomplete, or .abusive file.
    -])
    - fi
    -
    - base=`basename $d`
    -
    - if test -f "$d/.purple-plugin" ; then
    - if test -f $d/.abusive ; then
    - PP_PURPLE_ABUSIVE="$PP_PURPLE_ABUSIVE $base"
    - elif test -f "$d/.build" ; then
    - PP_PURPLE_BUILD="$PP_PURPLE_BUILD $base"
    - fi
    -
    - if test -f "$d/.incomplete" ; then
    - PP_PURPLE_INCOMPLETE="$PP_PURPLE_INCOMPLETE $base"
    - fi
    -
    - PP_PURPLE="$PP_PURPLE $base"
    - elif test -f "$d/.pidgin-plugin" ; then
    - if test -f "$d/.abusive" ; then
    - PP_PIDGIN_ABUSIVE="$PP_PIDGIN_ABUSIVE $base"
    - elif test -f "$d/.build" ; then
    - PP_PIDGIN_BUILD="$PP_PIDGIN_BUILD $base"
    - fi
    -
    - if test -f "$d/.incomplete" ; then
    - PP_PIDGIN_INCOMPLETE="$PP_PIDGIN_INCOMPLETE $base"
    - fi
    -
    - PP_PIDGIN="$PP_PIDGIN $base"
    - elif test -f "$d/.finch-plugin" ; then
    - if test -f "$d/.abusive" ; then
    - PP_FINCH_ABUSIVE="$PP_FINCH_ABUSIVE $base"
    - elif test -f "$d/.build" ; then
    - PP_FINCH_BUILD="$PP_FINCH_BUILD $base"
    - fi
    -
    - if test -f "$d/.incomplete" ; then
    - PP_FINCH_INCOMPLETE="$PP_FINCH_INCOMPLETE $base"
    - fi
    -
    - PP_FINCH="$PP_FINCH $base"
    - fi
    - done;
    -
    - dnl #######################################################################
    - dnl # Add our argument
    - dnl #######################################################################
    - AC_ARG_WITH(plugins,
    - AC_HELP_STRING([--with-plugins], [what plugins to build]),
    - ,with_plugins=default)
    -
    - dnl #######################################################################
    - dnl # Now determine which ones have been selected
    - dnl #######################################################################
    - case "$with_plugins" in
    - all)
    - PP_FINCH_BUILD="$PP_FINCH_ABUSIVE $PP_FINCH_BUILD"
    - PP_PIDGIN_BUILD="$PP_PIDGIN_ABUSIVE $PP_PIDGIN_BUILD"
    - PP_PURPLE_BUILD="$PP_PURPLE_ABUSIVE $PP_PURPLE_BUILD"
    - ;;
    - default)
    - dnl # we don't do anything if the defaults are selected, they're
    - dnl # already set up :)
    - ;;
    - *)
    - dnl # clear out the build variables
    - PP_FINCH_BUILD=""
    - PP_PIDGIN_BUILD=""
    - PP_PURPLE_BUILD=""
    -
    - dnl # turn the with plugins variable into a space delimited list
    - exp_plugins=`echo "$with_plugins" | sed 's/,/ /g'`
    -
    - dnl # loop through the with plugins list and update the build variables
    - dnl # as we find the plugins in each type.
    - for w in $exp_plugins
    - do
    - for p in $PP_FINCH
    - do
    - if test x"$w" = x"$p"
    - then
    - PP_FINCH_BUILD="$PP_FINCH_BUILD $p"
    - fi
    - done
    -
    - for p in $PP_PIDGIN
    - do
    - if test x"$w" = x"$p"
    - then
    - PP_PIDGIN_BUILD="$PP_PIDGIN_BUILD $p"
    - fi
    - done
    -
    - for p in $PP_PURPLE
    - do
    - if test x"$w" = x"$p"
    - then
    - PP_PURPLE_BUILD="$PP_PURPLE_BUILD $p"
    - fi
    - done
    - done
    - esac
    -
    - dnl # sort everything
    - PP_FINCH_BUILD=`echo $PP_FINCH_BUILD | awk '{for (i = 1; i <=NF; i++) { print $i } }' | sort | uniq | xargs echo`
    - PP_PIDGIN_BUILD=`echo $PP_PIDGIN_BUILD | awk '{for (i = 1; i <=NF; i++) { print $i } } ' | sort | uniq | xargs echo`
    - PP_PURPLE_BUILD=`echo $PP_PURPLE_BUILD | awk '{for (i = 1; i <=NF; i++) { print $i } } ' | sort | uniq | xargs echo`
    -
    - dnl #######################################################################
    - dnl # substitue our sub dirs
    - dnl #######################################################################
    - AC_SUBST(PP_PURPLE)
    - AC_SUBST(PP_PURPLE_ABUSIVE)
    - AC_SUBST(PP_PURPLE_INCOMPLETE)
    - AC_SUBST(PP_PURPLE_BUILD)
    -
    - AC_SUBST(PP_PIDGIN)
    - AC_SUBST(PP_PIDGIN_ABUSIVE)
    - AC_SUBST(PP_PIDGIN_INCOMPLETE)
    - AC_SUBST(PP_PIDGIN_BUILD)
    -
    - AC_SUBST(PP_FINCH)
    - AC_SUBST(PP_FINCH_ABUSIVE)
    - AC_SUBST(PP_FINCH_INCOMPLETE)
    - AC_SUBST(PP_FINCH_BUILD)
    -
    - dnl #######################################################################
    - dnl # build some statistics info
    - dnl #######################################################################
    - PP_PURPLE_ABUSIVE_COUNT=`echo $PP_PURPLE_ABUSIVE | wc -w`
    - PP_PURPLE_INCOMPLETE_COUNT=`echo $PP_PURPLE_INCOMPLETE | wc -w`
    - PP_PURPLE_BUILD_COUNT=`echo $PP_PURPLE_BUILD | wc -w`
    - PP_PURPLE_TOTAL_COUNT=`echo $PP_PURPLE | wc -w`
    -
    - AC_SUBST(PP_PURPLE_ABUSIVE_COUNT)
    - AC_SUBST(PP_PURPLE_INCOMPLETE_COUNT)
    - AC_SUBST(PP_PURPLE_BUILD_COUNT)
    - AC_SUBST(PP_PURPLE_TOTAL_COUNT)
    -
    - PP_PIDGIN_ABUSIVE_COUNT=`echo $PP_PIDGIN_ABUSIVE | wc -w`
    - PP_PIDGIN_INCOMPLETE_COUNT=`echo $PP_PIDGIN_INCOMPLETE | wc -w`
    - PP_PIDGIN_BUILD_COUNT=`echo $PP_PIDGIN_BUILD | wc -w`
    - PP_PIDGIN_TOTAL_COUNT=`echo $PP_PIDGIN | wc -w`
    -
    - AC_SUBST(PP_PIDGIN_ABUSIVE_COUNT)
    - AC_SUBST(PP_PIDGIN_INCOMPLETE_COUNT)
    - AC_SUBST(PP_PIDGIN_BUILD_COUNT)
    - AC_SUBST(PP_PIDGIN_TOTAL_COUNT)
    -
    - PP_FINCH_ABUSIVE_COUNT=`echo $PP_FINCH_ABUSIVE | wc -w`
    - PP_FINCH_INCOMPLETE_COUNT=`echo $PP_FINCH_INCOMPLETE | wc -w`
    - PP_FINCH_BUILD_COUNT=`echo $PP_FINCH_BUILD | wc -w`
    - PP_FINCH_TOTAL_COUNT=`echo $PP_FINCH | wc -w`
    -
    - AC_SUBST(PP_FINCH_ABUSIVE_COUNT)
    - AC_SUBST(PP_FINCH_INCOMPLETE_COUNT)
    - AC_SUBST(PP_FINCH_BUILD_COUNT)
    - AC_SUBST(PP_FINCH_TOTAL_COUNT)
    -])
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/msglen/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,8 @@
    +[Message Length]
    +type=incomplete
    +depends=pidgin
    +provides=msglen
    +summary=Shows the length of your current message in the menu tray
    +description=%(summary)s
    +authors=Gary Kramlich
    +introduced=2.4.0
    --- a/mystatusbox/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/mystatusbox/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,6 @@
    -EXTRA_DIST = .build .pidgin-plugin Makefile.mingw
    +EXTRA_DIST = \
    + Makefile.mingw \
    + plugins.cfg
    mystatusboxdir = $(PIDGIN_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/mystatusbox/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[Mystatusbox (Show Statusboxes)]
    +type=default
    +depends=pidgin
    +provides=mystatusbox
    +summary=Hide/Show the per-account statusboxes
    +description=You can show all the per-account statusboxes, hide all of them, or just show the ones that are in a different status from the global status. For ease of use, you can bind keyboard shortcuts for the menu items.
    +authors=Sadrul Habib Chowdhury
    +introduced=1.0beta1
    +
    --- a/napster/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/napster/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,10 +1,12 @@
    -EXTRA_DIST=\
    - .build \
    - .purple-plugin \
    - Makefile.mingw \
    +PIXMAPS = \
    16/napster.png \
    22/napster.png \
    48/napster.png
    +
    +EXTRA_DIST=\
    + Makefile.mingw \
    + plugins.cfg \
    + $(PIXMAPS)
    napsterdir = $(PURPLE_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/napster/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,10 @@
    +[Napster]
    +type=default
    +depends=purple
    +provides=napster
    +summary=NAPSTER Protocol Plugin
    +description=%(summary)s
    +authors=Rob Flynn
    +introduced=1.0beta6
    +notes=Introduced into the Purple Plugin Pack after it was removed from libpurple.
    +
    --- a/nicksaid/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/nicksaid/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,6 @@
    -EXTRA_DIST = .build .pidgin-plugin Makefile.mingw
    +EXTRA_DIST = \
    + Makefile.mingw \
    + plugins.cfg
    nicksaiddir = $(PIDGIN_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/nicksaid/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[Nicksaid]
    +type=default
    +depends=pidgin
    +provides=nicksaid
    +summary=Record when someone said your nick in a chat.
    +description=%(summary)s
    +authors=Sadrul Habib Chowdhury
    +introduced=1.0beta1
    +
    --- a/oldlogger/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/oldlogger/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,6 @@
    -EXTRA_DIST = .purple-plugin .build Makefile.mingw
    +EXTRA_DIST = \
    + Makefile.mingw \
    + plugins.cfg
    oldloggerdir = $(PURPLE_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/oldlogger/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,8 @@
    +[Old Logger]
    +type=default
    +depends=purple
    +provides=oldlogger
    +summary=Re-implements the legacy, deficient, logging
    +description=%(summary)s
    +authors=Stu Tomlinson
    +introduced=1.0beta1
    --- a/plonkers/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/plonkers/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,5 @@
    -EXTRA_DIST = .pidgin-plugin .build
    +EXTRA_DIST = \
    + plugins.cfg
    plonkersdir = $(PIDGIN_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/plonkers/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[Plonkers]
    +type=default
    +depends=pidgin
    +provides=plonkers
    +summary=Tell plonkers what you really think.
    +description=Plonkers is a small plugin that lets you announce to a chat room your current list of ignores, as well as providing other pointless ignore and privacy tools for dealing with idiots. The name is inspired by the British/Irish word for 'idiots.'
    +authors=Peter Lawler
    +introduced=1.0beta2
    +
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/plugin_pack.py Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,504 @@
    +#!/usr/bin/python
    +
    +# plugin_pack.py - Helper script for obtaining info about the plugin pack
    +# Copyright (C) 2008 Gary Kramlich <grim@reaperworld.com>
    +#
    +# This program is free software; you can redistribute it and/or
    +# modify it under the terms of the GNU General Public License
    +# as published by the Free Software Foundation; either version 2
    +# of the License, or (at your option) any later version.
    +#
    +# This program is distributed in the hope that it will be useful,
    +# but WITHOUT ANY WARRANTY; without even the implied warranty of
    +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +# GNU General Public License for more details.
    +#
    +# You should have received a copy of the GNU General Public License
    +# along with this program; if not, write to the Free Software
    +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301, USA.
    +
    +"""Usage: plugin_pack.py [OPTION...] command
    +
    +Flags:
    +
    + -a Load abusive plugins
    + -d Load default plugins
    + -f Load finch plugins
    + -i Load incomplate plugins
    + -p Load purple plugins
    + -P Load pidgin plugins
    +
    +Commands:
    +"""
    +
    +import ConfigParser
    +import getopt
    +import glob
    +import os.path
    +import string
    +import sys
    +
    +def printerr(msg):
    + print >> sys.stderr, msg
    +
    +class Plugin:
    + name = ''
    + directory = ''
    + type = ''
    + depends = []
    + provides = ''
    + summary = ''
    + description = ''
    + authors = []
    + introduced = ''
    + notes = ''
    +
    + def __init__(self, directory, name, parser):
    + self.name = name
    +
    + self.directory = directory
    +
    + self.type = parser.get(name, 'type')
    + self.depends = parser.get(name, 'depends').split()
    + self.provides = parser.get(name, 'provides')
    + self.summary = parser.get(name, 'summary')
    + self.description = parser.get(name, 'description')
    + self.authors = parser.get(name, 'authors').split(',')
    + self.introduced = parser.get(name, 'introduced')
    +
    + if parser.has_option(name, 'notes'):
    + self.notes = parser.get(name, 'notes')
    +
    + if self.type != 'default' and self.type != 'incomplete' and self.type != 'abusive':
    + printerr('\'%s\' has an unknown type of \'%s\'!' % (self.name, self.type))
    +
    + def __str__(self):
    + output = 'name: %s\n' % self.name
    + output += 'authors: %s\n' % string.join(self.authors, ', ')
    + output += 'type: %s\n' % self.type
    + output += 'depends: %s\n' % string.join(self.depends, ' ')
    + output += 'provides: %s\n' % self.provides
    + output += 'directory: %s\n' % self.directory
    + output += 'summary: %s\n' % self.summary
    + output += 'description: %s\n' % self.description
    +
    + if self.notes:
    + output += 'notes: %s\n' % self.notes
    +
    + return output
    +
    +class PluginPack:
    + commands = {}
    + plugins = {}
    +
    + def load_plugins(self, types, depends):
    + if len(types) == 0:
    + types = None
    +
    + if len(depends) == 0:
    + depends = None
    +
    + for file in glob.glob('*/plugins.cfg'):
    + parser = ConfigParser.ConfigParser()
    +
    + try:
    + parser.read(file)
    + except ConfigParser.ParsingError, msg:
    + printerr('Failed to parse \'%s\':\n%s' % (file, msg))
    + continue
    +
    + for plugin in parser.sections():
    + p = Plugin(os.path.dirname(file), plugin, parser)
    +
    + # this is kind of hacky, but if we have types, we check to see
    + # if the type is in list of types to load.
    + if types and not p.type in types:
    + continue
    +
    + # now we check if the give plugins depends match the search
    + # depends
    + if depends:
    + if len(set(depends).intersection(set(p.depends))) == 0:
    + continue
    +
    + self.plugins[p.provides] = p
    +
    + def list_type(self, type):
    + list = []
    +
    + for name in self.plugins.keys():
    + plugin = self.plugins[name]
    + if plugin.type == type:
    + list.append(plugin)
    +
    + list.sort()
    +
    + return list
    +
    + def list_dep(self, dep):
    + list = []
    +
    + for name in self.plugins.keys():
    + plugin = self.plugins[name]
    +
    + if dep in plugin.depends:
    + list.append(plugin)
    +
    + list.sort()
    +
    + return list
    +
    + def print_names(self, list):
    + names = []
    +
    + for plugin in list:
    + names.append(plugin.name)
    +
    + print string.join(names, ',')
    +
    + def default_plugins(self):
    + return self.list_type('default')
    +
    + def abusive_plugins(self):
    + return self.list_type('abusive')
    +
    + def incomplete_plugins(self):
    + return self.list_type('incomplete')
    +
    + def purple_plugins(self):
    + return self.list_dep('purple')
    +
    + def finch_plugins(self):
    + return self.list_dep('finch')
    +
    + def pidgin_plugins(self):
    + return self.list_dep('pidgin')
    +
    + def unique_dirs(self):
    + dirs = {}
    + for name in self.plugins.keys():
    + dirs[self.plugins[name].directory] = 1
    +
    + dirs = dirs.keys()
    + dirs.sort()
    +
    + return dirs
    +
    + def help(self, args):
    + """Displays information about other commands"""
    + try:
    + cmd = self.commands[args[0]]
    + print cmd.__doc__
    + except KeyError:
    + print 'command \'%s\' was not found' % args[0]
    + except IndexError:
    + pass
    + commands['help'] = help
    +
    + def dist_dirs(self, args):
    + """Displays a list of all plugin directories to included in the distribution"""
    + print string.join(self.unique_dirs(), ' ')
    + commands['dist_dirs'] = dist_dirs
    +
    + def build_dirs(self, args):
    + """Displays a list of the plugins that can be built"""
    + if len(args) != 2:
    + printerr('build_dirs expects 2 arguments:')
    + printerr('\ta comma separated list of dependencies')
    + printerr('\ta comma separated list of plugins to build')
    + sys.exit(1)
    +
    + # store the external depedencies
    + externals = args[0].split(',')
    +
    + deps = {}
    +
    + # run through the provided dependencies, setting their dependencies to
    + # nothing since we know we already have them
    + for d in externals:
    + deps[d] = []
    +
    + # now run through the plugins adding their deps to the dictionary
    + for name in self.plugins.keys():
    + plugin = self.plugins[name]
    +
    + deps[plugin.provides] = plugin.depends
    +
    + # run through the requested plugins and store their plugin instance in check
    + check = []
    + for provides in args[1].split(','):
    + try:
    + if provides == 'all':
    + defaults = []
    + for p in self.default_plugins():
    + defaults.append(p.provides)
    +
    + check += defaults
    +
    + continue
    +
    + plugin = self.plugins[provides]
    + check.append(plugin.provides)
    + except KeyError:
    + continue
    +
    + # convert our list of plugins to check into a set to remove dupes
    + #check = set(check)
    +
    + # create our list of plugins to build
    + build = []
    +
    + # now define a function to check our deps
    + def has_deps(provides):
    + # don't add anything to build more than once
    + if provides in build:
    + return True
    +
    + try:
    + dep_list = deps[provides]
    + except KeyError:
    + return False
    +
    + # now check the dependencies
    + for dep in dep_list:
    + if not has_deps(dep):
    + return False
    +
    + # make sure the provides isn't an external
    + if not provides in externals:
    + build.append(provides)
    +
    + # everything checks out!
    + return True
    +
    + # check all the plugins we were told to for their dependencies
    + for c in check:
    + has_deps(c)
    +
    + # now create a list of all directories to build
    + output = []
    +
    + for provides in build:
    + plugin = self.plugins[provides]
    +
    + output.append(plugin.directory)
    +
    + output.sort()
    +
    + print "%s" % (string.join(output, ','))
    + commands['build_dirs'] = build_dirs
    +
    + def config_file(self, args):
    + """Outputs the contents for the file to be m4_include()'d from configure"""
    + uniqdirs = self.unique_dirs()
    +
    + # add our --with-plugins option
    + print 'AC_ARG_WITH(plugins,'
    + print ' AC_HELP_STRING([--with-plugins], [what plugins to build]),'
    + print ' ,WITH_PLUGINS=all)'
    +
    + # determine and add our output files
    + print 'PP_DIST_DIRS="%s"' % (string.join(uniqdirs, ' '))
    + print 'AC_SUBST(PP_DIST_DIRS)'
    + print
    + print 'AC_CONFIG_FILES(['
    + for dir in uniqdirs:
    + print '\t%s/Makefile' % (dir)
    + print '])'
    + print
    +
    + # setup a second call to determine the plugins to be built
    + print 'PP_BUILD=`$PYTHON $srcdir/plugin_pack.py build_dirs $DEPENDENCIES $WITH_PLUGINS`'
    + print
    + print 'PP_BUILD_DIRS=`echo $PP_BUILD | sed \'s/,/\ /g\'`'
    + print 'AC_SUBST(PP_BUILD_DIRS)'
    + print
    + print 'PP_PURPLE_BUILD="$PYTHON $srcdir/plugin_pack.py -p show_names $PP_BUILD"'
    + print 'PP_PIDGIN_BUILD="$PYTHON $srcdir/plugin_pack.py -P show_names $PP_BUILD"'
    + print 'PP_FINCH_BUILD="$PYTHON $srcdir/plugin_pack.py -f show_names $PP_BUILD"'
    + commands['config_file'] = config_file
    +
    + def dependency_graph(self, args):
    + """Outputs a graphviz script showing plugin dependencies"""
    + def node_label(plugin):
    + node = plugin.provides.replace('-', '_')
    + label = plugin.name
    +
    + return node, label
    +
    + def print_plugins(list):
    + for plugin in list:
    + node, label = node_label(plugin)
    +
    + print '\t%s[label="%s"];' % (node, label)
    +
    + print 'digraph {'
    + print '\tlabel="Dependency Graph";'
    + print '\tlabelloc="t";'
    + print '\tsplines=TRUE;'
    + print '\toverlap=FALSE;'
    + print
    + print '\tnode[fontname="sans", fontsize="8", style="filled"];'
    + print
    +
    + # run through the default plugins
    + print '\t/* default plugins */'
    + print '\tnode[fillcolor="palegreen",shape="tab"];'
    + print_plugins(self.default_plugins())
    + print
    +
    + # run through the incomplete plugins
    + print '\t/* incomplete plugins */'
    + print '\tnode[fillcolor="lightyellow1",shape="note"];'
    + print_plugins(self.incomplete_plugins())
    + print
    +
    + # run through the abusive plugins
    + print '\t/* abusive plugins */'
    + print '\tnode[fillcolor="lightpink",shape="octagon"];'
    + print_plugins(self.abusive_plugins())
    + print
    +
    + # run through again, this time showing the relations
    + print '\t/* dependencies'
    + print '\t * exteranl ones that don\'t have nodes get colored to the following'
    + print '\t */'
    + print '\tnode[fillcolor="powderblue", shape="egg"];'
    +
    + for name in self.plugins.keys():
    + plugin = self.plugins[name]
    +
    + node, label = node_label(plugin)
    +
    + for dep in plugin.depends:
    + dep = dep.replace('-', '_')
    + print '\t%s -> %s;' % (node, dep)
    +
    + print '}'
    + commands['dependency_graph'] = dependency_graph
    +
    + def show_names(self, args):
    + """Displays the names of the given comma separated list of provides"""
    +
    + provides = args[0].split(',')
    + if len(provides) == 0:
    + print "none"
    +
    + line = " "
    +
    + for provide in provides:
    + if not provide in self.plugins:
    + continue
    +
    + name = self.plugins[provide].name
    +
    + if len(line) + len(name) + 2 > 75:
    + print line.rstrip(',')
    + line = ' '
    +
    + line += ' %s,' % name
    +
    + if len(line) > 1:
    + print line.rstrip(',')
    + commands['show_names'] = show_names
    +
    + def info(self, args):
    + """Displays all information about the given plugins"""
    + for p in args:
    + try:
    + print self.plugins[p].__str__().strip()
    + except KeyError:
    + print 'Failed to find a plugin that provides \'%s\'' % (p)
    +
    + print
    + commands['info'] = info
    +
    + def stats(self, args):
    + """Displays stats about the plugin pack"""
    + counts = {}
    +
    + counts['total'] = len(self.plugins)
    + counts['default'] = len(self.default_plugins())
    + counts['incomplete'] = len(self.incomplete_plugins())
    + counts['abusive'] = len(self.abusive_plugins())
    + counts['purple'] = len(self.purple_plugins())
    + counts['finch'] = len(self.finch_plugins())
    + counts['pidgin'] = len(self.pidgin_plugins())
    +
    + def value(val):
    + return "%3d (%0.2f%%)" % (val, (float(val) / float(counts['total'])) * 100.0)
    +
    + print "Purple Plugin Pack Stats"
    + print ""
    + print "%d plugins in total" % (counts['total'])
    + print
    + print "Status:"
    + print " complete: %s" % (value(counts['default']))
    + print " incomplete: %s" % (value(counts['incomplete']))
    + print " abusive: %s" % (value(counts['abusive']))
    + print ""
    + print "Type:"
    + print " purple: %s" % (value(counts['purple']))
    + print " finch: %s" % (value(counts['finch']))
    + print " pidgin: %s" % (value(counts['pidgin']))
    + commands['stats'] = stats
    +
    +def show_usage(pp, exitcode):
    + print __doc__
    +
    + cmds = pp.commands.keys()
    + cmds.sort()
    +
    + for cmd in cmds:
    + print " %-20s %s" % (cmd, pp.commands[cmd].__doc__)
    +
    + print ""
    +
    + sys.exit(exitcode)
    +
    +def main():
    + # create our main instance
    + pp = PluginPack()
    +
    + types = []
    + depends = []
    +
    + try:
    + shortopts = 'adfiPp'
    +
    + opts, args = getopt.getopt(sys.argv[1:], shortopts)
    + except getopt.error, msg:
    + print msg
    + show_usage(pp, 1)
    +
    + for o, a in opts:
    + if o == '-a':
    + types.append('abusive')
    + elif o == '-d':
    + types.append('default')
    + elif o == '-i':
    + types.append('incomplete')
    + elif o == '-f':
    + depends.append('finch')
    + elif o == '-P':
    + depends.append('pidgin')
    + elif o == '-p':
    + depends.append('purple')
    +
    + # load the plugins that have been requested, if both lists are empty, all
    + # plugins are loaded
    + pp.load_plugins(types, depends)
    +
    + if(len(args) == 0):
    + show_usage(pp, 1)
    +
    + cmd = args[0]
    + args = args[1:]
    +
    + try:
    + pp.commands[cmd](pp, args)
    + except KeyError:
    + printerr('\'%s\' command not found' % (cmd))
    +
    +if __name__ == '__main__':
    + main()
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/po/POTFILES.skip Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,1 @@
    +plugin_pack.py
    --- a/schedule/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/schedule/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,9 @@
    -EXTRA_DIST = .build .pidgin-plugin schedule.h
    +HEADER_FILES = \
    + schedule.h
    +
    +EXTRA_DIST = \
    + plugins.cfg \
    + $(HEADER_FILES)
    pidgin_scheduledir = $(PIDGIN_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/schedule/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,10 @@
    +[Schedule]
    +type=default
    +depends=pidgin
    +provides=schedule
    +summary=Schedule reminders at specified times.
    +description=%(summary)s
    +authors=Sadrul Habib Chowdhury
    +introduced=1.0beta1
    +notes=Renamed from gaim-schedule to schedule after the Pidgin rename.
    +
    --- a/sepandtab/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/sepandtab/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,6 @@
    -EXTRA_DIST = .build .pidgin-plugin Makefile.mingw
    +EXTRA_DIST = \
    + Makefile.mingw \
    + plugins.cfg
    sepandtabdir = $(PIDGIN_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/sepandtab/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[Separate And Tab]
    +type=default
    +depends=pidgin
    +provides=sepandtab
    +summary=Adds two placement functions for separating and tabbing
    +description=Adds two new placement functions. One separates IMs and groups chats in tabs, the other separates chats and groups IMs in tabs.
    +authors=Gary Kramlich
    +introduced=1.0beta1
    +
    --- a/showoffline/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/showoffline/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,6 @@
    -EXTRA_DIST = .purple-plugin .build Makefile.mingw
    +EXTRA_DIST = \
    + Makefile.mingw \
    + plugins.cfg
    showofflinedir = $(PURPLE_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/showoffline/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[Show Offline]
    +type=default
    +depends=purple
    +provides=showoffline
    +summary=Show specific buddies while offline.
    +description=Adds the option to show specific buddies in your buddy list when they are offline, even with "Show Offline Buddies" turned off.
    +authors=Stu Tomlinson
    +introduced=1.0beta1
    +
    --- a/simfix/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/simfix/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,6 @@
    -EXTRA_DIST = .build .purple-plugin Makefile.mingw
    +EXTRA_DIST = \
    + Makefile.mingw \
    + plugins.cfg
    simfixdir = $(PURPLE_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/simfix/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,8 @@
    +[SIM-fix]
    +type=default
    +depends=purple
    +provides=simfix
    +summary=Fix messages from broken SIM clients.
    +description=Fixes messages received from broken SIM clients by stripping HTML from them. The buddy must be on your list and set as a SIM user.
    +authors=Stu Tomlinson
    +introduced=1.0beta1
    --- a/slashexec/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/slashexec/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,6 @@
    -EXTRA_DIST = .purple-plugin .build Makefile.mingw
    +EXTRA_DIST = \
    + Makefile.mingw \
    + plugins.cfg
    slashexecdir = $(PURPLE_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/slashexec/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[/exec]
    +type=default
    +depends=purple
    +provides=slashexec
    +summary=/exec a la UNIX IRC CLI
    +description=A plugin that adds the /exec command line interpreter like most UNIX/Linux IRC clients have. Also included is the ability to execute commands with an exclamation point (!uptime, for instance)
    +authors=Gary Kramlich,Peter Lawler,Daniel Atallah,John Bailey,Sadrul Habib Chowdhury
    +introduced=1.0beta3
    +
    --- a/snpp/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/snpp/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,7 +1,6 @@
    EXTRA_DIST = \
    - .build \
    - .purple-plugin \
    - Makefile.mingw
    + Makefile.mingw \
    + plugins.cfg
    libsnppdir = $(PURPLE_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/snpp/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[SNPP]
    +type=default
    +depends=purple
    +provides=snpp
    +summary=SNPP Plugin
    +description=Allows libpurple to send messages over the Simple Network Paging Protocol (SNPP).
    +authors=Don Seiler
    +introduced=2.1.0
    +
    --- a/splitter/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/splitter/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,6 @@
    -EXTRA_DIST = .purple-plugin .incomplete Makefile.mingw
    +EXTRA_DIST = \
    + Makefile.mingw \
    + plugins.cfg
    splitterdir = $(PURPLE_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/splitter/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[Message Splitter]
    +type=incomplete
    +depends=purple pango
    +provides=splitter
    +summary=Splits a large outgoing message into smaller messages of a specified size.
    +description=%(summary)s
    +authors=Ike Gingerich
    +introduced=2.4.0
    +
    --- a/sslinfo/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/sslinfo/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,6 @@
    -EXTRA_DIST = .purple-plugin .build Makefile.mingw
    +EXTRA_DIST = \
    + Makefile.mingw \
    + plugins.cfg
    sslinfodir = $(PURPLE_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/sslinfo/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[SSL Info]
    +type=default
    +depends=purple
    +provides=sslinfo
    +summary=Displays info about your currently loaded SSL plugin
    +description=%(summary)s
    +authors=Gary Kramlich
    +introduced=1.0beta1
    +
    --- a/stocker/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/stocker/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,9 +1,11 @@
    -EXTRA_DIST = \
    - .incomplete \
    - .pidgin-plugin \
    +INCLUDES = \
    gtkticker.h \
    stocker_prefs.h
    +EXTRA_DIST = \
    + plugins.cfg \
    + $(INCLUDES)
    +
    stockerdir = $(PIDGIN_LIBDIR)
    stocker_la_LDFLAGS = -module -avoid-version
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/stocker/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,10 @@
    +[Stocker]
    +type=incomplete
    +depends=pidgin
    +provides=stocker
    +summary=A stock ticker
    +description=Adds a stock ticker similar to the one in the Windows AIM client to the bottom of the buddy list.
    +authors=Gary Kramlich
    +introduced=1.0beta1
    +notes=This plugin partially works but is buggy and in need of TLC.
    +
    --- a/switchspell/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/switchspell/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,6 @@
    -EXTRA_DIST = .build .pidgin-plugin Makefile.mingw
    +EXTRA_DIST = \
    + Makefile.mingw \
    + plugins.cfg
    if BUILD_SWITCH_SPELL
    switchspelldir = $(PIDGIN_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/switchspell/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,10 @@
    +[Switch Spell]
    +type=default
    +depends=pidgin gtkspell aspell
    +provides=switchspell
    +summary=Switch Spell Checker Language
    +description=%(summary)s
    +authors=Sadrul Habib Chowdhury
    +introduced=1.0beta7
    +notes=Requires gtkspell linked against aspell. Will not work with enchant.
    +
    --- a/talkfilters/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/talkfilters/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,5 @@
    -EXTRA_DIST = .build .pidgin-plugin
    +EXTRA_DIST = \
    + plugins.cfg
    talkfiltersdir = $(PIDGIN_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/talkfilters/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,10 @@
    +[GNU Talk Filters]
    +type=default
    +depends=pidgin
    +provides=talkfilters
    +summary=Translates text in outgoing messages into humorous dialects.
    +description=The GNU Talk Filters are filter programs that convert ordinary English text into text that mimics a stereotyped or otherwise humorous dialect. These filters have been in the public domain for many years, and have been made available as a single integrated package. The filters include austro, b1ff, brooklyn, chef, cockney, drawl, dubya, fudd, funetak, jethro, jive, kraut, pansy, pirate, postmodern, redneck, valspeak, and warez.
    +authors=Mark Lindner,Peter Lawler
    +introduced=1.0beta1
    +notes=Requires GNU Talkfilters
    +
    --- a/timelog/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/timelog/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,5 @@
    -EXTRA_DIST = .pidgin-plugin .build
    +EXTRA_DIST = \
    + plugins.cfg
    timelogdir = $(PIDGIN_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/timelog/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[TimeLog]
    +type=default
    +depends=pidgin
    +provides=timelog
    +summary=allows the viewing of Pidgin logs within a specific time range
    +description=%(summary)s
    +authors=Jon Oberheide
    +introduced=2.2.0
    +
    --- a/xchat-chats/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/xchat-chats/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,4 +1,5 @@
    -EXTRA_DIST = .pidgin-plugin .build
    +EXTRA_DIST = \
    + plugins.cfg
    xchat_chatsdir = $(PIDGIN_LIBDIR)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/xchat-chats/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,9 @@
    +[XChat Chats]
    +type=default
    +depends=pidgin
    +provides=xchat-chats
    +summary=XChat-like chats with Pidgin
    +description=You can chat in Pidgin using XChat's indented view.
    +authors=Sadrul Habib Chowdhury
    +introduced=1.0beta1
    +
    --- a/xmmsremote/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ b/xmmsremote/Makefile.am Thu May 01 02:56:32 2008 -0400
    @@ -1,6 +1,17 @@
    -EXTRA_DIST = .build .pidgin-plugin
    +ICONS = \
    + next.png \
    + pause.png \
    + play.png \
    + previous.png \
    + stop.png \
    + xmms.png
    -SUBDIRS = pixmaps
    +EXTRA_DIST = \
    + $(ICONS) \
    + plugins.cfg
    +
    +xmmsremoteconfpixdir = $(PIDGIN_PIXMAPSDIR)/plugin_pack/xmmsremote
    +xmmsremoteconfpix_DATA = $(ICONS)
    xmmsremotedir = $(PIDGIN_LIBDIR)
    Binary file xmmsremote/next.png has changed
    Binary file xmmsremote/pause.png has changed
    --- a/xmmsremote/pixmaps/Makefile.am Sat Apr 26 17:57:38 2008 -0400
    +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
    @@ -1,11 +0,0 @@
    -EXTRA_DIST = \
    - next.png \
    - pause.png \
    - play.png \
    - previous.png \
    - stop.png \
    - xmms.png
    -
    -xmmsremoteconfpixdir = $(PIDGIN_PIXMAPSDIR)/plugin_pack/xmmsremote
    -xmmsremoteconfpix_DATA = next.png pause.png play.png previous.png stop.png xmms.png
    -
    Binary file xmmsremote/pixmaps/next.png has changed
    Binary file xmmsremote/pixmaps/pause.png has changed
    Binary file xmmsremote/pixmaps/play.png has changed
    Binary file xmmsremote/pixmaps/previous.png has changed
    Binary file xmmsremote/pixmaps/stop.png has changed
    Binary file xmmsremote/pixmaps/xmms.png has changed
    Binary file xmmsremote/play.png has changed
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/xmmsremote/plugins.cfg Thu May 01 02:56:32 2008 -0400
    @@ -0,0 +1,10 @@
    +[XMMS Remote Control]
    +type=default
    +depends=pidgin xmms
    +provides=xmmsremote
    +summary=Control XMMS from Pidgin conversations
    +description=A small plugin that adds a menu or buttons to the menu bars of Pidgin conversation windows so that you can control XMMS from within Pidgin.
    +authors=Gary Kramlich
    +introduced=1.0beta3
    +notes=Renamed from gaim-xmms-remote to xmmsremote in 1.0beta3.1.
    +
    Binary file xmmsremote/previous.png has changed
    Binary file xmmsremote/stop.png has changed
    Binary file xmmsremote/xmms.png has changed