minko icon indicating copy to clipboard operation
minko copied to clipboard

CEF 1750r1638 doesn't work with minko on Arch Linux 64

Open josefnpat opened this issue 9 years ago • 11 comments

I was asked to open a new ticket here!

I downloaded cef_binary_3.1750.1638_linux64.7z, and extracted the contents of Release/* into plugin/html-overlay/lib/linux64/ as directed, now I am getting a different issue.

~/minko/plugin/html-overlay/lib/linux64♠ pwd
/home/seppi/minko/plugin/html-overlay/lib/linux64
~/minko/plugin/html-overlay/lib/linux64♠ ls -lah
total 481M
drwxr-xr-x 4 seppi seppi  12K Feb  2 22:32 .
drwxr-xr-x 8 seppi seppi 4.0K Feb  2 22:32 ..
drwxr-xr-x 8 seppi seppi 4.0K Feb  2 22:30 cef_binary_3.1750.1638_linux64
-rw-r----- 1 seppi seppi 380M Feb  2 22:28 cef_binary_3.1750.1638_linux64.7z
-rwxr-xr-x 1 seppi seppi  24K Mar 13  2014 chrome-sandbox
-rwxr-xr-x 1 seppi seppi 101M Mar 13  2014 libcef.so
-rwxr-xr-x 1 seppi seppi 1.3M Mar 13  2014 libffmpegsumo.so
-rw-r--r-- 1 seppi seppi  252 Feb  1 20:43 README.txt
drwxr-xr-x 2 seppi seppi 4.0K Feb  2 22:32 Release



$ make config=release config=linux64_release verbose=1

[snip]

test -e /home/seppi/minko/framework/asset && cp -R /home/seppi/minko/framework/asset "bin/linux64/release" || :
test -e asset && cp -R asset "bin/linux64/release" || :
test -e /home/seppi/minko/plugin/lua/asset && cp -R /home/seppi/minko/plugin/lua/asset "bin/linux64/release" || :
test -e /home/seppi/minko/plugin/html-overlay/asset && cp -R /home/seppi/minko/plugin/html-overlay/asset "bin/linux64/release" || :
test -e /home/seppi/minko/plugin/html-overlay/lib/resource/locales && cp -R /home/seppi/minko/plugin/html-overlay/lib/resource/locales "bin/linux64/release" || :
test -e /home/seppi/minko/plugin/html-overlay/lib/resource/cef.pak && cp -R /home/seppi/minko/plugin/html-overlay/lib/resource/cef.pak "bin/linux64/release" || :
test -e /home/seppi/minko/plugin/html-overlay/lib/resource/devtools_resources.pak && cp -R /home/seppi/minko/plugin/html-overlay/lib/resource/devtools_resources.pak "bin/linux64/release" || :
test -e /home/seppi/minko/plugin/html-overlay/lib/linux64/libcef.so && cp -R /home/seppi/minko/plugin/html-overlay/lib/linux64/libcef.so "bin/linux64/release" || :
test -e /home/seppi/minko/plugin/html-overlay/lib/linux64/libffmpegsumo.so && cp -R /home/seppi/minko/plugin/html-overlay/lib/linux64/libffmpegsumo.so "bin/linux64/release" || :
test -e /home/seppi/minko/plugin/html-overlay/lib/linux64/chrome-sandbox && cp -R /home/seppi/minko/plugin/html-overlay/lib/linux64/chrome-sandbox "bin/linux64/release" || :
Linking minko-example-html-overlay
/home/seppi/minko/tool/lin/script/g++.sh g++ -o bin/linux64/release/minko-example-html-overlay obj/linux64/release/Main.o     -s -m64 -L/usr/lib64 -L../../framework/bin/linux64/release -L../../plugin/html-overlay/lib/linux64 -Wl,--no-as-needed -Wl,-rpath,. ../../framework/bin/linux64/release/libminko-framework.a ../../plugin/html-overlay/bin/linux64/release/libminko-plugin-html-overlay.a ../../plugin/sdl/bin/linux64/release/libminko-plugin-sdl.a ../../plugin/lua/bin/linux64/release/libminko-plugin-lua.a -lGL -lm -lSDL2 -lcef
+ g++ -o bin/linux64/release/minko-example-html-overlay obj/linux64/release/Main.o -s -m64 -L/usr/lib64 -L../../framework/bin/linux64/release -L../../plugin/html-overlay/lib/linux64 -Wl,--no-as-needed -Wl,-rpath,. -Wl,--start-group ../../framework/bin/linux64/release/libminko-framework.a ../../plugin/html-overlay/bin/linux64/release/libminko-plugin-html-overlay.a ../../plugin/sdl/bin/linux64/release/libminko-plugin-sdl.a ../../plugin/lua/bin/linux64/release/libminko-plugin-lua.a -lGL -lm -lSDL2 -lcef -Wl,--end-group
/usr/bin/ld: warning: libgcrypt.so.11, needed by ../../plugin/html-overlay/lib/linux64/libcef.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libudev.so.0, needed by ../../plugin/html-overlay/lib/linux64/libcef.so, not found (try using -rpath or -rpath-link)
../../plugin/html-overlay/lib/linux64/libcef.so: undefined reference to `udev_monitor_unref'
../../plugin/html-overlay/lib/linux64/libcef.so: undefined reference to `udev_enumerate_scan_devices'
../../plugin/html-overlay/lib/linux64/libcef.so: undefined reference to `udev_new'
../../plugin/html-overlay/lib/linux64/libcef.so: undefined reference to `udev_list_entry_get_name'
../../plugin/html-overlay/lib/linux64/libcef.so: undefined reference to `udev_enumerate_get_list_entry'
../../plugin/html-overlay/lib/linux64/libcef.so: undefined reference to `gcry_control@GCRYPT_1.2'
../../plugin/html-overlay/lib/linux64/libcef.so: undefined reference to `udev_list_entry_get_next'
../../plugin/html-overlay/lib/linux64/libcef.so: undefined reference to `udev_device_new_from_syspath'
../../plugin/html-overlay/lib/linux64/libcef.so: undefined reference to `udev_monitor_receive_device'
../../plugin/html-overlay/lib/linux64/libcef.so: undefined reference to `udev_device_get_property_value'
../../plugin/html-overlay/lib/linux64/libcef.so: undefined reference to `udev_unref'
../../plugin/html-overlay/lib/linux64/libcef.so: undefined reference to `udev_monitor_enable_receiving'
../../plugin/html-overlay/lib/linux64/libcef.so: undefined reference to `udev_monitor_filter_add_match_subsystem_devtype'
../../plugin/html-overlay/lib/linux64/libcef.so: undefined reference to `udev_monitor_get_fd'
../../plugin/html-overlay/lib/linux64/libcef.so: undefined reference to `udev_device_get_devnode'
../../plugin/html-overlay/lib/linux64/libcef.so: undefined reference to `udev_device_get_subsystem'
../../plugin/html-overlay/lib/linux64/libcef.so: undefined reference to `udev_enumerate_unref'
../../plugin/html-overlay/lib/linux64/libcef.so: undefined reference to `udev_enumerate_new'
../../plugin/html-overlay/lib/linux64/libcef.so: undefined reference to `udev_device_get_parent_with_subsystem_devtype'
../../plugin/html-overlay/lib/linux64/libcef.so: undefined reference to `udev_monitor_new_from_netlink'
../../plugin/html-overlay/lib/linux64/libcef.so: undefined reference to `udev_device_unref'
../../plugin/html-overlay/lib/linux64/libcef.so: undefined reference to `udev_device_get_sysattr_value'
../../plugin/html-overlay/lib/linux64/libcef.so: undefined reference to `udev_enumerate_add_match_subsystem'
collect2: error: ld returned 1 exit status
Makefile:185: recipe for target 'bin/linux64/release/minko-example-html-overlay' failed
make[1]: *** [bin/linux64/release/minko-example-html-overlay] Error 1
Makefile:668: recipe for target 'minko-example-html-overlay' failed
make: *** [minko-example-html-overlay] Error 2

josefnpat avatar Feb 04 '15 01:02 josefnpat

I think the problem is here:

/usr/bin/ld: warning: libgcrypt.so.11, needed by ../../plugin/html-overlay/lib/linux64/libcef.so, not found (try using -rpath or -rpath-link) /usr/bin/ld: warning: libudev.so.0, needed by ../../plugin/html-overlay/lib/linux64/libcef.so, not found (try using -rpath or -rpath-link)

Did you install the corresponding libraries?

JMLX42 avatar Feb 04 '15 09:02 JMLX42

Yes, I have them!

~/minko♠ pacman -Ss libgcrypt | grep installed
core/libgcrypt 1.6.2-1 [installed]
core/libgpg-error 1.17-1 [installed]
multilib/lib32-libgcrypt 1.6.2-1 [installed]
multilib/lib32-libgpg-error 1.17-1 [installed]
~/minko♠ ls /usr/lib/libudev.so*
/usr/lib/libudev.so  /usr/lib/libudev.so.1  /usr/lib/libudev.so.1.6.2
~/minko♠ pwd
/home/seppi/minko
~/minko♠ ls -lah plugin/html-overlay/lib/linux64/
total 481M
drwxr-xr-x 4 seppi seppi  12K Feb  2 22:32 .
drwxr-xr-x 8 seppi seppi 4.0K Feb  2 22:32 ..
drwxr-xr-x 8 seppi seppi 4.0K Feb  2 22:30 cef_binary_3.1750.1638_linux64
-rw-r----- 1 seppi seppi 380M Feb  2 22:28 cef_binary_3.1750.1638_linux64.7z
-rwxr-xr-x 1 seppi seppi  24K Mar 13  2014 chrome-sandbox
-rwxr-xr-x 1 seppi seppi 101M Mar 13  2014 libcef.so
-rwxr-xr-x 1 seppi seppi 1.3M Mar 13  2014 libffmpegsumo.so
-rw-r--r-- 1 seppi seppi  252 Feb  1 20:43 README.txt
drwxr-xr-x 2 seppi seppi 4.0K Feb  2 22:32 Release

josefnpat avatar Feb 04 '15 19:02 josefnpat

cef.so is looking for libgcrypt.so.11, but you have libgcrypt.so.16 cef.so is looking for libudev.so.0, but you have libudev.so.1

JMLX42 avatar Feb 04 '15 20:02 JMLX42

Any suggestions here? Should I use a newer version of CEF, or should I softlink libgcrypt.so.16 -> libgcrypt.so.11 and libudev.so.0 -> libudev.so.1.

What's the correct procedure here? Or perhaps there's a way to skip this plugin?

josefnpat avatar Feb 05 '15 19:02 josefnpat

linking libcef to newer libs does not work :(

../../plugin/html-overlay/lib/linux64/libcef.so: undefined reference to `gcry_control@GCRYPT_1.2'

Linux node0 3.18.4-1-ARCH #1 SMP PREEMPT Tue Jan 27 20:45:02 CET 2015 x86_64 GNU/Linux

/usr/lib/libgcrypt.so.20.0.2
/usr/lib/libudev.so.1.6.2

yosico avatar Feb 14 '15 16:02 yosico

Solution - install older version of libgcrypt from AUR: https://aur.archlinux.org/packages/libgcrypt11

yos ~ $ aurget -Ss libgcrypt11
aur/libgcrypt11 1.5.4-3 
    gcrypt11 library (shared objects)

yos ~ $ ls -1 /usr/lib/libgcrypt.so.11*
/usr/lib/libgcrypt.so.11
/usr/lib/libgcrypt.so.11.8.3

yosico avatar Feb 14 '15 17:02 yosico

@yosico I will try this asap!

Keep in mind this is a workaround, as opposed to a solution. It would probably make more sense to update minko to be version independent.

josefnpat avatar Feb 14 '15 20:02 josefnpat

Those libraries are linked by CEF so there is nothing to do in Minko.

If you think CEF should link version-independent version of those libraries, you should post the issue on the CEF repo: https://code.google.com/p/chromiumembedded/issues/list

I don't think they'll do it though since it's not viable. Different versions might have different behaviors or even worse: different headers. CEF itself changed a lot of things in the past few months only... To enforce this, CEF itselfs declares and matches a specific macro to make sure you don't link another version of CEF than the one that's supposed to be used.

JMLX42 avatar Feb 15 '15 08:02 JMLX42

@yosico Were you able to build the CEF example using "./build.sh Release"? I'm getting the same problems as you too. Did you start an issue at CEF? I can't see any related to this. I'll start one if you haven't. I guess they need to upgrade to using newer versions of libudev.

Alternatively, have you figured this out another way?

digithree avatar Feb 28 '15 17:02 digithree

I solved this particular problem for myself. After finding the advice on @promethe42 's post in this thread (http://minko.io/forums/topic/how-to-create-an-ui/) I went into the premake5.lua script and commented out the html, http and webgl plugins, as well as the examples and tutorials that rely on them. This allowed me to build without the problematic CEF library.

I did submit an issue on the CEF tracker, which was rejected as they've fixed the libudev version linking in newer versions of the CEF library (see here: https://code.google.com/p/chromium/issues/detail?id=415212). Still, I wasn't able to get it to build using cmake for yet another issue! (see here for discussion: http://www.magpcss.org/ceforum/viewtopic.php?f=6&t=12618)

Anyway, I only need to build on Linux and don't need any of the web stuff so the solution of modifying premake5.lua is the best.

digithree avatar Mar 05 '15 10:03 digithree

We were not able to upgrade to newer versions of CEF because offscreen rendering was broken. It is now fixed - and with hardware acceleration it seems - but there has been some API changes so there is a bit of work to update the Minko plugin. It also fix some fonts rendering issues.

We will do this for the beta 3 release.

JMLX42 avatar Mar 05 '15 10:03 JMLX42