summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 006d29c0561cb3e057ef9fbfdfdaa170bb2eb08a (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
# Maintainer: Vitor Rodrigues <vitor dot rodrigues at gmail dot com>
# Contributor: pappy@a_s_c_e_l_i_o_n.c_o_m

pkgname=dbeaver-ce
pkgver=21.0.2
pkgrel=1
pkgdesc="Free Universal SQL Client for Developers and Database Administrators (Community Edition)"
arch=('x86_64')
url="https://dbeaver.io/"
license=("Apache")
depends=('java-runtime>=11' 'gtk3' 'gtk-update-icon-cache' 'libsecret')
makedepends=('maven' 'java-runtime<15')
optdepends=('dbeaver-plugin-office: export data in Microsoft Office Excel format'
            'dbeaver-plugin-svg-format: save diagrams in SVG format')
install="${pkgname}.install"
provides=(dbeaver-ce)
conflicts=(dbeaver-ce-bin)

source=("${pkgname}-${pkgver}.tar.gz"::"https://github.com/serge-rider/dbeaver/archive/${pkgver}.tar.gz"
        "${pkgname}.desktop"
        "${pkgname}.sh"
        "${pkgname}.profile.gz"
        "${pkgname}.hook")
sha256sums=('39f9d518d057884a2bfd2a4cee656190fe849b06fd7184b465d159c618a28837'
            'a53bcfa37f71e96fdc0ba3df6748d147f29fcb3bc7f35ffad9d876f3e2b072aa'
            'ba3c2248960b2b5c6eafa227ec9bd1223e21287a991cd3b912f0b0a984666c80'
            '1863e74bdcf22b7328e6e8487cbebff7d5360e34bde85c1dd226b168b4737034'
            '131e3eb7b97723aa17c08db23a8b588fedef3d99941de1177b90ba3917459bf0')

noextract=("${source[@]%%::*}")

prepare() {
  # Decompress source
  mkdir -p $srcdir/${pkgname}-${pkgver}
  tar -xf "$srcdir/${pkgname}-${pkgver}.tar.gz" --strip=1 -C "$srcdir/${pkgname}-${pkgver}"

  # Fix version number in profile file
  gzip --decompress --keep --stdout "${pkgname}.profile.gz" | 
    sed "s/DBEAVER_VERSION/${pkgver}/g" |
    gzip -9 > "${pkgname}.profile-${pkgver}.gz"
  rm "${pkgname}.profile.gz"

  # Avoid the use of any Java 15, actually incompatible with the build
  export JAVA_HOME="/usr/lib/jvm/$(archlinux-java status | tail -n +2 | sort | cut -d ' ' -f 3 | sort -nr -k 2 -t '-' | grep -v '15-openjdk' -m 1)"
  
  # Download dependencies during prepare FS#55873
  # https://bugs.archlinux.org/task/55873
  cd "${pkgname}-${pkgver}"
  export MAVEN_OPTS="-Xmx2048m -XX:MaxPermSize=512m"
  mvn --batch-mode validate
}

build() {
  cd "${pkgname}-${pkgver}"
  mvn --batch-mode package
}

package() {
  cd "${pkgname}-${pkgver}/product/community"
  # Install icons into /usr/share/icons/hicolor
  for _size in 16 32 48 64 128 256 512
  do
    install -m 644 -D "icons-sources/icon_${_size}x${_size}.png" \
      "${pkgdir}/usr/share/icons/hicolor/${_size}x${_size}/apps/${pkgname}.png"
  done

  # Move into the target directory
  cd "target/products/org.jkiss.dbeaver.core.product/linux/gtk/${CARCH}"

  # Initially install everything into /usr/lib/dbeaver
  install -m 755 -d "${pkgdir}/usr/lib"
  cp -r "dbeaver" "${pkgdir}/usr/lib/${pkgname}"

  # Move shared data to /usr/share/dbeaver
  cd "${pkgdir}/usr/lib/${pkgname}"
  install -m 755 -d "${pkgdir}/usr/share/${pkgname}"
  for _file in configuration features p2 .eclipseproduct artifacts.xml dbeaver.ini readme.txt
  do
    mv "${_file}" "${pkgdir}/usr/share/${pkgname}"
    ln -s "/usr/share/${pkgname}/${_file}" .
  done

  # Install additional licenses
  install -m 755 -d "${pkgdir}/usr/share/licenses"
  mv licenses "${pkgdir}/usr/share/licenses/${pkgname}"

  # Install icons
  install -m 755 -d "${pkgdir}/usr/share/pixmaps"
  mv dbeaver.png "${pkgdir}/usr/share/pixmaps/${pkgname}.png"
  mv icon.xpm "${pkgdir}/usr/share/pixmaps/${pkgname}.xpm"

  # Install executable script into /usr/bin
  install -m 755 -d "${pkgdir}/usr/bin"
  install -m 755 "${srcdir}/${pkgname}.sh" "${pkgdir}/usr/bin/${pkgname}"

  # Install application launcher into /usr/share/applications
  install -m 755 -d "${pkgdir}/usr/share/applications"
  install -m 755 -t "${pkgdir}/usr/share/applications" "${srcdir}/${pkgname}.desktop"

  # Clean up and install new profile
  rm -rf "${pkgdir}/usr/share/${pkgname}/p2/org.eclipse.equinox.p2.core"
  cd "${pkgdir}/usr/share/${pkgname}/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile"
  find . -name "*.profile.gz" -delete
  install -m 644 "${srcdir}/${pkgname}.profile-${pkgver}.gz" "1502633007017.profile.gz"
  cd "${pkgdir}/usr/share/${pkgname}/p2/org.eclipse.equinox.p2.engine"
  rm -f ".settings/org.eclipse.equinox.p2.artifact.repository.prefs"
  rm ".settings/org.eclipse.equinox.p2.metadata.repository.prefs"
  rmdir ".settings"

  # Install system hook
  install -m 755 -d "${pkgdir}/usr/share/libalpm/hooks"
  install -m 644 "${srcdir}/${pkgname}.hook" "${pkgdir}/usr/share/libalpm/hooks"

  # Create configuration file (handled by the hook)
  cd "${pkgdir}/usr/share/${pkgname}/configuration/org.eclipse.equinox.simpleconfigurator"
  install -m 755 -d "${pkgdir}/etc/${pkgname}/bundles.d"
  mv "bundles.info" "${pkgdir}/etc/${pkgname}/bundles.d/00-${pkgname}.info"
  ln -s "/etc/${pkgname}/bundles.info" .
}