Difference between revisions of "Arch Linux/Arch Haskell Group Maintainership"
DonStewart (talk | contribs) |
DonStewart (talk | contribs) |
||
Line 15: | Line 15: | ||
== The job of an Arch Haskell group maintainer == |
== The job of an Arch Haskell group maintainer == |
||
− | The |
+ | 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 (below). |
|
== The "build" script == |
== 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 "install" script == |
||
+ | |||
+ | * 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.
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/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