summaryrefslogtreecommitdiff
path: root/libre/apache-ant/PKGBUILD
blob: a4508a77aa06f8309aaf026f184338f4ff6e9fab (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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
# Maintainer: Luke Shumaker <lukeshu@sbcglobal.net>
# Maintainer (Arch): Guillaume ALAUX <guillaume@archlinux.org>
# Contributor (Arch): Andrew Wright <andreww@photism.org>
# Contributor (Arch): Paul Mattal <paul@archlinux.org>

pkgname=apache-ant
pkgver=1.9.7
pkgdesc='A java-based build tool'
pkgrel=1.parabola1
arch=('any')
url='http://ant.apache.org/'
license=('APACHE' 'custom:BSD3')
depends=('java-environment')
makedepends=('jh')
install=apache-ant.install
source=(https://www.apache.org/dist/ant/source/${pkgname}-${pkgver}-src.tar.bz2
        apache-ant.sh
        apache-ant.csh
        apache-ant.install
        bin_ant
        ant.conf)
sha256sums=('9e5c36759b81e0b16f2f1747631e81dc86fe904e45b413a6ca15d10b3282ab0b'
            '182b9212610790966d3a018d3cbab2e5327dd9fd11dc15dd1f377853216f5718'
            '919a3ab1acae1d0d190fe6e0034b00975caab40e55359a720bfccd098fe2d995'
            '3de451d0f963ba96e83f4e068a8325e3d4fc42b1e5c4818e9d7962ed4f5393b3'
            '29b443ae3af7e246b4ff0b5ec9f023ae95992db1a010a362e70ca7a65a6df461'
            'b86ce60f61cbd85a9faa61d698b0fc4607f1ff375cd15673aee57f053012eacb')

# This list is adapted from https://ant.apache.org/manual/install.html#librarydependencies
# The format is:
#   jarname:description:pkgname:jarpath
_library_dependencies=(
  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
  js.jar:'Javascript with <script> task':java-rhino:/usr/share/java/js.jar
  jython.jar:'Python with <script> task':jython:/opt/jython/jython.jar
  beanshell.jar:'BeanShell with <script> task':'beanshell2':/usr/share/java/bsh.jar
  jruby.jar:'Ruby with <script> task':jruby:/opt/jruby/lib/jruby.jar
  commons-logging.jar:'CommonsLoggingListener':java-commons-logging:/usr/share/java/commons-logging.jar
  log4j.jar:'Log4jListener':'log4j-1.2':'/usr/share/java/log4j-1.2.jar'
  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
  hamcrest-core-1.3.jar:'java matcher objects library':java-hamcrest:/usr/share/java/hamcrest-core.jar
)

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

prepare() {
  cd "${srcdir}/${pkgname}-${pkgver}"
  rm -rv lib/optional/*.jar
  rm -rv src/etc/testcases/taskdefs/conditions/jars/*.jar

  # 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() {
  cd "${srcdir}/${pkgname}-${pkgver}"

  # Build
  export JAVA_HOME=/usr/lib/jvm/default
  sh build.sh dist
}

package() {
  cd "${srcdir}/${pkgname}-${pkgver}/${pkgbase}-${pkgver}"
  source "${srcdir}"/${pkgname}.sh # Get the ANT_HOME env var

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

  install -d "${pkgdir}/etc/${pkgname}"
  cp -Rp etc/* "${pkgdir}/etc/${pkgname}"
  rm "${pkgdir}/etc/${pkgname}/ant-bootstrap.jar"
  ln -s /etc/${pkgname} "${pkgdir}${ANT_HOME}/etc"

  install -d "${pkgdir}${ANT_HOME}/bin"
  find bin -type f -a ! -name \*.bat -a ! -name \*.cmd \
    -exec install -m755 {} "${pkgdir}${ANT_HOME}/bin" \;

  install -Dm755 "${srcdir}/bin_ant"  "${pkgdir}/usr/bin/ant"
  install -Dm644 "${srcdir}/ant.conf" "${pkgdir}/etc/apache-ant/ant.conf"

  # Fix python2 path
  sed -i 's|/usr/bin/python|/usr/bin/python2|' "${pkgdir}/${ANT_HOME}/bin/runant.py"

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

  # Symlink to external optional libraries
  install -d "${pkgdir}/usr/share/apache-ant/lib"
  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

  ## Install Maven artifacts, except 'ant-jai' and 'ant-netrexx'
  cd lib
  rm {ant-jai,ant-netrexx}.{jar,pom}
  install -d "${pkgdir}/usr/share/java/${pkgname}"

  export DESTDIR=${pkgdir}
  for artifact in $(printf '%s\n' *.pom|sed 's/\.pom$//'); do
    if [[ -f "${artifact}.jar" ]]; then
      # This artifact has a jar file
      jh mvn-install "org.apache.ant" ${artifact} ${pkgver} \
        "${artifact}.pom" \
        "${artifact}.jar" \
        "${artifact}.jar"

      # Symlink them to /usr/share/java
      ln -s "/usr/share/java/${artifact}.jar" \
        "${pkgdir}/usr/share/java/${artifact}-${pkgver}.jar"
      ln -s "/usr/share/java/${artifact}.jar" \
        "${pkgdir}/usr/share/java/apache-ant/${artifact}.jar"
      ln -s "/usr/share/java/${artifact}.jar" \
        "${pkgdir}/usr/share/apache-ant/lib/${artifact}.jar"
    else
      # This artifact is just a pom
      jh mvn-install "org.apache.ant" ${artifact} ${pkgver} \
        "${artifact}.pom"
    fi
  done

  install -d "${pkgdir}"/usr/share/{doc,licenses}/${pkgname}

  # Install documentation
  cp "../README" "../WHATSNEW" "${pkgdir}/usr/share/doc/${pkgname}"
  cp -r "../manual" "${pkgdir}/usr/share/doc/${pkgname}/html"

  # Install license
  install -Dm644 "../LICENSE" "../NOTICE" "${pkgdir}/usr/share/licenses/${pkgname}"
}