1 |
|
2 |
%define name xbmc |
3 |
%define branch_release Eden |
4 |
%define extra_feature pvr |
5 |
%define version 11.0 |
6 |
%define snap 0 |
7 |
%define pre rc2 |
8 |
%define rel 3 |
9 |
|
10 |
%if %snap |
11 |
%define branch %branch_release.%extra_feature |
12 |
%else |
13 |
%define branch %extra_feature |
14 |
%endif |
15 |
|
16 |
%define branchr %([ "%branch" ] && echo .%branch | tr - _) |
17 |
|
18 |
Summary: XBMC Media Center - media player and home entertainment system |
19 |
Name: %{name} |
20 |
Version: %{version} |
21 |
%if %snap |
22 |
Release: %mkrel 0.git%snap%branchr.%rel |
23 |
Source: %{name}-%branch_release-%snap.tar.xz |
24 |
%else |
25 |
%if %pre |
26 |
Release: %mkrel 0.%pre%branchr.%rel |
27 |
Source: %{name}-%{version}-%{branch_release}_%{pre}.tar.gz |
28 |
%else |
29 |
Release: %mkrel 1.%branch.%rel |
30 |
Source: %{name}-%{version}.tar.gz |
31 |
%endif |
32 |
%endif |
33 |
URL: http://xbmc.org/ |
34 |
|
35 |
# bring snapshot up-to-date with pvr branch |
36 |
# https://github.com/opdenkamp/xbmc |
37 |
# git diff 4246dffa9896d0c66dc79a97c2d3c8a3d4c4a183..opdenkamp/Eden-pvr |
38 |
# rediffed with already-applied hunks removed |
39 |
Patch0: xbmc-Eden-pvr-rc1.1.patch |
40 |
|
41 |
# Disable updates of the default skin. Our one is the PVR version, while the |
42 |
# one in the XBMC.org addon repository would be the vanilla one (Confluence |
43 |
# is currently not in the addon repository, though, as of 2012-03). |
44 |
Patch201: xbmc-disable-confluence-update.patch |
45 |
|
46 |
# fix build with libpng 1.5 |
47 |
# https://github.com/xbmc/xbmc/pull/601 |
48 |
# patch of Zenkibou @ 2012-01-14 |
49 |
Patch210: xbmc-libpng-1.5.patch |
50 |
|
51 |
# Make the MythTV PVR client buildable (submitted upstream): |
52 |
Patch211: 0001-fixed-undefined-symbols-in-MythTV-PVR-client.patch |
53 |
|
54 |
# fix for upstream #12719, applied upstream |
55 |
Patch212: 0001-fixed-don-t-load-non-matching-archived-subtitles-fix.patch |
56 |
|
57 |
# Hack to workaround upgrading from our old hack... see patch header for more |
58 |
# details and an upstreaming plan. |
59 |
Patch213: 0001-hack-workaround-for-old-incompatible-PVR-addon-datab.patch |
60 |
|
61 |
# nosefart audio plugin and RSXS-0.9 based screensavers are GPLv2 only |
62 |
# several eventclients are GPLv3+ (in subpackages) |
63 |
# libhdhomerun is LGPLv3+ with an exception (always ok to link against it) |
64 |
# the rest is GPLv2+ |
65 |
# both GPLv2+ and GPLv2 are mentioned because plugins are not part of core |
66 |
# xbmc and therefore e.g. /usr/bin/xbmc is GPLv2+ with LGPLv3+ part |
67 |
# as allowed by a license exception |
68 |
License: GPLv2+ and GPLv2 and (LGPLv3+ with exceptions) |
69 |
Group: Video |
70 |
BuildRoot: %{_tmppath}/%{name}-root |
71 |
BuildRequires: boost-devel |
72 |
BuildRequires: ffmpeg-devel |
73 |
BuildRequires: libmpeg2dec-devel |
74 |
BuildRequires: libogg-devel |
75 |
BuildRequires: libwavpack-devel |
76 |
BuildRequires: python-devel |
77 |
BuildRequires: glew-devel |
78 |
BuildRequires: mesagl-devel |
79 |
BuildRequires: mesaglu-devel |
80 |
BuildRequires: libmad-devel |
81 |
BuildRequires: libjpeg-devel |
82 |
BuildRequires: libsamplerate-devel |
83 |
BuildRequires: libvorbis-devel |
84 |
BuildRequires: bzip2-devel |
85 |
BuildRequires: mysql-devel |
86 |
BuildRequires: liblzo2-devel |
87 |
BuildRequires: zlib-devel |
88 |
BuildRequires: openssl-devel |
89 |
BuildRequires: fontconfig-devel |
90 |
BuildRequires: fribidi-devel |
91 |
BuildRequires: sqlite3-devel |
92 |
BuildRequires: libpng-devel |
93 |
BuildRequires: libpcre-devel |
94 |
BuildRequires: libcdio-devel |
95 |
BuildRequires: libmms-devel |
96 |
BuildRequires: freetype2-devel |
97 |
BuildRequires: libflac-devel |
98 |
BuildRequires: libsmbclient-devel |
99 |
BuildRequires: SDL_mixer-devel |
100 |
BuildRequires: libjasper-devel |
101 |
BuildRequires: libtiff-devel |
102 |
BuildRequires: SDL_image-devel |
103 |
BuildRequires: libalsa-devel |
104 |
BuildRequires: enca-devel |
105 |
BuildRequires: libxt-devel |
106 |
BuildRequires: libxtst-devel |
107 |
BuildRequires: libxmu-devel |
108 |
BuildRequires: libxinerama-devel |
109 |
BuildRequires: libcurl-devel |
110 |
BuildRequires: dbus-devel |
111 |
BuildRequires: hal-devel |
112 |
BuildRequires: SDL-devel |
113 |
BuildRequires: pulseaudio-devel |
114 |
BuildRequires: avahi-common-devel |
115 |
BuildRequires: avahi-client-devel |
116 |
BuildRequires: libxrandr-devel |
117 |
BuildRequires: vdpau-devel |
118 |
BuildRequires: cwiid-devel |
119 |
BuildRequires: libice-devel |
120 |
BuildRequires: libx11-devel |
121 |
BuildRequires: crystalhd-devel |
122 |
BuildRequires: libmicrohttpd-devel |
123 |
BuildRequires: libmodplug-devel |
124 |
BuildRequires: ssh-devel |
125 |
BuildRequires: libva-devel |
126 |
BuildRequires: gettext-devel |
127 |
BuildRequires: expat-devel |
128 |
BuildRequires: libass-devel |
129 |
BuildRequires: rtmp-devel |
130 |
BuildRequires: bluray-devel |
131 |
BuildRequires: bluez-devel |
132 |
BuildRequires: udev-devel |
133 |
BuildRequires: yajl-devel |
134 |
BuildRequires: nfs-devel |
135 |
BuildRequires: afpclient-devel |
136 |
BuildRequires: libplist-devel |
137 |
BuildRequires: shairport-devel |
138 |
BuildRequires: cec-devel |
139 |
BuildRequires: cmake |
140 |
BuildRequires: gperf |
141 |
BuildRequires: zip |
142 |
%ifarch %ix86 |
143 |
BuildRequires: nasm |
144 |
%endif |
145 |
Requires: lsb-release |
146 |
# dlopened (existence check required by rpm5 as it doesn't use stderr): |
147 |
%define dlopenreq() %([ -e %{_libdir}/lib%{1}.so ] && rpm -qf --qf '%%{name}' $(readlink -f %{_libdir}/lib%{1}.so) 2>/dev/null || echo %{name}) |
148 |
Requires: %dlopenreq curl |
149 |
Requires: %dlopenreq FLAC |
150 |
Requires: %dlopenreq mad |
151 |
Requires: %dlopenreq ogg |
152 |
Requires: %dlopenreq vorbis |
153 |
Requires: %dlopenreq vorbisenc |
154 |
Requires: %dlopenreq vorbisfile |
155 |
Requires: %dlopenreq modplug |
156 |
Requires: %dlopenreq rtmp |
157 |
Requires: %dlopenreq mpeg2 |
158 |
Requires: %dlopenreq ass |
159 |
Requires: %dlopenreq bluray |
160 |
Requires: %dlopenreq nfs |
161 |
Requires: %dlopenreq afpclient |
162 |
Requires: %dlopenreq plist |
163 |
Requires: %dlopenreq shairport |
164 |
Requires: %dlopenreq cec |
165 |
# not nearly as common as the above, so just suggest instead for now: |
166 |
Suggests: %dlopenreq crystalhd |
167 |
# TODO: FEH.py is useless nowadays, drop it here and upstream. |
168 |
# for FEH.py, to check current configuration is ok for xbmc: |
169 |
Requires: xdpyinfo |
170 |
Requires: glxinfo |
171 |
# for FEH.py to allow it to give an error message (should be available already |
172 |
# on most systems): |
173 |
Requires: pygtk2 |
174 |
# for xbmc python scripts: |
175 |
Requires: python-imaging |
176 |
# Packages not shipped in core: |
177 |
Suggests: %{_lib}lame0 |
178 |
Suggests: %{_lib}dvdcss2 |
179 |
|
180 |
# Packages have been merged |
181 |
Obsoletes: xbmc-core < 9.11-1.svn29468 |
182 |
Obsoletes: xbmc-skin-confluence < 9.11-1.svn29468 |
183 |
Obsoletes: xbmc-skin-pm3-hd < 9.11-1.svn29468 |
184 |
Obsoletes: xbmc-nosefart < 9.11-1.svn29468 |
185 |
Obsoletes: xbmc-screensavers-default < 9.11-1.svn29468 |
186 |
Obsoletes: xbmc-script-examples < 9.11-1.svn27796 |
187 |
Obsoletes: xbmc-web-pm3 < 9.11-1.svn27796 |
188 |
|
189 |
%description |
190 |
XBMC is an award-winning free and open source software media player |
191 |
and entertainment hub for digital media. |
192 |
|
193 |
While XBMC functions very well as a standard media player application |
194 |
for your computer, it has been designed to be the perfect companion |
195 |
for your HTPC. Supporting an almost endless range of remote controls, |
196 |
and combined with its beautiful interface and powerful skinning |
197 |
engine, XBMC feels very natural to use from the couch and is the |
198 |
ideal solution for your home theater. |
199 |
|
200 |
This is the stable version of XBMC from the %branch_release release branch, |
201 |
with PVR support added from opdenkamp %branch_release-pvr branch. Support for |
202 |
RAR files is not included due to license issues. |
203 |
|
204 |
%package eventclients-common |
205 |
Summary: Common files for XBMC eventclients |
206 |
Group: Video |
207 |
License: GPLv2+ |
208 |
%py_requires |
209 |
|
210 |
%description eventclients-common |
211 |
XBMC is an award-winning free and open source software media player |
212 |
and entertainment hub for digital media. |
213 |
|
214 |
This package contains common files for eventclients. |
215 |
|
216 |
%package eventclients-devel |
217 |
Summary: Development files for XBMC eventclients |
218 |
Group: Development/C |
219 |
License: GPLv2+ |
220 |
|
221 |
%description eventclients-devel |
222 |
XBMC is an award-winning free and open source software media player |
223 |
and entertainment hub for digital media. |
224 |
|
225 |
This package contains files needed to build eventclients. |
226 |
|
227 |
%package eventclient-wiiremote |
228 |
Summary: Wii Remote eventclient for XBMC |
229 |
Group: Video |
230 |
License: GPLv3+ |
231 |
Requires: %{name}-eventclients-common = %{version}-%{release} |
232 |
|
233 |
%description eventclient-wiiremote |
234 |
XBMC is an award-winning free and open source software media player |
235 |
and entertainment hub for digital media. |
236 |
|
237 |
This package contains the Wii Remote eventclient. |
238 |
|
239 |
%package eventclient-j2me |
240 |
Summary: J2ME eventclient for XBMC |
241 |
Group: Video |
242 |
License: GPLv2+ |
243 |
Requires: python-pybluez |
244 |
Requires: %{name}-eventclients-common = %{version}-%{release} |
245 |
|
246 |
%description eventclient-j2me |
247 |
XBMC is an award-winning free and open source software media player |
248 |
and entertainment hub for digital media. |
249 |
|
250 |
This package contains the J2ME eventclient, providing a bluetooth |
251 |
server that can communicate with a mobile tool supporting J2ME. |
252 |
|
253 |
%package eventclient-ps3 |
254 |
Summary: PS3 eventclients for XBMC |
255 |
Group: Video |
256 |
License: GPLv2+ |
257 |
Requires: python-pybluez |
258 |
Requires: %{name}-eventclients-common = %{version}-%{release} |
259 |
# requires via zeroconf.py, only used by xbmc-ps3d: |
260 |
Requires: python-gobject avahi-python python-dbus |
261 |
# TODO merge all these?, and TODO zeroconf.py to a correct package? :) |
262 |
Obsoletes: eventclient-ps3remote < 9.11-1.svn31936 |
263 |
|
264 |
%description eventclient-ps3 |
265 |
XBMC is an award-winning free and open source software media player |
266 |
and entertainment hub for digital media. |
267 |
|
268 |
This package contains the PS3 remote and sixaxis eventclients. |
269 |
|
270 |
%package eventclient-xbmc-send |
271 |
Summary: PS3 eventclient for XBMC |
272 |
Group: Video |
273 |
License: GPLv2+ |
274 |
Requires: %{name}-eventclients-common = %{version}-%{release} |
275 |
|
276 |
%description eventclient-xbmc-send |
277 |
XBMC is an award-winning free and open source software media player |
278 |
and entertainment hub for digital media. |
279 |
|
280 |
This package contains the xbmc-send eventclient. |
281 |
|
282 |
%prep |
283 |
%if %snap |
284 |
%setup -q -n %name-%branch_release-%snap |
285 |
%else |
286 |
%if %pre |
287 |
%setup -q -n %{name}-%{version}-%{branch_release}_%{pre} |
288 |
%else |
289 |
%setup -q |
290 |
%endif |
291 |
%endif |
292 |
%apply_patches |
293 |
# otherwise backups end up in binary rpms |
294 |
find -type f \( -name '*.00??' -o -name '*.00??~' \) -print -delete |
295 |
|
296 |
# remove prebuilt libraries |
297 |
find -type f \( -iname '*.so' -o -iname '*.dll' -o -iname '*.exe' \) -delete |
298 |
|
299 |
# GPLv2 only |
300 |
rm -r lib/cmyth/Win32/include/mysql |
301 |
# BSD 4-clause |
302 |
rm -r xbmc/cores/DllLoader/exports/emu_socket |
303 |
|
304 |
# win32 only |
305 |
rm -rf system/players/dvdplayer/etc/fonts |
306 |
|
307 |
%build |
308 |
%if %snap |
309 |
export GIT_REV=%snap |
310 |
%else |
311 |
export GIT_REV="tarball" |
312 |
%endif |
313 |
./bootstrap |
314 |
|
315 |
# due to xbmc modules that use symbols from xbmc binary |
316 |
# and are not using libtool |
317 |
%define _disable_ld_no_undefined 1 |
318 |
|
319 |
# Workaround configure using git to override GIT_REV (TODO: fix it properly) |
320 |
export ac_cv_prog_HAVE_GIT="no" |
321 |
|
322 |
%configure2_5x \ |
323 |
--disable-debug \ |
324 |
--disable-ccache \ |
325 |
--enable-external-libraries \ |
326 |
--disable-non-free \ |
327 |
--disable-dvdcss \ |
328 |
--enable-goom \ |
329 |
--with-lirc-device=/var/run/lirc/lircd |
330 |
|
331 |
# non-free = unrar |
332 |
# dvdcss is handled via dlopen when disabled |
333 |
|
334 |
%make |
335 |
%make -C tools/EventClients wiimote |
336 |
|
337 |
%install |
338 |
rm -rf %{buildroot} |
339 |
%makeinstall_std |
340 |
%makeinstall_std -C tools/EventClients |
341 |
|
342 |
# unused |
343 |
rm %{buildroot}%{_datadir}/xsessions/XBMC.desktop |
344 |
# our version of the above: |
345 |
install -d -m755 %{buildroot}%{_sysconfdir}/X11/wmsession.d |
346 |
cat > %{buildroot}%{_sysconfdir}/X11/wmsession.d/15XBMC <<EOF |
347 |
NAME=XBMC |
348 |
ICON=xbmc.png |
349 |
DESC=XBMC Media Center |
350 |
EXEC=%{_bindir}/xbmc-standalone |
351 |
SCRIPT: |
352 |
exec %{_bindir}/xbmc-standalone |
353 |
EOF |
354 |
|
355 |
# unused files, TODO fix this upstream: |
356 |
find %{buildroot}%{_datadir}/xbmc/addons/skin.*/media -name '*.png' -delete |
357 |
|
358 |
( # for IFS and +x |
359 |
# Check for issues in ELF binaries |
360 |
undefined= |
361 |
fhserr= |
362 |
echo Silencing output of undefined symbol and FHS conformance checks |
363 |
set +x |
364 |
IFS=$'\n' |
365 |
for file in $(find %{buildroot} -type f); do |
366 |
type="$(file "$file")" |
367 |
echo "$type" | grep -q "ELF" || continue |
368 |
|
369 |
# Check that a binary file is not in datadir: |
370 |
echo "$file" | grep -q "%{_datadir}" && fhserr="${fhserr}$file\n" |
371 |
|
372 |
# check for undefined symbols in XBMC modules |
373 |
echo "$type" | grep -q "shared object" || continue |
374 |
for symbol in $(LD_LIBRARY_PATH=$LD_LIBRARY_PATH:%{buildroot}%{_libdir} ldd -r "$file" 2>&1 | grep undefined | awk '{ print $3 }'); do |
375 |
# undefined symbols may also be provided by XBMC: |
376 |
nm -f posix -D --no-demangle --defined-only %{buildroot}%{_libdir}/xbmc/xbmc.bin | grep -q "^$symbol " && continue |
377 |
# The symbol was not provided by XBMC. |
378 |
# Check if it is available through its dependencies: |
379 |
for filename in $(objdump -p %{buildroot}%{_libdir}/xbmc/xbmc.bin | grep NEEDED | awk '{ print $2 }'); do |
380 |
depfile="/%{_lib}/$filename" |
381 |
[ -e "$depfile" ] || depfile="%{_libdir}/$filename" |
382 |
nm -f posix -D --no-demangle --defined-only $depfile | grep -q "^$symbol " && continue 2 |
383 |
done |
384 |
# Euphoria references rsxs PNG class, but it is never used at runtime, |
385 |
# so it results in no errors due to RTLD_LAZY being used by xbmc module loader. |
386 |
case $file:$symbol in */Euphoria.xbs:_ZN3PNG*) continue; esac |
387 |
# the symbol was not found |
388 |
undefined="${undefined}$file: $symbol\n" |
389 |
done |
390 |
done |
391 |
ok=1 |
392 |
[ -n "$undefined" ] && echo -e "$undefined" && echo "Undefined symbols!" && ok= |
393 |
[ -n "$fhserr" ] && echo -e "$fhserr" && echo "Binaries in datadir!" && ok= |
394 |
[ -n "$ok" ] |
395 |
) |
396 |
|
397 |
%clean |
398 |
rm -rf %{buildroot} |
399 |
|
400 |
%files |
401 |
%defattr(-,root,root) |
402 |
%doc %{_docdir}/xbmc |
403 |
%{_sysconfdir}/X11/wmsession.d/15XBMC |
404 |
%{_bindir}/xbmc |
405 |
%{_bindir}/xbmc-standalone |
406 |
%dir %{_libdir}/xbmc |
407 |
%dir %{_libdir}/xbmc/addons |
408 |
%dir %{_libdir}/xbmc/system |
409 |
%dir %{_libdir}/xbmc/system/players |
410 |
%dir %{_libdir}/xbmc/system/players/dvdplayer |
411 |
%dir %{_libdir}/xbmc/system/players/paplayer |
412 |
%{_libdir}/xbmc/xbmc.bin |
413 |
%{_libdir}/xbmc/xbmc-xrandr |
414 |
%dir %{_libdir}/xbmc/addons/* |
415 |
%{_libdir}/xbmc/addons/*/*.so |
416 |
%{_libdir}/xbmc/addons/*/*.pvr |
417 |
%{_libdir}/xbmc/addons/*/*.vis |
418 |
%{_libdir}/xbmc/addons/*/*.xbs |
419 |
%{_libdir}/xbmc/system/ImageLib-*-linux.so |
420 |
%{_libdir}/xbmc/system/hdhomerun-*-linux.so |
421 |
%{_libdir}/xbmc/system/libcmyth-*-linux.so |
422 |
%{_libdir}/xbmc/system/libcpluff-*-linux.so |
423 |
%{_libdir}/xbmc/system/libexif-*-linux.so |
424 |
%{_libdir}/xbmc/system/libid3tag-*-linux.so |
425 |
%{_libdir}/xbmc/system/players/dvdplayer/libdvdnav-*-linux.so |
426 |
%{_libdir}/xbmc/system/players/paplayer/adpcm-*-linux.so |
427 |
%{_libdir}/xbmc/system/players/paplayer/libsidplay2-*-linux.so |
428 |
%{_libdir}/xbmc/system/players/paplayer/nosefart-*-linux.so |
429 |
%{_libdir}/xbmc/system/players/paplayer/stsoundlibrary-*-linux.so |
430 |
%{_libdir}/xbmc/system/players/paplayer/timidity-*-linux.so |
431 |
%{_libdir}/xbmc/system/players/paplayer/vgmstream-*-linux.so |
432 |
%ifarch %ix86 |
433 |
%{_libdir}/xbmc/system/players/paplayer/SNESAPU-*-linux.so |
434 |
%endif |
435 |
%dir %{_datadir}/xbmc |
436 |
%{_datadir}/xbmc/addons |
437 |
%{_datadir}/xbmc/FEH.py |
438 |
%{_datadir}/xbmc/language |
439 |
%{_datadir}/xbmc/media |
440 |
%{_datadir}/xbmc/sounds |
441 |
%{_datadir}/xbmc/system |
442 |
%{_datadir}/xbmc/userdata |
443 |
%{_datadir}/applications/xbmc.desktop |
444 |
%{_iconsdir}/hicolor/*/apps/xbmc.png |
445 |
|
446 |
%files eventclients-common |
447 |
%defattr(-,root,root) |
448 |
%python_sitelib/xbmc |
449 |
%dir %{_datadir}/pixmaps/xbmc |
450 |
%{_datadir}/pixmaps/xbmc/*.png |
451 |
|
452 |
%files eventclients-devel |
453 |
%defattr(-,root,root) |
454 |
%dir %{_includedir}/xbmc |
455 |
%{_includedir}/xbmc/xbmcclient.h |
456 |
|
457 |
%files eventclient-j2me |
458 |
%defattr(-,root,root) |
459 |
%{_bindir}/xbmc-j2meremote |
460 |
|
461 |
%files eventclient-ps3 |
462 |
%defattr(-,root,root) |
463 |
%{_bindir}/xbmc-ps3d |
464 |
%{_bindir}/xbmc-ps3remote |
465 |
|
466 |
%files eventclient-xbmc-send |
467 |
%defattr(-,root,root) |
468 |
%{_bindir}/xbmc-send |
469 |
|
470 |
%files eventclient-wiiremote |
471 |
%defattr(-,root,root) |
472 |
%{_bindir}/xbmc-wiiremote |
473 |
|
474 |
|