Best way to include pull requests?

Having problems with building or using CEF's C/C++ APIs? This forum is here to help. Please do not post bug reports or feature requests here.

Best way to include pull requests?

Postby sticman22 » Tue Nov 07, 2017 2:45 pm

Hi, I'm new to CEF (and application development in general).

I'm currently trying to test PR#104 for OSR touch support in my app, which is currently using libraries built from branch 3112.
What the best way (or any way) to integrate the changes from the pull request into the 3112 branch. There are comments saying they are using the PR changes but I'm not sure how they moved the changes into other branches.

I'm able to clone and build the repo with the automate-git.py script but I get linker errors for libcef when trying to build cefclient or cefsimple.
I've tried git-merging the "touch_pr" branch from the OSR Touch pull request into 3112. I accepted all the incoming conflicts, but ended up geting compiler errors for blink.
I've also tried building branch 2924 from the OSR touch repo, but it doesn't seem to have the changes.

Should I have merged the other way, or used a different branch from the OSR Touch pull request?
Is this what the patch files are for?

Sorry for the noob question
Thanks in advanced.
sticman22
Newbie
 
Posts: 7
Joined: Mon Nov 06, 2017 6:04 pm

Re: Best way to include pull requests?

Postby magreenblatt » Tue Nov 07, 2017 5:48 pm

PRs are created against master branch so they're unlikely to apply/build cleanly with older release branches. For an easier time you should use either master branch or the most recent release branch listed at https://bitbucket.org/chromiumembedded/ ... -supported. Working with PRs is described at https://bitbucket.org/chromiumembedded/ ... ll-request
magreenblatt
Site Admin
 
Posts: 12382
Joined: Fri May 29, 2009 6:57 pm

Re: Best way to include pull requests?

Postby sticman22 » Wed Nov 08, 2017 12:40 pm

Thanks! That was the one wiki page I didn't look at :(
When I tried applying the patch to 3112 I got a bunch of cannot apply errors, so I'm going to try it on master and build 3239. The comment saying the PR worked on 3112 must be too outdated (4-5 months ago).

I assume I need to apply it after calling the cef_create_projects.sh script which applies the patches already included in the branch. Is this correct?
sticman22
Newbie
 
Posts: 7
Joined: Mon Nov 06, 2017 6:04 pm

Re: Best way to include pull requests?

Postby magreenblatt » Wed Nov 08, 2017 12:47 pm

You should apply the PR before running cef_create_projects.bat because the PR modifies the GN configuration and patch files in the patches/ directory.
magreenblatt
Site Admin
 
Posts: 12382
Joined: Fri May 29, 2009 6:57 pm

Re: Best way to include pull requests?

Postby sticman22 » Wed Nov 08, 2017 8:01 pm

Thanks for your speedy responses! I wasn't able to patch "master" with PR104, but I was able to apply it to the October release branch (3239). Unfortunately it failed to compile libcef.so with undefined symbol errors.
Code: Select all
ninja -C out/Debug_GN_x64 cef chrome_sandbox

ninja: Entering directory `out/Debug_GN_x64'
[17154/31340] ACTION //cef:make_pack_header_resources(//build/toolchain/linux:clang_x64)
File includes/include/cef_pack_resources.h updated.
[17157/31340] ACTION //cef:make_pack_header_strings(//build/toolchain/linux:clang_x64)
File includes/include/cef_pack_strings.h updated.
[31336/31340] SOLINK ./libcef.so
FAILED: libcef.so libcef.so.TOC
python "../../build/toolchain/gcc_solink_wrapper.py" --readelf="readelf" --nm="nm" --sofile="./libcef.so" --tocfile="./libcef.so.TOC" --output="./libcef.so"  -- ../../third_party/llvm-build/Release+Asserts/bin/clang++ -shared -Wl,--fatal-warnings -fPIC -Wl,-z,noexecstack -Wl,-z,now -Wl,-z,relro -Wl,-z,defs -Wl,--no-as-needed -lpthread -Wl,--as-needed -fuse-ld=lld -Wl,--icf=all -m64 -Werror -Wl,--gdb-index -nostdlib++ -Wl,--export-dynamic -o "./libcef.so" -Wl,-soname="libcef.so" @"./libcef.so.rsp"
/home/jenkins/customWorkspace/cef_osrtouch_PATCH_TEST_3239/chromium_git/chromium/src/out/Debug_GN_x64/../../third_party/llvm-build/Release+Asserts/bin/ld.lld: error: undefined symbol: ui::Service::InProcessConfig::InProcessConfig()
>>> referenced by embedded_ui_service_info_factory.cc:18 (../../chrome/browser/embedded_ui_service_info_factory.cc:18)
>>>               embedded_ui_service_info_factory.o:((anonymous namespace)::CreateEmbeddedUIService(scoped_refptr<base::SingleThreadTaskRunner> const&, base::WeakPtr<ui::ImageCursorsSet>, discardable_memory::DiscardableSharedMemoryManager*)) in archive obj/chrome/browser/libbrowser.a

/home/jenkins/customWorkspace/cef_osrtouch_PATCH_TEST_3239/chromium_git/chromium/src/out/Debug_GN_x64/../../third_party/llvm-build/Release+Asserts/bin/ld.lld: error: undefined symbol: ui::Service::InProcessConfig::~InProcessConfig()
>>> referenced by embedded_ui_service_info_factory.cc:23 (../../chrome/browser/embedded_ui_service_info_factory.cc:23)
>>>               embedded_ui_service_info_factory.o:((anonymous namespace)::CreateEmbeddedUIService(scoped_refptr<base::SingleThreadTaskRunner> const&, base::WeakPtr<ui::ImageCursorsSet>, discardable_memory::DiscardableSharedMemoryManager*)) in archive obj/chrome/browser/libbrowser.a

/home/jenkins/customWorkspace/cef_osrtouch_PATCH_TEST_3239/chromium_git/chromium/src/out/Debug_GN_x64/../../third_party/llvm-build/Release+Asserts/bin/ld.lld: error: undefined symbol: ui::Service::Service(ui::Service::InProcessConfig const*)
>>> referenced by memory:3065 (../../buildtools/third_party/libc++/trunk/include/memory:3065)
>>>               embedded_ui_service_info_factory.o:(decltype(std::make_unique<ui::Service>(std::forward<ui::Service::InProcessConfig*>(fp))) base::MakeUnique<ui::Service, ui::Service::InProcessConfig*>(ui::Service::InProcessConfig*&&)) in archive obj/chrome/browser/libbrowser.a
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.

Any chance you've seen errors like this before and it was caused by a mistake on my part?
I'm not sure if the patch caused this or not. I'll try building 3239 from scratch to make sure I'm not doing something wrong. Then try the PR patch on September's release branch (3202).
The most recent PR comment about testing the pull request was on 10/20, so I'm hoping nothing broke between then and now.

Don't suppose there's any word on the grapevine about OSR_touch being merged in soon is there?
sticman22
Newbie
 
Posts: 7
Joined: Mon Nov 06, 2017 6:04 pm

Re: Best way to include pull requests?

Postby magreenblatt » Wed Nov 08, 2017 8:31 pm

magreenblatt
Site Admin
 
Posts: 12382
Joined: Fri May 29, 2009 6:57 pm

Re: Best way to include pull requests?

Postby sticman22 » Wed Nov 08, 2017 9:20 pm

Oh wow, that is a fresh fix!
Well, it looks like 3202 could be my answer! It's building now so I'll see how that does in the morning!
Thanks a million!!!
sticman22
Newbie
 
Posts: 7
Joined: Mon Nov 06, 2017 6:04 pm

Re: Best way to include pull requests?

Postby sticman22 » Fri Nov 10, 2017 1:36 pm

So close!
I got it building, and got a distributable made. But when I try to build cefclient I get a linker error for libdbus.
I should mention I'm compiling/building the distributable on Ubuntu 16.04, BUT I'm building the distributable (and getting the error) on CentOS 7.
EDIT: Should also mention I ended up manually applying the fix for issue 2294 to the October release branch 3239 as PR104 applied cleanly to that, but not to 3202.

I haven't had a problem with missing libdbus on CentOS in previous binary distributions I've built or downloaded. Is this a dependency added sometime after the June release branch (3112)?
Or something I did wrong?

Code: Select all
Linking CXX executable Debug/cefclient
../../../Debug/libcef.so: undefined reference to `dbus_connection_unref@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_bus_get@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_get_signature@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_error_free@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_new@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_error_is_set@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_set_sender@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_watch_handle@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_iter_append_fixed_array@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_free@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_bus_remove_match@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_get_type@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_get_serial@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_pending_call_cancel@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_pending_call_set_notify@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_connection_dispatch@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_get_version@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_iter_append_basic@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_connection_set_exit_on_disconnect@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_bus_add_match@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_iter_recurse@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_set_path@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_timeout_get_enabled@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_connection_remove_filter@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_iter_get_fixed_array@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_bus_get_unique_name@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_connection_set_dispatch_status_function@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_timeout_handle@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_bus_request_name@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_connection_try_register_object_path@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_get_reply_serial@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_get_member@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_watch_get_flags@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_iter_close_container@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_iter_get_basic@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_pending_call_unref@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_error_init@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_bus_get_private@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_get_sender@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_connection_get_dispatch_status@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_threads_init_default@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_connection_set_timeout_functions@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_get_error_name@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_watch_set_data@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_connection_send@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_set_destination@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_connection_send_with_reply_and_block@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_iter_get_arg_type@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_timeout_get_data@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_watch_get_unix_fd@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_connection_send_with_reply@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_connection_add_filter@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_new_error@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_bus_release_name@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_timeout_get_interval@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_get_destination@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_connection_unregister_object_path@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_connection_set_watch_functions@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_iter_init_append@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_timeout_set_data@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_is_signal@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_connection_open@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_iter_open_container@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_set_error_name@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_ref@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_set_reply_serial@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_iter_init@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_iter_next@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_iter_get_signature@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_set_interface@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_connection_open_private@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_watch_get_enabled@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_new_method_return@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_unref@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_set_member@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_set_serial@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_get_path@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_pending_call_steal_reply@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_message_get_interface@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_watch_get_data@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_connection_close@LIBDBUS_1_3'
../../../Debug/libcef.so: undefined reference to `dbus_bus_register@LIBDBUS_1_3'
collect2: error: ld returned 1 exit status
make[3]: *** [tests/cefclient/Debug/cefclient] Error 1
make[2]: *** [tests/cefclient/CMakeFiles/cefclient.dir/all] Error 2
make[1]: *** [tests/cefclient/CMakeFiles/cefclient.dir/rule] Error 2
make: *** [cefclient] Error 2

EDIT2: And here's how I built the distributable:
Code: Select all
python automate-git.py --download-dir=$WORKSPACE/cef_osrtouch_PATCH_TEST_3239/chromium_git --depot-tools-dir=$WORKSPACE/cef_osrtouch_PATCH_TEST_3239/depot_tools --client-distrib --no-update --x64-build --build-target=cefsimple
sticman22
Newbie
 
Posts: 7
Joined: Mon Nov 06, 2017 6:04 pm

Re: Best way to include pull requests?

Postby magreenblatt » Fri Nov 10, 2017 4:48 pm

You can add use_dbus=false to your GN_DEFINES.
magreenblatt
Site Admin
 
Posts: 12382
Joined: Fri May 29, 2009 6:57 pm


Return to Support Forum

Who is online

Users browsing this forum: Google [Bot] and 29 guests