1f85c6
%global majorver 1
17f439
%global minorver 3
1f85c6
%global tinyver  0
1f85c6
1f85c6
Name:			libvpx
1f85c6
Summary:		VP8 Video Codec SDK
1f85c6
Version:		%{majorver}.%{minorver}.%{tinyver}
1f85c6
%global soversion	%{version}
d88f57
Release:		8%{?dist}
1f85c6
License:		BSD
1f85c6
Group:			System Environment/Libraries
1f85c6
Source0:		http://webm.googlecode.com/files/%{name}-v%{version}.tar.bz2
1f85c6
# Thanks to debian.
1f85c6
Source2:		libvpx.ver
17f439
Patch0:			Bug-fix-in-ssse3-quantize-function.patch
17f439
Patch1:			x86inc-nasm.patch
17f439
Patch2:			vp9-nasm.patch
17f439
Patch3:			sectalign-nasm.patch
d88f57
Patch4:			0001-vp8-fix-threading-issues.patch
d88f57
Patch5:			0001-CVE-2019-9232-Fix-OOB-memory-access-on-fuzzed-data.patch
d88f57
Patch6:			0002-CVE-2019-9433-VP8-Fix-use-after-free-in-postproc.patch
d88f57
Patch7:			0001-vp8_decode_frame-fix-oob-read-on-truncated-key-frame.patch
1f85c6
URL:			http://www.webmproject.org/tools/vp8-sdk/
1f85c6
%ifarch %{ix86} x86_64
1f85c6
BuildRequires:		nasm
1f85c6
%endif
1f85c6
BuildRequires:		doxygen, php-cli
1f85c6
1f85c6
%description
1f85c6
libvpx provides the VP8 SDK, which allows you to integrate your applications 
1f85c6
with the VP8 video codec, a high quality, royalty free, open source codec 
1f85c6
deployed on millions of computers and devices worldwide. 
1f85c6
1f85c6
%package devel
1f85c6
Summary:		Development files for libvpx
1f85c6
Group:			Development/Libraries
1f85c6
Requires:		%{name}%{?_isa} = %{version}-%{release}
1f85c6
1f85c6
%description devel
1f85c6
Development libraries and headers for developing software against 
1f85c6
libvpx.
1f85c6
1f85c6
%package utils
1f85c6
Summary:		VP8 utilities and tools
1f85c6
Group:			Development/Tools
1f85c6
Requires:		%{name}%{?_isa} = %{version}-%{release}
1f85c6
1f85c6
%description utils
1f85c6
A selection of utilities and tools for VP8, including a sample encoder
1f85c6
and decoder.
1f85c6
1f85c6
%prep
1f85c6
%setup -q -n %{name}-v%{version}
17f439
%patch0 -p1 -b .patch0
17f439
%patch1 -p1 -b .x86inc-nasm
17f439
%patch2 -p1 -b .vp9-nasm
17f439
%patch3 -p1 -b .sectalign-nasm
d88f57
%patch4 -p1 -b .0004
d88f57
%patch5 -p1 -b .0005
d88f57
%patch6 -p1 -b .0006
d88f57
%patch7 -p1 -b .0007
17f439
sed -i -e 's/^\(global .*\) PRIVATE$/\1/' $(find -name "*.asm")
1f85c6
1f85c6
%build
1f85c6
%ifarch %{ix86}
1f85c6
%global vpxtarget x86-linux-gcc
1f85c6
%else
1f85c6
%ifarch	x86_64
1f85c6
%global	vpxtarget x86_64-linux-gcc
1f85c6
%else
17f439
%ifarch armv7hl
17f439
%global vpxtarget armv7-linux-gcc
17f439
%else
1f85c6
%global vpxtarget generic-gnu
1f85c6
%endif
1f85c6
%endif
17f439
%endif
1f85c6
1f85c6
# The configure script will reject the shared flag on the generic target
1f85c6
# This means we need to fall back to the manual creation we did before. :P
1f85c6
%if "%{vpxtarget}" == "generic-gnu"
1f85c6
%global generic_target 1
1f85c6
%else
1f85c6
%global	generic_target 0
1f85c6
%endif
1f85c6
17f439
%ifarch armv7hl
17f439
CROSS=armv7hl-redhat-linux-gnueabi- CHOST=armv7hl-redhat-linux-gnueabi-hardfloat ./configure \
17f439
%else
17f439
./configure --target=%{vpxtarget} \
17f439
%endif
17f439
--enable-pic --disable-install-srcs --as=nasm \
1f85c6
%if ! %{generic_target}
1f85c6
--enable-shared \
1f85c6
%endif
1f85c6
--prefix=%{_prefix} --libdir=%{_libdir}
1f85c6
1f85c6
# Hack our optflags in.
1f85c6
sed -i "s|-O3|%{optflags}|g" libs-%{vpxtarget}.mk
1f85c6
sed -i "s|-O3|%{optflags}|g" examples-%{vpxtarget}.mk
1f85c6
sed -i "s|-O3|%{optflags}|g" docs-%{vpxtarget}.mk
1f85c6
17f439
%ifarch armv7hl
17f439
#hackety hack hack
17f439
sed -i "s|AR=armv7hl-redhat-linux-gnueabi-ar|AR=ar|g" libs-%{vpxtarget}.mk
17f439
sed -i "s|AR=armv7hl-redhat-linux-gnueabi-ar|AR=ar|g" examples-%{vpxtarget}.mk
17f439
sed -i "s|AR=armv7hl-redhat-linux-gnueabi-ar|AR=ar|g" docs-%{vpxtarget}.mk
17f439
17f439
sed -i "s|AS=armv7hl-redhat-linux-gnueabi-as|AS=as|g" libs-%{vpxtarget}.mk
17f439
sed -i "s|AS=armv7hl-redhat-linux-gnueabi-as|AS=as|g" examples-%{vpxtarget}.mk
17f439
sed -i "s|AS=armv7hl-redhat-linux-gnueabi-as|AS=as|g" docs-%{vpxtarget}.mk
17f439
17f439
sed -i "s|NM=armv7hl-redhat-linux-gnueabi-nm|NM=nm|g" libs-%{vpxtarget}.mk
17f439
sed -i "s|NM=armv7hl-redhat-linux-gnueabi-nm|NM=nm|g" examples-%{vpxtarget}.mk
17f439
sed -i "s|NM=armv7hl-redhat-linux-gnueabi-nm|NM=nm|g" docs-%{vpxtarget}.mk
17f439
%endif
17f439
1f85c6
make %{?_smp_mflags} verbose=true target=libs
1f85c6
1f85c6
%if %{generic_target}
1f85c6
# Manual shared library creation
1f85c6
mkdir tmp
1f85c6
cd tmp
1f85c6
ar x ../libvpx_g.a
1f85c6
cd ..
1f85c6
gcc -fPIC -shared -pthread -lm -Wl,--no-undefined -Wl,-soname,libvpx.so.%{majorver} -Wl,--version-script,%{SOURCE2} -Wl,-z,noexecstack -o libvpx.so.%{soversion} tmp/*.o
1f85c6
rm -rf tmp
1f85c6
%endif
1f85c6
1f85c6
# Temporarily dance the static libs out of the way
1f85c6
mv libvpx.a libNOTvpx.a
1f85c6
mv libvpx_g.a libNOTvpx_g.a
1f85c6
1f85c6
# We need to do this so the examples can link against it.
1f85c6
ln -sf libvpx.so.%{soversion} libvpx.so
1f85c6
1f85c6
make %{?_smp_mflags} verbose=true target=examples CONFIG_SHARED=1
1f85c6
make %{?_smp_mflags} verbose=true target=docs
1f85c6
1f85c6
# Put them back so the install doesn't fail
1f85c6
mv libNOTvpx.a libvpx.a
1f85c6
mv libNOTvpx_g.a libvpx_g.a
1f85c6
1f85c6
%install
1f85c6
make DIST_DIR=%{buildroot}%{_prefix} dist
1f85c6
1f85c6
# Simpler to label the dir as %doc.
1f85c6
mv %{buildroot}/usr/docs doc/
1f85c6
1f85c6
%if %{generic_target}
1f85c6
install -p libvpx.so.%{soversion} %{buildroot}%{_libdir}
1f85c6
pushd %{buildroot}%{_libdir}
1f85c6
ln -sf libvpx.so.%{soversion} libvpx.so
1f85c6
ln -sf libvpx.so.%{soversion} libvpx.so.%{majorver}
1f85c6
ln -sf libvpx.so.%{soversion} libvpx.so.%{majorver}.%{minorver}
1f85c6
popd
1f85c6
%endif
1f85c6
1f85c6
pushd %{buildroot}
1f85c6
# Stuff we don't need.
1f85c6
rm -rf usr/build/ usr/md5sums.txt usr/lib*/*.a usr/CHANGELOG usr/README
1f85c6
# Rename a few examples
1f85c6
mv usr/bin/postproc usr/bin/vp8_postproc
1f85c6
mv usr/bin/simple_decoder usr/bin/vp8_simple_decoder
1f85c6
mv usr/bin/simple_encoder usr/bin/vp8_simple_encoder
1f85c6
mv usr/bin/twopass_encoder usr/bin/vp8_twopass_encoder
1f85c6
# Fix the binary permissions
1f85c6
chmod 755 usr/bin/*
1f85c6
popd
1f85c6
1f85c6
%post -p /sbin/ldconfig
1f85c6
%postun -p /sbin/ldconfig
1f85c6
1f85c6
%files
1f85c6
%doc AUTHORS CHANGELOG LICENSE README
1f85c6
%{_libdir}/libvpx.so.*
1f85c6
1f85c6
%files devel
1f85c6
# These are SDK docs, not really useful to an end-user.
1f85c6
%doc docs/html/
1f85c6
%{_includedir}/vpx/
1f85c6
%{_libdir}/pkgconfig/vpx.pc
1f85c6
%{_libdir}/libvpx.so
1f85c6
1f85c6
%files utils
1f85c6
%{_bindir}/*
1f85c6
1f85c6
%changelog
d88f57
* Wed Apr 15 2020 Taymans <wtaymans@redhat.com> - 1.3.0-8
d88f57
- Fix for CVE-2020-0034
d88f57
- Resolves: rhbz#1823909
d88f57
d88f57
* Wed Mar 25 2020 Taymans <wtaymans@redhat.com> - 1.3.0-7
d88f57
- Fix for CVE-2019-9232 and CVE-2019-9433
d88f57
- Resolves: rhbz#1796085, rhbz#1796099 
d88f57
d88f57
* Tue Jan 7 2020 Taymans <wtaymans@redhat.com> - 1.3.0-6
d88f57
- Fix for CVE-2017-0393
d88f57
- Resolves: rhbz#1779498
d88f57
17f439
* Thu Mar 20 2014 Wim Taymans <wtaymans@redhat.com> - 1.3.0-4
17f439
- fix Illegal Instruction abort
17f439
17f439
* Thu Feb 13 2014 Dan Horák <dan[at]danny.cz> - 1.3.0-3
17f439
- update library symbol list for 1.3.0 from Debian
45834f
17f439
* Tue Feb 11 2014 Tom Callaway <spot@fedoraproject.org> - 1.3.0-2
17f439
- armv7hl specific target
45834f
17f439
* Tue Feb 11 2014 Tom Callaway <spot@fedoraproject.org> - 1.3.0-1
17f439
- update to 1.3.0
1f85c6
1f85c6
* Thu Feb 28 2013 Tom Callaway <spot@fedoraproject.org> - 1.2.0-1
1f85c6
- update to 1.2.0
1f85c6
1f85c6
* Tue May 29 2012 Tom Callaway <spot@fedoraproject.org> - 1.1.0-1
1f85c6
- update to 1.1.0
1f85c6
1f85c6
* Tue May 29 2012 Tom Callaway <spot@fedoraproject.org> - 1.0.0-3
1f85c6
- fix vpx.pc file to include -lm (bz825754)
1f85c6
1f85c6
* Fri May 11 2012 Tom Callaway <spot@fedoraproject.org> - 1.0.0-2
1f85c6
- use included vpx.pc file (drop local libvpx.pc)
1f85c6
- apply upstream fix to vpx.pc file (bz 814177)
1f85c6
1f85c6
* Mon Jan 30 2012 Tom Callaway <spot@fedoraproject.org> - 1.0.0-1
1f85c6
- update to 1.0.0
1f85c6
1f85c6
* Mon Oct 10 2011 Dan Horák <dan[at]danny.cz> - 0.9.7.1-3
1f85c6
- use macro instead of hard-coded version
1f85c6
1f85c6
* Mon Sep 12 2011 Dan Horák <dan[at]danny.cz> - 0.9.7.1-2
1f85c6
- fix build on generic targets
1f85c6
1f85c6
* Tue Aug 16 2011 Adam Jackson <ajax@redhat.com> 0.9.7.1-1
1f85c6
- libvpx 0.9.7-p1
1f85c6
1f85c6
* Tue Aug 09 2011 Adam Jackson <ajax@redhat.com> 0.9.7-1
1f85c6
- libvpx 0.9.7
1f85c6
1f85c6
* Mon Mar 21 2011 Dan Horák <dan[at]danny.cz> - 0.9.6-2
1f85c6
- add 2 symbols to the shared library for generic targets
1f85c6
1f85c6
* Thu Mar 10 2011 Tom Callaway <spot@fedoraproject.org> - 0.9.6-1
1f85c6
- update to 0.9.6
1f85c6
1f85c6
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.9.5-3
1f85c6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
1f85c6
1f85c6
* Wed Nov 17 2010 Tom "spot" Callaway <tcallawa@redhat.com> 0.9.5-2
1f85c6
- apply patch from upstream git (Change I6266aba7), should resolve CVE-2010-4203
1f85c6
1f85c6
* Mon Nov  1 2010 Tom "spot" Callaway <tcallawa@redhat.com> 0.9.5-1
1f85c6
- update to 0.9.5
1f85c6
1f85c6
* Wed Sep  1 2010 Tom "spot" Callaway <tcallawa@redhat.com> 0.9.1-3
1f85c6
- only package html docs to avoid multilib conflict (bz 613185)
1f85c6
1f85c6
* Thu Jun 24 2010 Tom "spot" Callaway <tcallawa@redhat.com> 0.9.1-2
1f85c6
- build shared library the old way for generic arches
1f85c6
1f85c6
* Thu Jun 24 2010 Tom "spot" Callaway <tcallawa@redhat.com> 0.9.1-1
1f85c6
- update to 0.9.1
1f85c6
1f85c6
* Fri Jun 11 2010 Tom "spot" Callaway <tcallawa@redhat.com> 0.9.0-7
1f85c6
- update to git revision 8389f1967c5f8b3819cca80705b1b4ba04132b93
1f85c6
- upstream fix for bz 599147
1f85c6
- proper shared library support
1f85c6
1f85c6
* Wed Jun  2 2010 Tom "spot" Callaway <tcallawa@redhat.com> 0.9.0-6
1f85c6
- add hackish fix for bz 599147 
1f85c6
  (upstream will hopefully fix properly in future release)
1f85c6
1f85c6
* Fri May 21 2010 Tom "spot" Callaway <tcallawa@redhat.com> 0.9.0-5
1f85c6
- fix noexecstack flag
1f85c6
1f85c6
* Thu May 20 2010 Tom "spot" Callaway <tcallawa@redhat.com> 0.9.0-4
1f85c6
- BuildRequires: yasm (we're optimized again)
1f85c6
1f85c6
* Thu May 20 2010 Tom "spot" Callaway <tcallawa@redhat.com> 0.9.0-3
1f85c6
- add pkg-config file
1f85c6
- move headers into include/vpx/
1f85c6
- enable optimization
1f85c6
1f85c6
* Thu May 20 2010 Tom "spot" Callaway <tcallawa@redhat.com> 0.9.0-2
1f85c6
- fix permissions on binaries
1f85c6
- rename generic binaries to v8_*
1f85c6
- link shared library to -lm, -lpthread to resolve missing weak symbols
1f85c6
1f85c6
* Wed May 19 2010 Tom "spot" Callaway <tcallawa@redhat.com> 0.9.0-1
1f85c6
- Initial package for Fedora