European Bob's Hula Hoopla! http://www.eurobob.eclipse.co.uk/blog Hula Hackery en Last update :( Thu, 03 Nov 2005 17:17:00 BST http://www.eurobob.eclipse.co.uk/blog/2005/11/03#last-update <p>So, this will be the last <strong>ever</strong> update to this blog... <em>shed a tear</em></p> <p>No, I'm not going anyway, but I'm changing URLs. I'm moving from my ISP's domain to one I control: both will work for now, but the new one will be the one updated. This is basically because a week today I'm moving house, and will be changing ISP.</p> <p>So if you're currently using my packages, you need to change the apt source line (<a href="http://www.alcoholicsunanimous.com/hula/">more details on my new site</a>) in order to continue to receive updates.</p> r654 is The Business Fri, 21 Oct 2005 10:45:00 BST http://www.eurobob.eclipse.co.uk/blog/2005/10/21#again-new-hotness <p>Again, new packages. I still found I was getting problems with the Indexer with the last lot, but Peter seems to have fixed it now :) I still suffered from stale locks though - so, if you have files like:</p> <pre><code>/tmp/lucene-1f90313e5849e5c2ab12d9f723836364-write.lock</code></pre> <p>(The number could be all sorts of things)</p> <p>... you'll want to remove them. Stop Hula, <code>rm /tmp/lucene*</code> and be on your merry way.</p> <p>Other bugs:</p> <ul> <li>I think my Sunbird doesn't state the Status on entries properly - anyway, this means I can't update entries that are already on the calendar :( Even setting the Status to (eg.) &quot;Confirmed&quot; still results in an error, which is what makes me think it is Sunibrd at fault;</li> <li>Adding tasks to the calendar doesn't seem to work just yet.</li> </ul> <p>You should find that you're able to connect, add events and stuff like that, though. Please let me know if you have any trouble; it's likely that the packages still aren't quite right about getting things up and running for everyone.</p> New Hotness Again Fri, 21 Oct 2005 00:05:00 BST http://www.eurobob.eclipse.co.uk/blog/2005/10/21#more-on-new-hotness <p>I just uploaded my r641 packages. These will automatically upgrade your schema when you install it, and if you install the new .NET agents it will use mdbtool to automatically add the Agents to your tree. It pretty much now mostly works for me; Sunbird is behaving with it fairly well. But, there are some gotchas. Here's what I learned: </p> <ul> <li>If you just installed hula-cil-agents and hula wasn't restarted, restart it - it needs to start up the new agents</li> <li>Debian stable doesn't have a mono. This isn't great, because we need it. So, I found this apt line: <pre><code>deb http://people.debian.org/~formorer/mono backports main</code></pre> ... which is a semi-official backport, I guess. This allows you to run the new hotness on sarge.</li> <li>There are very many bugs in the new code. The main one I ran into was with the indexer, and deleting: <pre><code>/var/lib/hula/netmail/index/&lt;username&gt;/</code></pre> ... fixed it up for me.</li> <li>the best way to debug these is to use <code>tcpflow</code> or a similar tool to capture the network traffic - oftentimes the error is in there. A typical invocation for the caldav stuff might be: <pre><code>tcpflow -i lo port 8081</code></pre> I tend to run it in it's own directory, since it generates a fair few files and I don't want them overrunning and breeding. The usual error to look for in these files is some kind of mono back trace in a HTML comment.</li> <li>there are/were odd problems with the actual version of mono in use. I think I got rid of it, but if your new mono agents don't start, that's probably the problem. Try invoking one manually: <pre><code>mono /usr/lib/hula/HulaWeb.exe</code></pre> If it falls over in a heap, it's a mono version problem, most likely.</li> </ul> New Hotness Arrives! r630 Thu, 20 Oct 2005 15:27:00 BST http://www.eurobob.eclipse.co.uk/blog/2005/10/20#new-hotness <p>So, all the new cool calendar stuff we've been <del>drooling about</del> <ins>waiting for</ins> has landed in SVN. It's all written for mono, and hence isn't going to run on some systems, but I've packaged it up.</p> <p>If you're on Debian testing/unstable, or Ubuntu breezy (maybe hoary too), you'll find that you can <code>apt-get install hula-cil-agents</code> to grab the new stuff. However, <strong>it won't work automatically</strong>. This is because there is no schema update yet - version 6 of the schema will come soon, but not yet ;o)</p> <p>So, how to try it out? Take a copy of <code>/var/lib/hula</code>, maybe move it somewhere safe. Re-run <code>hulasetup</code> (you might need to <code>mkdir /var/lib/hula; chown mail:mail /var/lib/hula</code> ), and you'll find on startup your Hula Web Administrator has some new agents:</p> <ul> <li>Calendar Text Command Agent - this is the basis of the SMS/email interface</li> <li><del>Calendar Agent</del> Web Services Agent - the new DAV server</li> <li>Indexer Agent - the search engine of Hula</li> </ul> <p>None of these are configurable<del>, except for the DAV server (you can turn it on and off ;)</del>, so don't worry about that. But, if you have them, you should find that <code>ps aux</code> shows a couple of new processes, both of which are run by mono. <em>(Portions struck out above are corrected from my original entry; couple of mistakes there :)</em></p> <p><strong>Congrats, you're up and running!</strong></p> <p>Well, kinda. I downloaded a <a href="http://www.mozilla.org/projects/calendar/sunbird.html">Mozilla Sunbird nightly</a> - this has CalDAV support built in (unlike the 0.2 release). You should be able to add a new calendar of the CalDAV type, and it should kinda work.</p> <p>Except, it doesn't, for me. First, I'm not totally sure what I should enter for the account! I currently have set <code>http://&lt;server&gt;:8081/dav/&lt;username&gt;/calendar/Personal</code>, but this might not be right. I'm also getting an error message from the DAV server:</p> <pre><code>** (/usr/lib/hula/HulaWeb.exe:17188): WARNING **: Missing method get_CipherStrength in assembly /usr/lib/hula/Mono.WebServer.dll, type Mono.Security.Protocol.Tls.SslStreamBase System.NullReferenceException: Object reference not set to an instance of an object in <0x00000> <unknown method> in <0x00023> Mono.WebServer.XSPWorker:Run (System.Object state)</code></pre> <p>I have no doubt that this probably means these packages currently don't run for anyone properly, although it might be related to the version of mono installed, or the mono libraries required.</p> <p><em>If you have tried these and got them working, please let me know!</em> Drop by on #hula on irc.freenode.net :)</p> LinuxExpo London 2005 over Fri, 07 Oct 2005 14:50:00 BST http://www.eurobob.eclipse.co.uk/blog/2005/10/07#linuxexpo2k5-wrapup <p>Expo this year was mildly suprising for a number of reasons; mostly, it was a lot busier than last year (maybe even busier than a couple of years ago). Nice to see old friends again, and also meet some new ones.</p> <p>Hula attracted a fair amount of attention. I'm going to send a slightly longer write-up to the lists, because there was a lot of feedback that kept getting repeated by lots of people: not terribly large jobs in the most part, but specific use cases and features that seem pretty commonly needed.</p> <p>Lots of people stopped by the booth, users I've seen on the lists or on IRC, lovely to see <a href="http://www.gnome.org/~michael/activity.html#2005-10-05">Michael Meeks</a> even if it was a short visit. Other Novell employees visited; knowledge of Hula varied interestingly. Also, I was a little surprised by the number of people who didn't know what Hula is - since there isn't a &quot;proper&quot; release yet this shouldn't be surprising, but lots of people don't know it exists yet. 1.0 will probably bring a flood of users, I imagine. Debian's Phil Hands did a great job of redirecting people enquiring about mail/groupware options from their stand, and the general confusion about what was happening with Open Exchange at RedHat (and Novell mostly talking about Groupwise) both contributed to people coming to check out the &quot;community alternative&quot;.</p> mdbtool available for testing :) Tue, 04 Oct 2005 17:50:00 BST http://www.eurobob.eclipse.co.uk/blog/2005/10/04#mdbtool-in-packages <p>So, the new debs have been uploaded, and contain my mdbtool. This allows you to munge around your mdb store without playing with the files. Objects can be added and removed, and you can get basic information and attributes from them. I would be interested to hear from those who use it.</p> MDBTool fixed up :D Sun, 02 Oct 2005 20:18:00 BST http://www.eurobob.eclipse.co.uk/blog/2005/10/02#mdbtool-fixup <p>Thanks to the help of fatpelt, my problems in the previous post (and a post I made a while ago) are now fixed. The segfault was caused by incorrect argument order, which I should have noticed. The bug getting the right result back was caused by passing an object reference where I should have passed NULL - with a reference, MDB was trying to create a relative name or something. Whatever it was trying to do, it was failing.</p> <p>So, I've updated <a href="http://www.eurobob.eclipse.co.uk/hula/mdbtool.tar.gz">the mdbtool source</a>. The manual page is current unwritten, but would look something like:</p> <pre><code> mdbtool [command] [options] getattrs [object] [attribute name] Example: mdbtool getattrs \\Tree\\Context\\Server netmail:messagingserver Dumps the value of the attribute for a given object. Double-slashes are used to name the object for shell reasons. The result is of the format: [attribute name]::[value] This format may change, given values could contain carriage returns. setattr [object] [attribute name] [new value] Example: mdbtool setattr \\Tree\\Context\\test Sname newname Sets the value of an attribute of the object. Attribute names are prefixed with 'S' (for attributes that contain strings) or 'D' (for attributes that contain the names of objects). addobject [object] [class] [attr1=value1 attr2=value2 ...] Example: mdbtool addobject \\Tree\\Context\\test User Sname=foo Creates a new object of any given type, and initialises some of the attributes. Attribute naming requires 'S'/'D' prefixes (see setattr), you can have as many initial attributes as you like. setpassword [object] Example: mdbtool setpassword \\Tree\\Context\\Admin hula Set the password for any given object; usually used for User objects. The example given above resets the password of the admin user. </code></pre> <p>I have plans for a fair few other commands - we're missing object (re)move, and tree/object introspection in particular - but it seems at least some commands will require work to MDB and the various drivers in order to actually work. Some schema stuff will also be needed at some point. The main thing I next want to achieve is dumping and re-creating complete trees, because I think that's one thing users will really like.</p> MDBReadEx() segfaults :( Sun, 02 Oct 2005 13:08:00 BST http://www.eurobob.eclipse.co.uk/blog/2005/10/02#mdbreadex-seggy <p>And I can't figure out why, so hopefully lazyweb will help me. So, I have this code:</p> <pre><code> #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include "mdbtool.h" /* this just pulls in mdb.h */ void leave(char *excuse) { printf("ERROR: %s", excuse); exit(1); } int main (int argc, char *argv[]) { const unsigned char *attrval; const unsigned char *object = "\\Tree\\Context\\Server"; const unsigned char *attr = "netmail:messagingserver"; if (!MemoryManagerOpen("mdbtool")) leave("Could not start memory manager\n"); if (!MDBInit()) leave("Could not initialise MDB\n"); MDBHandle *h = MDBAuthenticate("Hula", NULL, NULL); if (h == NULL) leave("Could not authenticate to MDB\n"); MDBValueStruct *vs = MDBCreateValueStruct(h, object); MDBEnumStruct *es = MDBCreateEnumStruct(vs); while ((attrval = MDBReadEx(object, attr, vs, es)) != NULL) { printf ("Attribute: %s\n", attrval); } MDBDestroyEnumStruct(es, vs); MDBDestroyValueStruct(vs); return 0; } </code></pre> <p>I run it, and it segfaults:</p> <pre><code> (gdb) r Starting program: /home/alex/mdbtool/simple [Thread debugging using libthread_db enabled] [New Thread -1210911040 (LWP 28415)] Program received signal SIGSEGV, Segmentation fault. [Switching to Thread -1210911040 (LWP 28415)] 0xb7fccfb9 in MDBReadEx () from /usr/lib/libhulamdb.so.0 (gdb) bt #0 0xb7fccfb9 in MDBReadEx () from /usr/lib/libhulamdb.so.0 #1 0x080487dc in main (argc=1, argv=0xbf9f48b4) at simple.c:23 </code></pre> <p>According to the API docs, I don't think I'm doing anything particularly wrong. Also, I can't make it work with MDBRead() either - doing something like:</p> <pre><code> long l = MDBRead(object, attr, vs); for (i=0; i&lt;l; i++) { printf ("Attr: %s\n", vs-&gt;Value[i]); } </code></pre> <p>... returns values, but cut off in bizarre places. <em>Am I doing something remarkably silly, or is there some voodoo dance I need to do?</em>. Frustrating :(</p> Hula now under the GPL! Tue, 27 Sep 2005 23:07:00 BST http://www.eurobob.eclipse.co.uk/blog/2005/09/27#hula-is-gpld <p>I shall be the first to praise whoever it was at Novell who decided that Hula would be better off being straight GPL. No longer the MPL/LGPL/GPL (with the MPL being noticably missing from files) triumvirate, it's plain and simple. Woo.</p> Hula makes it to Debian Sun, 11 Sep 2005 23:54:00 BST http://www.eurobob.eclipse.co.uk/blog/2005/09/11#hula-is-in-debian <pre><code>hula_0.1.0+svn379-2_i386.changes uploaded successfully to localhost along with the files: hula_0.1.0+svn379-2.dsc hula_0.1.0+svn379.orig.tar.gz hula_0.1.0+svn379-2.diff.gz hula_0.1.0+svn379-2_i386.deb hula-mta_0.1.0+svn379-2_i386.deb libhula0_0.1.0+svn379-2_i386.deb libhula-dev_0.1.0+svn379-2_i386.deb Greetings, Your Debian queue daemon</code></pre>