Xpra: Ticket #1280: update libyuv - add to osx

It seems that they've moved from http://libyuv.googlecode.com (now 404) to https://chromium.googlesource.com/libyuv/libyuv/. And there are no releases either... But we probably want newer versions (faster, more platform support).

To be included in #678 and #840.



Sun, 21 Aug 2016 09:55:49 GMT - Antoine Martin: milestone changed

Milestone renamed


Wed, 08 Feb 2017 09:42:41 GMT - Antoine Martin: summary changed

The win32 work is already documented in ticket:678#comment:40 (though we should probably make a PKGBUILD for it).

For OSX, this should be added to the moduleset:

git clone https://chromium.googlesource.com/libyuv/libyuv
wget https://xpra.org/trac/raw-attachment/ticket/678/libyuv-nojpeg.patch
patch -p1 < libyuv-nojpeg.patch
cmake -DCMAKE_INSTALL_PREFIX:PATH=${JHBUILD_PREFIX}
make && make install
#generate a pkgconfig file:
cat > /Users/osx/gtk/inst/lib/pkgconfig/libyuv.pc <<EOF
prefix=${JHBUILD_PREFIX}
libdir=${prefix}/lib
includedir=${prefix}/include
Name: libyuv
Description: YUV conversion and scaling functionality library
Version: 0
Libs: -lyuv -ljpeg
EOF

Mon, 06 Mar 2017 22:24:55 GMT - Smo:

r15230 adds libyuv and repo

The libyuv-nojpeg.patch doesn't apply properly anymore. It is easy to fix but could cause issues.

The real problem is there is no way to apply patches in jhbuild using source from git.

We should be able to compile with jpeg support. Maybe we can fix this somehow.


Tue, 28 Mar 2017 00:05:21 GMT - Smo:

cmake -DCMAKE_INSTALL_PREFIX=/Users/build/gtk/inst -DCMAKE_INSTALL_LIBDIR=lib   /Users/build/gtk/source/libyuv-cb9a58f25fbdf8382d68680f022959022f746ef2
-- The C compiler identification is AppleClang 8.0.0.8000042
-- The CXX compiler identification is AppleClang 8.0.0.8000042
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/usr/bin/gcc
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/usr/bin/g++
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/usr/bin/g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found JPEG: /Users/build/gtk/inst/lib/libjpeg.dylib

We can see it finds our library but something during the link phase is failing.

/Users/build/gtk/inst/bin/cmake -E cmake_link_script CMakeFiles/yuv_shared.dir/link.txt --verbose=1
/Applications/Xcode.app/Contents/Developer/usr/bin/g++  -arch x86_64 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -mmacosx-version-min=10.9  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -mmacosx-version-min=10.9 -dynamiclib -Wl,-headerpad_max_install_names  -L/Users/build/gtk/inst/lib -L/Users/build/gtk/inst/lib -arch x86_64 -L/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/lib -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -mmacosx-version-min=10.9 -Wl,-headerpad_max_install_names -o libyuv.dylib -install_name /Users/build/gtk/source/libyuv-cb9a58f25fbdf8382d68680f022959022f746ef2/libyuv.dylib CMakeFiles/yuv_shared.dir/source/compare.cc.o CMakeFiles/yuv_shared.dir/source/compare_common.cc.o CMakeFiles/yuv_shared.dir/source/compare_gcc.cc.o CMakeFiles/yuv_shared.dir/source/compare_neon.cc.o CMakeFiles/yuv_shared.dir/source/compare_neon64.cc.o CMakeFiles/yuv_shared.dir/source/compare_win.cc.o CMakeFiles/yuv_shared.dir/source/convert.cc.o CMakeFiles/yuv_shared.dir/source/convert_argb.cc.o CMakeFiles/yuv_shared.dir/source/convert_from.cc.o CMakeFiles/yuv_shared.dir/source/convert_from_argb.cc.o CMakeFiles/yuv_shared.dir/source/convert_jpeg.cc.o CMakeFiles/yuv_shared.dir/source/convert_to_argb.cc.o CMakeFiles/yuv_shared.dir/source/convert_to_i420.cc.o CMakeFiles/yuv_shared.dir/source/cpu_id.cc.o CMakeFiles/yuv_shared.dir/source/mjpeg_decoder.cc.o CMakeFiles/yuv_shared.dir/source/mjpeg_validate.cc.o CMakeFiles/yuv_shared.dir/source/planar_functions.cc.o CMakeFiles/yuv_shared.dir/source/rotate.cc.o CMakeFiles/yuv_shared.dir/source/rotate_any.cc.o CMakeFiles/yuv_shared.dir/source/rotate_argb.cc.o CMakeFiles/yuv_shared.dir/source/rotate_common.cc.o CMakeFiles/yuv_shared.dir/source/rotate_dspr2.cc.o CMakeFiles/yuv_shared.dir/source/rotate_gcc.cc.o CMakeFiles/yuv_shared.dir/source/rotate_msa.cc.o CMakeFiles/yuv_shared.dir/source/rotate_neon.cc.o CMakeFiles/yuv_shared.dir/source/rotate_neon64.cc.o CMakeFiles/yuv_shared.dir/source/rotate_win.cc.o CMakeFiles/yuv_shared.dir/source/row_any.cc.o CMakeFiles/yuv_shared.dir/source/row_common.cc.o CMakeFiles/yuv_shared.dir/source/row_dspr2.cc.o CMakeFiles/yuv_shared.dir/source/row_gcc.cc.o CMakeFiles/yuv_shared.dir/source/row_msa.cc.o CMakeFiles/yuv_shared.dir/source/row_neon.cc.o CMakeFiles/yuv_shared.dir/source/row_neon64.cc.o CMakeFiles/yuv_shared.dir/source/row_win.cc.o CMakeFiles/yuv_shared.dir/source/scale.cc.o CMakeFiles/yuv_shared.dir/source/scale_any.cc.o CMakeFiles/yuv_shared.dir/source/scale_argb.cc.o CMakeFiles/yuv_shared.dir/source/scale_common.cc.o CMakeFiles/yuv_shared.dir/source/scale_dspr2.cc.o CMakeFiles/yuv_shared.dir/source/scale_gcc.cc.o CMakeFiles/yuv_shared.dir/source/scale_msa.cc.o CMakeFiles/yuv_shared.dir/source/scale_neon.cc.o CMakeFiles/yuv_shared.dir/source/scale_neon64.cc.o CMakeFiles/yuv_shared.dir/source/scale_win.cc.o CMakeFiles/yuv_shared.dir/source/video_common.cc.o
Undefined symbols for architecture x86_64:
  "_jpeg_CreateDecompress", referenced from:
      libyuv::MJpegDecoder::MJpegDecoder() in mjpeg_decoder.cc.o
  "_jpeg_abort_decompress", referenced from:
      libyuv::MJpegDecoder::UnloadFrame() in mjpeg_decoder.cc.o
      libyuv::MJpegDecoder::FinishDecode() in mjpeg_decoder.cc.o
  "_jpeg_destroy_decompress", referenced from:
      libyuv::MJpegDecoder::~MJpegDecoder() in mjpeg_decoder.cc.o
  "_jpeg_read_header", referenced from:
      libyuv::MJpegDecoder::LoadFrame(unsigned char const*, unsigned long) in mjpeg_decoder.cc.o
  "_jpeg_read_raw_data", referenced from:
      libyuv::MJpegDecoder::DecodeImcuRow() in mjpeg_decoder.cc.o
  "_jpeg_resync_to_restart", referenced from:
      libyuv::MJpegDecoder::MJpegDecoder() in mjpeg_decoder.cc.o
  "_jpeg_start_decompress", referenced from:
      libyuv::MJpegDecoder::StartDecode() in mjpeg_decoder.cc.o
  "_jpeg_std_error", referenced from:
      libyuv::MJpegDecoder::MJpegDecoder() in mjpeg_decoder.cc.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [libyuv.dylib] Error 1
make[1]: *** [CMakeFiles/yuv_shared.dir/all] Error 2
make: *** [all] Error 2

We can just apply the patch and remove this jpg support which is what I plan to do since we don't use it but it would be nice if we didn't have to.


Tue, 28 Mar 2017 00:19:12 GMT - Smo: owner changed

r15432 adds the patch for libyuv r15433 changes the libyuv entry to xpra.org source snapshot r15434 adds libyuv to the meta module

This works for me can you try it and close this if its okay.


Tue, 28 Mar 2017 04:01:58 GMT - Antoine Martin: status changed; resolution set

Worked fine - once I figured out that my ongoing problems with the command line tools were caused by this line:

setup_sdk(target="10.10", sdk_version="10.11", architectures=["x86_64"])

Temporarily switching to

setup_sdk(target="10.11", sdk_version="10.11", architectures=["x86_64"])

Allowed me to build.


Thu, 11 Oct 2018 08:37:22 GMT - Antoine Martin:

Edited comment:2 because newer versions of libyuv require -ljpeg. (ie: the version shipped with Fedora 29 does)


Sat, 23 Jan 2021 05:19:57 GMT - migration script:

this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/1280