media-tv/kodi: 18.0_rc4 version bump
[gentoo.git] / media-tv / kodi / kodi-18.0_rc4.ebuild
1 # Copyright 1999-2018 Gentoo Authors
2 # Distributed under the terms of the GNU General Public License v2
3
4 EAPI=6
5
6 : ${CMAKE_MAKEFILE_GENERATOR:=ninja}
7 PYTHON_REQ_USE="libressl?,sqlite,ssl"
8 LIBDVDCSS_VERSION="1.4.2-Leia-Beta-5"
9 LIBDVDREAD_VERSION="6.0.0-Leia-Alpha-3"
10 LIBDVDNAV_VERSION="6.0.0-Leia-Alpha-3"
11 FFMPEG_VERSION="4.0.1"
12 CODENAME="Leia"
13 FFMPEG_KODI_VERSION="Alpha3-1"
14 SRC_URI="https://github.com/xbmc/libdvdcss/archive/${LIBDVDCSS_VERSION}.tar.gz -> libdvdcss-${LIBDVDCSS_VERSION}.tar.gz
15         https://github.com/xbmc/libdvdread/archive/${LIBDVDREAD_VERSION}.tar.gz -> libdvdread-${LIBDVDREAD_VERSION}.tar.gz
16         https://github.com/xbmc/libdvdnav/archive/${LIBDVDNAV_VERSION}.tar.gz -> libdvdnav-${LIBDVDNAV_VERSION}.tar.gz
17         !system-ffmpeg? ( https://github.com/xbmc/FFmpeg/archive/${FFMPEG_VERSION}-${CODENAME}-${FFMPEG_KODI_VERSION}.tar.gz -> ffmpeg-${PN}-${FFMPEG_VERSION}-${CODENAME}-${FFMPEG_KODI_VERSION}.tar.gz )"
18
19 if [[ ${PV} == *9999 ]] ; then
20         PYTHON_COMPAT=( python2_7 python3_{5,6,7} )
21         EGIT_REPO_URI="https://github.com/xbmc/xbmc.git"
22         inherit git-r3
23 else
24         PYTHON_COMPAT=( python2_7 )
25         MY_PV=${PV/_p/_r}
26         MY_PV=${MY_PV/_alpha/a}
27         MY_PV=${MY_PV/_beta/b}
28         MY_PV=${MY_PV/_rc/rc}
29         MY_P="${PN}-${MY_PV}"
30         SRC_URI+=" https://github.com/xbmc/xbmc/archive/${MY_PV}-${CODENAME}.tar.gz -> ${MY_P}.tar.gz"
31         KEYWORDS="~amd64 ~x86"
32         S=${WORKDIR}/xbmc-${MY_PV}-${CODENAME}
33 fi
34
35 inherit autotools cmake-utils eutils gnome2-utils linux-info pax-utils python-single-r1 xdg-utils
36
37 DESCRIPTION="A free and open source media-player and entertainment hub"
38 HOMEPAGE="https://kodi.tv/ https://kodi.wiki/"
39
40 LICENSE="GPL-2+"
41 SLOT="0"
42 # use flag is called libusb so that it doesn't fool people in thinking that
43 # it is _required_ for USB support. Otherwise they'll disable udev and
44 # that's going to be worse.
45 IUSE="airplay alsa bluetooth bluray caps cec +css dbus debug dvd gbm gles lcms libressl libusb lirc mariadb mysql nfs +opengl pulseaudio samba systemd +system-ffmpeg test +udev udisks upnp upower vaapi vdpau wayland webserver +X +xslt zeroconf"
46 REQUIRED_USE="
47         ${PYTHON_REQUIRED_USE}
48         || ( gles opengl )
49         ^^ ( gbm wayland X )
50         ?? ( mariadb mysql )
51         udev? ( !libusb )
52         udisks? ( dbus )
53         upower? ( dbus )
54 "
55
56 COMMON_DEPEND="${PYTHON_DEPS}
57         airplay? (
58                 >=app-pda/libplist-2.0.0
59                 net-libs/shairplay
60         )
61         alsa? ( >=media-libs/alsa-lib-1.1.4.1 )
62         bluetooth? ( net-wireless/bluez )
63         bluray? ( >=media-libs/libbluray-1.0.2 )
64         caps? ( sys-libs/libcap )
65         dbus? ( sys-apps/dbus )
66         dev-db/sqlite
67         dev-libs/expat
68         dev-libs/flatbuffers
69         >=dev-libs/fribidi-0.19.7
70         cec? ( >=dev-libs/libcec-4.0 )
71         dev-libs/libpcre[cxx]
72         >=dev-libs/libinput-1.10.5
73         >=dev-libs/libxml2-2.9.4
74         >=dev-libs/lzo-2.04
75         dev-libs/tinyxml[stl]
76         dev-python/pillow[${PYTHON_USEDEP}]
77         $(python_gen_cond_dep 'dev-python/pycryptodome[${PYTHON_USEDEP}]' 'python3*')
78         >=dev-libs/libcdio-0.94
79         dev-libs/libfmt
80         dev-libs/libfstrcmp
81         gbm? (  media-libs/mesa[gbm] )
82         gles? ( media-libs/mesa[gles2] )
83         lcms? ( media-libs/lcms:2 )
84         libusb? ( virtual/libusb:1 )
85         virtual/ttf-fonts
86         media-fonts/roboto
87         >=media-libs/fontconfig-2.12.4
88         >=media-libs/freetype-2.8
89         >=media-libs/libass-0.13.4
90         media-libs/mesa[egl]
91         >=media-libs/taglib-1.11.1
92         system-ffmpeg? (
93                 >=media-video/ffmpeg-${FFMPEG_VERSION}:=[encode,postproc]
94                 libressl? ( media-video/ffmpeg[libressl,-openssl] )
95                 !libressl? ( media-video/ffmpeg[-libressl,openssl] )
96         )
97         mysql? ( dev-db/mysql-connector-c:= )
98         mariadb? ( dev-db/mariadb-connector-c:= )
99         >=net-misc/curl-7.56.1
100         nfs? ( >=net-fs/libnfs-2.0.0:= )
101         opengl? ( media-libs/glu )
102         !libressl? ( >=dev-libs/openssl-1.0.2l:0= )
103         libressl? ( dev-libs/libressl:0= )
104         pulseaudio? ( media-sound/pulseaudio )
105         samba? ( >=net-fs/samba-3.4.6[smbclient(+)] )
106         >=sys-libs/zlib-1.2.11
107         udev? ( virtual/udev )
108         vaapi? (
109                 x11-libs/libva:=
110                 opengl? ( x11-libs/libva[opengl] )
111                 system-ffmpeg? ( media-video/ffmpeg[vaapi] )
112                 vdpau? ( x11-libs/libva[vdpau] )
113                 wayland? ( x11-libs/libva[wayland] )
114                 X? ( x11-libs/libva[X] )
115         )
116         virtual/libiconv
117         vdpau? (
118                 || ( >=x11-libs/libvdpau-1.1 >=x11-drivers/nvidia-drivers-180.51 )
119                 system-ffmpeg? ( media-video/ffmpeg[vdpau] )
120         )
121         wayland? (
122                 >=dev-cpp/waylandpp-0.2.3:=
123                 media-libs/mesa[wayland]
124                 >=dev-libs/wayland-protocols-1.7
125                 >=x11-libs/libxkbcommon-0.4.1
126         )
127         webserver? ( >=net-libs/libmicrohttpd-0.9.55[messages] )
128         X? (
129                 x11-libs/libX11
130                 x11-libs/libXrandr
131                 x11-libs/libXrender
132                 system-ffmpeg? ( media-video/ffmpeg[X] )
133         )
134         x11-libs/libdrm
135         xslt? ( dev-libs/libxslt )
136         zeroconf? ( net-dns/avahi[dbus] )
137 "
138 RDEPEND="${COMMON_DEPEND}
139         lirc? ( app-misc/lirc )
140         !media-tv/xbmc
141         udisks? ( sys-fs/udisks:2 )
142         upower? ( sys-power/upower )
143 "
144 DEPEND="${COMMON_DEPEND}
145         app-arch/bzip2
146         app-arch/xz-utils
147         dev-lang/swig
148         dev-libs/crossguid
149         dev-libs/rapidjson
150         dev-util/cmake
151         dev-util/gperf
152         media-libs/giflib
153         >=media-libs/libjpeg-turbo-1.5.1:=
154         >=media-libs/libpng-1.6.26:0=
155         test? ( dev-cpp/gtest )
156         virtual/pkgconfig
157         virtual/jre
158         x86? ( dev-lang/nasm )
159 "
160
161 CONFIG_CHECK="~IP_MULTICAST"
162 ERROR_IP_MULTICAST="
163 In some cases Kodi needs to access multicast addresses.
164 Please consider enabling IP_MULTICAST under Networking options.
165 "
166
167 pkg_setup() {
168         check_extra_config
169         python-single-r1_pkg_setup
170 }
171
172 src_unpack() {
173         if [[ ${PV} == *9999 ]] ; then
174                 if python_is_python3; then
175                         EGIT_BRANCH="feature_python3"
176                         ewarn "Using the experimental Python 3 branch!"
177                         ewarn "See https://kodi.wiki/view/Migration_to_Python_3 for more information."
178                         ewarn "To use the non-experimental Python 2 version:"
179                         ewarn "echo '~${CATEGORY}/${P} PYTHON_TARGETS: -* python2_7 PYTHON_SINGLE_TARGET: -* python2_7' >> /etc/portage/package.use"
180                         ewarn "then re-merge using: emerge -a =${CATEGORY}/${PF}"
181                 fi
182                 git-r3_src_unpack
183         else
184                 default
185         fi
186 }
187
188 src_prepare() {
189         cmake-utils_src_prepare
190
191         # avoid long delays when powerkit isn't running #348580
192         sed -i \
193                 -e '/dbus_connection_send_with_reply_and_block/s:-1:3000:' \
194                 xbmc/platform/linux/*.cpp || die
195
196         # Prepare tools and libs witch are configured with autotools during compile time
197         AUTOTOOLS_DIRS=(
198                 "${S}"/lib/cpluff
199                 "${S}"/tools/depends/native/TexturePacker/src
200                 "${S}"/tools/depends/native/JsonSchemaBuilder/src
201         )
202
203         local d
204         for d in "${AUTOTOOLS_DIRS[@]}" ; do
205                 pushd ${d} >/dev/null || die
206                 AT_NOELIBTOOLIZE="yes" AT_TOPLEVEL_EAUTORECONF="yes" eautoreconf
207                 popd >/dev/null || die
208         done
209         elibtoolize
210
211         # Prevent autoreconf rerun
212         sed -e 's/autoreconf -vif/echo "autoreconf already done in src_prepare()"/' -i \
213                 "${S}"/cmake/modules/FindCpluff.cmake \
214                 "${S}"/tools/depends/native/TexturePacker/src/autogen.sh \
215                 "${S}"/tools/depends/native/JsonSchemaBuilder/src/autogen.sh \
216                 || die
217 }
218
219 src_configure() {
220         local mycmakeargs=(
221                 -Ddocdir="${EPREFIX}/usr/share/doc/${PF}"
222                 -DENABLE_LDGOLD=OFF # https://bugs.gentoo.org/show_bug.cgi?id=606124
223                 -DENABLE_ALSA=$(usex alsa)
224                 -DENABLE_AIRTUNES=$(usex airplay)
225                 -DENABLE_AVAHI=$(usex zeroconf)
226                 -DENABLE_BLUETOOTH=$(usex bluetooth)
227                 -DENABLE_BLURAY=$(usex bluray)
228                 -DENABLE_CCACHE=OFF
229                 -DENABLE_CEC=$(usex cec)
230                 -DENABLE_DBUS=$(usex dbus)
231                 -DENABLE_DVDCSS=$(usex css)
232                 -DENABLE_INTERNAL_CROSSGUID=OFF
233                 -DENABLE_INTERNAL_FFMPEG="$(usex !system-ffmpeg)"
234                 -DENABLE_INTERNAL_FSTRCMP=OFF
235                 -DENABLE_CAP=$(usex caps)
236                 -DENABLE_LCMS2=$(usex lcms)
237                 -DENABLE_LIRCCLIENT=$(usex lirc)
238                 -DENABLE_MARIADBCLIENT=$(usex mariadb)
239                 -DENABLE_MYSQLCLIENT=$(usex mysql)
240                 -DENABLE_MICROHTTPD=$(usex webserver)
241                 -DENABLE_MYSQLCLIENT=$(usex mysql)
242                 -DENABLE_NFS=$(usex nfs)
243                 -DENABLE_OPENGLES=$(usex gles)
244                 -DENABLE_OPENGL=$(usex opengl)
245                 -DENABLE_OPTICAL=$(usex dvd)
246                 -DENABLE_PLIST=$(usex airplay)
247                 -DENABLE_PULSEAUDIO=$(usex pulseaudio)
248                 -DENABLE_SMBCLIENT=$(usex samba)
249                 -DENABLE_UDEV=$(usex udev)
250                 -DENABLE_UPNP=$(usex upnp)
251                 -DENABLE_VAAPI=$(usex vaapi)
252                 -DENABLE_VDPAU=$(usex vdpau)
253                 -DENABLE_XSLT=$(usex xslt)
254                 -Dlibdvdread_URL="${DISTDIR}/libdvdread-${LIBDVDREAD_VERSION}.tar.gz"
255                 -Dlibdvdnav_URL="${DISTDIR}/libdvdnav-${LIBDVDNAV_VERSION}.tar.gz"
256                 -Dlibdvdcss_URL="${DISTDIR}/libdvdcss-${LIBDVDCSS_VERSION}.tar.gz"
257         )
258
259         use libusb && mycmakeargs+=( -DENABLE_LIBUSB=$(usex libusb) )
260
261         if use system-ffmpeg; then
262                 mycmakeargs+=( -DWITH_FFMPEG="yes" )
263         else
264                 mycmakeargs+=( -DFFMPEG_URL="${DISTDIR}/ffmpeg-${PN}-${FFMPEG_VERSION}-${CODENAME}-${FFMPEG_KODI_VERSION}.tar.gz" )
265         fi
266
267         if use gbm; then
268                 mycmakeargs+=(
269                         -DCORE_PLATFORM_NAME="gbm"
270                         -DGBM_RENDER_SYSTEM="$(usex opengl gl gles)"
271                 )
272         fi
273
274         if use wayland; then
275                 mycmakeargs+=(
276                         -DCORE_PLATFORM_NAME="wayland"
277                         -DWAYLAND_RENDER_SYSTEM="$(usex opengl gl gles)"
278                 )
279         fi
280
281         if use X; then
282                 mycmakeargs+=( -DCORE_PLATFORM_NAME="x11" )
283         fi
284
285         cmake-utils_src_configure
286 }
287
288 src_compile() {
289         cmake-utils_src_compile all
290         use test && emake -C "${BUILD_DIR}" kodi-test
291 }
292
293 src_test() {
294         emake -C "${BUILD_DIR}" test
295 }
296
297 src_install() {
298         cmake-utils_src_install
299
300         pax-mark Em "${ED%/}"/usr/$(get_libdir)/${PN}/${PN}.bin
301
302         newicon media/icon48x48.png kodi.png
303
304         rm "${ED%/}"/usr/share/kodi/addons/skin.estuary/fonts/Roboto-Thin.ttf || die
305         dosym ../../../../fonts/roboto/Roboto-Thin.ttf \
306                 usr/share/kodi/addons/skin.estuary/fonts/Roboto-Thin.ttf
307
308         python_domodule tools/EventClients/lib/python/xbmcclient.py
309         python_newscript "tools/EventClients/Clients/KodiSend/kodi-send.py" kodi-send
310 }
311
312 pkg_postinst() {
313         gnome2_icon_cache_update
314         xdg_desktop_database_update
315 }
316
317 pkg_postrm() {
318         gnome2_icon_cache_update
319         xdg_desktop_database_update
320 }