# # Conditional build: %bcond_without autodeps # don't BR packages needed only for resolving deps %bcond_without python # Python bindings %bcond_without java # Java bindings %bcond_without php # PHP bindings %bcond_without perl # Perl bindings %bcond_without tests # perform "make test". needs running flixd on localhost %bcond_without demo # use non-demo tarball (you need valid license to start daemon) %bcond_without apis # disable all apis, build just flixd %bcond_without apidocs # without apidocs %if %{without apis} %undefine with_python %undefine with_java %undefine with_php %undefine with_perl %undefine with_apidocs %endif %define full_version %{version}%{?with_demo:_DEMO}%{?_extra} %define _extra %{nil} Summary: On2 Flix Engine Summary(pl.UTF-8): Silnik On2 Flix Name: flixengine Version: 8.0.13.0 Release: 2 License: (probably) not distributable Group: Applications # download demo from http://flix.on2.com/demos/ # check for newer versions at http://flix.on2.com/flix/download/ # Source0Download: http://flix.on2.com/demos/flixenginelinuxdemo.tar.gz %if %{with demo} Source0: %{name}linuxdemo-%{version}.tar.gz # NoSource0-md5: 883d227eeeb4973f65c4c12aed6b0e02 NoSource: 0 %endif %if %{without demo} # Source1Download: http://flix.on2.com/flix/download/flix-engine-installer-linux-%{version}.tar.gz Source1: flix-engine-installer-linux-%{version}%{?_extra}.tar.gz # NoSource1-md5: 60fd126a8d4aa81d286d6ea534a11f08 NoSource: 1 %endif Source2: %{name}.init Source3: %{name}.sysconfig Patch0: %{name}-libdir.patch Patch1: %{name}-phploader.patch URL: http://support.on2.com/ BuildRequires: bash %{?with_java:BuildRequires: jdk} %{?with_perl:BuildRequires: perl-base} %{?with_php:BuildRequires: php-devel} %{?with_python:BuildRequires: python-devel} %{?with_perl:BuildRequires: rpm-perlprov >= 4.1-13} %{?with_python:BuildRequires: rpm-pythonprov} BuildRequires: rpmbuild(macros) >= 1.710 %if %{with autodeps} BuildRequires: ffmpeg-libs BuildRequires: lame-libs %endif %if %{without demo} && "%{version}" == "8.0.13.0" BuildRequires: flixengine-libs = %{version} %endif Requires(post,preun): /sbin/chkconfig Requires(postun): /usr/sbin/groupdel Requires(postun): /usr/sbin/userdel Requires(pre): /bin/id Requires(pre): /usr/bin/getgid Requires(pre): /usr/sbin/groupadd Requires(pre): /usr/sbin/useradd Requires: portmap Requires: rc-scripts >= 0.4.1.5 Provides: group(flixd) Provides: user(flixd) ExclusiveArch: %{ix86} %{x8664} BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) %define _sysconfdir /etc/on2 %define _libexecdir %{_prefix}/lib/flixd # don't satisfy other packages for ffmpeg library deps (don't use %{name} here) %define _noautoprovfiles %{_libexecdir} # and as we don't provide them, don't require either %define _noautoreq libavutil.so libavformat.so libavcodec.so # these match for java-sun %ifarch %{ix86} %define _jvmlibdir %{_jvmdir}/jre/lib/i386 %endif %ifarch %{x8664} %define _jvmlibdir %{_jvmdir}/jre/lib/amd64 %endif %description The On2 Flix Engine provides many of the Flash 8 video encoding features of our industry leading On2 Flix Pro video encoder in a powerful software SDK. The Engine enables you to add the power and efficiency of Flash video with On2 VP6 encoding to your intranet, website and other server-based applications, preserve alpha channel in the video output, and much more. The major feature of the On2 Flix Engine 8 is support for Adobe Flash 8 video with the On2 VP6 codec and FLV video output that can be played directly in the Flash Player, streamed through the Adobe Flash Media Server, or imported into Flash Studio. The new FLV output also is fully compliant with FLV format metadata and Adobe Flash Player standards. %description -l pl.UTF-8 Silnik On2 Flix Engine udostępnia wiele spośród możliwości kodowania filmów Flash 8 wiodącego kodera On2 Flix Pro w postaci potężnego SDK. Silnik pozwala wykorzystywać możliwości i wydajność filmów Flash z kodowaniem On2 VP6 w intranecie, na stronie WWW i w innych zastosowaniach serwerowych, z zachowaniem kanału alpha na wyjściu obrazu i innymi opcjami. Główną cechą silnika On2 Flix Engine 8 jest obsługa filmów Adobe Flash 8 z kodekiem On2 VP6 oraz wyjściem obrazu FLV, które można odtwarzać bezpośrednio w odtwarzaczu Flash, przekazywać strumieniem poprzez Adobe Flash Media Server lub importować do Flash Studio. Nowe wyjście FLV jest także w pełni zgodne z formatem metadanych FLV i standardami Adobe Flash Playera. %package libs Summary: Shared libraries for On2 Flix Engine Summary(pl.UTF-8): Biblioteki współdzielone silnika On2 Flix Group: Libraries %description libs Shared libraries for On2 Flix Engine. %description libs -l pl.UTF-8 Biblioteki współdzielone silnika On2 Flix. %package devel Summary: Header files for On2 Flix Engine library Summary(pl.UTF-8): Pliki nagłówkowe biblioteki silnika On2 Flix Group: Development/Libraries %description devel Header files for On2 Flix Engine library. %description devel -l pl.UTF-8 Pliki nagłówkowe biblioteki silnika On2 Flix. %package -n java-%{name} Summary: Java bindings for On2 Flix Engine Summary(pl.UTF-8): Wiązania Javy dla silnika On2 Flix Group: Libraries Requires: %{name}-libs = %{version}-%{release} Requires: jpackage-utils %description -n java-%{name} Java bindings for On2 Flix Engine. %description -n java-%{name} -l pl.UTF-8 Wiązania Javy dla silnika On2 Flix. %package -n perl-%{name} Summary: Perl bindings for On2 Flix Engine Summary(pl.UTF-8): Wiązania perla dla silnika On2 Flix Group: Libraries Requires: %{name}-libs = %{version}-%{release} %description -n perl-%{name} Perl bindings for On2 Flix Engine. %description -n perl-%{name} -l pl.UTF-8 Wiązania perla dla silnika On2 Flix. %package -n php-%{name} Summary: PHP bindings for On2 Flix Engine Summary(pl.UTF-8): Wiązania PHP dla silnika On2 Flix %{?requires_php_extension} Group: Libraries Requires: %{name}-libs = %{version}-%{release} Requires: php-common >= 4:5.0.4 %description -n php-%{name} PHP bindings for On2 Flix Engine. %description -n php-%{name} -l pl.UTF-8 Wiązania PHP dla silnika On2 Flix. %package -n python-%{name} Summary: Python bindings for On2 Flix Engine Summary(pl.UTF-8): Wiązania Pythona dla silnika On2 Flix Group: Libraries Requires: %{name}-libs = %{version}-%{release} %description -n python-%{name} Python bindings for On2 Flix Engine. %description -n python-%{name} -l pl.UTF-8 Wiązania Pythona dla silnika On2 Flix. %package apidocs Summary: HTML API Documentation for On2 Flix Engine Summary(pl.UTF-8): Dokumentacja HTML API dla silnika On2 Flix Group: Documentation Obsoletes: flixengine-docs BuildArch: noarch %description apidocs HTML API Documentation for On2 Flix Engine. Also available online at . %description apidocs -l pl.UTF-8 Dokumentacja HTML API dla silnika On2 Flix. %prep %setup -q -T -b %{?with_demo:0}%{!?with_demo:1} -n flix-engine-installer-linux-%{full_version} bin=flix-engine-installer-linux-%{full_version}.bin tar=flix-engine-linux-%{full_version}.tar.gz OFFSET=$( awk -F= '/OFFSET=/{print $2; exit}' $bin) dd bs=8 if=$bin of=$tar skip=$OFFSET %{__tar} zxf $tar %patch0 -p1 %patch1 -p1 %{__sed} -ne '/## FUNCTIONS common/,/## END - common function/p' $bin > functions.sh cat <<'EOF' > install.sh #!/bin/bash export VERSION=%{full_version} %{?with_demo:export FLIXENGINEDEMO=1} export nullout=/dev/null export tempdir=%{_builddir}/flix-engine-installer-linux-%{full_version} . $(dirname "$0")/functions.sh cd .flix-engine-installation-files export -f getinput inset ynanswer instlog=install.log ./install.sh "$@" | tee -i $instlog if [ -f "$instlog" ]; then echo "Local system info:" >>$instlog uname -a 2>/dev/null >>$instlog head /etc/*version* 2>/dev/null >>$instlog head /etc/*release* 2>/dev/null >>$instlog cat /proc/cpuinfo 2>/dev/null >>$instlog /lib/ld-linux.so.2 /lib/libc.so.6 2>/dev/null >>$instlog echo "---" 2>/dev/null >>$instlog /lib/ld-linux.so.2 /lib32/libc.so.6 2>/dev/null >>$instlog echo "---" 2>/dev/null >>$instlog /lib/libc.so.6 2>/dev/null >>$instlog echo "---" 2>/dev/null >>$instlog file /lib/libc.so.6 2>/dev/null >>$instlog echo "---" 2>/dev/null >>$instlog /sbin/ifconfig -a 2>/dev/null >>$instlog echo "A log of this installation can be found here:" echo " $instlog" echo fi EOF chmod +x install.sh cd .flix-engine-installation-files %{__sed} -i -e ' # force installing initscript into buildroot without detection s,^initchk$,inittype=sysv1; INITDIR=$RPM_BUILD_ROOT/etc/rc.d/init.d, # cls is annoying s,clear 2>\$nullout,#&, # want to install examples, but not compile them in install # and somewhy --no-compile didn not work, had to specify also --no-modules, # which made no modules installed either, chicken-egg problem. s,COMPILEMODULES=y,COMPILEMODULES=n, s,^INSTALLEDFLIXLIBRARIES=.*,INSTALLEDFLIXLIBRARIES="y", %{?with_perl:s,^INSTALLEDPERLFILES=.*,INSTALLEDPERLFILES="y",} %{?with_php:s,^INSTALLEDPHPFILES=.*,INSTALLEDPHPFILES="y",} %{?with_python:s,^INSTALLEDPYTHONFILES=.*,INSTALLEDPYTHONFILES="y",} %{?with_java:s,^INSTALLEDJAVAFILES=.*,INSTALLEDJAVAFILES="y",} ' install.sh # remove backups from patching as we use globs to package files to buildroot find flixsamples '(' -name '*~' -o -name '*.orig' ')' | xargs -r rm -v %build cd .flix-engine-installation-files PWD=$(pwd) ln -snf flixhdrs flixengine2 export C_INCLUDE_PATH=$PWD %ifarch %{x8664} export LD_LIBRARY_PATH=$PWD/testing/lib64 ldconfig -n testing/lib64 %else export LD_LIBRARY_PATH=$PWD/flixlibs ldconfig -n flixlibs %endif export LIBRARY_PATH=$LD_LIBRARY_PATH %if %{with php} %{__make} -C flixphp \ CC="%{__cc}" \ -f target.mk %endif %if %{with perl} cd flixperl %{__perl} Makefile.PL \ INSTALLDIRS=vendor %{__make} \ CC="%{__cc}" \ OPTIMIZE="%{rpmcflags}" %{?with_tests:%{__make} test} cd .. %endif %if %{with python} cd flixpython %py_build cd .. %endif %if %{with java} %{__make} -C flixjava \ CC="%{__cc}" \ -f target.mk %endif %install rm -rf $RPM_BUILD_ROOT install -d $RPM_BUILD_ROOT{%{_sysconfdir},/etc/{rc.d/init.d,sysconfig},%{_libdir}} ./install.sh \ --prefix=$RPM_BUILD_ROOT%{_prefix} \ --mandir=$RPM_BUILD_ROOT%{_mandir} \ --mencoderbin=$RPM_BUILD_ROOT%{_bindir} \ --flixsamples=$RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version} \ --pidfile=$RPM_BUILD_ROOT/var/run/flixd/flixd.pid \ --authdir=$RPM_BUILD_ROOT%{_sysconfdir} \ --just-install \ --offline \ --yesireadtheon2license \ --no-compile \ --no-modules \ --no-init \ --noprereqlibs rm -f $RPM_BUILD_ROOT/etc/rc.d/init.d/flixengine install %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/flixd install %{SOURCE3} $RPM_BUILD_ROOT/etc/sysconfig/flixd # mencoder-flixengine searches for codecs from /usr/lib/win32 and there's no # way to override it by commandline arg or env var. ln -s codecs $RPM_BUILD_ROOT%{_prefix}/lib/win32 cd .flix-engine-installation-files install lget on2_host_info $RPM_BUILD_ROOT%{_sbindir} # symlink outside package, install apidoc to read all docs rm -f $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/c/README-cli.html rm -f $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/perl/README-{cgi,cli}.html rm -f $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/php/README-{cgi,cli}.html rm -f $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/python/README-{cgi,cli}.html rm -f $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/java/README-cli.html rm -f $RPM_BUILD_ROOT%{_docdir}/on2/flixengine/javadoc # install bindings %if %{with php} %{__make} -C flixphp \ install \ PHPINST=%{php_extensiondir} \ DESTDIR=$RPM_BUILD_ROOT \ -f target.mk install -d $RPM_BUILD_ROOT%{php_sysconfdir}/conf.d cat <<'EOF' > $RPM_BUILD_ROOT%{php_sysconfdir}/conf.d/flixengine.ini ; Enable flixengine extension module ;extension=flixengine2.so EOF # per package dirs mv $RPM_BUILD_ROOT%{_examplesdir}/{%{name}-%{version}/php,php-%{name}-%{version}} %endif %if %{with perl} cd flixperl %{__make} pure_install \ DESTDIR=$RPM_BUILD_ROOT rm -f $RPM_BUILD_ROOT%{perl_vendorarch}/auto/On2/flixengine2/.packlist cd .. # per package dirs mv $RPM_BUILD_ROOT%{_examplesdir}/{%{name}-%{version}/perl,perl-%{name}-%{version}} %endif %if %{with python} cd flixpython %py_install %py_postclean cd .. # per package dirs mv $RPM_BUILD_ROOT%{_examplesdir}/{%{name}-%{version}/python,python-%{name}-%{version}} %endif %if %{with java} %{__make} -C flixjava \ SOINST=$RPM_BUILD_ROOT%{_jvmlibdir} \ JARINST=$RPM_BUILD_ROOT%{_javadir} \ install \ -f target.mk # per package dirs mv $RPM_BUILD_ROOT%{_examplesdir}/{%{name}-%{version}/java,java-%{name}-%{version}} %endif mv $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}{/c/*,} rm -f $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/README-cli.html mv $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/{build/linux/,}Makefile rmdir $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/c %if %{without apidocs} rm -rf $RPM_BUILD_ROOT%{_docdir}/on2 %endif %ifarch %{x8664} cp -a testing/lib64/libflixengine2.so* $RPM_BUILD_ROOT%{_libdir} # flixd linked statically and other libs are 64 bit rm -f $RPM_BUILD_ROOT%{_prefix}/lib/libflixengine2*.so* %endif # we have already newer soname for libavformat.so in ffmpeg-libs # copy from bundled ones to private directory install -d $RPM_BUILD_ROOT%{_libexecdir} install supportlibs/libavformat.so.* $RPM_BUILD_ROOT%{_libexecdir} install supportlibs/libavcodec.so.* $RPM_BUILD_ROOT%{_libexecdir} install supportlibs/libavutil.so.* $RPM_BUILD_ROOT%{_libexecdir} ldconfig -n $RPM_BUILD_ROOT%{_libexecdir} # avoid collision from mencoder package mv $RPM_BUILD_ROOT%{_bindir}/mencoder{,-flixengine} # do not put hardware fingerprint to rpm package > $RPM_BUILD_ROOT%{_sysconfdir}/hostinfo touch $RPM_BUILD_ROOT%{_sysconfdir}/flixengine.lic install -d $RPM_BUILD_ROOT/var/run/flixd install -d $RPM_BUILD_ROOT/var/log touch $RPM_BUILD_ROOT/var/log/flixd.log # use poldek -e rm -f $RPM_BUILD_ROOT%{_sbindir}/flix-engine-uninstall.sh # make it somewhat easier to acquire license registration install -d $RPM_BUILD_ROOT%{_sysconfdir} cat > $RPM_BUILD_ROOT%{_sysconfdir}/flixd-license.conf <<'EOF' # vim:encoding=latin1 FLIX_USERNAME='' FLIX_SERIAL='' EOF install -d $RPM_BUILD_ROOT%{_sbindir} cat > $RPM_BUILD_ROOT%{_sbindir}/flixd-license-get <<'EOF' #!/bin/sh set -e . %{_sysconfdir}/flixd-license.conf if [ -z "$FLIX_USERNAME" -o -z "$FLIX_SERIAL" ]; then echo >&2 "$0: Please fill FLIX_USERNAME and FLIX_SERIAL!" exit 1 fi %{_sbindir}/lget -u "$FLIX_USERNAME" -s "$FLIX_SERIAL" -i %{_sysconfdir}/hostinfo -o %{_sysconfdir}/flixengine.lic -a 'On2FlixEngine/%{full_version} (%(uname -o))' if [ $? = 0 ]; then echo >&2 "Serial registered and saved into %{_sysconfdir}/flixengine.lic" echo >&2 "" echo >&2 "Run \"/sbin/service flixd start\" to start flixd" echo >&2 "" else echo >&2 "" echo >&2 "There was error registering your license key." exit 1 fi EOF %clean rm -rf $RPM_BUILD_ROOT %pre %groupadd -g 179 flixd %useradd -u 179 -g flixd -c "On2 Flixd" flixd %post /sbin/chkconfig --add flixd if [ ! -f /var/log/flixd.log ]; then touch /var/log/flixd.log chown root:flixd /var/log/flixd.log chmod 660 /var/log/flixd.log fi if [ ! -s %{_sysconfdir}/hostinfo ]; then %{_sbindir}/on2_host_info > %{_sysconfdir}/hostinfo %banner -e %{name} <. EOF fi %service flixd restart %preun if [ "$1" = "0" ]; then %service -q flixd stop /sbin/chkconfig --del flixd fi %postun if [ "$1" = "0" ]; then %userremove flixd %groupremove flixd fi %post libs -p /sbin/ldconfig %postun libs -p /sbin/ldconfig %post -n perl-%{name} %php_webserver_restart %postun -n perl-%{name} if [ "$1" = 0 ]; then %php_webserver_restart fi %files %defattr(644,root,root,755) %doc doc/* %dir %{_sysconfdir} %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/flixd-license.conf %attr(640,root,flixd) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/hostinfo %attr(640,root,flixd) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/flixengine.lic %dir %{_libexecdir} %attr(755,root,root) %{_libexecdir}/libavcodec.so.*.*.* %attr(755,root,root) %{_libexecdir}/libavcodec.so.51 %attr(755,root,root) %{_libexecdir}/libavformat.so.*.*.* %attr(755,root,root) %{_libexecdir}/libavformat.so.52 %attr(755,root,root) %{_libexecdir}/libavutil.so.*.*.* %attr(755,root,root) %{_libexecdir}/libavutil.so.49 %attr(755,root,root) %{_sbindir}/flixd %attr(755,root,root) %{_sbindir}/flixd-license-get %attr(755,root,root) %{_sbindir}/lget %attr(755,root,root) %{_sbindir}/on2_host_info %attr(754,root,root) /etc/rc.d/init.d/flixd %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/flixd %{_prefix}/lib/win32 %{_mandir}/man8/flixd.8* %dir %attr(771,root,flixd) /var/run/flixd %attr(660,root,flixd) %ghost /var/log/flixd.log %attr(755,root,root) %{_bindir}/mencoder-flixengine %files libs %defattr(644,root,root,755) %ifarch %{x8664} %attr(755,root,root) %{_libdir}/libflixengine2.so.*.* %attr(755,root,root) %ghost %{_libdir}/libflixengine2.so.0 %else %attr(755,root,root) %{_libdir}/libflixengine2.so.*.* %attr(755,root,root) %{_libdir}/libflixengine2_core.so.*.* %attr(755,root,root) %ghost %{_libdir}/libflixengine2.so.0 %attr(755,root,root) %ghost %{_libdir}/libflixengine2_core.so.0 %endif %files devel %defattr(644,root,root,755) %ifarch %{x8664} %attr(755,root,root) %{_libdir}/libflixengine2.so %else %attr(755,root,root) %{_libdir}/libflixengine2.so %attr(755,root,root) %{_libdir}/libflixengine2_core.so %endif %{_includedir}/flixengine2 %{_examplesdir}/%{name}-%{version} %if %{with java} %files -n java-%{name} %defattr(644,root,root,755) %attr(755,root,root) %{_jvmlibdir}/libflixengine2_jni.so %{_javadir}/flixengine2.jar %{_examplesdir}/java-%{name}-%{version} %endif %if %{with perl} %files -n perl-%{name} %defattr(644,root,root,755) %dir %{perl_vendorarch}/On2 %{perl_vendorarch}/On2/flixengine2.pm %dir %{perl_vendorarch}/auto/On2 %dir %{perl_vendorarch}/auto/On2/flixengine2 %{perl_vendorarch}/auto/On2/flixengine2/flixengine2.bs %attr(755,root,root) %{perl_vendorarch}/auto/On2/flixengine2/flixengine2.so %{_examplesdir}/perl-%{name}-%{version} %endif %if %{with php} %files -n php-%{name} %defattr(644,root,root,755) %config(noreplace) %verify(not md5 mtime size) %{php_sysconfdir}/conf.d/flixengine.ini %attr(755,root,root) %{php_extensiondir}/flixengine2.so %{php_data_dir}/flixengine2.php %{_examplesdir}/php-%{name}-%{version} %endif %if %{with python} %files -n python-%{name} %defattr(644,root,root,755) %attr(755,root,root) %{py_sitedir}/_flixengine2.so %{py_sitedir}/flixengine2.py[co] %if "%{py_ver}" > "2.4" %{py_sitedir}/flixengine2-*.egg-info %endif %{_examplesdir}/python-%{name}-%{version} %endif %if %{with apidocs} %files apidocs %defattr(644,root,root,755) %{_docdir}/on2 %endif