net-misc/electrum: Run xdg_environment_reset (#584242)
[gentoo.git] / net-misc / electrum / electrum-3.0.6.ebuild
1 # Copyright 1999-2018 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3
4 EAPI="6"
5
6 PYTHON_COMPAT=( python3_{4,5} )
7 PYTHON_REQ_USE="ncurses?"
8
9 inherit desktop distutils-r1 gnome2-utils xdg-utils
10
11 MY_P="Electrum-${PV}"
12 DESCRIPTION="User friendly Bitcoin client"
13 HOMEPAGE="https://electrum.org/"
14 SRC_URI="https://download.electrum.org/${PV}/${MY_P}.tar.gz"
15
16 LICENSE="MIT"
17 SLOT="0"
18 KEYWORDS="~amd64 ~x86"
19 MY_LANGS="ar_SA bg_BG cs_CZ da_DK de_DE el_GR eo_UY es_ES fa_IR fr_FR hu_HU hy_AM id_ID it_IT ja_JP ko_KR ky_KG lv_LV nb_NO nl_NL pl_PL pt_BR pt_PT ro_RO ru_RU sk_SK sl_SI ta_IN th_TH tr_TR uk_UA vi_VN zh_CN zh_TW"
20
21 my_langs_to_l10n() {
22         # Map all except pt_* and zh_* to their generic codes
23         case $1 in
24                 pt_*|zh_*) echo ${1/_/-} ;;
25                 *) echo ${1%%_*} ;;
26         esac
27 }
28
29 IUSE="audio_modem cli cosign digitalbitbox email greenaddress_it ncurses qrcode +qt5 sync trustedcoin_com vkb"
30
31 for lang in ${MY_LANGS}; do
32         IUSE+=" l10n_$(my_langs_to_l10n ${lang})"
33 done
34 unset lang
35
36 REQUIRED_USE="
37         || ( cli ncurses qt5 )
38         audio_modem? ( qt5 )
39         cosign? ( qt5 )
40         digitalbitbox? ( qt5 )
41         email? ( qt5 )
42         greenaddress_it? ( qt5 )
43         qrcode? ( qt5 )
44         sync? ( qt5 )
45         trustedcoin_com? ( qt5 )
46         vkb? ( qt5 )
47 "
48
49 RDEPEND="${PYTHON_DEPS}
50         dev-python/ecdsa[${PYTHON_USEDEP}]
51         dev-python/jsonrpclib[${PYTHON_USEDEP}]
52         dev-python/pbkdf2[${PYTHON_USEDEP}]
53         dev-python/pyaes[${PYTHON_USEDEP}]
54         dev-python/PySocks[${PYTHON_USEDEP}]
55         dev-python/qrcode[${PYTHON_USEDEP}]
56         dev-python/requests[${PYTHON_USEDEP}]
57         dev-python/setuptools[${PYTHON_USEDEP}]
58         dev-python/six[${PYTHON_USEDEP}]
59         dev-python/tlslite[${PYTHON_USEDEP}]
60         dev-python/protobuf-python[${PYTHON_USEDEP}]
61         virtual/python-dnspython[${PYTHON_USEDEP}]
62         qrcode? ( media-gfx/zbar[v4l] )
63         qt5? (
64                 dev-python/PyQt5[gui,widgets,${PYTHON_USEDEP}]
65         )
66         ncurses? ( dev-lang/python )
67 "
68
69 S="${WORKDIR}/${MY_P}"
70
71 DOCS="RELEASE-NOTES"
72
73 src_prepare() {
74         eapply "${FILESDIR}/2.8.0-no-user-root.patch"
75
76         # Prevent icon from being installed in the wrong location
77         sed -i '/icons/d' setup.py || die
78
79         # Remove unrequested localization files:
80         local lang
81         for lang in ${MY_LANGS}; do
82                 use l10n_$(my_langs_to_l10n ${lang}) && continue
83                 rm -r "lib/locale/${lang}" || die
84         done
85
86         local wordlist=
87         for wordlist in  \
88                 $(usex l10n_ja    '' japanese) \
89                 $(usex l10n_pt-BR '' $(usex l10n_pt-PT '' portuguese)) \
90                 $(usex l10n_es    '' spanish) \
91                 $(usex l10n_zh-CN '' chinese_simplified) \
92         ; do
93                 rm -f "lib/wordlist/${wordlist}.txt" || die
94                 sed -i "/${wordlist}\\.txt/d" lib/mnemonic.py || die
95         done
96
97         # Remove unrequested GUI implementations:
98         local gui setup_py_gui
99         for gui in  \
100                 $(usex cli      '' stdio)  \
101                 kivy \
102                 $(usex qt5      '' qt   )  \
103                 $(usex ncurses  '' text )  \
104         ; do
105                 rm gui/"${gui}"* -r || die
106         done
107
108         # And install requested ones...
109         for gui in  \
110                 $(usex qt5      qt   '')  \
111         ; do
112                 setup_py_gui="${setup_py_gui}'electrum_gui.${gui}',"
113         done
114
115         sed -i "s/'electrum_gui\\.qt',/${setup_py_gui}/" setup.py || die
116
117         local bestgui
118         if use qt5; then
119                 bestgui=qt
120         elif use ncurses; then
121                 bestgui=text
122         else
123                 bestgui=stdio
124         fi
125         sed -i 's/^\([[:space:]]*\)\(config_options\['\''cwd'\''\] = .*\)$/\1\2\n\1config_options.setdefault("gui", "'"${bestgui}"'")\n/' electrum || die
126
127         local plugin
128         # trezor requires python trezorlib module
129         # keepkey requires trezor
130         for plugin in  \
131                 $(usex audio_modem     '' audio_modem          ) \
132                 $(usex cosign          '' cosigner_pool        ) \
133                 $(usex digitalbitbox   '' digitalbitbox        ) \
134                 $(usex email           '' email_requests       ) \
135                 $(usex greenaddress_it '' greenaddress_instant ) \
136                 hw_wallet \
137                 ledger \
138                 keepkey \
139                 $(usex sync            '' labels               ) \
140                 revealer \
141                 trezor  \
142                 $(usex trustedcoin_com '' trustedcoin          ) \
143                 $(usex vkb             '' virtualkeyboard      ) \
144         ; do
145                 rm -r plugins/"${plugin}"* || die
146                 sed -i "/${plugin}/d" setup.py || die
147         done
148
149         eapply_user
150
151         distutils-r1_src_prepare
152 }
153
154 src_install() {
155         doicon -s 128 icons/${PN}.png
156         distutils-r1_src_install
157 }
158
159 pkg_preinst() {
160         gnome2_icon_savelist
161 }
162
163 pkg_postinst() {
164         gnome2_icon_cache_update
165         xdg_desktop_database_update
166 }
167
168 pkg_postrm() {
169         gnome2_icon_cache_update
170         xdg_desktop_database_update
171 }