3 %bcond_without autodeps # don't BR packages needed only for resolving deps
4 %bcond_with python # do not build Python bindings
5 %bcond_with 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: 3d0accb19f6d9dcd6ea2cd139a150d9e
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/index.php?474
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 install -d $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/php
358 ln -snf %{_docdir}/on2/flixengine/html/phpcgi.html $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/php/README-cgi.html
359 ln -snf %{_docdir}/on2/flixengine/html/phpcli.html $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/php/README-cli.html
363 %{__make} pure_install \
364 DESTDIR=$RPM_BUILD_ROOT
365 rm -f $RPM_BUILD_ROOT%{perl_vendorarch}/auto/On2/flixengine2/.packlist
367 # symlink without buildroot
368 install -d $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/perl
369 ln -snf %{_docdir}/on2/flixengine/html/perlcgi.html $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/perl/README-cgi.html
370 ln -snf %{_docdir}/on2/flixengine/html/perlcli.html $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/perl/README-cli.html
374 %{__python} setup.py install \
376 --root=$RPM_BUILD_ROOT
379 # symlink without buildroot
380 ln -snf %{_docdir}/on2/flixengine/html/pythoncgi.html $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/python/README-cgi.html
381 ln -snf %{_docdir}/on2/flixengine/html/pythoncli.html $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/python/README-cli.html
384 rm -f $RPM_BUILD_ROOT%{_docdir}/on2/flixengine/javadoc
386 %{__make} -C flixjava \
387 SOINST=$RPM_BUILD_ROOT%{_libdir} \
388 JARINST=$RPM_BUILD_ROOT%{_javadir} \
392 # symlink without buildroot
393 ln -snf %{_prefix}/src/flixmodules/flixjava/doc $RPM_BUILD_ROOT%{_docdir}/on2/flixengine/javadoc
394 ln -snf %{_docdir}/on2/flixengine/html/javacli.html $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/java/README-cli.html
398 cp -a testing/lib64/libflixengine2.so* $RPM_BUILD_ROOT%{_libdir}
399 # flixd linked statically and other libs are 64 bit
400 rm -f $RPM_BUILD_ROOT%{_prefix}/lib/libflixengine2*.so*
403 # we have already newer soname for libavformat.so in ffmpeg-libs
404 # copy from bundled ones.
405 install supportlibs/libavformat.so.51.12.2 $RPM_BUILD_ROOT%{_prefix}/lib
406 install supportlibs/libavcodec.so.51.41.0 $RPM_BUILD_ROOT%{_prefix}/lib
407 install supportlibs/libavutil.so.49.5.0 $RPM_BUILD_ROOT%{_prefix}/lib
409 # avoid collision from mplayer package
410 mv $RPM_BUILD_ROOT%{_bindir}/mencoder{,-flixengine}
412 # do not put hardware fingerprint to rpm package
413 > $RPM_BUILD_ROOT%{_sysconfdir}/hostinfo
414 touch $RPM_BUILD_ROOT%{_sysconfdir}/flixengine.lic
415 install -d $RPM_BUILD_ROOT/var/run/flixd
416 install -d $RPM_BUILD_ROOT/var/log
417 touch $RPM_BUILD_ROOT/var/log/flixd.log
420 rm -f $RPM_BUILD_ROOT%{_sbindir}/flix-engine-uninstall.sh
422 # make it somewhat easier to acquire license registration
423 install -d $RPM_BUILD_ROOT%{_sysconfdir}
424 cat > $RPM_BUILD_ROOT%{_sysconfdir}/flixd-license.conf <<'EOF'
425 FLIX_USERNAME='<username>'
426 FLIX_SERIAL='<serial>'
429 install -d $RPM_BUILD_ROOT%{_sbindir}
430 cat > $RPM_BUILD_ROOT%{_sbindir}/flixd-license-get <<'EOF'
434 . %{_sysconfdir}/flixd-license.conf
435 if [ -z "$FLIX_USERNAME" -o -z "$FLIX_SERIAL" ]; then
436 echo >&2 "Please fill FLIX_USERNAME and FLIX_SERIAL!"
440 %{_sbindir}/lget -u "$FLIX_USERNAME" -s "$FLIX_SERIAL" -i %{_sysconfdir}/hostinfo -o %{_sysconfdir}/flixengine.lic -a 'On2FlixEngine/%{full_version} (%(uname -o))'
442 echo "Serial registered and saved into %{_sysconfdir}/flixengine.lic"
444 echo "Run \"/sbin/service flixd start\" to start flixd"
448 rm -rf $RPM_BUILD_ROOT
451 %groupadd -g 179 flixd
452 %useradd -u 179 -g flixd -c "On2 Flixd" flixd
456 /sbin/chkconfig --add flixd
457 if [ ! -f /var/log/flixd.log ]; then
458 touch /var/log/flixd.log
459 chown root:flixd /var/log/flixd.log
460 chmod 660 /var/log/flixd.log
462 if [ ! -s %{_sysconfdir}/hostinfo ]; then
463 %{_sbindir}/on2_host_info > %{_sysconfdir}/hostinfo
464 %banner -e %{name} <<EOF
465 Put your username and serial key to %{_sysconfdir}/flixd-license.conf
467 %{_sbindir}/flixd-license-get
469 You can register evaluation demo at <http://flix.on2.com/demos/>.
472 %service flixd restart
475 if [ "$1" = "0" ]; then
476 %service -q flixd stop
477 /sbin/chkconfig --del flixd
482 if [ "$1" = "0" ]; then
487 %post libs -p /sbin/ldconfig
488 %postun libs -p /sbin/ldconfig
490 %post -n php-flixengine
491 %php_webserver_restart
493 %postun -n php-flixengine
494 if [ "$1" = 0 ]; then
495 %php_webserver_restart
499 %defattr(644,root,root,755)
501 %{?with_java:%exclude %{_docdir}/on2/flixengine/javadoc}
503 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/flixd-license.conf
504 %attr(640,root,flixd) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/hostinfo
505 %attr(640,root,flixd) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/flixengine.lic
506 %attr(755,root,root) %{_prefix}/lib/libavformat.so.*.*.*
507 %attr(755,root,root) %{_prefix}/lib/libavcodec.so.*.*.*
508 %attr(755,root,root) %{_prefix}/lib/libavutil.so.*.*.*
509 %attr(755,root,root) %{_sbindir}/flixd
510 %attr(755,root,root) %{_sbindir}/flixd-license-get
511 %attr(755,root,root) %{_sbindir}/lget
512 %attr(755,root,root) %{_sbindir}/on2_host_info
513 %attr(754,root,root) /etc/rc.d/init.d/flixd
514 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/flixd
517 %{_mandir}/man8/flixd.8*
518 %dir %attr(771,root,flixd) /var/run/flixd
519 %ghost %attr(660,root,flixd) /var/log/flixd.log
520 %attr(755,root,root) %{_bindir}/mencoder-flixengine
523 %defattr(644,root,root,755)
525 %attr(755,root,root) %{_libdir}/libflixengine2.so.*.*
527 %attr(755,root,root) %{_libdir}/libflixengine2.so.*.*
528 %attr(755,root,root) %{_libdir}/libflixengine2_core.so.*.*
529 %attr(755,root,root) %ghost %{_libdir}/libflixengine2.so.0
530 %attr(755,root,root) %ghost %{_libdir}/libflixengine2_core.so.0
532 %dir %{_examplesdir}/%{name}-%{version}
535 %defattr(644,root,root,755)
537 %attr(755,root,root) %{_libdir}/libflixengine2.so
539 %attr(755,root,root) %{_libdir}/libflixengine2.so
540 %attr(755,root,root) %{_libdir}/libflixengine2_core.so
542 %{_includedir}/flixengine2
543 %{_examplesdir}/%{name}-%{version}/c
546 %files -n java-flixengine
547 %defattr(644,root,root,755)
548 %doc %{_docdir}/on2/flixengine/javadoc
549 # perhaps these should be:
550 # /usr/%{_lib}/jvm/java-sun-1.6.0/jre/lib/%{arch}/libflixengine2_jni.so
551 # /usr/%{_lib}/jvm/java-sun-1.6.0/jre/lib/ext/flixengine2.jar
552 %attr(755,root,root) %{_libdir}/libflixengine2_jni.so
553 %{_javadir}/flixengine2.jar
554 %{_examplesdir}/%{name}-%{version}/java
557 %files -n perl-flixengine
558 %defattr(644,root,root,755)
559 %dir %{perl_vendorarch}/On2
560 %{perl_vendorarch}/On2/flixengine2.pm
561 %dir %{perl_vendorarch}/auto/On2
562 %dir %{perl_vendorarch}/auto/On2/flixengine2
563 %{perl_vendorarch}/auto/On2/flixengine2/flixengine2.bs
564 %attr(755,root,root) %{perl_vendorarch}/auto/On2/flixengine2/flixengine2.so
565 %{_examplesdir}/%{name}-%{version}/perl
567 %files -n php-flixengine
568 %defattr(644,root,root,755)
569 %config(noreplace) %verify(not md5 mtime size) %{php_sysconfdir}/conf.d/flixengine.ini
570 %attr(755,root,root) %{php_extensiondir}/flixengine2.so
571 %{_prefix}/lib/flixengine2.php
572 %{_examplesdir}/%{name}-%{version}/php
575 %files -n python-flixengine
576 %defattr(644,root,root,755)
577 %attr(755,root,root) %{py_sitedir}/_flixengine2.so
578 %{py_sitedir}/flixengine2.pyc
579 %{py_sitedir}/flixengine2.pyo
580 %{_examplesdir}/%{name}-%{version}/python
584 %defattr(644,root,root,755)