summaryrefslogtreecommitdiff
blob: 60642002d44aabfa5682fc0d19853fe8393d8ffc (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
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7

PYTHON_COMPAT=( python3_{7,8,9} )
PYTHON_REQ_USE="sqlite"
inherit desktop python-single-r1 qmake-utils xdg

DESCRIPTION="GUI administration and development platform for PostgreSQL"
HOMEPAGE="https://www.pgadmin.org/"
SRC_URI="https://ftp.postgresql.org/pub/pgadmin/${PN}/v${PV}/source/${P}.tar.gz"

LICENSE="POSTGRESQL"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="doc"

REQUIRED_USE="${PYTHON_REQUIRED_USE}"

RESTRICT="test"

# libsodium dep added because of 689678
COMMON_DEPEND="${PYTHON_DEPS}
	dev-libs/libsodium[-minimal]
	dev-qt/qtcore:5
	dev-qt/qtgui:5
	dev-qt/qtnetwork:5[ssl]
	dev-qt/qtwidgets:5
"
DEPEND="${COMMON_DEPEND}
	doc? (
		$(python_gen_cond_dep '
			dev-python/sphinx[${PYTHON_MULTI_USEDEP}]
		')
	)
	virtual/imagemagick-tools[png]
"

# In 4.25's requirement.txt, bcrypt is listed as <=3.17, but upstream's
# git history shows this is just for compatibility with <python-3.6.
# In 4.26's requirement.txt, cryptography is listed as <=3.0, but upstream's
# git history shows this is just for compatibility with Windows.
# 4.28; requirement.txt: Flask-Security was renamed to
# Flask-Security-Too. This is still the same dev-python/flask-security.
RDEPEND="${COMMON_DEPEND}
	$(python_gen_cond_dep '
		>=dev-python/blinker-1.4[${PYTHON_MULTI_USEDEP}]
		>=dev-python/flask-1.0.2[${PYTHON_MULTI_USEDEP}]
		>=dev-python/flask-compress-1.4.0[${PYTHON_MULTI_USEDEP}]
		>=dev-python/flask-gravatar-0.5.0[${PYTHON_MULTI_USEDEP}]
		>=dev-python/flask-login-0.4.1[${PYTHON_MULTI_USEDEP}]
		>=dev-python/flask-mail-0.9.1[${PYTHON_MULTI_USEDEP}]
		>=dev-python/flask-migrate-2.4.0[${PYTHON_MULTI_USEDEP}]
		>=dev-python/flask-paranoid-0.2.0[${PYTHON_MULTI_USEDEP}]
		>=dev-python/flask-principal-0.4.0[${PYTHON_MULTI_USEDEP}]
		>=dev-python/flask-security-3.0.0[${PYTHON_MULTI_USEDEP}]
		>=dev-python/flask-sqlalchemy-2.4.1[${PYTHON_MULTI_USEDEP}]
		>=dev-python/flask-wtf-0.14.3[${PYTHON_MULTI_USEDEP}]
		>=dev-python/ldap3-2.5.1[${PYTHON_MULTI_USEDEP}]
		>=dev-python/passlib-1.7.2[${PYTHON_MULTI_USEDEP}]
		>=dev-python/psutil-5.7.0[${PYTHON_MULTI_USEDEP}]
		>=dev-python/psycopg-2.8[${PYTHON_MULTI_USEDEP}]
		>=dev-python/python-dateutil-2.8.0[${PYTHON_MULTI_USEDEP}]
		>=dev-python/pytz-2020.1[${PYTHON_MULTI_USEDEP}]
		>=dev-python/simplejson-3.16.0[${PYTHON_MULTI_USEDEP}]
		>=dev-python/six-1.12.0[${PYTHON_MULTI_USEDEP}]
		>=dev-python/speaklater-1.3[${PYTHON_MULTI_USEDEP}]
		>=dev-python/sqlalchemy-1.3.13[${PYTHON_MULTI_USEDEP}]
		>=dev-python/sqlparse-0.3.0[${PYTHON_MULTI_USEDEP}]
		>=dev-python/sshtunnel-0.1.5[${PYTHON_MULTI_USEDEP}]
		>=dev-python/werkzeug-0.15.0[${PYTHON_MULTI_USEDEP}]
		>=dev-python/wtforms-2.2.1[${PYTHON_MULTI_USEDEP}]
		dev-python/bcrypt[${PYTHON_MULTI_USEDEP}]
		dev-python/cryptography[${PYTHON_MULTI_USEDEP}]
		dev-python/python-email-validator[${PYTHON_MULTI_USEDEP}]
	')
"

S="${WORKDIR}"/${P}/runtime

src_prepare() {
	cd "${WORKDIR}"/${P} || die
	default
}

src_configure() {
	export PGADMIN_PYTHON_DIR="${EPREFIX}/usr"
	eqmake5
}

src_compile() {
	default
	use doc && emake -C "${WORKDIR}"/${P} docs
}

src_install() {
	dobin pgAdmin4

	cd "${WORKDIR}"/${P} || die

	local APP_DIR=/usr/share/${PN}/web
	insinto "${APP_DIR}"
	doins -r web/.
	newins - config_local.py <<-EOF
		SERVER_MODE = False
		UPGRADE_CHECK_ENABLED = False
	EOF
	python_optimize "${D}${APP_DIR}"

	insinto /etc/xdg/pgadmin
	newins - pgadmin4.conf <<-EOF
		[General]
		ApplicationPath=${APP_DIR}
		PythonPath=$(python_get_sitedir)
	EOF

	if use doc; then
		rm -r docs/en_US/_build/html/_sources || die
		insinto /usr/share/${PN}/docs/en_US/_build
		doins -r docs/en_US/_build/html
	fi

	local s
	for s in 16 32 48 64 72 96 128 192 256; do
		convert runtime/pgAdmin4.png -resize ${s}x${s} ${PN}_${s}.png || die
		newicon -s ${s} ${PN}_${s}.png ${PN}.png
	done
	domenu "${FILESDIR}"/${PN}.desktop
}