Showing posts with label binding. Show all posts
Showing posts with label binding. Show all posts

Jul 22, 2010

ruby-dbus 0.3.1

I have made a bug-fix release of ruby-dbus, a Ruby language binding for the D-Bus IPC system.
  • Many on_signal could cause DBus.Error.LimitsExceeded (bnc#617350).
    Don't add a match rule that already exists, enable removing match rules. Now only one handler for a rule is called (but it is possible for one signal to match more rules). This reverts the half-fix done to fix Issue#3.
  • Re-added InterfaceElement#add_param for compatibility.
  • Handle more ways which tell us that a bus connection has died.
RPMs can be found via Webpin.

Mar 28, 2010

ruby-dbus 0.3.0 Works on Ubuntu

ruby-dbus has for a long time not worked on the default Ubuntu desktop. I thought I had fixed it in 0.2.12 but that was only for the server side. In fact, clients had another bug and I have released version 0.3.0 today to fix it.

NEWS:
Bug fixes:
  • Fixed "undefined method `get_node' for nil:NilClass" on Ubuntu Karmic (Ticket#34).
  • Get the session bus address even if unset in ENV (Issue#4).
  • Improved exceptions a bit: UndefinedInterface, InvalidMethodName, NoMethodError, no RuntimeException
These are by Klaus Kaempf:
  • Make the signal dispatcher call all handlers (Issue#3).
  • Run on Ruby < 1.8.7 (Issue#2).
  • Avoid needless DBus::IncompleteBufferException (Ticket#33).
  • Don't ignore DBus Errors in request_service, raise them (Ticket#32).
Features:
  • Automatic signature inference for variants.
  • Introduced FormalParameter where a plain pair had been used.
RPMs can be found via Webpin.

Jan 24, 2010

Service Activation Fixed in ruby-dbus 0.2.12

Today I fixed a long-standing bug in ruby-dbus where a service activated by the bus would fail with "undefined method `get_node' for nil:NilClass" (tickets #25 and #29).
RPMs can be found via Webpin.

Aug 26, 2009

ruby-dbus 0.2.9

I have released a tarball of 0.2.9 and updated the home page.

From NEWS: Ruby D-Bus "I'm not dead" 0.2.9 - 2009-08-26

Thank you to Paul and Arnaud for starting the project. I, Martin Vidner, am continuing with it on GitHub.
  • Fixed passing an array through a variant (no ticket).
  • Fixed marshalling "av" (Ticket #30).
  • Fixed variant alignment (Ticket #27).
  • Added DBus::Main.quit.
  • Mention the DBus interface in a NameError for an unknown method.
  • Fixed ruby-1.9 "warning: default `to_a' will be obsolete".
  • Added Rakefile and gemspec.

Jul 21, 2009

HackWeek: NetworkManager Python library

It is Hack Week again, a time when we venture into unexplored territories. So why am I returning to cnetworkmanager?

It is because I am doing a complete rewrite, based on an easy-to-use library that hides some rough edges in dbus-python. If you ever thought NM needed some programmatic prodding but were put off by the tedious details, the library might be just the thing for you. For me, it is also an opportunity to learn more Python.

Compare how you get the interface names.
Before:
#! /usr/bin/python
import dbus
bus = dbus.SystemBus()
NM = 'org.freedesktop.NetworkManager'
nm = bus.get_object(NM, '/org/freedesktop/NetworkManager')
for dev_opath in nm.GetDevices(dbus_interface = NM):
dev = bus.get_object(NM, dev_opath)
print dev.Get(NM + '.Device', 'Interface',
dbus_interface='org.freedesktop.DBus.Properties')
After:
#! /usr/bin/python
from networkmanager.networkmanager import NetworkManager
nm = NetworkManager()
for d in nm.GetDevices():
print d["Interface"]
It is in the librarize branch of the git repo. Beware, the code is still messy. Getting it:
git clone git://repo.or.cz/cnetworkmanager.git cnetworkmanager.librarize
cd cnetworkmanager.librarize
git checkout -b librarize origin/librarize
./cnetworkmanager -h

Jul 8, 2009

D-Bus and Ruby

There isn't a canonical D-Bus library for Ruby. I found four projects, two of which are interesting.

First, the two losers:
* dbus-ruby: It wraps the C bindings. It is dead (last release in January 2005).
* pr-dbus: No releases, last SVN commit in April 2007, entirely in Ruby.

Now for the contenders. Both are packaged as RPMs in the OBS YaST:Web project.
The developers know about each other but in 2007 they did not want to merge the projects. The developers are not active but patches do appear.

* ruby-dbus
  • LGPL
  • no test suite (but I've started one together with bug fixes: Github clone)
  • can export services
  • cumbersome API (explicit introspection calls needed, explicit types for variants needed, return value must be an array)
BTW Klaus has two posts about writing a client and a server with ruby-dbus.

* rbus
  • GPL
  • test suite (RSpec, needs a patch)
  • cannot export services
WebYaST is using ruby-dbus so far, but I am looking at rbus too because of the tests and and the nicer API.