Arch Haskell under new management :-)

Recently there’s been quite a few things happening in the Arch Haskell community. Since Don stepped down from Arch Haskell work there have been quite a few changes in the community.

Before describing those changes I feel it’s worth pointing out just what Don has done over the last year or so. Pretty much single-handedly he has made sure that ArchLinux has almost all of Hackage available as native (source) packages. That resulted in ArchLinux being one of the best, if not the best, Linux distro for Haskell developers. In the end he maintained 1937 packages on AUR (there are currently 25237 packages on AUR in total), and he also wrote and maintained the tool used to track Hackage (cabal2arch).

So, what have we been up to since Don’s announcement?

First of all we’ve moved the activity to github. This allows us to maintain the packages as a team rather than put the entire burden on a single person. The source repositories, cabal2arch, archlinux, and archlinux-web are obviously where the source for the tool and its dependencies are kept. Furthermore there’s the habs git repo. This repo contains the source for all the packages (PKGBUILD and *.install files). Keeping all source packages on github will allow us to more easily accept updates and fixes to individual packages from people in the community. Unfortunately uploading to AUR still remains a bottle neck. Which conveniently brings me on to the ideas for the future.

Even though there now are two people who can upload packages AUR as arch-haskell, it is still likely to be a pain point in keeping up with the uploads to Hackage. The long-term solution is to stop using AUR, but for that to be possible we need to have some tool support for downloading and compiling packages from archhaskell/habs. Until that tool support is there we’ll keep uploading to AUR.

In the future we would also like to provide a subset of the packages in binary form. The main issue at the moment is keeping on top of the re-building that is necessary (if package foo is updated then all its dependants need to be re-built too). We are however well on our way towards having tools to support that. The next big issue is where to house the binary packages :-)

Even further into the future we will look closer at whether a repo of source packages really is the most effective way to track Hackage.

Even though we now have a few people who are hacking away on the tools, and try to keep up with Hackage, we can always use more help. So if you are interested in helping out this is a great opportunity to make a large impact. Just in this post I’ve mentioned a few areas where we need help:

  • Run cabal2arch on new packages on Hackage, QA the results and then file pull requests against archhaskell/habs.
  • Getting tools that support downloading from archhaskell/habs so we can move off AUR.
  • Improving the tools used to build binary packages.
  • Improve cabal2arch.
  • Anything else you can think of.
  • Last but not least, if you know a place where we could house binary packages, please let us know.

So, I encourage everyone with an interest in Haskell on ArchLinux to join the mailing list and get involved. No prior experience with Haskell is really necessary, a bit of shell (bash) scripting is enough for some of the planned things.

See you on the list!

6 responses to “Arch Haskell under new management :-)

  1. All that you’re getting from AUR is the PKGBUILD and *.install files which are in archhaskel/habs? You can get the plaintext/raw versions directly from the repo by http://github.com/archhaskell/habs/raw/master/she/PKGBUILD for example. So it shouldnt be hard to make a tool to download them and then building it.

  2. True, but there is one more thing that you get out of AUR, an API for searching the set of available packages. So what I think we need to address is discoverability. I think archhaskell/habs contains a few too many packages to force a complete download just to do a search. Sure, caching in the client is a solution, but I feel it’s more of a band-aid rather than a proper solution.

  3. Yngve I. Levinsen

    Very impressive work! Would it be possible to create some bundles on AUR? It takes quite a lot of “do you want to edit PKGBUILD, do you want to continue build x, do you want to vote for x…” when building from AUR (using yaourt). Downloading a PKGBUILD bundle to get the central packages in my local binary repository would be very nice.

  4. Idéophage

    Thanks for your work.
    This little script may help (or not?):

    #!/bin/bash

    name=$1
    x=$(tar -xvf $name)
    cd $(echo $x | head -n 1)
    cabal2arch $(find . -name \*.cabal)
    cd $(ls -t | head -n 1)
    makepkg && sudo pacman -U *.pkg.tar.xz

    It takes the path to the cabal package and installs it.

    • Idéophage

      Little better:

      #!/bin/bash

      pkg_path=$1
      init_dir=$(pwd)

      created_list=$(tar -xv -f “$pkg_path”)
      if [ ! “$created_list” ]; then exit 1; fi

      created_dir=$(echo “$created_list” | head -n 1)
      cd “$created_dir”

      cabal2arch $(find . -name \*.cabal) &&
      cd $(ls -t | head -n 1) &&
      makepkg && sudo pacman -U *.pkg.tar.xz

      cd “$init_dir” && rm “$created_dir” -r

Leave a comment