chromiumembedded / cef

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

Automatic macOS build fails for sandbox target due to missing generated header files #3704

Closed PatTheMav closed 5 months ago

PatTheMav commented 5 months ago

Describe the bug When doing an automatic CEF build on current master (bc1b856b96067c59fa51bc3498b2a6597dc4af44) for macOS, building the sandbox target will fail because the generated cef_config.h header cannot be found:

In file included from ../../cef/libcef_dll/sandbox/sandbox_mac.mm:10:
In file included from ../../cef/include/cef_sandbox_mac.h:34:
../../cef/include/base/cef_build.h:92:10: fatal error: 'include/cef_config.h' file not found
   92 | #include "include/cef_config.h"
      |          ^~~~~~~~~~~~~~~~~~~~~~
1 error generated.
ninja: build stopped: subcommand failed.
Traceback (most recent call last):
  File "/Users/***/GitHub/CEF_arm64/./automate-git.py", line 1389, in <module>
    run(command + build_path + ' cef_sandbox', chromium_src_dir, depot_tools_dir,
  File "/Users/***/GitHub/CEF_arm64/./automate-git.py", line 66, in run
    return subprocess.check_call(
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/Cellar/python@3.12/3.12.3/Frameworks/Python.framework/Versions/3.12/lib/python3.12/subprocess.py", line 413, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['ninja', '-C', 'out/Release_GN_arm64_sandbox', 'cef_sandbox']' returned non-zero exit status 1.

This error happens with "native" builds (building for Apple Silicon on an Apple Silicon host) as well as cross-compilation builds (building for Intel on an Apple Silicon host).

Adding include_dirs = [ "." ] to line 1334 in CEF's BUILD.gn file fixes the issue (which is peculiar as I would expect that configs += [ ":libcef_includes_config" ] should pull in the current working directory as an include path already).

To Reproduce

  1. Be on macOS 14.5 with Xcode 15.4
  2. Have no current checkout of any source (neither Chromium nor CEF)
  3. Download automate.git via curl -O https://bitbucket.org/chromiumembedded/cef/raw/master/tools/automate/automate-git.py
  4. Export CEF_ARCHIVE_FORMAT=tar.bz2 and GN_DEFINES="cc_wrapper=ccache ffmpeg_branding=Chrome is_debug=false is_official_build=true symbol_level=0"
  5. Run python3 ./automate-git.py --download-dir=${PWD}/chromium_git --minimal-distrib-only --with-pgo-profiles --no-debug-build --arm64-build --url=https://github.com/chromiumembedded/cef --force-config --force-clean
  6. Observe the Release target for CEF completing successfully
  7. Observe the Release target of the static sandbox library failing with error quoted above Steps to reproduce the behavior:

Expected behavior Expected behaviour is for CEF to finish building all required Release components (based on the automate-git arguments) and the minimal distribution being created in ${PWD}/chromium_git/chromium/src/cef/binary_distrib.

Versions (please complete the following information):

Additional context As I was able to successfully build CEF for Intel and Apple Silicon successfully only a few weeks ago I tried to find a possible point after which it "broke", which seems to be the changes introduced by this commit: b92749a58af274d27e46ed41a62774d495db90cd

I did multiple runs (which took a few days) forcing cleans, forcing configurations, deleting only the CEF checkout (so that CEF would be fetched again), deleting everything and starting fresh (as per the reproduction steps) and it always failed at this single step.

magreenblatt commented 5 months ago

Thanks for the report. This is fixed in b0bceecba9.

I did multiple runs (which took a few days)

To save yourself time in the future, you might want to ask first on the CEF Forum.