Sunday 19 October 2008

Building, again

After my successful build of mono, I have been attempting to build MonoDevelop from source. After finding yet another dependency that I had to try to install I gave up at the point of having two libraries that both depended on another separate library (cairo and pango that depended on libpng... I think). Anyway I couldn't get the dependencies to sort themselves out. After much googling, in particular the Mono mailing list, I came across someone else who'd successfully compiled MonoDevelop on Mac OSX.

I was reluctant to use MacPorts or fink as I don't have an internet connection at home so I'd have to work out how to get MacPorts or fink to work without a connection to the internet. Anyway, I've been somewhere with wireless all weekend so I've decided to admit defeat, and just use MacPorts and follow Bart Masschelein's instructions.

Unfortunately, they haven't worked for me and the make stage is failing with:

Unhandled Exception: System.Reflection.ReflectionTypeLoadException: The classes in the module cannot be loaded.
at (wrapper managed-to-native) System.Reflection.Assembly:GetTypes (bool)
at System.Reflection.Assembly.GetExportedTypes () [0x00000]
at Mono.CSharp.RootNamespace.ComputeNamespaces (System.Reflection.Assembly assembly) [0x00000]
at Mono.CSharp.RootNamespace.ComputeNamespaces () [0x00000]
at Mono.CSharp.Driver.LoadReferences () [0x00000]
at Mono.CSharp.Driver.Compile () [0x00000]
at Mono.CSharp.Driver.Main (System.String[] args) [0x00000]

Bart does mention that he had to upgrade to the version 0.3.1 of mono-addins:

I would recommend to hold your horses a bit... I upgraded my local install of mono-addins from 0.3 to 0.3.1, and this solves the add-ins issue.

As I'm not sure how to do this, I'll have to leave this for another day.

Tuesday 14 October 2008

The Social Web is...

... an excuse to have a pretty picture.

To be honest the main reason I wrote this post was to have another excuse to use the jQuery lightBox plugin!

From gravatar.com.

Saturday 11 October 2008

The Building Continues

After the first hurdle (pkg-config), I soon came across another. This time it was glib, unfortunately I was unable to build this from source, as it had a dependency on gettext, which I am now downloading. I expect there might be further dependencies that I'll have to resolve, but I won't know that til I've got the download, and unfortunately my connection seems rather slow. Ah well, such is the modern 'connected' life!

It is downloaded, and currently gettext is building. I do feel like a monkey doing this as I'm just following the last error from ./configure. Or maybe a donkey is a better analogy, chasing carrots!

Things I'm learning:

  • Building from source is not as hard as I'd expect (even on a Mac)
  • It is time consuming though
  • Structure of the Mac OSX file system - I have more of a feel for where things live, it is more like Linux than I initially thought.

Ah ha! success, gettext has built and I've make installed it! Now for glib... I may actually have a working version of Mono, built myself, before my coffee goes cold. I feel so cool, I just maked and make installed in one go with make && make install, simple things... Ooops, almost cool, I forgot the sudo. It seems that the make doesn't require admin permissions as, I guess, that all happens locally, but then make install puts things in all the right places like /usr/bin/ etc.

I feel so close, I'm now running ./configure in the mono directory, and now make and then sudo make install.

I have just one thing to say:

Albee:~ mattlee$ mono -V
Mono JIT compiler version 2.0 (tarball)
Copyright (C) 2002-2008 Novell, Inc and Contributors. www.mono-project.com
TLS: normal
GC: Included Boehm (with typed GC)
SIGSEGV: normal
Notification: Thread + polling
Architecture: x86
Disabled: none

Whoop whoop!

Tuesday 7 October 2008

Building... harder than Lego make you believe

Last night I did it. It was actually really easy, I just followed the instructions from the tarball, you can see them here or below:

./configure --prefix=/usr/local
make
make install

It really was that simple. I'm fairly new to the world of OSX so this experience has raised a few things I think I should know more about. For a start I realised that I don't have a clue about the structure of the file system. Finder hides most of the Unix looking parts away from you, so you have to go diving around with the terminal, which I'm happy to do, but it just seems that they've made it sufficiently different to Linux to really confuse me.

Another hurdle I predict I'll have to navigate is the process of uninstalling, I'm hoping it should be as easy as make uninstall for the tarballed release that I built and installed last night. But what about the 1.9 and 2.0 editions I've installed previously from the Mono Mac Installer, they seem to have spewed files all over the place, including /Library/Frameworks/Mono.Framework. I'll do some googling today and see what I turn up.

Also, I realised that I don't know about make. I've used MSBuild and Nant quite a bit, and I'm assuming that make is kinda the same but you store the configuration as plain text files instead of XML. Which, if I'm honest, makes me quite happy ;o)

On a slightly more personal note, I'm glad to report that, so far, my enthusiasm is remaining, and I'm looking forward to getting in to the code base soon and seeing how things hang together. I'll keep you posted!

Monday 6 October 2008

Oh My Wordle

Oh... just so much prettier than a tag cloud!

Would be nice if it was clicky.

From wordle.net.

Feeling energetic, or is that just the coffee?

As my current interests keep chopping and changing so much, and I don't feel like I should blog until I get settled in to a particular thing, I end up never blogging. So I'm going to start blogging more, even if I haven't fully found my feet in a particular area. This may bean my posts end up being a bit half baked, but at least I will actually blog! So on with my first uncooked, possible indigestible post...

Over the weekend I saw a friend, and I pestered him about things he knows a lot about. Also he, and his wife, gave me some good advice about life in general, and I've started this week feeling much more alive and ready to put my energy in to something, that doesn't just benefit me. I've been thinking for while that I'd like to contribute to an open source project, but it has been hard to find something that I feel I can contribute to. I'm still suffering from feeling very much under qualified, and in no way 1337 enough to contribute any project, let alone one like Mono that is a fairly big, well known one.

I'm going to start off with the basics, familiarise myself with the code base, maybe contribute a small bug fix or a documentation contribution. I'm currently grabbing the sources, and I'll have a look at them, and try to compile them on my MacBook later this evening. As I'm a Mac user by night I'm hoping that that might be something I can contribute, in particular improving MonoDevelop on Mac. Obviously anything like that is a long way off, but if I blog it here, I might actually stick to it, and overcome my inability to persevere at something.

I like the idea of contributing to Mono as it feels like it draws together several of my interests:

  • I like C#, in fact it might be my current favourite language, but
  • I'm a Mac user
  • I'm interested in language / framework design and implementation
  • I'm keen to learn more C++

So, my plan is to document my mini-adventure in to this project. Maybe it'll be of use to someone else, or at least be a reference for me.

Ok, so as I said I've been trying to get the sources over from the svn repo as I've been writing this. But what do you know, it is taking a long time, it's a big project... surprise, surprise! (Considering I like to thinking of myself as being fairly clever, I do amuse myself by how thick I can be sometimes.) Anyway, I got hold of sources from here as per the site. I'll have a play tonight, and let you know how I get on.

Friday 3 October 2008

New Home

A few moments ago I was blogging here. Then I realised that I don't want to be tied to a particular project or a particular set of things to blog about. Especially since I've moved away from Python. So, for now at least, this will be my new home.