summaryrefslogtreecommitdiffstats
path: root/classes/java-library.bbclass
blob: 5ce0537dd5ba839ebe5b193a22d391df73a50f89 (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
# Inherit this bbclass for each java recipe that builds a Java library (jar file[s]).
#
# It automatically adds important build dependencies, defines JPN (Java Package Name)
# a package named ${JPN} whose contents are those of ${datadir}/java (the jar location).
#
# The JPN is basically lib${PN}-java but takes care of the fact that ${PN} already
# starts with "lib" and/or ends with "-java". In case the "lib" prefix is part of
# your package's normal name (e.g. liberator) the guessing is wrong and you have
# to set JPN manually!

inherit java

# use java_stage for native packages
JAVA_NATIVE_STAGE_INSTALL = "1"

def java_package_name(d):
  import bb;

  pre=""
  post=""

  pn = bb.data.getVar('PN', d, 1)
  if not pn.startswith("lib"):
    pre='lib'

  if not pn.endswith("-java"):
    post='-java'

  return pre + pn + post

JPN ?= "${@java_package_name(d)}"

DEPENDS_prepend = "virtual/javac-native fastjar-native "

PACKAGES = "${JPN}"

PACKAGE_ARCH_${JPN} = "all"

FILES_${JPN} = "${datadir_java}"

# File name of the libraries' main Jar file
JARFILENAME = "${BP}.jar"

# Space-separated list of alternative file names.
ALTJARFILENAMES = "${BPN}.jar"

# Java "source" distributions often contain precompiled things
# we want to delete first.
do_removebinaries() {
  find ${WORKDIR} -name "*.jar" -exec rm {} \;
  find ${WORKDIR} -name "*.class" -exec rm {} \;
}

addtask removebinaries after do_unpack before do_patch

java_install() {
  oe_jarinstall ${JARFILENAME} ${ALTJARFILENAMES}
}

do_install() {
  java_install
  java_stage
}

java_stage() {
  oe_jarinstall -s ${JARFILENAME} ${ALTJARFILENAMES}
}