Arch Linux/Arch Haskell Group Maintainership

From HaskellWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

The Arch Haskell group maintains AUR packages for Haskell. The Arch Haskell packages make up around 10% of total AUR packages (~2000 packages).

To make the task of implementing the Arch Haskell policy of tracking AUR feasible, we take two approaches:

  • massive automation of Hackage to AUR regular conversion, via cabal2arch
  • group participation in updating packages.

The first step ensures a consistent user experience:

  • cabal2arch should be used to generate all Haskell AUR packages,
  • which ensures all naming conventions and other policies are followed,

The second point ensures the Arch Haskell project isn't vulernable to "bus errors" where a user burns out.

The job of an Arch Haskell group maintainer

The concern of an Arch Haskell maintainer is as follows.

  • Ensure AUR tracks Hackage versions of packages.

To do this, the following work is done:

  • Watch the Hackage RSS feed
  • When new packages appear, attempt to build and upload them, with the "build" script (below).

The "build" script

The "build" script is a shell program that wraps cabal2arch. You should always have the latest version of cabal2arch installed. The set of tools you need to run this script are:

  • The haskell-archlinux package.
  • cabal2arch
  • aurploader
  • feed-cli

#!/bin/sh
cd /tmp/
set -e
project=`cabal2arch $* 2>&1 | tail -1 | sed 's/Created *//' | xargs basename | sed 's/\..*$//'`
echo $project
cd $project
build || exit 1
cd ..
echo "Uploading $project.tar.gz"
aurploader -k $project.tar.gz
# create meta files: update the package list and build success list
tail -1 ~/.cabal2arch.log | update-aur-log
cp /home/dons/aur.xml /tmp/
url=`/home/dons/bin/get-arch-url $project || cat /tmp/link`
echo $url
feed-cli new-item -t`cat /tmp/title` --description-file=/tmp/desc -u/tmp/aur.xml -l"$url"
rm /tmp/link
rm /tmp/title
rm /tmp/desc
echo scp /tmp/aur.xml code.haskell.org:/srv/code/arch/
cp /tmp/aur.xml $HOME


And additional script does the work of building the package:


set -e
pkg=`sed -n '/pkgname/{s/pkgname=//;p;q}' PKGBUILD`
if makepkg -f ; then
    echo "$pkg True" >> $HOME/.build-all.log
else
    exit 1
fi


Package Quality Assurance

One script generates this table from build success logs:

Package Publication and Notification

Another updates the RSS feed, so that packages are publicized:

Mapping to Hackage

Yet another updates the distro mapping, so that AUR links are displayed on Hackage