summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 05e0bf9e147bac5061ff34cb06e386473385d717 (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
# Maintainer: Muflone http://www.muflone.com/contacts/english/
# Contributor: Det <nimetonmaili g-mail>

pkgname=jre10
pkgver=10.0.2
_major=${pkgver/.*}
pkgrel=1
pkgdesc="Oracle Java Runtime Environment (public release - end of support)"
arch=('x86_64')
url="http://www.oracle.com/technetwork/java/javase/downloads/index.html"
license=('custom:Oracle')
depends=('ca-certificates-java' 'hicolor-icon-theme' 'java-runtime-common' 'nss' 'xdg-utils')
optdepends=('alsa-lib: for basic sound support'
            'gtk2: for Gtk+ look and feel (desktop)')
provides=("java-runtime=${_major}" "java-runtime-headless=${_major}" "java-web-start=${_major}"
          "java-runtime-jre=${_major}" "java-runtime-headless-jre=${_major}" "java-web-start-jre=${_major}"
          "java-openjfx=${_major}" "jre")
conflicts=("java-runtime-jre=${_major}")
backup=("etc/java-${pkgname}/management/jmxremote.access"
        "etc/java-${pkgname}/management/management.properties"
        "etc/java-${pkgname}/security/java.policy"
        "etc/java-${pkgname}/security/java.security"
        "etc/java-${pkgname}/security/javaws.policy"
        "etc/java-${pkgname}/logging.properties"
        "etc/java-${pkgname}/net.properties"
        "etc/java-${pkgname}/sound.properties")
install=${pkgname}.install
source=("http://url.muflone.com/jre-${pkgver}_linux-x64_bin.tar.gz")
sha256sums=('7d2909a597574f1821903790bb0f31aaa57ab7348e3ae53639c850371450845d')
_jvmdir="/usr/lib/jvm/java-${_major}-jre/jre"

package() {
  cd "jre-${pkgver}"

  echo "Creating directory structure..."
  install -d "${pkgdir}/etc/.java/.systemPrefs"
  install -d "${pkgdir}/usr/lib/jvm/java-${_major}-jre/jre/bin"
  install -d "${pkgdir}/usr/lib/mozilla/plugins"
  install -d "${pkgdir}/usr/share/licenses/java${_major}-jre"

  echo "Removing redundancies..."
  rm -r "lib/desktop/icons/HighContrast"
  rm -r "lib/desktop/icons/HighContrastInverse"
  rm -r "lib/desktop/icons/LowContrast"
  rm  lib/fontconfig.*.bfc
  rm  lib/fontconfig.*.properties.src

  echo "Moving contents..."
  mv * "${pkgdir}/${_jvmdir}"

  # Cd to the new playground
  cd "${pkgdir}/${_jvmdir}"

  echo "Fixing directory structure..."
  # Fix bundled .desktops
  sed -e "s|Exec=|Exec=${_jvmdir}/bin/|" \
      -e "s|.png|-${pkgname}.png|" \
      -i lib/desktop/applications/*

  # Move .desktops + icons to /usr/share
  mv lib/desktop/* "${pkgdir}/usr/share/"

  # Suffix .desktops + icon (sun-jcontrol.png -> sun-jcontrol-${pkgname}.png)
  for i in $(find "${pkgdir}"/usr/share/ -type f)
  do
    rename -- "." "-${pkgname}." $i
  done

  # Link missing icons
  for i in $(find "${pkgdir}/usr/share/icons/" -name "sun-jcontrol-${pkgname}.png" -type f)
  do
    ln -s "sun-jcontrol-${pkgname}.png" "${i/jcontrol/java}"
    ln -s "sun-jcontrol-${pkgname}.png" "${i/jcontrol/javaws}"
  done

  # Move confs to /etc and link back to /usr: /usr/lib/jvm/java-${pkgname}/conf -> /etc
  for sub_path in $(find conf/ -type f)
  do
    # New location
    new_etc_path="/etc/java-${pkgname}/${sub_path/conf\/}"

    # Move & link
    install -Dm644 "${sub_path}" "${pkgdir}/${new_etc_path}"
    ln -sf "${new_etc_path}" "${sub_path}"
  done

  # Link NPAPI plugin
  ln -sf "${_jvmdir}/lib/libnpjp2.so" "${pkgdir}/usr/lib/mozilla/plugins/libnpjp2-${pkgname}.so"

  # Replace JKS keystore with 'ca-certificates-java'
  ln -sf "/etc/ssl/certs/java/cacerts" "lib/security/cacerts"

  # Move & link licenses
  mv legal/ "${pkgdir}/usr/share/licenses/java${_major}-jre/"
  ln -sf "/usr/share/licenses/java${_major}-jre/" "${pkgdir}/usr/share/licenses/${pkgname}"

  echo "Enabling copy+paste in unsigned applets..."
  # Copy/paste from system clipboard to unsigned Java applets has been disabled since 6u24:
  # - https://blogs.oracle.com/kyle/entry/copy_and_paste_in_java
  # - http://slightlyrandombrokenthoughts.blogspot.com/2011/03/oracle-java-applet-clipboard-injection.html
  _line=$(awk '/permission/{a=NR}; END{print a}' "${pkgdir}"/etc/java-${pkgname}/security/java.policy)
  sed "${_line} a\\\\n \
    // (AUR) Allow unsigned applets to read system clipboard, see:\n \
    // - https://blogs.oracle.com/kyle/entry/copy_and_paste_in_java\n \
    // - http://slightlyrandombrokenthoughts.blogspot.com/2011/03/oracle-java-applet-clipboard-injection.html\n \
    permission java.awt.AWTPermission \"accessClipboard\";" \
    -i "${pkgdir}/etc/java-${pkgname}/security/java.policy"
}