3 %bcond_without autodeps # don't BR packages needed only for resolving deps
4 %bcond_without python # do not build Python bindings
5 %bcond_without java # do not build Java bindings
6 %bcond_with tests # perform "make test". needs running flixd on localhost
7 %bcond_without demo # use production tarball (you need one too:))
14 %define full_version %{version}%{?with_demo:_DEMO}%{?_extra}
17 %include /usr/lib/rpm/macros.perl
18 Summary: On2 Flix Engine
19 Summary(pl.UTF-8): Silnik On2 Flix
23 License: (probably) not distributable
25 # download demo from http://flix.on2.com/demos/
26 # check for newer versions at http://flix.on2.com/flix/download/
27 # Source0Download: http://flix.on2.com/demos/flixenginelinuxdemo.tar.gz
29 Source0: %{name}linuxdemo-%{version}.tar.gz
30 # NoSource0-md5: 30046ffbf51a1288afde194d5298c76c
34 # Source1Download: http://flix.on2.com/flix/download/flix-engine-installer-linux-%{version}.tar.gz
35 Source1: flix-engine-installer-linux-%{version}%{?_extra}.tar.gz
36 # NoSource1-md5: ecf91acf067775e27059977b7a5a8da7
40 Source3: %{name}.sysconfig
41 Patch0: %{name}-libdir.patch
42 Patch1: %{name}-phploader.patch
43 URL: http://www.on2.com/developer/flix-engine-sdk
45 %{?with_java:BuildRequires: jre}
46 BuildRequires: perl-base
47 BuildRequires: php-devel
48 %{?with_python:BuildRequires: python}
49 BuildRequires: rpm-perlprov >= 4.1-13
50 BuildRequires: rpmbuild(macros) >= 1.344
52 BuildRequires: ffmpeg-libs
53 BuildRequires: lame-libs
55 Requires(post,postun): /sbin/ldconfig
56 Requires(post,preun): /sbin/chkconfig
57 Requires(postun): /usr/sbin/groupdel
58 Requires(postun): /usr/sbin/userdel
59 Requires(pre): /bin/id
60 Requires(pre): /usr/bin/getgid
61 Requires(pre): /usr/sbin/groupadd
62 Requires(pre): /usr/sbin/useradd
64 Requires: rc-scripts >= 0.4.1.5
65 Provides: group(flixd)
67 ExclusiveArch: %{ix86} %{x8664}
68 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
70 # should not provide such deps
71 %define _noautoprov libavutil.so.49 libavformat.so.50 libavcodec.so.51
72 # need to provide it for flixd, but we don't want package name dep here
73 %define _noautoreq %{_noautoprov}
75 %define _sysconfdir /etc/on2
78 The On2 Flix Engine provides many of the Flash 8 video encoding
79 features of our industry leading On2 Flix Pro video encoder in a
80 powerful software SDK.
82 The Engine enables you to add the power and efficiency of Flash video
83 with On2 VP6 encoding to your intranet, website and other server-based
84 applications, preserve alpha channel in the video output, and much
87 The major feature of the On2 Flix Engine 8 is support for Adobe Flash
88 8 video with the On2 VP6 codec and FLV video output that can be played
89 directly in the Flash Player, streamed through the Adobe Flash Media
90 Server, or imported into Flash Studio. The new FLV output also is
91 fully compliant with FLV format metadata and Adobe Flash Player
94 %description -l pl.UTF-8
95 Silnik On2 Flix Engine udostępnia wiele spośród możliwości
96 kodowania filmów Flash 8 wiodącego kodera On2 Flix Pro w postaci
99 Silnik pozwala wykorzystywać możliwości i wydajność filmów Flash
100 z kodowaniem On2 VP6 w intranecie, na stronie WWW i w innych
101 zastosowaniach serwerowych, z zachowaniem kanału alpha na wyjściu
102 obrazu i innymi opcjami.
104 Główną cechą silnika On2 Flix Engine 8 jest obsługa filmów Adobe
105 Flash 8 z kodekiem On2 VP6 oraz wyjściem obrazu FLV, które można
106 odtwarzać bezpośrednio w odtwarzaczu Flash, przekazywać strumieniem
107 poprzez Adobe Flash Media Server lub importować do Flash Studio. Nowe
108 wyjście FLV jest także w pełni zgodne z formatem metadanych FLV i
109 standardami Adobe Flash Playera.
112 Summary: Shared libraries for On2 Flix Engine
113 Summary(pl.UTF-8): Biblioteki współdzielone silnika On2 Flix
117 Shared libraries for On2 Flix Engine.
119 %description libs -l pl.UTF-8
120 Biblioteki współdzielone silnika On2 Flix.
123 Summary: Header files for On2 Flix Engine library
124 Summary(pl.UTF-8): Pliki nagłówkowe biblioteki silnika On2 Flix
125 Group: Development/Libraries
128 Header files for On2 Flix Engine library.
130 %description devel -l pl.UTF-8
131 Pliki nagłówkowe biblioteki silnika On2 Flix.
133 %package -n java-flixengine
134 Summary: Java bindings for On2 Flix Engine
135 Summary(pl.UTF-8): Wiązania Javy dla silnika On2 Flix
137 Requires: %{name}-libs = %{version}-%{release}
138 Requires: jpackage-utils
140 %description -n java-flixengine
141 Java bindings for On2 Flix Engine.
143 %description -n java-flixengine -l pl.UTF-8
144 Wiązania Javy dla silnika On2 Flix.
146 %package -n perl-flixengine
147 Summary: Perl bindings for On2 Flix Engine
148 Summary(pl.UTF-8): Wiązania perla dla silnika On2 Flix
150 Requires: %{name}-libs = %{version}-%{release}
152 %description -n perl-flixengine
153 Perl bindings for On2 Flix Engine.
155 %description -n perl-flixengine -l pl.UTF-8
156 Wiązania perla dla silnika On2 Flix.
158 %package -n php-flixengine
159 Summary: PHP bindings for On2 Flix Engine
160 Summary(pl.UTF-8): Wiązania PHP dla silnika On2 Flix
161 %{?requires_php_extension}
163 Requires: %{name}-libs = %{version}-%{release}
164 Requires: php-common >= 4:5.0.4
166 %description -n php-flixengine
167 PHP bindings for On2 Flix Engine.
169 %description -n php-flixengine -l pl.UTF-8
170 Wiązania PHP dla silnika On2 Flix.
172 %package -n python-flixengine
173 Summary: Python bindings for On2 Flix Engine
174 Summary(pl.UTF-8): Wiązania Pythona dla silnika On2 Flix
176 Requires: %{name}-libs = %{version}-%{release}
178 %description -n python-flixengine
179 Python bindings for On2 Flix Engine.
181 %description -n python-flixengine -l pl.UTF-8
182 Wiązania Pythona dla silnika On2 Flix.
185 Summary: HTML API Documentation for On2 Flix Engine
186 Summary(pl.UTF-8): Dokumentacja HTML API dla silnika On2 Flix
188 Obsoletes: flixengine-docs
191 HTML API Documentation for On2 Flix Engine.
193 %description apidocs -l pl.UTF-8
194 Dokumentacja HTML API dla silnika On2 Flix.
197 %setup -q -T -b %{?with_demo:0}%{!?with_demo:1} -n flix-engine-installer-linux-%{full_version}
198 bin=flix-engine-installer-linux-%{full_version}.bin
199 tar=flix-engine-linux-%{full_version}.tar.gz
201 OFFSET=$( awk -F= '/OFFSET=/{print $2; exit}' $bin)
202 dd bs=8 if=$bin of=$tar skip=$OFFSET
208 %{__sed} -ne '/## FUNCTIONS common/,/## END - common function/p' $bin > functions.sh
209 cat <<'EOF' > install.sh
211 export VERSION=%{full_version}
212 %{?with_demo:export FLIXENGINEDEMO=1}
213 export nullout=/dev/null
214 export tempdir=%{_builddir}/flix-engine-installer-linux-%{full_version}
216 . $(dirname "$0")/functions.sh
217 cd .flix-engine-installation-files
219 export -f getinput inset ynanswer
221 ./install.sh "$@" | tee -i $instlog
222 if [ -f "$instlog" ]; then
223 echo "Local system info:" >>$instlog
224 uname -a 2>/dev/null >>$instlog
225 head /etc/*version* 2>/dev/null >>$instlog
226 head /etc/*release* 2>/dev/null >>$instlog
227 cat /proc/cpuinfo 2>/dev/null >>$instlog
228 /lib/ld-linux.so.2 /lib/libc.so.6 2>/dev/null >>$instlog
229 echo "---" 2>/dev/null >>$instlog
230 /lib/ld-linux.so.2 /lib32/libc.so.6 2>/dev/null >>$instlog
231 echo "---" 2>/dev/null >>$instlog
232 /lib/libc.so.6 2>/dev/null >>$instlog
233 echo "---" 2>/dev/null >>$instlog
234 file /lib/libc.so.6 2>/dev/null >>$instlog
235 echo "---" 2>/dev/null >>$instlog
236 /sbin/ifconfig -a 2>/dev/null >>$instlog
238 echo "A log of this installation can be found here:"
245 cd .flix-engine-installation-files
247 # force installing initscript into buildroot without detection
248 s,^initchk$,inittype=sysv1; INITDIR=$RPM_BUILD_ROOT/etc/rc.d/init.d,
251 s,clear 2>\$nullout,#&,
253 # we want to install examples, but not compile them in install
254 # and somewhy --no-compile didn not work, had to specify also --no-modules,
255 # which made no modules installed either, chicken-egg problem.
256 s,COMPILEMODULES=y,COMPILEMODULES=n,
257 s,INSTALLEDPERLFILES="n",INSTALLEDPERLFILES="y",
258 s,INSTALLEDPHPFILES="n",INSTALLEDPHPFILES="y",
259 s,INSTALLEDPYTHONFILES="n",INSTALLEDPYTHONFILES="y",
260 s,INSTALLEDFLIXLIBRARIES="n",INSTALLEDFLIXLIBRARIES="y",
261 s,INSTALLEDJAVAFILES="n",INSTALLEDJAVAFILES="y",
265 # remove backups from patching as we use globs to package files to buildroot
266 find flixsamples '(' -name '*~' -o -name '*.orig' ')' | xargs -r rm -v
269 cd .flix-engine-installation-files
272 ln -snf flixhdrs flixengine2
273 export C_INCLUDE_PATH=$PWD
276 export LD_LIBRARY_PATH=$PWD/testing/lib64
277 ldconfig -n testing/lib64
279 export LD_LIBRARY_PATH=$PWD/flixlibs
282 export LIBRARY_PATH=$LD_LIBRARY_PATH
285 %{__make} -C flixphp \
291 %{__perl} Makefile.PL \
295 OPTIMIZE="%{rpmcflags}"
296 %{?with_tests:%{__make} test}
301 %{__python} setup.py build
306 %{__make} -C flixjava \
312 rm -rf $RPM_BUILD_ROOT
313 install -d $RPM_BUILD_ROOT/etc/{rc.d/init.d,sysconfig}
316 --prefix=$RPM_BUILD_ROOT%{_prefix} \
317 --mandir=$RPM_BUILD_ROOT%{_mandir} \
318 --mencoderbin=$RPM_BUILD_ROOT%{_bindir} \
319 --flixsamples=$RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version} \
320 --pidfile=$RPM_BUILD_ROOT/var/run/flixd/flixd.pid \
321 --authdir=$RPM_BUILD_ROOT%{_sysconfdir} \
324 --yesireadtheon2license \
330 rm -f $RPM_BUILD_ROOT/etc/rc.d/init.d/flixengine
331 install %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/flixd
332 install %{SOURCE3} $RPM_BUILD_ROOT/etc/sysconfig/flixd
334 # mencoder-flixengine searches for codecs from /usr/lib/win32 and there's no
335 # way to override it by commandline arg or env var.
336 ln -s codecs $RPM_BUILD_ROOT%{_prefix}/lib/win32
338 cd .flix-engine-installation-files
339 install lget on2_host_info $RPM_BUILD_ROOT%{_sbindir}
341 # symlink without buildroot
342 ln -snf %{_docdir}/on2/flixengine/html/c/cli.html $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/c/README-cli.html
346 %{__make} -C flixphp \
348 PHPINST=%{php_extensiondir} \
349 DESTDIR=$RPM_BUILD_ROOT \
351 install -d $RPM_BUILD_ROOT%{php_sysconfdir}/conf.d
352 cat <<'EOF' > $RPM_BUILD_ROOT%{php_sysconfdir}/conf.d/flixengine.ini
353 ; Enable flixengine extension module
354 ;extension=flixengine2.so
356 # symlink without buildroot
357 ln -snf %{_docdir}/on2/flixengine/html/phpcgi.html $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/php/README-cgi.html
358 ln -snf %{_docdir}/on2/flixengine/html/phpcli.html $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/php/README-cli.html
362 %{__make} pure_install \
363 DESTDIR=$RPM_BUILD_ROOT
364 rm -f $RPM_BUILD_ROOT%{perl_vendorarch}/auto/On2/flixengine2/.packlist
366 # symlink without buildroot
367 ln -snf %{_docdir}/on2/flixengine/html/perlcgi.html $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/perl/README-cgi.html
368 ln -snf %{_docdir}/on2/flixengine/html/perlcli.html $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/perl/README-cli.html
372 %{__python} setup.py install \
374 --root=$RPM_BUILD_ROOT
377 # symlink without buildroot
378 ln -snf %{_docdir}/on2/flixengine/html/pythoncgi.html $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/python/README-cgi.html
379 ln -snf %{_docdir}/on2/flixengine/html/pythoncli.html $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/python/README-cli.html
382 rm -f $RPM_BUILD_ROOT%{_docdir}/on2/flixengine/javadoc
384 %{__make} -C flixjava \
385 SOINST=$RPM_BUILD_ROOT%{_libdir} \
386 JARINST=$RPM_BUILD_ROOT%{_javadir} \
390 # symlink without buildroot
391 ln -snf %{_prefix}/src/flixmodules/flixjava/doc $RPM_BUILD_ROOT%{_docdir}/on2/flixengine/javadoc
392 ln -snf %{_docdir}/on2/flixengine/html/javacli.html $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/java/README-cli.html
396 cp -a testing/lib64/libflixengine2.so* $RPM_BUILD_ROOT%{_libdir}
397 # flixd linked statically and other libs are 64 bit
398 rm -f $RPM_BUILD_ROOT%{_prefix}/lib/libflixengine2*.so*
401 # we have already newer soname for libavformat.so in ffmpeg-libs
402 # copy from bundled ones.
403 install supportlibs/libavformat.so.50.6.0 $RPM_BUILD_ROOT%{_prefix}/lib
404 install supportlibs/libavcodec.so.51.21.0 $RPM_BUILD_ROOT%{_prefix}/lib
405 install supportlibs/libavutil.so.49.0.1 $RPM_BUILD_ROOT%{_prefix}/lib
407 # avoid collision from mplayer package
408 mv $RPM_BUILD_ROOT%{_bindir}/mencoder{,-flixengine}
410 # do not put hardware fingerprint to rpm package
411 > $RPM_BUILD_ROOT%{_sysconfdir}/hostinfo
412 touch $RPM_BUILD_ROOT%{_sysconfdir}/flixengine.lic
413 install -d $RPM_BUILD_ROOT/var/run/flixd
414 install -d $RPM_BUILD_ROOT/var/log
415 touch $RPM_BUILD_ROOT/var/log/flixd.log
418 rm -f $RPM_BUILD_ROOT%{_sbindir}/flix-engine-uninstall.sh
420 # make it somewhat easier to acquire license registration
421 install -d $RPM_BUILD_ROOT%{_sysconfdir}
422 cat > $RPM_BUILD_ROOT%{_sysconfdir}/flixd-license.conf <<'EOF'
423 FLIX_USERNAME='<username>'
424 FLIX_SERIAL='<serial>'
427 install -d $RPM_BUILD_ROOT%{_sbindir}
428 cat > $RPM_BUILD_ROOT%{_sbindir}/flixd-license-get <<'EOF'
430 . %{_sysconfdir}/flixd-license.conf
432 %{_sbindir}/lget -u "$FLIX_USERNAME" -s "$FLIX_SERIAL" -i %{_sysconfdir}/hostinfo -o %{_sysconfdir}/flixengine.lic -a 'On2FlixEngine/%{full_version} (%(uname -o))'
436 rm -rf $RPM_BUILD_ROOT
439 %groupadd -g 179 flixd
440 %useradd -u 179 -g flixd -c "On2 Flixd" flixd
444 /sbin/chkconfig --add flixd
445 if [ ! -f /var/log/flixd.log ]; then
446 touch /var/log/flixd.log
447 chown root:flixd /var/log/flixd.log
448 chmod 660 /var/log/flixd.log
450 if [ ! -s %{_sysconfdir}/hostinfo ]; then
451 %{_sbindir}/on2_host_info > %{_sysconfdir}/hostinfo
452 %banner -e %{name} <<EOF
453 To register your copy of flixd fill %{_sysconfdir}/flixd-license.conf
454 and afterwards call: %{_sbindir}/flixd-license-get
457 %service flixd restart
460 if [ "$1" = "0" ]; then
461 %service -q flixd stop
462 /sbin/chkconfig --del flixd
467 if [ "$1" = "0" ]; then
472 %post libs -p /sbin/ldconfig
473 %postun libs -p /sbin/ldconfig
475 %post -n php-flixengine
476 %php_webserver_restart
478 %postun -n php-flixengine
479 if [ "$1" = 0 ]; then
480 %php_webserver_restart
484 %defattr(644,root,root,755)
486 %{?with_java:%exclude %{_docdir}/on2/flixengine/javadoc}
488 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/flixd-license.conf
489 %attr(640,root,flixd) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/hostinfo
490 %attr(640,root,flixd) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/flixengine.lic
491 %attr(755,root,root) %{_prefix}/lib/libavformat.so.*.*.*
492 %attr(755,root,root) %{_prefix}/lib/libavcodec.so.*.*.*
493 %attr(755,root,root) %{_prefix}/lib/libavutil.so.*.*.*
494 %attr(755,root,root) %{_sbindir}/flixd
495 %attr(755,root,root) %{_sbindir}/flixd-license-get
496 %attr(755,root,root) %{_sbindir}/lget
497 %attr(755,root,root) %{_sbindir}/on2_host_info
498 %attr(754,root,root) /etc/rc.d/init.d/flixd
499 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/flixd
502 %{_mandir}/man8/flixd.8*
503 %dir %attr(771,root,flixd) /var/run/flixd
504 %ghost %attr(660,root,flixd) /var/log/flixd.log
505 %attr(755,root,root) %{_bindir}/mencoder-flixengine
508 %defattr(644,root,root,755)
510 %attr(755,root,root) %{_libdir}/libflixengine2.so.*.*
512 %attr(755,root,root) %{_libdir}/libflixengine2.so.*.*
513 %attr(755,root,root) %{_libdir}/libflixengine2_core.so.*.*
515 %dir %{_examplesdir}/%{name}-%{version}
518 %defattr(644,root,root,755)
520 %attr(755,root,root) %{_libdir}/libflixengine2.so
522 %attr(755,root,root) %{_libdir}/libflixengine2.so
523 %attr(755,root,root) %{_libdir}/libflixengine2_core.so
525 %{_includedir}/flixengine2
526 %{_examplesdir}/%{name}-%{version}/c
529 %files -n java-flixengine
530 %defattr(644,root,root,755)
531 %doc %{_docdir}/on2/flixengine/javadoc
532 # perhaps these should be:
533 # /usr/%{_lib}/jvm/java-sun-1.6.0/jre/lib/%{arch}/libflixengine2_jni.so
534 # /usr/%{_lib}/jvm/java-sun-1.6.0/jre/lib/ext/flixengine2.jar
535 %attr(755,root,root) %{_libdir}/libflixengine2_jni.so
536 %{_javadir}/flixengine2.jar
537 %{_examplesdir}/%{name}-%{version}/java
540 %files -n perl-flixengine
541 %defattr(644,root,root,755)
542 %dir %{perl_vendorarch}/On2
543 %{perl_vendorarch}/On2/flixengine2.pm
544 %dir %{perl_vendorarch}/auto/On2
545 %dir %{perl_vendorarch}/auto/On2/flixengine2
546 %{perl_vendorarch}/auto/On2/flixengine2/flixengine2.bs
547 %attr(755,root,root) %{perl_vendorarch}/auto/On2/flixengine2/flixengine2.so
548 %{_examplesdir}/%{name}-%{version}/perl
550 %files -n php-flixengine
551 %defattr(644,root,root,755)
552 %config(noreplace) %verify(not md5 mtime size) %{php_sysconfdir}/conf.d/flixengine.ini
553 %attr(755,root,root) %{php_extensiondir}/flixengine2.so
554 %{_prefix}/lib/flixengine2.php
555 %{_examplesdir}/%{name}-%{version}/php
558 %files -n python-flixengine
559 %defattr(644,root,root,755)
560 %attr(755,root,root) %{py_sitedir}/_flixengine2.so
561 %{py_sitedir}/flixengine2.pyc
562 %{py_sitedir}/flixengine2.pyo
563 %{_examplesdir}/%{name}-%{version}/python
567 %defattr(644,root,root,755)