diff --git a/libvpx-1.7.0-leave-fortify-source-on.patch b/libvpx-1.7.0-leave-fortify-source-on.patch new file mode 100644 index 0000000000000000000000000000000000000000..23099da6454c8d673f78811144d555d580dad29a --- /dev/null +++ b/libvpx-1.7.0-leave-fortify-source-on.patch @@ -0,0 +1,12 @@ +diff -up libvpx-1.7.0/build/make/configure.sh.leave-fs-on libvpx-1.7.0/build/make/configure.sh +--- libvpx-1.7.0/build/make/configure.sh.leave-fs-on 2018-01-26 15:02:18.767645332 -0500 ++++ libvpx-1.7.0/build/make/configure.sh 2018-01-26 15:02:28.594420775 -0500 +@@ -1440,7 +1440,7 @@ EOF + + # Work around longjmp interception on glibc >= 2.11, to improve binary + # compatibility. See http://code.google.com/p/webm/issues/detail?id=166 +- enabled linux && check_add_cflags -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0 ++ # enabled linux && check_add_cflags -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0 + + # Check for strip utility variant + ${STRIP} -V 2>/dev/null | grep GNU >/dev/null && enable_feature gnu_strip diff --git a/libvpx.spec b/libvpx.spec index a9203b4959402cc07bf7da30d4143ad199cf87cd..3040e31867db011a3e478aa61b6cb0c34862a877 100644 --- a/libvpx.spec +++ b/libvpx.spec @@ -1,16 +1,27 @@ -Name: libvpx -Version: 1.7.0 -Release: 8 -Summary: VP8/VP9 Video Codec SDK -License: BSD -Source0: https://github.com/webmproject/libvpx/archive/v%{version}.tar.gz -URL: http://www.webmproject.org/code/ -BuildRequires: gcc gcc-c++ doxygen, php-cli, perl(Getopt::Long) -%ifarch x86_64 -BuildRequires: yasm -%endif -Provides: %{name}-utils = %{version}-%{release} -Obsoletes: %{name}-utils < %{version}-%{release} +%global somajor 7 +%global sominor 0 +%global sotiny 0 +%global soversion %{somajor}.%{sominor}.%{sotiny} + +Name: libvpx +Summary: VP8/VP9 Video Codec SDK +Version: 1.12.0 +Release: 1%{?dist} +License: BSD +Source0: https://github.com/webmproject/libvpx/archive/v%{version}.tar.gz +Source1: vpx_config.h +# Thanks to debian. +Source2: libvpx.ver +URL: http://www.webmproject.org/code/ +BuildRequires: make +BuildRequires: gcc +BuildRequires: gcc-c++ +%ifarch %{ix86} x86_64 +BuildRequires: yasm +%endif +BuildRequires: doxygen, php-cli, perl(Getopt::Long) +# Do not disable FORTIFY_SOURCE=2 +Patch0: libvpx-1.7.0-leave-fortify-source-on.patch %description libvpx provides the VP8/VP9 SDK, which allows you to integrate your applications @@ -18,54 +29,179 @@ with the VP8 and VP9 video codecs, high quality, royalty free, open source codec deployed on millions of computers and devices worldwide. %package devel -Summary: Development files for libvpx -Requires: %{name} = %{version}-%{release} +Summary: Development files for libvpx +Requires: %{name}%{?_isa} = %{version}-%{release} %description devel -Development libraries and headers for developing software against libvpx. +Development libraries and headers for developing software against +libvpx. + +%package utils +Summary: VP8 utilities and tools +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description utils +A selection of utilities and tools for VP8, including a sample encoder +and decoder. %prep -%autosetup libvpx-%{version} -p1 +%setup -q -n libvpx-%{version} +%patch0 -p1 -b .leave-fs-on %build -%ifarch x86_64 -%global vpxtarget x86_64-linux-gcc + +%ifarch %{ix86} +%global vpxtarget x86-linux-gcc +%else +%ifarch x86_64 +%global vpxtarget x86_64-linux-gcc +%else +%ifarch armv7hl +%global vpxtarget armv7-linux-gcc %else %ifarch aarch64 %global vpxtarget arm64-linux-gcc +%else +%global vpxtarget generic-gnu +%endif +%endif %endif %endif + +# History: The configure script used to reject the shared flag on the generic target. +# This meant that we needed to fall back to manual shared lib creation. +# However, the modern configure script permits the shared flag and assumes ELF. +# Additionally, the libvpx.ver would need to be updated to work properly. +# As a result, we disable this universally, but keep it around in case we ever need to support +# something "special". +%if "%{vpxtarget}" == "generic-gnu" +%global generic_target 0 +%else +%global generic_target 0 +%endif + %set_build_flags +%ifarch armv7hl +CROSS=armv7hl-redhat-linux-gnueabi- CHOST=armv7hl-redhat-linux-gnueabi-hardfloat ./configure \ +%else ./configure --target=%{vpxtarget} \ ---enable-pic --disable-install-srcs --enable-vp9-decoder \ ---enable-vp9-encoder --enable-experimental --enable-spatial-svc \ ---enable-vp9-highbitdepth --enable-shared --enable-install-srcs \ +%endif +%ifarch %{arm} +--disable-neon --disable-neon_asm \ +%endif +--enable-pic --disable-install-srcs \ +--enable-vp9-decoder --enable-vp9-encoder \ +--enable-experimental \ +--enable-vp9-highbitdepth \ +--enable-debug \ +%if ! %{generic_target} +--enable-shared \ +%endif +--enable-install-srcs \ --prefix=%{_prefix} --libdir=%{_libdir} --size-limit=16384x16384 -sed -i "s|-O3|%{optflags}|g" libs-%{vpxtarget}.mk -sed -i "s|-O3|%{optflags}|g" examples-%{vpxtarget}.mk -sed -i "s|-O3|%{optflags}|g" docs-%{vpxtarget}.mk +%ifarch armv7hl +#hackety hack hack +sed -i "s|AR=armv7hl-redhat-linux-gnueabi-ar|AR=ar|g" libs-%{vpxtarget}.mk +sed -i "s|AR=armv7hl-redhat-linux-gnueabi-ar|AR=ar|g" examples-%{vpxtarget}.mk +sed -i "s|AR=armv7hl-redhat-linux-gnueabi-ar|AR=ar|g" docs-%{vpxtarget}.mk + +sed -i "s|AS=armv7hl-redhat-linux-gnueabi-as|AS=as|g" libs-%{vpxtarget}.mk +sed -i "s|AS=armv7hl-redhat-linux-gnueabi-as|AS=as|g" examples-%{vpxtarget}.mk +sed -i "s|AS=armv7hl-redhat-linux-gnueabi-as|AS=as|g" docs-%{vpxtarget}.mk + +sed -i "s|NM=armv7hl-redhat-linux-gnueabi-nm|NM=nm|g" libs-%{vpxtarget}.mk +sed -i "s|NM=armv7hl-redhat-linux-gnueabi-nm|NM=nm|g" examples-%{vpxtarget}.mk +sed -i "s|NM=armv7hl-redhat-linux-gnueabi-nm|NM=nm|g" docs-%{vpxtarget}.mk +%endif %make_build verbose=true +# Manual shared library creation +# We should never need to do this anymore, and if we do, we need to fix the version-script. +%if %{generic_target} +mkdir tmp +cd tmp +ar x ../libvpx_g.a +cd .. +gcc -fPIC -shared -pthread -lm -Wl,--no-undefined -Wl,-soname,libvpx.so.%{somajor} -Wl,--version-script,%{SOURCE2} -Wl,-z,noexecstack -o libvpx.so.%{soversion} tmp/*.o +rm -rf tmp +%endif + +# Temporarily dance the static libs out of the way +# mv libvpx.a libNOTvpx.a +# mv libvpx_g.a libNOTvpx_g.a + +# We need to do this so the examples can link against it. +# ln -sf libvpx.so.%{soversion} libvpx.so + +# %make_build verbose=true target=examples CONFIG_SHARED=1 +# %make_build verbose=true target=docs + +# Put them back so the install doesn't fail +# mv libNOTvpx.a libvpx.a +# mv libNOTvpx_g.a libvpx_g.a + %install +%ifarch armv7hl +export CROSS=armv7hl-redhat-linux-gnueabi- +export CHOST=armv7hl-redhat-linux-gnueabi-hardfloat +%endif make DIST_DIR=%{buildroot}%{_prefix} dist -if [ -d %{buildroot}/usr/docs ]; then - mv %{buildroot}/usr/docs doc/ +# Simpler to label the dir as %%doc. +if [ -d %{buildroot}%{_prefix}/docs ]; then + mv %{buildroot}%{_prefix}/docs doc/ fi -cd %{buildroot} -mv usr/bin/examples/* usr/bin/ -mv usr/bin/postproc usr/bin/vp8_postproc -mv usr/bin/simple_decoder usr/bin/vp8_simple_decoder -mv usr/bin/simple_encoder usr/bin/vp8_simple_encoder -mv usr/bin/twopass_encoder usr/bin/vp8_twopass_encoder -chmod 755 usr/bin/* -cd - +# Again, we should never need to do this anymore. +%if %{generic_target} +install -p libvpx.so.%{soversion} %{buildroot}%{_libdir} +pushd %{buildroot}%{_libdir} +ln -sf libvpx.so.%{soversion} libvpx.so +ln -sf libvpx.so.%{soversion} libvpx.so.%{somajor} +ln -sf libvpx.so.%{soversion} libvpx.so.%{somajor}.%{sominor} +popd +%endif +pushd %{buildroot} +# Stuff we don't need. +rm -rf .%{_prefix}/build/ .%{_prefix}/md5sums.txt .%{_libdir}*/*.a .%{_prefix}/CHANGELOG .%{_prefix}/README +# No, bad google. No treat. +mv .%{_bindir}/examples/* .%{_bindir} +rm -rf .%{_bindir}/examples + +# Rename a few examples +mv .%{_bindir}/postproc .%{_bindir}/vp8_postproc +mv .%{_bindir}/simple_decoder .%{_bindir}/vp8_simple_decoder +mv .%{_bindir}/simple_encoder .%{_bindir}/vp8_simple_encoder +mv .%{_bindir}/twopass_encoder .%{_bindir}/vp8_twopass_encoder +# Fix the binary permissions +chmod 755 .%{_bindir}/* +popd + +# Get the vpx_config.h file +%ifarch %{arm} +cp -a vpx_config.h %{buildroot}%{_includedir}/vpx/vpx_config-arm.h +%else +# Does ppc64le need its own? +%ifarch ppc64 ppc64le +cp -a vpx_config.h %{buildroot}%{_includedir}/vpx/vpx_config-ppc64.h +%else +%ifarch s390 s390x +cp -a vpx_config.h %{buildroot}%{_includedir}/vpx/vpx_config-s390.h +%else +%ifarch %{ix86} +cp -a vpx_config.h %{buildroot}%{_includedir}/vpx/vpx_config-x86.h +%else cp -a vpx_config.h %{buildroot}%{_includedir}/vpx/vpx_config-%{_arch}.h +%endif +%endif +%endif +%endif +cp %{SOURCE1} %{buildroot}%{_includedir}/vpx/vpx_config.h +# for timestamp sync touch -r AUTHORS %{buildroot}%{_includedir}/vpx/vpx_config.h mv %{buildroot}%{_prefix}/src/vpx_dsp %{buildroot}%{_includedir}/ @@ -73,25 +209,17 @@ mv %{buildroot}%{_prefix}/src/vpx_mem %{buildroot}%{_includedir}/ mv %{buildroot}%{_prefix}/src/vpx_ports %{buildroot}%{_includedir}/ mv %{buildroot}%{_prefix}/src/vpx_scale %{buildroot}%{_includedir}/ -%post -/sbin/ldconfig -%postun -/sbin/ldconfig +rm -rf %{buildroot}%{_prefix}/src + +%ldconfig_scriptlets %files %license LICENSE %doc AUTHORS CHANGELOG README -%{_libdir}/libvpx.so.* -%{_bindir}/* -%exclude /usr/build/ -%exclude /usr/md5sums.txt -%exclude /usr/lib*/*.a -%exclude /usr/CHANGELOG -%exclude /usr/README -%exclude /usr/bin/examples -%exclude %{_prefix}/src +%{_libdir}/libvpx.so.%{somajor}* %files devel +# These are SDK docs, not really useful to an end-user. %doc docs/html/ %{_includedir}/vpx/ %{_includedir}/vpx_dsp/ @@ -101,7 +229,13 @@ mv %{buildroot}%{_prefix}/src/vpx_scale %{buildroot}%{_includedir}/ %{_libdir}/pkgconfig/vpx.pc %{_libdir}/libvpx.so +%files utils +%{_bindir}/* + %changelog -* Fri Nov 08 2019 Lijin Yang -1.7.0-8 +* Mon Nov 14 2022 hkgy - 1.12.0-1 +- Upgrade to v1.12.0 + +* Fri Nov 8 2019 Lijin Yang -1.7.0-1 - Pakcage init diff --git a/libvpx.ver b/libvpx.ver new file mode 100644 index 0000000000000000000000000000000000000000..aa147ab5b31b4ed592a3ac837ae85fbb20a56ac2 --- /dev/null +++ b/libvpx.ver @@ -0,0 +1,79 @@ +{ global: +vpx_codec_build_config; +vpx_codec_control_; +vpx_codec_dec_init_ver; +vpx_codec_decode; +vpx_codec_destroy; +vpx_codec_enc_config_default; +vpx_codec_enc_config_set; +vpx_codec_enc_init_ver; +vpx_codec_encode; +vpx_codec_error; +vpx_codec_error_detail; +vpx_codec_err_to_string; +vpx_codec_get_caps; +vpx_codec_get_cx_data; +vpx_codec_get_frame; +vpx_codec_get_global_headers; +vpx_codec_get_mem_map; +vpx_codec_get_preview_frame; +vpx_codec_get_stream_info; +vpx_codec_iface_name; +vpx_codec_peek_stream_info; +vpx_codec_register_put_frame_cb; +vpx_codec_register_put_slice_cb; +vpx_codec_set_cx_data_buf; +vpx_codec_set_frame_buffer_functions; +vpx_codec_set_mem_map; +vpx_codec_version; +vpx_codec_version_extra_str; +vpx_codec_version_str; +vpx_codec_vp8_algo; +vpx_codec_vp8_cx; +vpx_codec_vp8_cx_algo; +vpx_codec_vp8_dx; +vpx_codec_vp8_dx_algo; +vpx_codec_vp9_cx; +vpx_codec_vp9_cx_algo; +vpx_codec_vp9_dx; +vpx_codec_vp9_dx_algo; +vpx_dec_control; +vpx_dec_decode; +vpx_dec_destroy; +vpx_dec_error; +vpx_dec_error_detail; +vpx_dec_err_to_string; +vpx_dec_get_caps; +vpx_dec_get_frame; +vpx_dec_get_mem_map; +vpx_dec_get_stream_info; +vpx_dec_iface_name; +vpx_dec_init_ver; +vpx_dec_peek_stream_info; +vpx_dec_register_put_frame_cb; +vpx_dec_register_put_slice_cb; +vpx_dec_set_mem_map; +vpx_dec_xma_init_ver; +vpx_enc_vp8_algo; +vpx_img_alloc; +vpx_img_flip; +vpx_img_free; +vpx_img_set_rect; +vpx_img_wrap; +vpx_svc_dump_statistics; +vpx_svc_encode; +vpx_svc_get_buffer; +vpx_svc_get_encode_frame_count; +vpx_svc_get_frame_size; +vpx_svc_get_layer_resolution; +vpx_svc_get_message; +vpx_svc_get_rc_stats_buffer; +vpx_svc_get_rc_stats_buffer_size; +vpx_svc_init; +vpx_svc_is_keyframe; +vpx_svc_release; +vpx_svc_set_keyframe; +vpx_svc_set_options; +vpx_svc_set_quantizers; +vpx_svc_set_scale_factors; +local: *; }; diff --git a/v1.12.0.tar.gz b/v1.12.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..16213f83b4f75a020a12ef55c823584b42607a10 Binary files /dev/null and b/v1.12.0.tar.gz differ diff --git a/v1.7.0.tar.gz b/v1.7.0.tar.gz deleted file mode 100644 index 5147d664a6543a9e59542fb6c47584a3c09c671e..0000000000000000000000000000000000000000 Binary files a/v1.7.0.tar.gz and /dev/null differ diff --git a/vpx_config.h b/vpx_config.h new file mode 100644 index 0000000000000000000000000000000000000000..d2ded8c5ee11164ed9103bf52d49438017bdc075 --- /dev/null +++ b/vpx_config.h @@ -0,0 +1,18 @@ +/* Provide a real file - not a symlink - as it would cause multiarch conflicts + (when multiple different arch releases are installed simultaneously. */ + +#if defined __x86_64__ +# include "vpx_config-x86_64.h" +#elif defined __aarch64__ +# include "vpx_config-aarch64.h" +#elif defined __arm__ +# include "vpx_config-arm.h" +#elif defined __i386__ +# include "vpx_config-x86.h" +#elif defined __powerpc64__ +# include "vpx_config-ppc64.h" +#elif defined __s390__ +# include "vpx_config-s390.h" +#else +# error "Unsupported arch" +#endif