Old Cabal Stuff

HIM 2003 Talk

At the Haskell Implementor's Meeting in 2003, Isaac Jones gave a talk about this project. You can view the slides for that talk here.

Old Prototype

Before the proposal was completed, an example implementation was created in order to flush out fundamental issues. The most important thing I learned from this is that a Unified Packaging System would be a great help. Download the tarball here. It has some stuff that the above code does not have, but is very incomplete also.

Proposals

The newer proposal (updated August 1, 2004) for the Library Infrastructure Project (available in pdf and html). Post your comments on the libraries mailing list (please check out the discussion on the archives first) or email Isaac Jones. The first version of the proposal is here.

The below information is for an older codebase.

HC-PKG prototype - Arch

For version control, we're using a tool called Arch or tla ("Tom Lord's Arch"). It is more advanced and more confusing than CVS, but it is more appropriate for a distributed, open source project. This is a great chance for you to try out version control system with a lot of momentum!

Arch has a great tutorial which walks you through the most common uses and I recommend reading that. One advantage to using Arch instead of CVS, for instance, is that you can easily create your own branch, to which you can commit changes without affecting my archive. There are tools for re-merging the branches once you have something ready to submit to the mainline.

Once you install arch and create your own archive, you can run the following commands to create a branch of my archive on your own machine. The archive will be called ijones@syntaxpolice.org--2003-haskell.

  • tla has good online help:
    tla help
    tla get --help
  • Introduce yourself to tla:
    tla my-id "Test <test@localhost>"
    mkdir ~/{archives}
    tla make-archive test@localhost--2004-example /home/test/{archives}/2004-example
    tla my-default-archive test@localhost--2004-example
  • Let your tla know about my archive:
    tla register-archive ijones@syntaxpolice.org--2003-haskell http://monk.syntaxpolice.org/haskell/arch-archives/ijones@syntaxpolice.org--2003-haskell
  • Prepare your archive for the branch (replace YOURNAME with a string of your own):
    tla archive-setup library-infrastructure-YOURNAME--0.1
  • If you don't want to make a local branch, just get the code like so, and skip the rest of the steps. You won't be able to commit changes locally. If you want to be able to do so, skip this step!
    tla get ijones@syntaxpolice.org--2003-haskell/library-infrastructure--main--0.1 target-directory
  • To create a branch of my archive that you can commit to. This will make a branch in "my-default-archive".
    tla tag ijones@syntaxpolice.org--2003-haskell/library-infrastructure--main--0.1 library-infrastructure-YOURNAME--0.1
  • To actually check out a working version of the code (replace YOURNAME and target-directory):
    tla get library-infrastructure-YOURNAME--0.1 target-directory
  • Now you can make changes, create a log entry (tla make-log), and commit them (tla-commit)!

    Hints

  • To remove everything and start from scratch:
    rm -rf target-directory "{archives}" .arch-params
  • To make creation of logs easier:
    alias log="emacs -nw -q \`tla make-log\`"



    Isaac Jones
    Last modified: Wed Jul 13 22:51:16 PDT 2005