chromiumembedded / cef

Chromium Embedded Framework (CEF). A simple framework for embedding Chromium-based browsers in other applications.
https://bitbucket.org/chromiumembedded/cef/
Other
3.26k stars 456 forks source link

Linux: can't build CEF on master branch #1788

Closed magreenblatt closed 8 years ago

magreenblatt commented 8 years ago

Original report by Andrew Krasichkov (Bitbucket: buglloc, GitHub: buglloc).


Try to build CEF "release" on master branch (HEAD 5dec0c5f575683f0f801386c20047a2be4cd043c) as usual:

export GYP_DEFINES="$GYP_DEFINES remove_webcore_debug_symbols=1"
python automate-git.py --download-dir=cef --force-build --no-debug-build

And get compile error:

[14653/15127] CXX obj/cef/libcef/browser/net/libcef_static.chrome_scheme_handler.o
FAILED: ../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD -MF obj/cef/libcef/browser/net/libcef_static.chrome_scheme_handler.o.d -DV8_DEPRECATION_WARNINGS -DCLD_VERSION=2 -D_FILE_OFFSET_BITS=64 -DCHROMIUM_BUILD -DCR_CLANG_REVISION=254049-1 -DUI_COMPOSITOR_IMAGE_TRANSPORT -DUSE_AURA=1 -DUSE_ASH=1 -DUSE_PANGO=1 -DUSE_CAIRO=1 -DUSE_DEFAULT_RENDER_THEME=1 -DUSE_LIBJPEG_TURBO=1 -DUSE_X11=1 -DUSE_CLIPBOARD_AURAX11=1 -DENABLE_ONE_CLICK_SIGNIN -DENABLE_WEBRTC=1 -DENABLE_MEDIA_ROUTER=1 -DENABLE_PEPPER_CDMS -DENABLE_CONFIGURATION_POLICY -DENABLE_NOTIFICATIONS -DENABLE_HIDPI=1 -DENABLE_TOPCHROME_MD=1 -DUSE_UDEV -DDONT_EMBED_BUILD_METADATA -DFIELDTRIAL_TESTING_ENABLED -DENABLE_TASK_MANAGER=1 -DENABLE_EXTENSIONS=1 -DENABLE_PDF=1 -DENABLE_PLUGINS=1 -DENABLE_SESSION_SERVICE=1 -DENABLE_AUTOFILL_DIALOG=1 -DENABLE_BACKGROUND=1 -DENABLE_PRINTING=1 -DENABLE_BASIC_PRINTING=1 -DENABLE_SPELLCHECK=1 -DENABLE_CAPTIVE_PORTAL_DETECTION=1 -DENABLE_APP_LIST=1 -DENABLE_SETTINGS_APP=1 -DENABLE_SUPERVISED_USERS=1 -DENABLE_MDNS=1 -DENABLE_SERVICE_DISCOVERY=1 -DV8_USE_EXTERNAL_STARTUP_DATA -DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD -DSAFE_BROWSING_DB_LOCAL -DBUILDING_CEF_SHARED -DGL_GLEXT_PROTOTYPES -DMOJO_USE_SYSTEM_IMPL -DTOOLKIT_VIEWS=1 -DPROTOBUF_USE_DLLS -DGOOGLE_PROTOBUF_NO_RTTI -DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER -DSK_SUPPORT_GPU=1 -DSK_IGNORE_LINEONLY_AA_CONVEX_PATH_OPTS -DSK_IGNORE_GL_TEXTURE_TARGET -DHUNSPELL_STATIC -DHUNSPELL_CHROME_CLIENT -DUSE_HUNSPELL -DLIBXML_STATIC -DU_USING_ICU_NAMESPACE=0 -DU_ENABLE_DYLOAD=0 -DU_STATIC_IMPLEMENTATION -DCHROME_PNG_WRITE_SUPPORT -DPNG_USER_CONFIG -DENABLE_LAYOUT_UNIT_IN_INLINE_BOXES=0 -DWTF_USE_CONCATENATED_IMPULSE_RESPONSES=1 -DENABLE_INPUT_MULTIPLE_FIELDS_UI=1 -DENABLE_WEB_AUDIO=1 -DWTF_USE_WEBAUDIO_FFMPEG=1 -DWTF_USE_DEFAULT_RENDER_THEME=1 -DUSE_LIBPCI=1 -DUSE_OPENSSL=1 -DUSE_GLIB=1 -DUSE_NSS_CERTS=1 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -Igen -I../../cef -I../../third_party/WebKit/public/platform -I../../third_party/WebKit/public/web -I../../cef/libcef/resources/grit_stub -I../../cef/libcef/resources/grit_stub/chrome -Igen/cef -Igen/chrome -Igen/components -Igen/ui/resources -Igen/ui/strings -I../../third_party/khronos -I../../gpu -I../.. -I../../skia/config -I../../third_party/WebKit/Source -Igen/angle -Igen/protoc_out -I../../third_party/protobuf -I../../third_party/protobuf/src -I../../third_party/WebKit -Igen/extensions -I../../third_party/opus/src/include -I../../third_party/skia/include/core -I../../third_party/skia/include/effects -I../../third_party/skia/include/pdf -I../../third_party/skia/include/gpu -I../../third_party/skia/include/lazy -I../../third_party/skia/include/pathops -I../../third_party/skia/include/pipe -I../../third_party/skia/include/ports -I../../third_party/skia/include/utils -I../../skia/ext -I../../third_party/libxml/linux/include -I../../third_party/libxml/src/include -I../../third_party/icu/source/common -I../../third_party/WebKit -I../../third_party/npapi -I../../third_party/npapi/bindings -I../../third_party/libpng -I../../third_party/zlib -I../../third_party/libwebp -I../../third_party/ots/include -I../../third_party/qcms/src -I../../third_party/iccjpeg -I../../third_party/libjpeg_turbo -Igen/blink -I../../third_party/icu/source/i18n -I../../third_party/mesa/src/include -I../../v8/include -Igen/ui/views/resources -fstack-protector --param=ssp-buffer-size=4 -Werror -pthread -fno-strict-aliasing -Wall -Wno-unused-parameter -Wno-missing-field-initializers -fvisibility=hidden -pipe -fPIC -Wno-reserved-user-defined-literal -fcolor-diagnostics -B/home/buglloc/work/cef_master/cef/chromium/src/third_party/binutils/Linux_x64/Release/bin -Wheader-hygiene -Wno-char-subscripts -Wno-unneeded-internal-declaration -Wno-covered-switch-default -Wstring-conversion -Wno-c++11-narrowing -Wno-deprecated-register -Wno-inconsistent-missing-override -Wno-shift-negative-value -Wno-bitfield-width -pthread -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/nss -I/usr/include/nspr -Wno-header-guard -I/usr/include/freetype2 -m64 -march=x86-64 -O2 -fno-ident -fdata-sections -ffunction-sections -funwind-tables -Wno-c++0x-compat -Wno-deprecated-declarations -fno-exceptions -fno-rtti -fno-threadsafe-statics -fvisibility-inlines-hidden -Wsign-compare -std=gnu++11  -c ../../cef/libcef/browser/net/chrome_scheme_handler.cc -o obj/cef/libcef/browser/net/libcef_static.chrome_scheme_handler.o
../../cef/libcef/browser/net/chrome_scheme_handler.cc:431:44: error: no member named 'kChromeUITcmallocHost' in namespace 'content'; did you mean 'kChromeUITracingHost'?
         request->url().host() == content::kChromeUITcmallocHost) ||
                                  ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
                                           kChromeUITracingHost                                                                                                                                                             
../../content/public/common/url_constants.h:44:34: note: 'kChromeUITracingHost' declared here
CONTENT_EXPORT extern const char kChromeUITracingHost[];
                                 ^
1 error generated.
[14653/15127] CXX obj/cef/libcef/browser/net/libcef_static.url_request_context_getter_impl.o
ninja: build stopped: subcommand failed.
Traceback (most recent call last):
  File "automate-git.py", line 880, in <module>
    if options.buildlogfile else None)
  File "automate-git.py", line 55, in run
    shell=(sys.platform == 'win32'))
  File "/usr/lib/python2.7/subprocess.py", line 540, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['ninja', '-C', 'out/Release', 'cefclient', 'chrome_sandbox']' returned non-zero exit status 1

It looks like Chromium was removed content::kChromeUITcmallocHost, see https://codereview.chromium.org/1468993003 And the most interesting:

Index: content/browser/webui/url_data_manager_backend.cc
diff --git a/content/browser/webui/url_data_manager_backend.cc b/content/browser/webui/url_data_manager_backend.cc
index [485aff6ee42ee138e1296a990fcf6a81a17d10ce (bb)](https://bitbucket.org/chromiumembedded/cef/commits/485aff6ee42ee138e1296a990fcf6a81a17d10ce)..e539166661be425c571c006f9c27cf95e617334b [100644 (bb)](https://bitbucket.org/chromiumembedded/cef/commits/100644)
--- a/content/browser/webui/url_data_manager_backend.cc
+++ b/content/browser/webui/url_data_manager_backend.cc
@@ -26,7 +26,6 @@
 #include "content/browser/net/view_blob_internals_job_factory.h"
 #include "content/browser/net/view_http_cache_job_factory.h"
 #include "content/browser/resource_context_impl.h"
-#include "content/browser/tcmalloc_internals_request_job.h"
 #include "content/browser/webui/shared_resources_data_source.h"
 #include "content/browser/webui/url_data_source_impl.h"
 #include "content/public/browser/browser_context.h"
@@ -484,14 +483,6 @@ class ChromeProtocolHandler
           request, network_delegate, blob_storage_context_->context());
     }

-#if defined(USE_TCMALLOC)
-    // Next check for chrome://tcmalloc/, which uses its own job type.
-    if (request->url().SchemeIs(kChromeUIScheme) &&
-        request->url().host() == kChromeUITcmallocHost) {
-      return new TcmallocInternalsRequestJob(request, network_delegate);
-    }
-#endif
-
     // Next check for chrome://histograms/, which uses its own job type.
     if (request->url().SchemeIs(kChromeUIScheme) &&
         request->url().host() == kChromeUIHistogramHost) {

So I guess that this patch may be a solution:

diff --git a/libcef/browser/net/chrome_scheme_handler.cc b/libcef/browser/net/chrome_scheme_handler.cc
index [1ad0196 (bb)](https://bitbucket.org/chromiumembedded/cef/commits/1ad0196)..e26b98e [100644 (bb)](https://bitbucket.org/chromiumembedded/cef/commits/100644)
--- a/libcef/browser/net/chrome_scheme_handler.cc
+++ b/libcef/browser/net/chrome_scheme_handler.cc
@@ -426,10 +426,6 @@ class ChromeProtocolHandlerWrapper :
         (request->url().SchemeIs(content::kChromeUIScheme) &&
          request->url().host() == content::kChromeUIAppCacheInternalsHost) ||
         content::ViewBlobInternalsJobFactory::IsSupportedURL(request->url()) ||
-#if defined(USE_TCMALLOC)
-        (request->url().SchemeIs(content::kChromeUIScheme) &&
-         request->url().host() == content::kChromeUITcmallocHost) ||
-#endif
         (request->url().SchemeIs(content::kChromeUIScheme) &&
          request->url().host() == content::kChromeUIHistogramHost)) {
       return chrome_protocol_handler_->MaybeCreateJob(request,
magreenblatt commented 8 years ago

Thanks, fixed in master revision ae25a35 (bb).

magreenblatt commented 8 years ago