Greetings,
I'm looking for some help on the library infrastructure project. The
project and its goals are explained here:
http://www.haskell.org/libraryInfrastructure/
And the code is here:
http://www.haskell.org/libraryInfrastructure/code.html
In brief, the Library Infrastructure Project is an effort to provide a
framework for developers to more effectively contribute their software
to the Haskell community. I'm hoping to not have to implement this
entire proposal myself, and I'm very flexible about implementation
details. I've made some concrete progress, and I just mirrored my
code repository on my web site, so now is the time to get involved!
Specifically, at the moment, I want a couple of things:
1) A version parser. I implemented a parser which parses versions
that are made of dates, or simple numeric versions. I'd like it to
do more kinds of versions, though. Distribution.Version is
attached. What is this version stuff used for? Well for one
thing, you can use it to say something like:
./haskell-config --user list "MyPackage>1.2"
where "MyPackage" is the name of a package. This will list all of
the user-installed packages whose versions are greater than 1.2.
If you look at the HUnit tests at the bottom of the attached file,
you'll get a good idea of what it does right now. It uses Parsec.
BTW, I understand that the Debian project has some standard version
number parser which might give you some ideas.
2) I also would like someone to help out with the package
configuration file IO. Right now, it uses HaXmL, with no generated
code. Someone who has seen HaXmL before could give me advice about
how my code could be better, submit patches, or rewrite it. As
discussed on libraries at haskell.org, I'm open to not using XML if
someone wants to redo what I've got there (not a huge task). This
parsing code is in Distribution.Package. I do want something more
flexible than straight-up read/show.
3) Someone to make it work with in nhc & hugs. The HaXmL page says
that it doesn't work w/ Hugs yet (can anyone tell me why?), so
that's one step. Also, at least for the version of NHC I have on
my system, Parsec is different. So maybe we have to move away from
Parsec, or maybe a different version thereof? It is absolutely
vital for this project to be completely cross-platform and
cross-compiler, so if we have to avoid depending on such things,
I'm very willing to change.
4) Someone to make it work with Windows. Avoid using a filename
that's called "Aux" ;)
ABOUT THE CODE:
It only works with GHC at the moment (see above) :(
Right now what I've got is a first stab at Distribution.Package and
haskell-config as explained in the proposal [1], though some things
may have changed. It's hosted with Arch[2], a newish version control
system. You can branch my code on your own machine and submit
patches. Arch has some tools to help with patches. I've also
provided a tarball. Arch is cool, though. You should try it.
The HUnit tests in some of the modules should be pretty illuminating.
The interactive help for haskell-config is pretty OK.
Get the code here:
http://www.haskell.org/libraryInfrastructure/code.html
peace,
isaac
[1] http://www.haskell.org/libraryInfrastructure/proposal/index.html
[2] http://regexps.srparish.net/www/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Version.hs
Type: application/octet-stream
Size: 15428 bytes
Desc: not available
Url : http://haskell.org/pipermail/libraries/attachments/20040118/ab866d9d/Version.obj