Accepting request 1088148 from home:dziobian

- Update to snapshot 20230517+a377993 (version 1869 as referenced from Chromium master)
  * this is needed to build Electron 24
- Add libyuv-tools package
- Run test suite in %check

OBS-URL: https://build.opensuse.org/request/show/1088148
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/libyuv?expand=0&rev=11
This commit is contained in:
Callum Farmer 2023-05-22 12:49:55 +00:00 committed by Git OBS Bridge
parent d54f168a1a
commit 3fb622b3c0
14 changed files with 239 additions and 80 deletions

View File

@ -1,38 +0,0 @@
From: Peter Lemenkov <lemenkov@gmail.com>
Date: Mon, 24 Sep 2018 15:10:16 +0200
Subject: [PATCH] Don't install conversion tool
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1832ad42..854aea7f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -28,15 +28,9 @@ SET_TARGET_PROPERTIES ( ${ly_lib_shared} PROPERTIES PREFIX "lib" )
INCLUDE ( CM_linux_packages.cmake )
SET_TARGET_PROPERTIES ( ${ly_lib_shared} PROPERTIES VERSION ${YUV_VERSION} SOVERSION ${YUV_VER_MAJOR} )
-# this creates the conversion tool
-ADD_EXECUTABLE ( yuvconvert ${ly_base_dir}/util/yuvconvert.cc )
-TARGET_LINK_LIBRARIES ( yuvconvert ${ly_lib_shared} )
-
-
INCLUDE ( FindJPEG )
if (JPEG_FOUND)
include_directories( ${JPEG_INCLUDE_DIR} )
- target_link_libraries( yuvconvert ${JPEG_LIBRARY} )
add_definitions( -DHAVE_JPEG )
endif()
@@ -78,9 +72,8 @@ if(TEST)
endif()
-# install the conversion tool, .so, and all the header files
-INSTALL ( PROGRAMS ${CMAKE_BINARY_DIR}/yuvconvert DESTINATION bin )
-INSTALL ( TARGETS ${ly_lib_shared} LIBRARY DESTINATION lib RUNTIME DESTINATION bin )
+# install .so, and all the header files
+INSTALL ( TARGETS ${ly_lib_shared} LIBRARY DESTINATION lib )
INSTALL ( DIRECTORY ${PROJECT_SOURCE_DIR}/include/ DESTINATION include )
# create the .deb and .rpm packages using cpack

View File

@ -0,0 +1,20 @@
From: Boyuan Yang <byang@debian.org>
Date: Tue, 18 Oct 2022 16:09:09 -0400
Subject: CMakeLists.txt: Install missing yuvconstants binary
---
CMakeLists.txt | 1 +
1 file changed, 1 insertion(+)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f9a7d74..346b729 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -97,6 +97,7 @@ endif()
# install the conversion tool, .so, and all the header files
INSTALL ( PROGRAMS ${CMAKE_BINARY_DIR}/yuvconvert DESTINATION bin )
+INSTALL ( PROGRAMS ${CMAKE_BINARY_DIR}/yuvconstants DESTINATION bin )
INSTALL ( TARGETS ${ly_lib_shared} LIBRARY DESTINATION lib RUNTIME DESTINATION bin )
INSTALL ( DIRECTORY ${PROJECT_SOURCE_DIR}/include/ DESTINATION include )

View File

@ -8,15 +8,20 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt
index e1f87062..bff03e88 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -34,7 +34,7 @@ SET_TARGET_PROPERTIES ( ${ly_lib_shared} PROPERTIES VERSION "0.0.0" SOVERSION 0
@@ -34,11 +34,11 @@ SET_TARGET_PROPERTIES ( ${ly_lib_shared} PROPERTIES VERSION "0.0.0" SOVERSION 0
# this creates the conversion tool
ADD_EXECUTABLE ( yuvconvert ${ly_base_dir}/util/yuvconvert.cc )
-TARGET_LINK_LIBRARIES ( yuvconvert ${ly_lib_static} )
+TARGET_LINK_LIBRARIES ( yuvconvert ${ly_lib_shared} )
+TARGET_LINK_LIBRARIES ( yuvconvert PRIVATE ${ly_lib_shared} )
# this creates the yuvconstants tool
ADD_EXECUTABLE ( yuvconstants ${ly_base_dir}/util/yuvconstants.c )
-TARGET_LINK_LIBRARIES ( yuvconstants ${ly_lib_static} )
+TARGET_LINK_LIBRARIES ( yuvconstants PRIVATE ${ly_lib_shared} -lm )
INCLUDE ( FindJPEG )
find_package ( JPEG )
if (JPEG_FOUND)
@@ -61,7 +61,7 @@ if(TEST)
endif()

View File

@ -1,18 +0,0 @@
From: Peter Lemenkov <lemenkov@gmail.com>
Date: Wed, 17 Apr 2019 12:39:42 +0300
Subject: [PATCH] Link main library against libjpeg
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index eb12ab4f..856cc975 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -31,6 +31,7 @@ SET_TARGET_PROPERTIES ( ${ly_lib_shared} PROPERTIES VERSION "0.0.0" SOVERSION 0
INCLUDE ( FindJPEG )
if (JPEG_FOUND)
include_directories( ${JPEG_INCLUDE_DIR} )
+ target_link_libraries( ${ly_lib_shared} ${JPEG_LIBRARY} )
add_definitions( -DHAVE_JPEG )
endif()

View File

@ -9,11 +9,11 @@ index 854aea7f..eb12ab4f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -73,7 +73,7 @@ endif()
# install .so, and all the header files
-INSTALL ( TARGETS ${ly_lib_shared} LIBRARY DESTINATION lib )
+INSTALL ( TARGETS ${ly_lib_shared} LIBRARY DESTINATION lib${LIB_SUFFIX} )
# install the conversion tool, .so, and all the header files
INSTALL ( PROGRAMS ${CMAKE_BINARY_DIR}/yuvconvert DESTINATION bin )
INSTALL ( PROGRAMS ${CMAKE_BINARY_DIR}/yuvconstants DESTINATION bin )
-INSTALL ( TARGETS ${ly_lib_shared} LIBRARY DESTINATION lib RUNTIME DESTINATION bin )
+INSTALL ( TARGETS ${ly_lib_shared} LIBRARY DESTINATION lib${LIB_SUFFIX} RUNTIME DESTINATION bin )
INSTALL ( DIRECTORY ${PROJECT_SOURCE_DIR}/include/ DESTINATION include )
# create the .deb and .rpm packages using cpack

View File

@ -2,7 +2,7 @@
<service name="obs_scm" mode="manual">
<param name="scm">git</param>
<param name="url">https://chromium.googlesource.com/libyuv/libyuv.git</param>
<param name="revision">f9fda6e7d819c07a684ba6bc97cbf0e257bbcb37</param>
<param name="revision">a37799344d29dc8e4d3fb00ced5f07e5ce8bf1b9</param>
<param name="versionformat">%cd+%h</param>
<param name="changesgenerate">enable</param>
</service>

View File

@ -1,4 +1,4 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://chromium.googlesource.com/libyuv/libyuv.git</param>
<param name="changesrevision">f9fda6e7d819c07a684ba6bc97cbf0e257bbcb37</param></service></servicedata>
<param name="changesrevision">a37799344d29dc8e4d3fb00ced5f07e5ce8bf1b9</param></service></servicedata>

View File

@ -0,0 +1,18 @@
Old cmake versions had bugs when linking executables
(namely incorrectly adding -rdynamic on commandline)
This adds runtime bloat and is bad packaging practice.
Cmake defaults to this buggy behaviour for compatibility reasons
if the script claims it is written for an old version.
--- libyuv-20230517+a377993/CMakeLists.txt.old 2023-05-17 02:23:24.000000000 +0200
+++ libyuv-20230517+a377993/CMakeLists.txt 2023-05-21 00:13:39.072391800 +0200
@@ -2,8 +2,8 @@
# Originally created for "roxlu build system" to compile libyuv on windows
# Run with -DTEST=ON to build unit tests
+CMAKE_MINIMUM_REQUIRED( VERSION 3.7.1 )
PROJECT ( YUV C CXX ) # "C" is required even for C++ projects
-CMAKE_MINIMUM_REQUIRED( VERSION 2.8.12 )
OPTION( UNIT_TEST "Built unit tests" OFF )
SET ( ly_base_dir ${PROJECT_SOURCE_DIR} )

View File

@ -0,0 +1,44 @@
Correctly check for endianness and disable two additional tests that assume endianness
--- libyuv-20230517+a377993/unit_test/convert_test.cc.old 2023-05-17 00:23:24.000000000 +0000
+++ libyuv-20230517+a377993/unit_test/convert_test.cc 2023-05-21 13:08:30.803014700 +0000
@@ -33,7 +33,7 @@
// Some functions fail on big endian. Enable these tests on all cpus except
// PowerPC, but they are not optimized so disabled by default.
-#if !defined(DISABLE_SLOW_TESTS) && !defined(__powerpc__)
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
#define LITTLE_ENDIAN_ONLY_TEST 1
#endif
#if !defined(DISABLE_SLOW_TESTS) || defined(__x86_64__) || defined(__i386__)
@@ -2989,6 +2989,7 @@ static const uint8_t kNoDither4x4[16] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
+#ifdef LITTLE_ENDIAN_ONLY_TEST
TEST_F(LibYUVConvertTest, TestNoDither) {
align_buffer_page_end(src_argb, benchmark_width_ * benchmark_height_ * 4);
align_buffer_page_end(dst_rgb565, benchmark_width_ * benchmark_height_ * 2);
@@ -3010,12 +3011,14 @@ TEST_F(LibYUVConvertTest, TestNoDither)
free_aligned_buffer_page_end(dst_rgb565);
free_aligned_buffer_page_end(dst_rgb565dither);
}
+#endif
// Ordered 4x4 dither for 888 to 565. Values from 0 to 7.
static const uint8_t kDither565_4x4[16] = {
0, 4, 1, 5, 6, 2, 7, 3, 1, 5, 0, 4, 7, 3, 6, 2,
};
+#ifdef LITTLE_ENDIAN_ONLY_TEST
TEST_F(LibYUVConvertTest, TestDither) {
align_buffer_page_end(src_argb, benchmark_width_ * benchmark_height_ * 4);
align_buffer_page_end(dst_rgb565, benchmark_width_ * benchmark_height_ * 2);
@@ -3048,6 +3051,7 @@ TEST_F(LibYUVConvertTest, TestDither) {
free_aligned_buffer_page_end(dst_argb);
free_aligned_buffer_page_end(dst_argbdither);
}
+#endif
#define TESTPLANARTOBID(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, BPP_B, ALIGN, \
YALIGN, W1280, N, NEG, OFF, FMT_C, BPP_C) \

BIN
libyuv-20220920+f9fda6e.obscpio (Stored with Git LFS)

Binary file not shown.

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d7f06963c93e460d1d4f46d356df98aff8773a645fc4d9c81f65f5f35667183c
size 5628429

View File

@ -1,3 +1,98 @@
-------------------------------------------------------------------
Sun May 21 13:13:13 UTC 2023 - Bruno Pitrus <brunopitrus@hotmail.com>
- Update to snapshot 20230517+a377993 (version 1869 as referenced from Chromium master):
* ARGBToI420Alpha function to convert ARGB to I420 with Alpha
* Enable I{422,444}AlphaToARGBRow_RVV & ARGBAttentuateRow_RVV
* Bump version and apply clang format
* Enable ARGBToYMatrixRow_RVV/RGBAToYMatrixRow_RVV/RGBToYMatrixRow_RVV
* Enable I444To{ARGB,RGB24}Row_RVV
* Enable I422To{ARGB,RGBA,RGB24}Row_RVV
* Optimize the following functions with LSX.
* row_win.cc: fix ARM64EC build
* MergeUVRow_AVX2 implementation is consistent in row_win.cc and row_gcc.ccthe commit can fix memory is wrote out of bounds
* yuvconstants.c: fix double->float conv warnings
* Add RVV files to Android and GN builds
* Roll chromium_revision d4adab061f..84f3f93bac (1109888:1140362)
* Fix compile error for riscv scalar & simplify cmake cross build flow
* Fix TestLinuxRVV test fail
* Define enable_safe_libcxx in build_overrides/build.gni.
* Add Split/Merge RGB/ARGB/XRGB Row_RVV
* cpuid for arm/mips/riscv initialize buffer
* Rename variables to match layout of ABGR
* Optimized AR64/AB64 <-> ARGB with RVV
* [ios-blink] Enabled JPEG for ios-blink
* Remove out-of-date description for testing RVV on QEMU
* Enable RVV if qemu is detected
* Add ARGBToRAWRow_RVV, ARGBToRGB24Row_RVV, RGB24ToARGBRow_RVV
* UVScale down by 2 fix for C and optimize for NEON
* Any functions use memset(vin, 0, sizeof(vin)) for GCC warning fix
* Fix macro define typo in scale_uv.cc
* Enable RISC-V cmake build & qemu test
* row_any,ANYDETILE: fix -Wmemset-elt-size warning
* Add RAWToARGBRow_RVV,RAWToRGBARow_RVV,RAWToRGB24Row_RVV
* Enable cross_build gtest in CMake build flow
* Add riscv cpu info detection.
* Add assertions for the Clang static analyzer
* AArch32 YUVTORGB_SETUP use load and dup to avoid modifying pointer
* clang 17 -flto-thin bug fix for Neon YUVtoRGB and ARGBToRGB565Dither
* GCC warning fix for MT2T
* M2T2 Unpack fixes
* Transpose 4x4 for SSE2 and AVX2
* Roll chromium_revision 504c069755..d4adab061f (1074965:1109888)
* MergeUV AVX512BW use assembly
* MergeUV_AVX512BW for I420ToNV12
* Add support for odd width and height in I410ToI420
* Refine some functions on the Longarch platform.
* Fix for DivideRow_NEON functions
* Fix for divide row functions used by P010ToI010
* P010ToI010 and P012ToI012 conversion functions
* Remove auto from DEPS.
* I422Rotate take stride for temporary buffers
* Add 10 bit rotate methods.
* Use ScalePlaneDown2_16To8 for avoiding the 2 step process
* Add I410Copy and I410ToI420 methods
* Casting for scale functions
* MT2T Warning fixes for fuchsia
* Add DEPS to build libyuv for Fuchsia.
* yuvconstants check for 3 arguments and show help
* libyuv: fix libyuv.so underlinking
* Roll chromium_revision 1c174f8519..504c069755 (1067099:1074965)
* DetilePlane_16 AVX version
* Add vzeroupper to AVX row functions
* Add Detile_16 planar function for 10 bit MT2T format
* Roll chromium_revision 6974809249..1c174f8519 (1065463:1067099)
* Roll chromium_revision 219d891495..6974809249 (1060441:1065463)
* Remove --send-mail from roll script
* [infra] Allow project-libyuv-admins group to trigger LED tasks
* [infra] Set reclient properties to libyuv builders
* Install reclient to libyuv
* add jansson@google.com to infra owners to cover when Mirko is OOO
* ScaleRowUp2_Bilinear_12_SSSE3 preserve xmm7 for Windows
* Roll chromium_revision a58ed3145a..219d891495 (1058030:1060441)
* Detile vld for gcc build fix
* Enable AVX2 version of ABGRToY when BIT_EXACT is on
* BGRAToI420 use SSSE3 for Y but C for UV when LIBYUV_BIT_EXACT enabled
* Roll chromium_revision cbf7ac7473..a58ed3145a (1055152:1058030)
* Roll chromium_revision 1b7024f18f..cbf7ac7473 (1054163:1055152)
* Roll chromium_revision 28dca358ed..1b7024f18f (1052960:1054163)
* Update CMakeLists.txt to include yuvconstants tool and deps on gflags
* Use `find_package(JPEG)` in place of `include(FindJPEG)`
* Install CIPD ninja using DEPS
* YUY2ToNV12 using YUY2ToY and YUY2ToNVUV
* Remove old cipd clobber gclient hook.
* Roll chromium_revision 004bde16df..28dca358ed (1051775:1052960)
* Roll chromium_revision 7d683aeda8..004bde16df (1050091:1051775)
* [code-health] Migrate presubmit to python3
* Enable unlimited data for YUV to RGB
* Roll chromium_revision 829c6df33d..7d683aeda8 (945687:1050091)
- Add libyuv-tools package
* drop Don-t-install-conversion-tool.patch
* add Install-missing-yuvconstants-binary.patch
* add cmake-minimum-required.patch
- Drop Link-main-library-against-libjpeg.patch applied upstream
- Run test suite in %check
* add convert_test-little-endian.patch
-------------------------------------------------------------------
Thu Oct 27 14:35:19 UTC 2022 - gmbr3@opensuse.org

View File

@ -1,4 +1,4 @@
name: libyuv
version: 20220920+f9fda6e
mtime: 1663715273
commit: f9fda6e7d819c07a684ba6bc97cbf0e257bbcb37
version: 20230517+a377993
mtime: 1684283004
commit: a37799344d29dc8e4d3fb00ced5f07e5ce8bf1b9

View File

@ -1,7 +1,7 @@
#
# spec file for package libyuv
#
# Copyright (c) 2022 SUSE LLC
# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -17,7 +17,7 @@
Name: libyuv
Version: 20220920+f9fda6e
Version: 20230517+a377993
Release: 0
Summary: YUV scaling and conversion library
License: BSD-3-Clause
@ -29,12 +29,14 @@ Source99: baselibs.conf
Patch0: Use-a-proper-so-version.patch
Patch1: Link-against-shared-library.patch
Patch2: Disable-static-library.patch
Patch3: Don-t-install-conversion-tool.patch
Patch3: Install-missing-yuvconstants-binary.patch
Patch4: Use-library-suffix-during-installation.patch
Patch5: Link-main-library-against-libjpeg.patch
Patch5: cmake-minimum-required.patch
Patch6: convert_test-little-endian.patch
BuildRequires: cmake
BuildRequires: gcc-c++
BuildRequires: pkgconfig
BuildRequires: pkgconfig(gtest)
BuildRequires: pkgconfig(libjpeg)
%description
@ -57,12 +59,29 @@ libyuv is an open source project that includes YUV scaling and conversion functi
%package devel
Summary: Development files for the YUV scaling and conversion library
Group: Development/Libraries/C and C++
Requires: libyuv0 = %{version}
Requires: libyuv0%{_isa} = %{version}
%description devel
This package contains the development files
for the YUV scaling and conversion library
%package tools
Summary: YUV scaling and conversion library Command line utilities
Group: Productivity/Multimedia/Other
%description tools
libyuv is an open source project that includes YUV scaling and conversion functionality.
- Scale YUV to prepare content for compression, with point, bilinear or box filter.
- Convert to YUV from webcam formats for compression.
- Convert to RGB formats for rendering/effects.
- Rotate by 90/180/270 degrees to adjust for mobile devices in portrait mode.
- Optimized for SSSE3/AVX2 on x86/x64.
- Optimized for Neon on Arm.
- Optimized for MSA on Mips.
This package contains the yuvconvert and yuvconstants commandline programs.
%prep
%autosetup -p1
@ -74,21 +93,31 @@ exec_prefix=\${prefix}
includedir=%{_includedir}
libdir=%{_libdir}
Name: %{name}
Name: %{name}
Description: %{summary}
Version: ${rversion}
Libs: -lyuv
EOF
%cmake
# Compile all unit tests, not only the default set.
export CFLAGS="%{optflags} -DENABLE_ROW_TESTS -DENABLE_FULL_TESTS"
export CXXFLAGS="$CFLAGS"
OUR_CMAKE_FLAGS=' -DCMAKE_SKIP_RPATH:BOOL=ON ' #do not put bogus runpath in installed executables
OUR_CMAKE_FLAGS+=' -DUNIT_TEST:BOOL=ON '
%cmake $OUR_CMAKE_FLAGS
%cmake_build
%install
%cmake_install
install -Dm0644 %{name}.pc %{buildroot}%{_libdir}/pkgconfig/%{name}.pc
install -pDm0644 %{name}.pc %{buildroot}%{_libdir}/pkgconfig/%{name}.pc
%ldconfig_scriptlets -n libyuv0
%check
LD_LIBRARY_PATH=$(pwd)/build ./build/libyuv_unittest
%files -n libyuv0
%{_libdir}/libyuv.so.*
@ -99,4 +128,8 @@ install -Dm0644 %{name}.pc %{buildroot}%{_libdir}/pkgconfig/%{name}.pc
%{_includedir}/%{name}.h
%{_libdir}/pkgconfig/%{name}.pc
%files tools
%{_bindir}/yuvconvert
%{_bindir}/yuvconstants
%changelog