summaryrefslogtreecommitdiff
path: root/java/apache-ant/PKGBUILD
blob: 77e0dfe94a0252015d9c5e0507f354c1179c832e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# Maintainer: Luke Shumaker <lukeshu@sbcglobal.net>
# Maintainer (Arch): Paul Mattal <paul@archlinux.org>
# Contributor: Andrew Wright <andreww@photism.org>

pkgname=apache-ant
pkgver=1.8.4

provides=("apache-ant-libre=$pkgver")
replaces=("apache-ant-libre")
conflicts=("apache-ant-libre")

pkgrel=1.1
pkgdesc="A Java-based build tool"
arch=('any')
license=('Apache')
url="http://ant.apache.org/"
_mirror=http://archive.apache.org/dist
source=($_mirror/ant/source/${pkgname}-${pkgver}-src.tar.bz2
        ${pkgname}.sh ${pkgname}.csh)
depends=('java-environment')

# This list is adapted from https://ant.apache.org/manual/install.html#librarydependencies
declare -A _opts
_opts[junit]='to have JUnit on the classpath in javac tasks;/usr/share/java/junit.jar'
_opts[xalan-java]='<junitreport> task;/usr/share/java/xalan.jar'
_opts[antlr2]='<antlr> task;/usr/share/java/antlr2.jar::antlr.jar'
#_opts[java-bsf]='<script> task;/usr/share/java/bsf.jar'
#_opts[groovy]='Groovy with <script> and <scriptdef> tasks;/usr/share/java/groovy.jar'
_opts[java-asm2]='Groovy with <script> and <scriptdef> tasks;/usr/share/java/asm-2.jar::asm.jar /usr/share/java/asm-util-2.jar::asm-util.jar'
#_opts[netrexx]='<netrexx> task, Rexx with <script> task;/usr/share/java/netrexx.jar'
_opts[rhino]='Javascript with <script> task;/usr/share/java/js.jar'
_opts[jython]='Python with <script> task;/opt/jython/jython.jar'
#_opts[jacl]='TCL with <script> task;/usr/share/java/jacl.jar'
#_opts[tcljava]='TCL with <script> task;/usr/share/java/tcljava.jar'
_opts[beanshell>=1.3]='BeanShell with <script> task;/usr/share/java/bsh.jar::beanshell.jar'
#_opts[jruby]='Ruby with <script> task;/usr/share/java/jruby.jar'
#_opts[judo]='Judoscript with <script> task;/usr/share/java/judo.jar'
_opts[java-commons-logging]='CommonsLoggingListener;/usr/share/java/commons-logging/commons-logging.jar'
#_opts[java-log4j]='Log4jListener;/usr/share/java/log4j.jar'
#_opts[java-commons-net>=1.4.0]='<ftp>, <rexec> and <telnet> tasks;/usr/share/java/commons-net.jar'
#_opts[java-bcel]="'classfileset' data type, JavaClassHelper for ClassConstants filter reader;/usr/share/java/bcel.jar"
#_opts[java-mail]='<mimemail> task, mime encoding with <mail>;/usr/share/java/mail.jar'
#_opts[java-activation]='<mimemail> task, mime encoding with <mail>;/usr/share/java/activation.jar'
#_opts[jdepend]='<jdepend> task;/usr/share/java/jdepend.jar'
#_opts[java-xmlcommons-resolver>=1.1beta]="external files for 'xmlcatalog' datatype;/usr/share/java/resolver.jar"
#_opts[java-jsch>=0.1.42]='<sshexec> and <scp> tasks;/usr/share/java/jsch.jar'
#_opts[java-advanced-imaging]='<image> task/usr/share/java/jai/*.jar'

for pkg in "${!_opts[@]}"; do
  optdepends+=("$pkg: ${_opts[$pkg]%;*}")
  makedepends+=("$pkg")
done

build() {
  # This directory is what becomes
  # http://archive.apache.org/dist/ant/binaries/${pkgname}-${pkgver}-bin.tar.bz2
  # which is what Arch uses
  rm -rf "${srcdir}"/${pkgname}-${pkgver}-bin
  mkdir -p "${srcdir}"/${pkgname}-${pkgver}-bin

  cd "${srcdir}"/${pkgname}-${pkgver}
  # Symlink to external optional libraries
  for jar in ${_opts[@]#*;}; do
    ln -sf ${jar%::*} lib/optional/`basename ${jar/*::}`
  done
  # Build
  source "/etc/profile.d/jdk.sh"   # Get the JAVA_HOME env var
  sh build.sh -Ddist.dir="${srcdir}"/${pkgname}-${pkgver}-bin dist
}

package() {
  cd "${srcdir}"/${pkgname}-${pkgver}-bin
  source "${srcdir}"/${pkgname}.sh # Get the ANT_HOME env var
  source "/etc/profile.d/jdk.sh"   # Get the JAVA_HOME env var

  ## Install profile.d script
  install -d "${pkgdir}"/etc/profile.d
  install -m755 "${srcdir}"/${pkgname}.{csh,sh} "${pkgdir}"/etc/profile.d/

  ## Install the main distribution
  install -d "${pkgdir}"/${ANT_HOME}
  cp -Rp * "${pkgdir}"/${ANT_HOME}

  ## Fix the distribution
  # Remove Windows .bat/.cmd files
  rm -f "${pkgdir}"/${ANT_HOME}/bin/*.{bat,cmd}
  # Fix python2 path
  sed -i 's|/usr/bin/python|/usr/bin/python2|' "${pkgdir}"/${ANT_HOME}/bin/runant.py
  # Symlink to external optional libraries
  for jar in ${_opts[@]#*;}; do
    ln -sf ${jar%::*} "${pkgdir}"/${ANT_HOME}/lib/`basename ${jar/*::}`
  done

  ## Symlink the /opt distribution to the normal places
  install -d "${pkgdir}"/usr/bin
  install -d "${pkgdir}"/usr/share/doc/${pkgname}
  install -d "${pkgdir}"/usr/share/licenses/${pkgname}

  cd "${pkgdir}"/${ANT_HOME}
  for prog in bin/*; do
      ln -sf ${ANT_HOME}/$prog "${pkgdir}"/usr/bin
  done
  ln -sf ${ANT_HOME}/{README,WHATSNEW} "${pkgdir}"/usr/share/doc/${pkgname}
  ln -sf ${ANT_HOME}/docs "${pkgdir}"/usr/share/doc/${pkgname}/html
  ln -sf ${ANT_HOME}/{LICENSE,NOTICE} "${pkgdir}"/usr/share/licenses/${pkgname}
}

md5sums=('c474fa9d0c35a24037c23b6e476862c1'
         'bd63c881be406f515fc4d22635e8326a'
         'aaa615512cbe1ed7f3b62c1ff46802f8')