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}
16 %include /usr/lib/rpm/macros.perl
17 Summary: On2 Flix Engine
18 Summary(pl.UTF-8): Silnik On2 Flix
22 License: (probably) not distributable
24 # download demo from http://flix.on2.com/demos/
25 # check for newer versions at http://flix.on2.com/flix/download/
26 # Source0Download: http://flix.on2.com/demos/flixenginelinuxdemo.tar.gz
28 Source0: %{name}linuxdemo-%{version}.tar.gz
29 # NoSource0-md5: 70d4675f5792ab617ed7dc19cc14a650
33 # Source1Download: http://flix.on2.com/flix/download/flix-engine-installer-linux-%{version}.tar.gz
34 Source1: flix-engine-installer-linux-%{version}.tar.gz
35 # NoSource1-md5: 918847c38ddf6eed5be2c6e8852d7d33
39 Source3: flixengine.sysconfig
40 Patch0: %{name}-libdir.patch
41 Patch1: %{name}-phploader.patch
42 URL: http://www.on2.com/developer/flix-engine-sdk
44 %{?with_java:BuildRequires: jre}
45 BuildRequires: perl-base
46 BuildRequires: php-devel
47 %{?with_python:BuildRequires: python}
48 BuildRequires: rpm-perlprov >= 4.1-13
49 BuildRequires: rpmbuild(macros) >= 1.344
51 BuildRequires: ffmpeg-libs
52 BuildRequires: lame-libs
54 Requires(post,postun): /sbin/ldconfig
55 Requires(post,preun): /sbin/chkconfig
56 Requires(postun): /usr/sbin/groupdel
57 Requires(postun): /usr/sbin/userdel
58 Requires(pre): /bin/id
59 Requires(pre): /usr/bin/getgid
60 Requires(pre): /usr/sbin/groupadd
61 Requires(pre): /usr/sbin/useradd
63 Requires: rc-scripts >= 0.4.1.5
64 Provides: group(flixd)
66 ExclusiveArch: %{ix86} %{x8664}
67 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
69 # should not provide such deps
70 %define _noautoprov libavutil.so.49 libavformat.so.50 libavcodec.so.51
71 # need to provide it for flixd, but we don't want package name dep here
72 %define _noautoreq %{_noautoprov}
74 %define _sysconfdir /etc/on2
77 The On2 Flix Engine provides many of the Flash 8 video encoding
78 features of our industry leading On2 Flix Pro video encoder in a
79 powerful software SDK.
81 The Engine enables you to add the power and efficiency of Flash video
82 with On2 VP6 encoding to your intranet, website and other server-based
83 applications, preserve alpha channel in the video output, and much
86 The major feature of the On2 Flix Engine 8 is support for Adobe Flash
87 8 video with the On2 VP6 codec and FLV video output that can be played
88 directly in the Flash Player, streamed through the Adobe Flash Media
89 Server, or imported into Flash Studio. The new FLV output also is
90 fully compliant with FLV format metadata and Adobe Flash Player
93 %description -l pl.UTF-8
94 Silnik On2 Flix Engine udostępnia wiele spośród możliwości
95 kodowania filmów Flash 8 wiodącego kodera On2 Flix Pro w postaci
98 Silnik pozwala wykorzystywać możliwości i wydajność filmów Flash
99 z kodowaniem On2 VP6 w intranecie, na stronie WWW i w innych
100 zastosowaniach serwerowych, z zachowaniem kanału alpha na wyjściu
101 obrazu i innymi opcjami.
103 Główną cechą silnika On2 Flix Engine 8 jest obsługa filmów Adobe
104 Flash 8 z kodekiem On2 VP6 oraz wyjściem obrazu FLV, które można
105 odtwarzać bezpośrednio w odtwarzaczu Flash, przekazywać strumieniem
106 poprzez Adobe Flash Media Server lub importować do Flash Studio. Nowe
107 wyjście FLV jest także w pełni zgodne z formatem metadanych FLV i
108 standardami Adobe Flash Playera.
111 Summary: Shared libraries for On2 Flix Engine
112 Summary(pl.UTF-8): Biblioteki współdzielone silnika On2 Flix
116 Shared libraries for On2 Flix Engine.
118 %description libs -l pl.UTF-8
119 Biblioteki współdzielone silnika On2 Flix.
122 Summary: Header files for On2 Flix Engine library
123 Summary(pl.UTF-8): Pliki nagłówkowe biblioteki silnika On2 Flix
124 Group: Development/Libraries
127 Header files for On2 Flix Engine library.
129 %description devel -l pl.UTF-8
130 Pliki nagłówkowe biblioteki silnika On2 Flix.
132 %package -n java-flixengine
133 Summary: Java bindings for On2 Flix Engine
134 Summary(pl.UTF-8): Wiązania Javy dla silnika On2 Flix
136 Requires: %{name}-libs = %{version}-%{release}
138 %description -n java-flixengine
139 Java bindings for On2 Flix Engine.
141 %description -n java-flixengine -l pl.UTF-8
142 Wiązania Javy dla silnika On2 Flix.
144 %package -n perl-flixengine
145 Summary: Perl bindings for On2 Flix Engine
146 Summary(pl.UTF-8): Wiązania perla dla silnika On2 Flix
148 Requires: %{name}-libs = %{version}-%{release}
150 %description -n perl-flixengine
151 Perl bindings for On2 Flix Engine.
153 %description -n perl-flixengine -l pl.UTF-8
154 Wiązania perla dla silnika On2 Flix.
156 %package -n php-flixengine
157 Summary: PHP bindings for On2 Flix Engine
158 Summary(pl.UTF-8): Wiązania PHP dla silnika On2 Flix
159 %{?requires_php_extension}
161 Requires: %{name}-libs = %{version}-%{release}
162 Requires: php-common >= 4:5.0.4
164 %description -n php-flixengine
165 PHP bindings for On2 Flix Engine.
167 %description -n php-flixengine -l pl.UTF-8
168 Wiązania PHP dla silnika On2 Flix.
170 %package -n python-flixengine
171 Summary: Python bindings for On2 Flix Engine
172 Summary(pl.UTF-8): Wiązania Pythona dla silnika On2 Flix
174 Requires: %{name}-libs = %{version}-%{release}
176 %description -n python-flixengine
177 Python bindings for On2 Flix Engine.
179 %description -n python-flixengine -l pl.UTF-8
180 Wiązania Pythona dla silnika On2 Flix.
183 Summary: HTML API Documentation for On2 Flix Engine
184 Summary(pl.UTF-8): Dokumentacja HTML API dla silnika On2 Flix
186 Obsoletes: flixengine-docs
189 HTML API Documentation for On2 Flix Engine.
191 %description apidocs -l pl.UTF-8
192 Dokumentacja HTML API dla silnika On2 Flix.
195 %setup -q -T -b %{?with_demo:0}%{!?with_demo:1} -n flix-engine-installer-linux-%{full_version}
196 bin=flix-engine-installer-linux-%{full_version}.bin
197 tar=flix-engine-linux-%{full_version}.tar.gz
199 OFFSET=$( awk -F= '/OFFSET=/{print $2; exit}' $bin)
200 dd bs=8 if=$bin of=$tar skip=$OFFSET
206 %{__sed} -ne '/## FUNCTIONS common/,/## END - common function/p' $bin > functions.sh
207 cat <<'EOF' > install.sh
209 export VERSION=%{full_version}
210 %{?with_demo:export FLIXENGINEDEMO=1}
211 export nullout=/dev/null
212 export tempdir=%{_builddir}/flix-engine-installer-linux-%{full_version}
214 . $(dirname "$0")/functions.sh
215 cd .flix-engine-installation-files
217 export -f getinput inset ynanswer
219 ./install.sh "$@" | tee -i $instlog
220 if [ -f "$instlog" ]; then
221 echo "Local system info:" >>$instlog
222 uname -a 2>/dev/null >>$instlog
223 head /etc/*version* 2>/dev/null >>$instlog
224 head /etc/*release* 2>/dev/null >>$instlog
225 cat /proc/cpuinfo 2>/dev/null >>$instlog
226 /lib/ld-linux.so.2 /lib/libc.so.6 2>/dev/null >>$instlog
227 echo "---" 2>/dev/null >>$instlog
228 /lib/ld-linux.so.2 /lib32/libc.so.6 2>/dev/null >>$instlog
229 echo "---" 2>/dev/null >>$instlog
230 /lib/libc.so.6 2>/dev/null >>$instlog
231 echo "---" 2>/dev/null >>$instlog
232 file /lib/libc.so.6 2>/dev/null >>$instlog
233 echo "---" 2>/dev/null >>$instlog
234 /sbin/ifconfig -a 2>/dev/null >>$instlog
236 echo "A log of this installation can be found here:"
243 cd .flix-engine-installation-files
245 # force installing initscript into buildroot without detection
246 s,^initchk$,inittype=sysv1; INITDIR=$RPM_BUILD_ROOT/etc/rc.d/init.d,
249 s,clear 2>\$nullout,#&,
251 # we want to install examples, but not compile them in install
252 # and somewhy --no-compile didn not work, had to specify also --no-modules,
253 # which made no modules installed either, chicken-egg problem.
254 s,COMPILEMODULES=y,COMPILEMODULES=n,
255 s,INSTALLEDPERLFILES="n",INSTALLEDPERLFILES="y",
256 s,INSTALLEDPHPFILES="n",INSTALLEDPHPFILES="y",
257 s,INSTALLEDPYTHONFILES="n",INSTALLEDPYTHONFILES="y",
258 s,INSTALLEDFLIXLIBRARIES="n",INSTALLEDFLIXLIBRARIES="y",
259 s,INSTALLEDJAVAFILES="n",INSTALLEDJAVAFILES="y",
263 # remove backups from patching as we use globs to package files to buildroot
264 find flixsamples '(' -name '*~' -o -name '*.orig' ')' | xargs -r rm -v
267 cd .flix-engine-installation-files
270 ln -snf flixhdrs flixengine2
271 export C_INCLUDE_PATH=$PWD
274 export LD_LIBRARY_PATH=$PWD/testing/lib64
275 ldconfig -n testing/lib64
277 export LD_LIBRARY_PATH=$PWD/flixlibs
280 export LIBRARY_PATH=$LD_LIBRARY_PATH
283 %{__make} -C flixphp \
289 %{__perl} Makefile.PL \
293 OPTIMIZE="%{rpmcflags}"
294 %{?with_tests:%{__make} test}
299 %{__python} setup.py build
304 %{__make} -C flixjava \
310 rm -rf $RPM_BUILD_ROOT
311 install -d $RPM_BUILD_ROOT/etc/{rc.d/init.d,sysconfig}
314 --prefix=$RPM_BUILD_ROOT%{_prefix} \
315 --mandir=$RPM_BUILD_ROOT%{_mandir} \
316 --mencoderbin=$RPM_BUILD_ROOT%{_bindir} \
317 --flixsamples=$RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version} \
318 --pidfile=$RPM_BUILD_ROOT/var/run/flixd/flixd.pid \
319 --authdir=$RPM_BUILD_ROOT%{_sysconfdir} \
322 --yesireadtheon2license \
328 rm -f $RPM_BUILD_ROOT/etc/rc.d/init.d/flixengine
329 install %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/flixd
330 install %{SOURCE3} $RPM_BUILD_ROOT/etc/sysconfig/flixd
332 cd .flix-engine-installation-files
333 install lget on2_host_info $RPM_BUILD_ROOT%{_sbindir}
335 # symlink without buildroot
336 ln -snf %{_docdir}/on2/flixengine/html/c/cli.html $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/c/README-cli.html
340 %{__make} -C flixphp \
342 PHPINST=%{php_extensiondir} \
343 DESTDIR=$RPM_BUILD_ROOT \
345 install -d $RPM_BUILD_ROOT%{php_sysconfdir}/conf.d
346 cat <<'EOF' > $RPM_BUILD_ROOT%{php_sysconfdir}/conf.d/flixengine.ini
347 ; Enable flixengine extension module
348 extension=flixengine2.so
350 # symlink without buildroot
351 ln -snf %{_docdir}/on2/flixengine/html/phpcgi.html $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/php/README-cgi.html
352 ln -snf %{_docdir}/on2/flixengine/html/phpcli.html $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/php/README-cli.html
356 %{__make} pure_install \
357 DESTDIR=$RPM_BUILD_ROOT
358 rm -f $RPM_BUILD_ROOT%{perl_vendorarch}/auto/On2/flixengine2/.packlist
360 # symlink without buildroot
361 ln -snf %{_docdir}/on2/flixengine/html/perlcgi.html $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/perl/README-cgi.html
362 ln -snf %{_docdir}/on2/flixengine/html/perlcli.html $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/perl/README-cli.html
366 %{__python} setup.py install \
368 --root=$RPM_BUILD_ROOT
371 # symlink without buildroot
372 ln -snf %{_docdir}/on2/flixengine/html/pythoncgi.html $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/python/README-cgi.html
373 ln -snf %{_docdir}/on2/flixengine/html/pythoncli.html $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/python/README-cli.html
376 rm -f $RPM_BUILD_ROOT%{_docdir}/on2/flixengine/javadoc
378 %{__make} -C flixjava \
379 SOINST=$RPM_BUILD_ROOT%{_libdir} \
380 JARINST=$RPM_BUILD_ROOT%{_javadir} \
384 # symlink without buildroot
385 ln -snf %{_prefix}/src/flixmodules/flixjava/doc $RPM_BUILD_ROOT%{_docdir}/on2/flixengine/javadoc
386 ln -snf %{_docdir}/on2/flixengine/html/javacli.html $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/java/README-cli.html
390 cp -a testing/lib64/libflixengine2.so* $RPM_BUILD_ROOT%{_libdir}
391 # flixd linked statically and other libs are 64 bit
392 rm -f $RPM_BUILD_ROOT%{_prefix}/lib/libflixengine2*.so*
395 # we have already newer soname for libavformat.so in ffmpeg-libs
396 # copy from bundled ones.
397 install supportlibs/libavformat.so.50.6.0 $RPM_BUILD_ROOT%{_prefix}/lib
398 install supportlibs/libavcodec.so.51.21.0 $RPM_BUILD_ROOT%{_prefix}/lib
399 install supportlibs/libavutil.so.49.0.1 $RPM_BUILD_ROOT%{_prefix}/lib
401 # avoid collision from mplayer package
402 mv $RPM_BUILD_ROOT%{_bindir}/mencoder{,-flixengine}
404 # do not put hardware fingerprint to rpm package
405 > $RPM_BUILD_ROOT%{_sysconfdir}/hostinfo
406 touch $RPM_BUILD_ROOT%{_sysconfdir}/flixengine.lic
407 install -d $RPM_BUILD_ROOT/var/run/flixd
408 install -d $RPM_BUILD_ROOT/var/log
409 touch $RPM_BUILD_ROOT/var/log/flixd.log
412 rm -f $RPM_BUILD_ROOT%{_sbindir}/flix-engine-uninstall.sh
414 # make it somewhat easier to acquire license registration
415 install -d $RPM_BUILD_ROOT%{_sysconfdir}
416 cat > $RPM_BUILD_ROOT%{_sysconfdir}/flixd-license.conf <<'EOF'
417 FLIX_USERNAME='<username>'
418 FLIX_SERIAL='<serial>'
421 install -d $RPM_BUILD_ROOT%{_sbindir}
422 cat > $RPM_BUILD_ROOT%{_sbindir}/flixd-license-get <<'EOF'
424 . %{_sysconfdir}/flixd-license.conf
426 %{_sbindir}/lget -u "$FLIX_USERNAME" -s "$FLIX_SERIAL" -i %{_sysconfdir}/hostinfo -o %{_sysconfdir}/flixengine.lic -a 'On2FlixEngine/%{full_version} (%(uname -o))'
430 rm -rf $RPM_BUILD_ROOT
433 %groupadd -g 179 flixd
434 %useradd -u 179 -g flixd -c "On2 Flixd" flixd
438 /sbin/chkconfig --add flixd
439 if [ ! -f /var/log/flixd.log ]; then
440 touch /var/log/flixd.log
441 chown root:flixd /var/log/flixd.log
442 chmod 660 /var/log/flixd.log
444 if [ ! -s %{_sysconfdir}/hostinfo ]; then
445 %{_sbindir}/on2_host_info > %{_sysconfdir}/hostinfo
446 %banner -e %{name} <<EOF
447 To register your copy of flixd fill %{_sysconfdir}/flixd-license.conf
448 and afterwards call: %{_sbindir}/flixd-license-get
451 %service flixd restart
454 if [ "$1" = "0" ]; then
455 %service -q flixd stop
456 /sbin/chkconfig --del flixd
461 if [ "$1" = "0" ]; then
466 %post libs -p /sbin/ldconfig
467 %postun libs -p /sbin/ldconfig
469 %post -n php-flixengine
470 %php_webserver_restart
472 %postun -n php-flixengine
473 if [ "$1" = 0 ]; then
474 %php_webserver_restart
478 %defattr(644,root,root,755)
480 %{?with_java:%exclude %{_docdir}/on2/flixengine/javadoc}
482 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/flixd-license.conf
483 %attr(640,root,flixd) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/hostinfo
484 %attr(640,root,flixd) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/flixengine.lic
485 %attr(755,root,root) %{_prefix}/lib/libavformat.so.*.*.*
486 %attr(755,root,root) %{_prefix}/lib/libavcodec.so.*.*.*
487 %attr(755,root,root) %{_prefix}/lib/libavutil.so.*.*.*
488 %attr(755,root,root) %{_sbindir}/flixd
489 %attr(755,root,root) %{_sbindir}/flixd-license-get
490 %attr(755,root,root) %{_sbindir}/lget
491 %attr(755,root,root) %{_sbindir}/on2_host_info
492 %attr(754,root,root) /etc/rc.d/init.d/flixd
493 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/flixd
495 %{_mandir}/man8/flixd.8*
496 %dir %attr(771,root,flixd) /var/run/flixd
497 %ghost %attr(660,root,flixd) /var/log/flixd.log
498 %attr(755,root,root) %{_bindir}/mencoder-flixengine
501 %defattr(644,root,root,755)
503 %attr(755,root,root) %{_libdir}/libflixengine2.so.*.*
505 %attr(755,root,root) %{_libdir}/libflixengine2.so.*.*
506 %attr(755,root,root) %{_libdir}/libflixengine2_core.so.*.*
508 %dir %{_examplesdir}/%{name}-%{version}
511 %defattr(644,root,root,755)
513 %attr(755,root,root) %{_libdir}/libflixengine2.so
515 %attr(755,root,root) %{_libdir}/libflixengine2.so
516 %attr(755,root,root) %{_libdir}/libflixengine2_core.so
518 %{_includedir}/flixengine2
519 %{_examplesdir}/%{name}-%{version}/c
522 %files -n java-flixengine
523 %defattr(644,root,root,755)
524 %doc %{_docdir}/on2/flixengine/javadoc
525 # perhaps these should be:
526 # /usr/%{_lib}/jvm/java-sun-1.6.0/jre/lib/%{arch}/libflixengine2_jni.so
527 # /usr/%{_lib}/jvm/java-sun-1.6.0/jre/lib/ext/flixengine2.jar
528 %attr(755,root,root) %{_libdir}/libflixengine2_jni.so
529 %{_javadir}/flixengine2.jar
530 %{_examplesdir}/%{name}-%{version}/java
533 %files -n perl-flixengine
534 %defattr(644,root,root,755)
535 %dir %{perl_vendorarch}/On2
536 %{perl_vendorarch}/On2/flixengine2.pm
537 %dir %{perl_vendorarch}/auto/On2
538 %dir %{perl_vendorarch}/auto/On2/flixengine2
539 %{perl_vendorarch}/auto/On2/flixengine2/flixengine2.bs
540 %attr(755,root,root) %{perl_vendorarch}/auto/On2/flixengine2/flixengine2.so
541 %{_examplesdir}/%{name}-%{version}/perl
543 %files -n php-flixengine
544 %defattr(644,root,root,755)
545 %config(noreplace) %verify(not md5 mtime size) %{php_sysconfdir}/conf.d/flixengine.ini
546 %attr(755,root,root) %{php_extensiondir}/flixengine2.so
547 %{_prefix}/lib/flixengine2.php
548 %{_examplesdir}/%{name}-%{version}/php
551 %files -n python-flixengine
552 %defattr(644,root,root,755)
553 %attr(755,root,root) %{py_sitedir}/_flixengine2.so
554 %{py_sitedir}/flixengine2.pyc
555 %{py_sitedir}/flixengine2.pyo
556 %{_examplesdir}/%{name}-%{version}/python
560 %defattr(644,root,root,755)