rust-git の PKGBUILD

AUR にある rust-git が、makepkg しようとすると毎回 llvm やら libuv のサブモジュールを clone しようとして時間がかかって仕方が無いので、初回だけ clone するように修正してみた。ついでに、コンパイラとして clang を使う設定もいれてみた。
既にある物の改造版を AUR にアップして良い物かわからないので、ここに貼り付けておきます。

# Author: NAKASHIMA, Makoto <makoto.nksm@gmail.com>

pkgname=rust-git
pkgver=20120528
pkgrel=1
pkgdesc="A safe, concurrent, practical language from Mozilla."
arch=(i686 x86_64)
url="http://www.rust-lang.org/"
license=('MIT')
depends=('gcc-libs')
makedepends=('git' 'gcc'
             'libffi' 'python2'  # for LLVM
            )
optdepends=('pandoc: to build rust.pdf'
            'llnextgen: for build-time grammar verification'
            'naturaldocs: to build library doc')

_gitroot="git://github.com/mozilla/rust.git"
_gitname="rust"

build() {
  cd "$srcdir"
  msg "Connecting to git server...."

  if [ -d $_gitname ] ; then
    cd $_gitname && git pull origin
    git submodule sync
    git submodule update --init --recursive
    git submodule foreach --recursive git clean -dxf
    git submodule foreach --recursive git checkout .
    msg "The local files are updated."
  else
    git clone --recursive $_gitroot $_gitname
    cd $_gitname
  fi

  msg "git checkout done or server timeout"

  rm -rf "$srcdir/$_gitname-build"
  cp -r "$srcdir/$_gitname" "$srcdir/$_gitname-build"
  cd "$srcdir/$_gitname-build"

  ./configure --prefix=/usr --enable-clang
  msg 's/python$/python2/'
  find . \
    -type f -executable -exec grep -qe 'env python$' '{}' ';' \
    -exec sed -i 's/env python$/env python2/' '{}' ';' -print

  msg "Starting make..."
  make || return 1
}

package() {
  mkdir "$pkgdir/usr"
  cd "$srcdir/$_gitname-build"
  make install DESTDIR="$pkgdir/usr/"

  _docdir=$pkgdir/usr/share/doc/rust
  mkdir -p "$_docdir"
  for _doc in rust.pdf rust.html tutorial.html rust.css core std rust.md ; do
    if ! [ -e "doc/$_doc" ] ; then continue ; fi
    cp -r "doc/$_doc" "$_docdir/"
    chmod -R 644 "$_docdir/$_doc"
    chown -R root:root "$_docdir/$_doc"
  done
  find "$_docdir" -type d -exec chmod 755 '{}' ';'
}