summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: dbc4ce8afd11bebebf43e38fae0701a06f761ca7 (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
# Maintainer: Alfredo Ramos <alfredo.ramos@skiff.com>
# Contributor: Muflone http://www.muflone.com/contacts/english/
# Contributor: Arne Hoch <arne@derhoch.de

_pkgname=dbeaver
pkgname=${_pkgname}-git
pkgver=22.3.3.265.g8019a0ccca
pkgrel=1
pkgdesc='Free universal SQL Client for developers and database administrators. Community Edition. Git version.'
arch=('x86_64')
url='https://dbeaver.io'
license=('Apache')

depends=('java-runtime=17' 'gtk3' 'gtk-update-icon-cache' 'libsecret')
makedepends=('git' 'java-environment=17' 'maven')
optdepends=(
	'dbeaver-plugin-office: To export data in Microsoft Office Excel format'
	'dbeaver-plugin-svg-format: To save diagrams in SVG format'
	'webkit2gtk: To preview spatial data'
)
provides=("${_pkgname}=${pkgver}")
conflicts=("${_pkgname}")

source=(
	"git+https://github.com/${_pkgname}/${_pkgname}.git"
	"io.${_pkgname}.DBeaver.desktop"
	"${_pkgname}.sh"
	"${_pkgname}.profile.gz"
	"${_pkgname}.hook"
	"${_pkgname}.install"
)
sha512sums=(
	'SKIP'
	'fdf89ba4be526925f27bcf1e185c16461474ef333b3c2587dc535c4ffe68d7fe851465649c8ea2f4d3b05a3e714e5ac3a53a131350ceba449c8f3d5dcfcedb60'
	'1d4e0947baa5d9c663f7afcef2e6938d1a2f768de4002beb38b79bfc93748d6a0acd88dae765bfe5b4cc01897946e9b6a712f1f061e7896dfc07fc7274c88a30'
	'fdc14586fc82bdbfad5b43f0fbd440856071f7acffc5003f3fa3f6b22022658de04d158026964f7b0de032f5563367afe9a08c80a090ddad86b33feb0dcfb6e7'
	'855fd0a6236d00bb70c2a33273c077ecccaf5645e231d7364d78a626349e0746caa9fd4e522281a4d7f6cc1db1b2afdbc996df54780be5edcc462ce6814381a5'
	'6565d17f9f0f75fd8f58df4989cebcf03ecd19a9a8547769e445c0012d380e6c31ae793221307f2386cef81b018e5e7026d5a2a7c4bc52ec98d0aca32c52d94d'
)

install="${_pkgname}.install"

pkgver() {
	cd "${srcdir}/${_pkgname}"
	git describe --long --tags 2>/dev/null | sed -r 's/^v//;s/-/./g'
}

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

	export JAVA_HOME="/usr/lib/jvm/$(archlinux-java status | tail -n +2 | sort | cut -d ' ' -f 3 | sort -nr -k 2 -t '-' | grep -E '17-|18-|19-' -m 1)"
	export MAVEN_OPTS="-Xmx2048m"
	cd "${srcdir}/${_pkgname}"
	mvn --batch-mode validate
}

build() {
	cd "${srcdir}/${_pkgname}"
	mvn --batch-mode package
}

package() {
	cd "${srcdir}/${_pkgname}/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/dbeaver.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 "${_pkgname}" "${pkgdir}/usr/lib/"

	# 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}"
	ln -s "/usr/share/licenses/${_pkgname}" "${pkgdir}/usr/lib/${_pkgname}/licenses"

	# 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}/dbeaver.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}/io.${_pkgname}.DBeaver.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.gz" "1679887494965.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/dbeaver/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 -rs "${pkgdir}/etc/${_pkgname}/bundles.info" .
}