Difference between revisions of "Arch Linux/Arch Haskell Group Maintainership"

From HaskellWiki
Jump to navigation Jump to search
Line 3: Line 3:
 
To make the task of implementing the [http://haskell.org/haskellwiki/Arch_Linux/Policy Arch Haskell policy] of tracking AUR feasible, we take two approaches:
 
To make the task of implementing the [http://haskell.org/haskellwiki/Arch_Linux/Policy Arch Haskell policy] of tracking AUR feasible, we take two approaches:
   
* massive automation of Hackage to AUR regular conversion, via [http://aur.archlinux.org/packages.php?ID=17471 cabal2arch]
+
* massive automation of Hackage to AUR regular conversion, via [http://aur.archlinux.org/packages.php?ID=17471 cabal2arch] and the [http://hackage.haskell.org/package/archlinux archlinux] utilities library
 
* group participation in updating packages.
 
* group participation in updating packages.
   

Revision as of 21:03, 14 August 2010

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 and the archlinux utilities library
  • 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