summaryrefslogtreecommitdiff
path: root/libre/apache-ant/PKGBUILD
blob: 1883b7682ef73cd7bf333b8f1582faaf77b2c083 (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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# Maintainer: Luke Shumaker <lukeshu@sbcglobal.net>
# Maintainer (Arch): Paul Mattal <paul@archlinux.org>
# Contributor: Andrew Wright <andreww@photism.org>

pkgname=apache-ant
pkgver=1.9.3
pkgdesc="A Java-based build tool"
license=('Apache' 'custom:BSD3')
url="http://ant.apache.org/"

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

pkgrel=2.1 # newer than Arch's 1.9.3-2
arch=('any')
depends=('java-environment')
makedepends=('jh')

_mirror=http://archive.apache.org/dist
source=($_mirror/ant/source/${pkgname}-${pkgver}-src.tar.bz2
        ${pkgname}.sh ${pkgname}.csh)
md5sums=('995f21618acdf35beacc465c84d79534'
         'bd63c881be406f515fc4d22635e8326a'
         'aaa615512cbe1ed7f3b62c1ff46802f8')

# This list is adapted from https://ant.apache.org/manual/install.html#librarydependencies
# The format is:
#   jarname:description:pkgname:jarpath
_library_dependencies=(
  #jakarta-regexp-1.3.jar:Disregard
  jakarta-oro-2.0.8.jar:'<ftp task>':jakarta-oro:/usr/share/java/jakarta-oro.jar
  junit.jar:'<junit> task':junit:/usr/share/java/junit.jar
  xalan.jar:'<junitreport> task':xalan-java:/usr/share/java/xalan.jar
  antlr.jar:'<antlr> task':java-antlr2:/usr/share/java/antlr2.jar
  bsf.jar:'<script> task':java-commons-bsf2:/usr/share/java/bsf2.jar
  groovy-all.jar:'Groovy with <script> and <scriptdef> tasks':groovy:/usr/share/groovy/embeddable/groovy-all.jar
  #netrexx.jar:'<netrexx> task, Rexx with <script> task':???????:???????
  js.jar:'Javascript with <script> task':java-rhino:/usr/share/java/js.jar
  jython.jar:'Python with <script> task':jython:/opt/jython/jython.jar
  #jpython.jar:Disregard
  #jacl.jar:'TCL with <script> task':???????:???????
  #tcljava.jar:'TCL with <script> task':???????:???????
  beanshell.jar:'BeanShell with <script> task':'beanshell>=1.3':/usr/share/java/bsh.jar
  jruby.jar:'Ruby with <script> task':jruby:/opt/jruby/lib/jruby.jar
  #judo.jar:'Judoscript with <script> task':???????:??????
  commons-logging.jar:'CommonsLoggingListener':java-commons-logging:/usr/share/java/commons-logging/commons-logging.jar
  #log4j.jar:'Log4jListener':???????:???????
  commons-net.jar:'<ftp>, <rexec> and <telnet> tasks':'java-commons-net1>=1.4.0':/usr/share/java/commons-net.jar
  bcel.jar:"'classfileset' data type, JavaClassHelper for ClassConstants filter reader":java-bcel:/usr/share/java/bcel.jar
  mail.jar:'<mimemail> task, mime encoding with <mail>':java-gnumail:/usr/share/java/gnumail.jar
  activation.jar:'<mimemail> task, mime encoding with <mail>':java-activation-gnu:/usr/share/java/activation.jar
  jdepend.jar:'<jdepend> task':java-jdepend:/usr/share/java/jdepend.jar
  resolver.jar:"external files for 'xmlcatalog' datatype":java-resolver:/usr/share/java/resolver.jar
  jsch.jar:'<sshexec> and <scp> tasks':'java-jsch>=0.1.42':/usr/share/java/jsch.jar
  #jai.jar:'<image> task':???????:???????
)

for _dep in "${_library_dependencies[@]}"; do
  IFS=: read _jarname _desc _pkgname _jarpath <<<"$_dep"
  optdepends+=("${_pkgname}: ${_desc}")
  makedepends+=("${_pkgname}")
done
unset _dep _jarname _desc _pkgname _jarpath

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/
  local _dep _jarname _desc _pkgname _jarpath
  for _dep in "${_library_dependencies[@]}"; do
    IFS=: read _jarname _desc _pkgname _jarpath <<<"$_dep"
    ln -sfv "${_jarpath}" lib/optional/${_jarname}
  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
  local _dep _jarname _desc _pkgname _jarpath
  for _dep in "${_library_dependencies[@]}"; do
    IFS=: read _jarname _desc _pkgname _jarpath <<<"$_dep"
    ln -svfr "${pkgdir}/${_jarpath}" "${pkgdir}${ANT_HOME}/lib/${_jarname}"
  done

  ## Symlink the /opt distribution to the normal places

  cd "${pkgdir}"/${ANT_HOME}/lib
  local pom a
  for pom in *.pom; do
    a=${pom%.pom}
    base=$(jh mvn-basename org.apache.ant $a $pkgver)
    install -d "${pkgdir}/${base%/*}"
    ln -sfvr "${pkgdir}/${ANT_HOME}/lib/$a.pom" "${pkgdir}/${base}.pom"
    ln -sfvr "${pkgdir}/${ANT_HOME}/lib/$a.jar" "${pkgdir}/${base}.jar"
  done

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