Jhbuild

Building telepathy with Jhbuild

Dependencies can be checked on TelepathySetup.

3 simple steps:

Jhbuild

You need to get jhbuild from GNOME's SVN:

Then install it:

See Jhbuild for more info on Jhbuild.

Create a .jhbuildrc

This is the file read by jhbuild when no config file is specified, in my case I use a .jhbuildrc for GNOME and another one for Telepathy so I have two files on my home dir: .jhbuildrc and a .jhbuildrc-telepathy.

My .jhbuildrc-telepathy file is like this:

# .jhbuildrc
# Telepathy jhbuildrc
# Based on GNOME's jhbuildrc by Wouter Bolsterlee <uws+gnome@xs4all.nl>
# Adapted by Diego Escalante Urrelo <diegoe@gnome.org>
# - moduleset and modules ------------------------------------------------ {{{1
moduleset = 'telepathy'
modules = [ 'telepathy-full' ]
# build some modules from other branches
#other_branches = {
#       'module': 'branch',
#}
#for module, branch in other_branches.items():
#       if branch == 'HEAD': branch = ''
#       branches[module] = branch
# - directories ---------------------------------------------------------- {{{1
checkoutroot = '/home/diego/gnome/ereseva/'
prefix = os.path.join(checkoutroot, 'build')
# python import path
os.environ['PYTHONPATH'] = ':'.join((
        os.path.join(prefix, 'lib/python2.5/site-packages'),
        ))
# - autogen/configure flags ---------------------------------------------- {{{1
autogenargs='--disable-static --disable-gtk-doc'
# - compilation flags ---------------------------------------------------- {{{1
os.environ['CFLAGS'] = '-g'
# - installation options ------------------------------------------------- {{{1
os.environ['GST_PLUGIN_PATH'] = os.path.join(prefix, 'lib/gstreamer-0.10/')
os.environ['INSTALL'] = '/usr/bin/install-check'
os.environ['PKG_CONFIG_PATH'] = os.path.join(prefix, '/lib/pkgconfig/')
os.environ['DBUS_SYSTEM_BUS_ADDRESS'] = 'unix:path=/var/run/dbus/system_bus_socket'

Build it

You will need this .modules file:

<?xml version="1.0"?><!--*- mode: nxml -*-->
<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?>
<!-- telepathy jhbuild moduleset, 
originally made by Diego Escalante Urrelo <diegoe@gnome.org>
updated 20070820 by Diego Escalante Urrelo <diegoe@gnome.org>
20071009 add Mission Control and Empathy by Alban Crequy <alban.crequy@apinc.org>
updated 20071202 by Diego Escalante Urrelo <diegoe@gnome.org> -->
<moduleset>
  <repository type="svn" name="gnome"
      href="http://svn.gnome.org/svn/"/>
  <repository type="darcs" name="collabora"
      href="http://projects.collabora.co.uk/darcs/"/>
  <repository type="svn" name="mission-control.sf.net"
      href="http://mission-control.svn.sourceforge.net/svnroot/mission-control/"/>

  <autotools id="telepathy-glib">
    <branch repo="collabora" module="telepathy/telepathy-glib-0.6"/> 
    <!-- <branch repo="collabora" module="telepathy/telepathy-glib"/> -->
  </autotools>

  <autotools id="libtelepathy">
    <branch repo="collabora" module="telepathy/libtelepathy"/>
    <dependencies>
      <dep package="telepathy-glib"/>
    </dependencies>
  </autotools>

  <autotools id="telepathy-gabble">
    <branch repo="collabora" module="telepathy/telepathy-gabble-0.6"/>
    <!-- <branch repo="collabora" module="telepathy/telepathy-gabble"/> -->
    <dependencies>
      <dep package="telepathy-glib"/>
    </dependencies>
  </autotools>

  <autotools id="gst-plugins-farsight">
    <branch repo="collabora" module="farsight/gst-plugins-farsight"/>
  </autotools>

  <autotools id="farsight">
    <branch repo="collabora" module="farsight/farsight"/>
    <dependencies>
      <dep package="gst-plugins-farsight"/>
    </dependencies>
  </autotools>

  <autotools id="stream-engine">
    <branch repo="collabora" module="telepathy/stream-engine"/>
    <dependencies>
      <dep package="telepathy-glib"/>
    </dependencies>
  </autotools>
  
<!-- misc stuff -->
  <distutils id="telepathy-python">
    <branch repo="collabora" module="telepathy/telepathy-python"/>
    <dependencies>
      <dep package="telepathy-glib"/>
    </dependencies>
  </distutils>

  <autotools id="telepathy-salut">
    <branch repo="collabora" module="telepathy/telepathy-salut"/>
    <dependencies>
      <dep package="telepathy-glib"/>
    </dependencies>
  </autotools>

  <autotools id="telepathy-idle">
    <branch repo="collabora" module="telepathy/telepathy-idle"/>
    <dependencies>
      <dep package="telepathy-glib"/>
    </dependencies>
  </autotools>

<!-- empathy -->
  <autotools id="mission-control">
    <branch repo="mission-control.sf.net"
            module="trunk" checkoutdir="mission-control" />
    <dependencies>
      <dep package="libtelepathy"/>
    </dependencies>
  </autotools>

  <autotools id="telepathy-mission-control">
    <branch repo="mission-control.sf.net"
            module="trunk" checkoutdir="telepathy-mission-control" />
    <dependencies>
      <dep package="libtelepathy"/>
      <dep package="mission-control"/>
    </dependencies>
  </autotools>

  <autotools id="empathy">
    <branch repo="gnome" module="empathy/trunk"/>
    <dependencies>
      <dep package="telepathy-glib"/>
      <dep package="telepathy-gabble"/>
      <dep package="telepathy-mission-control"/>
    </dependencies>
  </autotools>

<!-- metamodules -->
  <metamodule id="meta-telepathy-libs">
    <dependencies>
      <dep package="libtelepathy"/>
      <dep package="telepathy-glib"/>
    </dependencies>
  </metamodule>

  <metamodule id="meta-telepathy-protocols">
    <dependencies>
      <dep package="telepathy-gabble"/>
      <dep package="telepathy-salut"/>
      <dep package="telepathy-idle"/>
    </dependencies>
  </metamodule>

  <metamodule id="meta-telepathy-voip">
    <dependencies>
      <dep package="meta-telepathy-libs"/>
      <dep package="gst-plugins-farsight"/>
      <dep package="farsight"/>
      <dep package="stream-engine"/>
      <dep package="telepathy-gabble"/>
      <dep package="empathy"/>
    </dependencies>
  </metamodule>

  <metamodule id="meta-telepathy-extras">
    <dependencies>
      <dep package="telepathy-python"/>
      <dep package="telepathy-sharp"/>
    </dependencies>
  </metamodule>

  <metamodule id="meta-telepathy-full">
    <dependencies>
      <dep package="meta-telepathy-libs"/>
      <dep package="meta-telepathy-protocols"/>
      <dep package="meta-telepathy-voip"/>
      <dep package="meta-telepathy-extras"/>
    </dependencies>
  </metamodule>

</moduleset>


<!-- tapioca, useless for anything but ereseva (that is not quite useful)
  <repository type="svn" name="tapioca"
      href="https://tapioca-voip.svn.sourceforge.net/svnroot/"/> 

  <autotools id="telepathy-sharp">
    <branch repo="tapioca" module="tapioca-voip/trunk/telepathy-sharp"/>
    <dependencies>
      <dep package="telepathy-glib"/>
    </dependencies>
  </autotools>
  
  <autotools id="tapioca-glib">
    <branch repo="tapioca" module="tapioca-voip/trunk/tapioca-glib"/>
    <dependencies>
      <dep package="telepathy-glib"/>
    </dependencies>
  </autotools>

  <autotools id="tapioca-sharp">
    <branch repo="tapioca" module="tapioca-voip/trunk/tapioca-sharp"/>
    <dependencies>
      <dep package="tapioca-glib"/>
      <dep package="telepathy-sharp"/>
    </dependencies>
  </autotools>

  <autotools id="tapioca-python">
    <branch repo="tapioca" module="tapioca-voip/trunk/tapioca-python"/>
    <dependencies>
      <dep package="tapioca-glib"/>
    </dependencies>
  </autotools>
  
  <autotools id="ereseva">
    <branch repo="tapioca" module="tapioca-voip/trunk/ereseva"/>
    <dependencies>
      <dep package="tapioca-python"/>
    </dependencies>
  </autotools>

  <metamodule id="meta-tapioca-libs">
    <dependencies>
      <dep package="meta-telepathy-libs"/>
      <dep package="tapioca-glib"/>
      <dep package="tapioca-python"/>
    </dependencies>
  </metamodule>
-->

Then just run something like this:

Note that you have various options inmodule:

Check Jhbuild's --help-commands for some hints on commands.

Last but important step

You need to tell DBus that you have new available services for your applications, do that by linking the .service files to your .local dir:

If you get warnings about non-existant directories just do:

And rerun the ln -s. In case DBus is still not catching up with your new files, try:

(don't worry about the not permitted warnings)

Finally to go into your jhbuild installation do:

dbus-launch will enable your command to launch dbus stuff.