net-wireless/urh: bump and python 3.7
[gentoo.git] / net-wireless / gnuradio / gnuradio-3.7.9999.ebuild
1 # Copyright 1999-2020 Gentoo Authors
2 # Distributed under the terms of the GNU General Public License v2
3
4 EAPI=6
5 PYTHON_COMPAT=( python2_7 )
6
7 CMAKE_BUILD_TYPE="None"
8 inherit cmake-utils eutils gnome2-utils python-single-r1 xdg-utils
9
10 DESCRIPTION="Toolkit that provides signal processing blocks to implement software radios"
11 HOMEPAGE="https://www.gnuradio.org/"
12 LICENSE="GPL-3"
13 SLOT="0/${PV}"
14
15 if [[ ${PV} =~ "9999" ]]; then
16         EGIT_REPO_URI="https://www.gnuradio.org/cgit/gnuradio.git"
17         inherit git-r3
18         KEYWORDS=""
19 else
20         SRC_URI="https://www.gnuradio.org/releases/gnuradio/${P}.tar.gz"
21         KEYWORDS="~amd64 ~arm ~x86"
22 fi
23 if [[ ${PV} == "3.7.9999" ]]; then
24         EGIT_BRANCH="maint-3.7"
25 fi
26
27 IUSE="+audio +alsa atsc +analog +digital channels doc dtv examples fcd fec +filter grc jack log noaa oss pager performance-counters portaudio sdl test trellis uhd vocoder +utils wavelet wxwidgets zeromq"
28 RESTRICT="!test? ( test )"
29
30 REQUIRED_USE="${PYTHON_REQUIRED_USE}
31                 audio? ( || ( alsa oss jack portaudio ) )
32                 alsa? ( audio )
33                 oss? ( audio )
34                 jack? ( audio )
35                 portaudio? ( audio )
36                 analog? ( filter )
37                 digital? ( filter analog )
38                 dtv? ( fec )
39                 pager? ( filter analog )
40                 uhd? ( filter analog )
41                 fcd? ( || ( alsa oss ) )
42                 wavelet? ( analog )
43                 wxwidgets? ( filter analog )"
44
45 # bug #348206
46 # comedi? ( >=sci-electronics/comedilib-0.8 )
47 # boost-1.52.0 is blacklisted, bug #461578, upstream #513, boost #7669
48 RDEPEND="${PYTHON_DEPS}
49         >=dev-lang/orc-0.4.12
50         sci-libs/fftw:3.0=
51         alsa? (
52                 media-libs/alsa-lib:=
53         )
54         fcd? ( virtual/libusb:1 )
55         jack? (
56                 media-sound/jack-audio-connection-kit
57         )
58         log? ( dev-libs/log4cpp )
59         portaudio? (
60                 >=media-libs/portaudio-19_pre
61         )
62         sdl? ( >=media-libs/libsdl-1.2.0 )
63         uhd? ( >=net-wireless/uhd-3.9.6:=[${PYTHON_SINGLE_USEDEP}] )
64         vocoder? ( media-sound/gsm
65                 >=media-libs/codec2-0.8.1 )
66         wavelet? (
67                 >=sci-libs/gsl-1.10
68         )
69         zeromq? ( >=net-libs/zeromq-2.1.11 )
70         $(python_gen_cond_dep '
71                 dev-libs/boost:0=[${PYTHON_MULTI_USEDEP}]
72                 !<=dev-libs/boost-1.52.0-r6:0/1.52
73                 dev-python/mako[${PYTHON_MULTI_USEDEP}]
74                 dev-python/six[${PYTHON_MULTI_USEDEP}]
75                 filter? (
76                         || (
77                                 sci-libs/scipy-python2[${PYTHON_MULTI_USEDEP}]
78                                 sci-libs/scipy[${PYTHON_MULTI_USEDEP}]
79                         )
80                 )
81                 grc? (
82                         dev-python/cheetah[${PYTHON_MULTI_USEDEP}]
83                         dev-python/lxml[${PYTHON_MULTI_USEDEP}]
84                         >=dev-python/pygtk-2.10:2[${PYTHON_MULTI_USEDEP}]
85                         || (
86                                 dev-python/numpy-python2[${PYTHON_MULTI_USEDEP}]
87                                 dev-python/numpy[${PYTHON_MULTI_USEDEP}]
88                         )
89                 )
90                 utils? (
91                         || (
92                                 dev-python/matplotlib-python2[${PYTHON_MULTI_USEDEP}]
93                                 dev-python/matplotlib[${PYTHON_MULTI_USEDEP}]
94                         )
95                 )
96                 wxwidgets? (
97                         dev-python/wxpython:3.0[${PYTHON_MULTI_USEDEP}]
98                         || (
99                                 dev-python/numpy-python2[${PYTHON_MULTI_USEDEP}]
100                                 dev-python/numpy[${PYTHON_MULTI_USEDEP}]
101                         )
102                 )
103         ')
104         "
105
106 DEPEND="${RDEPEND}
107         app-text/docbook-xml-dtd:4.2
108         >=dev-lang/swig-3.0.5
109         virtual/pkgconfig
110         doc? (
111                 >=app-doc/doxygen-1.5.7.1
112                 $(python_gen_cond_dep '
113                         dev-python/sphinx[${PYTHON_MULTI_USEDEP}]
114                 ')
115         )
116         grc? ( x11-misc/xdg-utils )
117         oss? ( virtual/os-headers )
118         test? ( >=dev-util/cppunit-1.9.14 )
119         zeromq? ( net-libs/cppzmq )
120 "
121
122 src_prepare() {
123         gnome2_environment_reset #534582
124
125         if [[ ${PV} == "9999" ]]; then
126                 true
127         else
128                 epatch "${FILESDIR}"/gnuradio-wxpy3.0-compat.patch
129         fi
130         # Useless UI element would require qt3support, bug #365019
131         sed -i '/qPixmapFromMimeSource/d' "${S}"/gr-qtgui/lib/spectrumdisplayform.ui || die
132
133         use !alsa && sed -i 's#version.h#version-nonexistant.h#' cmake/Modules/FindALSA.cmake
134         use !jack && sed -i 's#jack.h#jack-nonexistant.h#' cmake/Modules/FindJack.cmake
135         use !portaudio && sed -i 's#portaudio.h#portaudio-nonexistant.h#' cmake/Modules/FindPortaudio.cmake
136
137         cmake-utils_src_prepare
138 }
139
140 src_configure() {
141         #zeromq missing deps isn't fatal
142         python_export PYTHON_SITEDIR
143         mycmakeargs=(
144                 -DENABLE_DEFAULT=OFF
145                 -DENABLE_GNURADIO_RUNTIME=ON
146                 -DENABLE_VOLK=ON
147                 -DENABLE_PYTHON=ON
148                 -DENABLE_GR_BLOCKS=ON
149                 -DENABLE_GR_FFT=ON
150                 -DENABLE_GR_AUDIO=ON
151                 -DENABLE_GR_AUDIO_ALSA="$(usex alsa)"
152                 -DENABLE_GR_ANALOG="$(usex analog)"
153                 -DENABLE_GR_ATSC="$(usex atsc)"
154                 -DENABLE_GR_CHANNELS="$(usex channels)"
155                 -DENABLE_GR_DIGITAL="$(usex digital)"
156                 -DENABLE_DOXYGEN="$(usex doc)"
157                 -DENABLE_SPHINX="$(usex doc)"
158                 -DENABLE_GR_DTV="$(usex dtv)"
159                 -DENABLE_GR_FCD="$(usex fcd)"
160                 -DENABLE_GR_FEC="$(usex fec)"
161                 -DENABLE_GR_FILTER="$(usex filter)"
162                 -DENABLE_GRC="$(usex grc)"
163                 -DENABLE_GR_AUDIO_JACK="$(usex jack)"
164                 -DENABLE_GR_LOG="$(usex log)"
165                 -DENABLE_GR_NOAA="$(usex noaa)"
166                 -DENABLE_GR_AUDIO_OSS="$(usex oss)"
167                 -DENABLE_GR_PAGER="$(usex pager)"
168                 -DENABLE_ENABLE_PERFORMANCE_COUNTERS="$(usex performance-counters)"
169                 -DENABLE_GR_AUDIO_PORTAUDIO="$(usex portaudio)"
170                 -DENABLE_TESTING="$(usex test)"
171                 -DENABLE_GR_TRELLIS="$(usex trellis)"
172                 -DENABLE_GR_UHD="$(usex uhd)"
173                 -DENABLE_GR_UTILS="$(usex utils)"
174                 -DENABLE_GR_VOCODER="$(usex vocoder)"
175                 -DENABLE_GR_WAVELET="$(usex wavelet)"
176                 -DENABLE_GR_WXGUI="$(usex wxwidgets)"
177                 -DENABLE_GR_QTGUI=OFF
178                 -DENABLE_GR_VIDEO_SDL="$(usex sdl)"
179                 -DENABLE_GR_ZEROMQ="$(usex zeromq)"
180                 -DENABLE_GR_CORE=ON
181                 -DSYSCONFDIR="${EPREFIX}"/etc
182                 -DPYTHON_EXECUTABLE="${PYTHON}"
183                 -DGR_PYTHON_DIR="${PYTHON_SITEDIR}"
184                 -DGR_PKG_DOC_DIR="${EPREFIX}/usr/share/doc/${PF}"
185         )
186         use vocoder && mycmakeargs+=( -DGR_USE_SYSTEM_LIBGSM=TRUE )
187         cmake-utils_src_configure
188 }
189
190 src_install() {
191         cmake-utils_src_install
192
193         if use examples ; then
194                 dodir /usr/share/doc/${PF}/
195                 mv "${ED}"/usr/share/${PN}/examples "${ED}"/usr/share/doc/${PF}/ || die
196                 docompress -x /usr/share/doc/${PF}/examples
197         else
198         # It seems that the examples are always installed
199                 rm -rf "${ED}"/usr/share/${PN}/examples || die
200         fi
201
202         if use doc || use examples; then
203                 #this doesn't appear useful
204                 rm -rf "${ED}"/usr/share/doc/${PF}/xml || die
205         fi
206
207         # We install the mimetypes to the correct locations from the ebuild
208         rm -rf "${ED}"/usr/share/${PN}/grc/freedesktop || die
209         rm -f "${ED}"/usr/libexec/${PN}/grc_setup_freedesktop || die
210
211         # Install icons, menu items and mime-types for GRC
212         if use grc ; then
213                 local fd_path="${S}/grc/scripts/freedesktop"
214                 insinto /usr/share/mime/packages
215                 doins "${fd_path}/${PN}-grc.xml"
216
217                 domenu "${fd_path}/"*.desktop
218                 doicon "${fd_path}/"*.png
219         fi
220
221         python_fix_shebang "${ED}"
222 }
223
224 src_test()
225 {
226         ctest -E qtgui
227 }
228
229 pkg_postinst()
230 {
231         local GRC_ICON_SIZES="32 48 64 128 256"
232
233         if use grc ; then
234                 xdg_desktop_database_update
235                 xdg_mimeinfo_database_update
236                 for size in ${GRC_ICON_SIZES} ; do
237                         xdg-icon-resource install --noupdate --context mimetypes --size ${size} \
238                                 "${EROOT}/usr/share/pixmaps/grc-icon-${size}.png" application-gnuradio-grc \
239                                 || die "icon resource installation failed"
240                         xdg-icon-resource install --noupdate --context apps --size ${size} \
241                                 "${EROOT}/usr/share/pixmaps/grc-icon-${size}.png" gnuradio-grc \
242                                 || die "icon resource installation failed"
243                 done
244                 xdg-icon-resource forceupdate
245         fi
246 }
247
248 pkg_postrm()
249 {
250         local GRC_ICON_SIZES="32 48 64 128 256"
251
252         if use grc ; then
253                 xdg_desktop_database_update
254                 xdg_mimeinfo_database_update
255                 for size in ${GRC_ICON_SIZES} ; do
256                         xdg-icon-resource uninstall --noupdate --context mimetypes --size ${size} \
257                                 application-gnuradio-grc || ewarn "icon uninstall failed"
258                         xdg-icon-resource uninstall --noupdate --context apps --size ${size} \
259                                 gnuradio-grc || ewarn "icon uninstall failed"
260
261                 done
262                 xdg-icon-resource forceupdate
263         fi
264 }