Personal tools

Arch Linux/Arch Haskell Group Maintainership

From HaskellWiki

< Arch Linux(Difference between revisions)
Jump to: navigation, search
Line 15: Line 15:
 
== The job of an Arch Haskell group maintainer ==
 
== The job of an Arch Haskell group maintainer ==
  
The job of an Arch Haskell maintainer is as follows.
+
The concern of an Arch Haskell maintainer is as follows.
  
 
* Ensure AUR tracks Hackage versions of packages.
 
* Ensure AUR tracks Hackage versions of packages.
Line 22: Line 22:
  
 
* Watch the [http://hackage.haskell.org/packages/archive/recent.html Hackage RSS feed]
 
* Watch the [http://hackage.haskell.org/packages/archive/recent.html Hackage RSS feed]
* When new packages appear, attempt to build and upload them, with the "build" script.
+
* When new packages appear, attempt to build and upload them, with the "build" script (below).
  
 
== The "build" script ==
 
== The "build" script ==
  
== The "install" 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
 +
 
 +
<code>
 +
#!/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/dons/
 +
 
 +
</code>
 +
 
 +
And additional script does the work of building the package:
 +
 
 +
<code>
 +
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
 +
</code>
  
 
== Package Quality Assurance ==
 
== Package Quality Assurance ==
 +
 +
* http://www.galois.com/~dons/arch-haskell-status.html
  
 
== Package Publication and Notification ==
 
== Package Publication and Notification ==
 +
 +
* http://twitter.com/archhaskell

Revision as of 20:59, 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
  • 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.

Contents

1 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).

2 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

  1. !/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

  1. 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/dons/

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

3 Package Quality Assurance

4 Package Publication and Notification