# Maintainer: Luke Shumaker <lukeshu@sbcglobal.net>
# Maintainer (Arch): Sergej Pupykin <pupykin.s+arch@gmail.com>
# Contributor (Arch): William Rea <sillywilly@gmail.com>

pkgname=maven
pkgver=3.3.9
pkgdesc="A Java project management and project comprehension tool"
url="http://maven.apache.org"
license=('Apache')

replaces=('maven-libre')
conflicts=('maven-libre')

pkgrel=1.parabola2
arch=('any')
options=(!emptydirs)
conflicts=('maven')
depends=('java-environment' 'sh')
makedepends=('apache-ant' 'jh' 'imake'
	java-animal-sniffer
	java-antlr2
	java-asm
	java-asm3
	java-commons-codec
	java-commons-io
	java-commons-lang
	java-commons-logging
	java-hamcrest
	java-xml-commons-external
	jna
	junit
	mockito
	objenesis
	slf4j
	xerces2-java
)
backup=('etc/maven/settings.xml')

_mirror=http://archive.apache.org/dist
source=($_mirror/maven/maven-${pkgver%%.*}/$pkgver/source/apache-maven-$pkgver-src.tar.gz
	maven.sh maven.csh)

_setup_env() {
  unset _JAVA_OPTIONS
  . /etc/profile.d/jre.sh
  export MAVEN_OPTS=-Xmx512m
  export M2_HOME="$pkgdir"/opt/maven
  export PATH="$PATH:$M2_HOME/bin"
  _M2_LOCALREPO=$(jh mvn-localrepo)
  ant_args=(
    -Dmaven.repo.local="$srcdir"/maven.repo.local
  )
}

prepare() {
  if type mvn &>/dev/null; then
    error "maven cannot be built while an existing version is installed"
    return 1
  fi
}

build() (
  _setup_env
  install -d "$srcdir"/maven.repo.local
  lndir "$_M2_LOCALREPO" "$srcdir"/maven.repo.local

  cd "$srcdir"/apache-maven-$pkgver

  # FIXME: downloads makedepends from the Internet. Add them to makedepends=()
  ant "${ant_args[@]}" maven-compile 2>&1|tee "$srcdir"/ant-log.txt

  < "$srcdir"/ant-log.txt \
    sed -nr 's/.*Download(ed|ing):\s*//p' | \
    sed 's/ .*//' | \
    sed -r -e 's|^http://repo.maven.apache.org/maven2/||' -e 's/\.(jar|pom)$//' | \
    sort -u > "$srcdir"/downloaded-artifacts.txt
)

package() (
  _setup_env
  cd "$srcdir"/apache-maven-$pkgver
  ant "${ant_args[@]}" extract-assembly
  #rm "$pkgdir"/opt/maven/*.txt

  # Install config file in /etc
  #  Unlike the other directories, we symlink from the system to /opt/maven
  #  because that way all conf files stay in /etc
  #install -d "$pkgdir"/etc/maven
  sed "55i<localRepository>$_M2_LOCALREPO</localRepository>" \
    < "$pkgdir"/opt/maven/conf/settings.xml 
  #  > "$pkgdir"/etc/maven/settings.xml
  #rm -rf "$pkgdir"/opt/maven/conf
  #ln -s /etc/maven "$pkgdir"/opt/maven/conf

  # Install profile.d settings
  install -d "$pkgdir"/etc/profile.d
  install -m 755 "$srcdir"/maven.{csh,sh} "$pkgdir"/etc/profile.d

  # Link executables to /usr/bin
  install -d "$pkgdir"/usr/bin
  ln -s /opt/maven/bin/{mvn,mvnDebug,mvnyjp} "$pkgdir"/usr/bin

  # Link jar files to appropriate place in /usr/share
  install -d "$pkgdir"/usr/share/java
  ln -s /opt/maven/lib "$pkgdir"/usr/share/java/maven

  # Install the local repo
  mkdir -p "$pkgdir"${_M2_LOCALREPO%/*}
  cp -a "$srcdir"/maven.repo.local "$pkgdir"$_M2_LOCALREPO
  # Remove extra artifacts
  find "$pkgdir"$_M2_LOCALREPO -type l -delete
  find "$pkgdir"$_M2_LOCALREPO -name _maven.repositories -delete
  cat "$srcdir"/downloaded-artifacts.txt | while read artifact; do
    rm -f "$pkgdir"$_M2_LOCALREPO/$artifact*
  done
)

md5sums=('030ce5b3d369f01aca6249b694d4ce03'
         '58820067a4d7384477daa134023d9b57'
         'e2bbdeffed100cd51d05b2ba8ebd6321')
