xpra icon
Bug tracker and wiki

Opened 16 months ago

Closed 8 months ago

#1280 closed task (fixed)

update libyuv - add to osx

Reported by: Antoine Martin Owned by: Antoine Martin
Priority: minor Milestone: 2.0
Component: packaging Version: trunk
Keywords: Cc:

Description

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.

Change History (6)

comment:1 Changed 15 months ago by Antoine Martin

Milestone: 1.12.0

Milestone renamed

comment:2 Changed 10 months ago by Antoine Martin

Summary: update libyuvupdate libyuv - add to osx

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
EOF

comment:3 Changed 9 months ago by 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.

comment:4 Changed 8 months ago by 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.

comment:5 Changed 8 months ago by Smo

Owner: changed from Smo to Antoine Martin

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.

Last edited 8 months ago by Smo (previous) (diff)

comment:6 Changed 8 months ago by Antoine Martin

Resolution: fixed
Status: newclosed

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.

Note: See TracTickets for help on using tickets.