Name: Raja Harinath
Member since: 2000-04-26 21:48:19
Last Login: 2007-11-26 15:14:01
Homepage: http://blog.hurrynot.org
Notes: I am currently part of the Mono project. I maintain the C# compiler and the Mono build system. I have occassionly contributed to GNU autoconf and GNU automake. In the past, I was involved with the GNOME project. For some time at least, I maintained the Makefiles and configuration system for some of the early GNOME packages, and kept them compileable on Solaris.
My Novell Hack Week project: Implement support for Mono in Automake
This week was hack week for all the Open Source hackers at Novell, where we got to work on ideas and projects that we were personally interested in. I decided to work on something that I’ve been planning for a long time, ever since I joined the Mono project, in fact: add support for Mono in Automake.
It has been a while since I hacked on the automake source tree, but I didn’t have too much trouble getting started. In the end, I got most of the features I intended for it:
Stuff missing include
The whole effort took up most of the five days. I spent much of Monday checking out the code from CVS into git and looking at how support for C and other languages was implemented. I had most of the basic support done by Tuesday, got all dependency tracking working by Wednesday, and added documentation, autoconf support, and GAC-installation support by Friday afternoon. I’m very happy that I spent the time upfront to import the project into git, since it saved me from spending a lot of timeslices tracking my changes.
The code is available as a series of patches to Automake (packed conveniently in a tarball), and there’s also an example project that shows how to use it. I also have a “lightning talk” short video about the project.
As much as I enjoyed the coding, I also thoroughly enjoyed working with the whole Bangalore open source team, all in the same conference room for five days, with everyone having a good time, and good food.
It’s a girl !!!
I became a dad this morning (6:25am).
More thoughts about MCS and GMCS
Martin got GMCS to work on Windows, with a small caveat — there’s no API to change the MethodAttributes of a MethodBuilder. I have a couple of observations:
automake, make dist and long filenames
Harish noticed some strange behaviour with ‘make dist’. He later found out that it had to do with a file with an overly long pathname. Automake 1.9 by default forces ‘tar’ to work in the “most compatible” mode, and that mode supports pathnames only upto 99 characters long.
The solution is to ask automake to request tar to use the POSIX standard ‘pax’ format. Add a line like the following in the top-level Makefile.am.
AUTOMAKE_OPTIONS = tar-pax
However, life wouldn’t be interesting if it was so simple.
That gets us to mono’s solution. Here’s the configure.in tidbit that does the trick:
# Gross hack to enable 'make dist' on automake 1.9+tar 1.14. # The extra brackets are to foil regex-based scans. m4_ifdef([_A][M_PROG_TAR],[_A][M_SET_OPTION([tar-ustar])])
Now, please forget this trick, it’s gross. Just use automake 1.9.
PS: There’s an even simpler trick: start distributing ZIP files (make dist-zip) instead
MCS: Implemented ::-lookup (qualified alias member) feature
In all, it took about a day’s worth of effort from start to check-in. But, that one-day effort needed quite some preparatory work. I’d pretty much decided on the approach a couple of months ago, and had a reasonable plan-of-attack, and was looking for an opportune time to work on it. More importantly, the past few months I spent incessantly refactoring the name- and type-lookup facilities in the compiler has paid off, making the task of implementing ‘::’ trivial.
harinath certified others as follows:
Others have certified harinath as follows:
[ Certification disabled because you're not logged in. ]
FOAF updates: Trust rankings are now exported, making the data available to other users and websites. An external FOAF URI has been added, allowing users to link to an additional FOAF file.
Keep up with the latest Advogato features by reading the Advogato status blog.
If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!