Closed snblackout closed 2 years ago
I'm new to compiling this stack and not sure if it is what causes the error but I think your $VAR_CHROME_BRANCH
does not match $VAR_CEFSHARP_BRANCH
. See here:
You might want to try and pick CEF 3945
branch to build with cefsharp/79
I think you're right. Thanks for that link to that documentation. I will try again with 3945 and report back.
OK, so this is kinda frustrating. I spun up the build and it was going for a good 3ish hours and looked like we would have success, but then it came back with below... perhaps I'm using too new of a build?
Here is versions.ps1 that was used on this build:
$VAR_CHROME_BRANCH="3945";
$VAR_CEFSHARP_VERSION="79.1.360";
$VAR_CEFSHARP_BRANCH="cefsharp/79";
$VAR_BASE_DOCKER_FILE="mcr.microsoft.com/windows/servercore:1903-amd64";#mcr.microsoft.com/windows/servercore:1809-amd64
$VAR_DUAL_BUILD="0"; #set to 1 to build x86 and x64 together, mainly to speed up linking which is single threaded, note may need excess ram.
$VAR_GN_DEFINES="is_official_build=true proprietary_codecs=true ffmpeg_branding=Chrome";
$VAR_CEF_BUILD_MOUNT_VOL_NAME=""; #force using this volume for building, allows resuming MUST BE LOWER CASE
$VAR_GN_ARGUMENTS="--ide=vs2019 --sln=cef --filters=//cef/*";
$VAR_GYP_DEFINES="";
$VAR_CEF_BUILD_ONLY=$false;#Only build CEF do not build cefsharp or the cef-binary.
$VAR_CEF_USE_BINARY_PATH=""; #If you want to use existing CEF binaries point this to a local folder where the cef_binary*.zip files are. It will skip the long CEF build step then but still must make the VS container for the cefsharp building. Note will copy a dockerfile into this folder.
$VAR_REMOVE_VOLUME_ON_SUCCESSFUL_BUILD=$true;
$VAR_CEF_BINARY_EXT="zip"; #Can be zip,tar.bz2, 7z Generally do not change this off of Zip unless you are supplying your own binaries using $VAR_CEF_USE_BINARY_PATH above, and they have a different extension, will try to work with the other formats however
$VAR_CEF_SAVE_SOURCES="0"; #normally sources are deleted before finishing the CEF build step. Set to 1 to create a /code/sources.zip archive that has them (note it is left in docker image, must use docker cp to copy it out, it is also around 30GB).
$VAR_CEF_VERSION_STR="auto"; #can set to "3.3239.1723" or similar if you have multiple binaries that Docker_cefsharp might find
$VAR_HYPERV_MEMORY_ADD="--memory=30g"; #only matters if using HyperV, Note your swap file alone must be this big or able to grow to be this big, 30G is fairly safe for single build will need 60G for dual build.
if ($false){ #Sample 65 overrides
$VAR_CHROME_BRANCH="3945";
$VAR_CEFSHARP_VERSION="79.1.360";
$VAR_CEFSHARP_BRANCH="master";
}
--snip--
Transferring C:\code\chromium_git\chromium\src\cef\tests/ceftests/webui_unittest.cc file.
Transferring C:\code\chromium_git\chromium\src\cef\tests/ceftests/xml_reader_unittest.cc file.
Transferring C:\code\chromium_git\chromium\src\cef\tests/ceftests/zip_reader_unittest.cc file.
-------- Running "c:\code\depot_tools\bootstrap-3_8_0_chromium_8_bin\python\bin\python.exe fuse_gtest_files.py "C:\code\chromium_git\chromium\src\cef\binary_distrib\cef_binary_79.1.38+gecefb59+chromium-79.0.3945.130_windows32\tests"" in "C:\code\chromium_git\chromium\src\third_party\googletest\src\googletest\scripts"...
Building gtest directory structure.
Creating C:\code\chromium_git\chromium\src\cef\binary_distrib\cef_binary_79.1.38+gecefb59+chromium-79.0.3945.130_windows32\tests\gtest\include\gtest directory.
Moving C:\code\chromium_git\chromium\src\cef\binary_distrib\cef_binary_79.1.38+gecefb59+chromium-79.0.3945.130_windows32\tests\gtest\gtest.h file.
Creating C:\code\chromium_git\chromium\src\cef\binary_distrib\cef_binary_79.1.38+gecefb59+chromium-79.0.3945.130_windows32\tests\gtest\src directory.
Moving C:\code\chromium_git\chromium\src\cef\binary_distrib\cef_binary_79.1.38+gecefb59+chromium-79.0.3945.130_windows32\tests\gtest\gtest-all.cc file.
Transferring C:\code\chromium_git\chromium\src\third_party\googletest\src\googletest\LICENSE file.
Transferring C:\code\chromium_git\chromium\src\cef\tests\gtest\README.cef.in file.
Processing "C:\code\chromium_git\chromium\src\cef\tests\cefclient\CMakeLists.txt.in" to "C:\code\chromium_git\chromium\src\cef\binary_distrib\cef_binary_79.1.38+gecefb59+chromium-79.0.3945.130_windows32\tests\cefclient\CMakeLists.txt"...
Processing "C:\code\chromium_git\chromium\src\cef\tests\cefsimple\CMakeLists.txt.in" to "C:\code\chromium_git\chromium\src\cef\binary_distrib\cef_binary_79.1.38+gecefb59+chromium-79.0.3945.130_windows32\tests\cefsimple\CMakeLists.txt"...
Processing "C:\code\chromium_git\chromium\src\cef\tests\gtest\CMakeLists.txt.in" to "C:\code\chromium_git\chromium\src\cef\binary_distrib\cef_binary_79.1.38+gecefb59+chromium-79.0.3945.130_windows32\tests\gtest\CMakeLists.txt"...
Processing "C:\code\chromium_git\chromium\src\cef\tests\ceftests\CMakeLists.txt.in" to "C:\code\chromium_git\chromium\src\cef\binary_distrib\cef_binary_79.1.38+gecvcvars:
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\"
'"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\"' is not recognized as an internal or external command,
operable program or batch file.
PATH:
c:\code\depot_tools\bootstrap-3_8_0_chromium_8_bin\python\bin;c:\code\depot_tools\bootstrap-3_8_0_chromium_8_bin\python\bin\Scripts;c:/code/depot_tools/;c:/Program Files/Git/bin/;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Git\cmd;C:\Users\ContainerAdministrator\AppData\Local\Microsoft\WindowsApps;
command:
c:\code\depot_tools\bootstrap-3_8_0_chromium_8_bin\python\bin\python.exe combine_libs.py -o C:\code\chromium_git\chromium\src\cef\binary_distrib\cef_binary_79.1.38+gecefb59+chromium-79.0.3945.130_windows32\Release\cef_sandbox.lib C:\code\chromium_git\chromium\src\out\Release_GN_x86\obj\base\base.lib C:\code\chromium_git\chromium\src\out\Release_GN_x86\obj\base\base_static.lib C:\code\chromium_git\chromium\src\out\Release_GN_x86\obj\base\third_party\double_conversion\double_conversion.lib C:\code\chromium_git\chromium\src\out\Release_GN_x86\obj\base\third_party\dynamic_annotations\dynamic_annotations.lib C:\code\chromium_git\chromium\src\out\Release_GN_x86\obj\base\win\pe_image.lib C:\code\chromium_git\chromium\src\out\Release_GN_x86\obj\cef\cef_sandbox.lib C:\code\chromium_git\chromium\src\out\Release_GN_x86\obj\sandbox\win\sandbox.lib
Traceback (most recent call last):
File "combine_libs.py", line 121, in <module>
sys.exit(Main())
File "combine_libs.py", line 116, in Main
CombineLibraries(output, remove_re, args)
File "combine_libs.py", line 61, in CombineLibraries
Shell(*args)
File "combine_libs.py", line 24, in Shell
args, stdin=None, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
File "c:\code\depot_tools\bootstrap-3_8_0_chromium_8_bin\python\bin\lib\subprocess.py", line 394, in __init__
errread, errwrite)
File "c:\code\depot_tools\bootstrap-3_8_0_chromium_8_bin\python\bin\lib\subprocess.py", line 644, in _execute_child
startupinfo)
WindowsError: [Error 2] The system cannot find the file specified
efb59+chromium-79.0.3945.130_windows32\tests\ceftests\CMakeLists.txt"...
Transferring C:\code\chromium_git\chromium\src\cef\cef_paths.gypi file.
Transferring C:\code\chromium_git\chromium\src\cef\cef_paths2.gypi file.
Creating C:\code\chromium_git\chromium\src\cef\binary_distrib\cef_binary_79.1.38+gecefb59+chromium-79.0.3945.130_windows32\Release directory.
-------- Running "msvs_env.bat win32 "c:\code\depot_tools\bootstrap-3_8_0_chromium_8_bin\python\bin\python.exe" combine_libs.py -o "C:\code\chromium_git\chromium\src\cef\binary_distrib\cef_binary_79.1.38+gecefb59+chromium-79.0.3945.130_windows32\Release\cef_sandbox.lib" "C:\code\chromium_git\chromium\src\out\Release_GN_x86\obj\base\base.lib" "C:\code\chromium_git\chromium\src\out\Release_GN_x86\obj\base\base_static.lib" "C:\code\chromium_git\chromium\src\out\Release_GN_x86\obj\base\third_party\double_conversion\double_conversion.lib" "C:\code\chromium_git\chromium\src\out\Release_GN_x86\obj\base\third_party\dynamic_annotations\dynamic_annotations.lib" "C:\code\chromium_git\chromium\src\out\Release_GN_x86\obj\base\win\pe_image.lib" "C:\code\chromium_git\chromium\src\out\Release_GN_x86\obj\cef\cef_sandbox.lib" "C:\code\chromium_git\chromium\src\out\Release_GN_x86\obj\sandbox\win\sandbox.lib"" in "C:\code\chromium_git\chromium\src\cef\tools"...
Traceback (most recent call last):
File "C:\code\chromium_git\chromium\src\cef\tools\\make_distrib.py", line 884, in <module>
os.path.join(dst_dir, 'cef_sandbox.lib'))
File "C:\code\chromium_git\chromium\src\cef\tools\\make_distrib.py", line 394, in combine_libs
run(cmdline, os.path.join(cef_dir, 'tools'))
File "C:\code\chromium_git\chromium\src\cef\tools\\make_distrib.py", line 428, in run
args, cwd=working_dir, env=os.environ, shell=(sys.platform == 'win32'))
File "c:\code\depot_tools\bootstrap-3_8_0_chromium_8_bin\python\bin\lib\subprocess.py", line 190, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['msvs_env.bat', 'win32', 'c:\\code\\depot_tools\\bootstrap-3_8_0_chromium_8_bin\\python\\bin\\python.exe', 'combine_libs.py', '-o', 'C:\\code\\chromium_git\\chromium\\src\\cef\\binary_distrib\\cef_binary_79.1.38+gecefb59+chromium-79.0.3945.130_windows32\\Release\\cef_sandbox.lib', 'C:\\code\\chromium_git\\chromium\\src\\out\\Release_GN_x86\\obj\\base\\base.lib', 'C:\\code\\chromium_git\\chromium\\src\\out\\Release_GN_x86\\obj\\base\\base_static.lib', 'C:\\code\\chromium_git\\chromium\\src\\out\\Release_GN_x86\\obj\\base\\third_party\\double_conversion\\double_conversion.lib', 'C:\\code\\chromium_git\\chromium\\src\\out\\Release_GN_x86\\obj\\base\\third_party\\dynamic_annotations\\dynamic_annotations.lib', 'C:\\code\\chromium_git\\chromium\\src\\out\\Release_GN_x86\\obj\\base\\win\\pe_image.lib', 'C:\\code\\chromium_git\\chromium\\src\\out\\Release_GN_x86\\obj\\cef\\cef_sandbox.lib', 'C:\\code\\chromium_git\\chromium\\src\\out\\Release_GN_x86\\obj\\sandbox\\win\\sandbox.lib']' returned non-zero exit status 1
Process C:/code/chromium_git/chromium/src/cef/tools/make_distrib.bat
--ninja-build --allow-partial exited with non zero code: 1 aborting!
At C:\code\functions.ps1:82 char:9
+ throw "Process $proc $opts exited with non zero code: $($p.Ex ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (Process C:/code...de: 1 abort
ing!:String) [], RuntimeException
+ FullyQualifiedErrorId : Process C:/code/chromium_git/chromium/src/cef/to
ols/make_distrib.bat --ninja-build --allow-partial exited with non zero co
de: 1 aborting!
Caught an exception: Process docker run --memory=30g -v cefbuild_qaodf:C:/code/chromium_git --name c_cefbuild_qaodf_tmp cef_build_env exited with non zero code: 1 aborting!
Exception Type: System.Management.Automation.RuntimeException
Stack Trace: at RunProc, C:\CefSharpDockerfiles\functions.ps1: line 82
at <ScriptBlock>, C:\CefSharpDockerfiles\build.ps1: line 85
at <ScriptBlock>, <No file>: line 1
I've tried to compile 79
version today and got exactly the same error
@babaibabai Who can we ping that could help fix this in this repo?
I will see if I can take a look this weekend, the initial error is different from the second error.
the initial error is different from the second error.
My apologies. The first error was my fault but then did run into that main issue. Shall I close this and reopen with proper title?
Hello @mitchcapper were you able to spend some time on this? Thanks.
Pinging to see if any progress has been made. Thanks.
Sorry still swamped with work. I hope to at least do a v83 build shortly and see if that also has the issue.
@snblackout the good news is that yes it seems like it built successfully and is just having an issue at the packaging step. It looks like it is not properly detecting the VS install. the could be due to the patch not applying. If you change the VAR_CEF_BUILD_MOUNT_VOL_NAME you can avoid the entire rebuild and just jump into the packaging step.
If you synced the repo prior to the commit it might be missing the patch by default so just pull the latest changes. I have tried on two platforms and azure although with v 80-83. I will try some of the other build options as well.
@mitchcapper thanks for the update. I will give it a go and report back.
Just to clarify, the commit on April 19th has the fix? When I posted this, I used the repo from that date and it doesn't look like a commit has happened since April 19th.
Also, what exactly should I change for VAR_CEF_BUILD_MOUNT_VOL_NAME? Sorry just very new with this method and want to learn as much as possible of what should be changed.
It was the commit on april 19th after someone on that date had filed a bug about it not working. So you want to be sure to have tools/msvs_env.bat.
As for what to set that variable to, I can't tell you as it is randomly generated. If you look at the docker output when you start it will tell you what the session vol name will be for resuming. You should copy and paste that into that variable to have it re-use the existing session if it fails.
Hi Mitch. Yes my cloned repo has the sample_patches\cef_patch_find_vs2019_tools.diff
file that was the problem from the ignore file. So that should be ok.
I do not have a tools\msvs_env.bat
folder or file though. Should I be creating this myself as I don't see it in the repo root or there is no tools
folder in the repo either. There is also no mention of this batch file in the documentation.
If I need to crate this file myself, is there template I can use or some guidance?
Also, for clarity, VAR_CEF_BUILD_MOUNT_VOL_NAME should be set to the actual volume name that Azure created for this VM? That way builds can be resumed if failed?
Thanks, Scott
Hi @mitchcapper hoping you could help clarify the above reply of mine. I would like to try building again but need more information regarding that batch file and the mount vol name. Thanks again.
I have tested a few CEF version and so far have yet to have this issue any more. Please let me know if you hit it still with the latest code.
Hi @mitchcapper i am trying to build latest version and facing the same issue. is there any new config or patch changed for VS.
Here is my version.ps1
$VAR_CHROME_BRANCH="5304"; $VAR_CEFSHARP_VERSION="107.1.40"; $VAR_CEFSHARP_BRANCH="cefsharp/107"; $VAR_BASE_DOCKER_FILE="mcr.microsoft.com/windows/servercore:ltsc2019" $VAR_DUAL_BUILD="0"; #set to 1 to build all arches together, mainly to speed up linking which is single threaded, note may need excess ram. $VAR_BUILD_ARCHES="x86 x64 arm64"; $VAR_GN_DEFINES=""; $VAR_CEF_BUILD_MOUNT_VOL_NAME="cefbuild_slaci"; #force using this volume for building, allows resuming MUST BE LOWER CASE $VAR_GN_ARGUMENTS="--ide=vs2019 --sln=cef --filters=//cef/"; $VAR_GYP_DEFINES=""; $VAR_CEF_BUILD_ONLY=$false;#Only build CEF do not build cefsharp or the cef-binary. $VAR_CEF_USE_BINARY_PATH=""; #If you want to use existing CEF binaries point this to a local folder where the cef_binary.zip files are. It will skip the long CEF build step then but still must make the VS container for the cefsharp building. Note will copy a dockerfile into this folder. $VAR_REMOVE_VOLUME_ON_SUCCESSFUL_BUILD=$true; $VAR_CEF_BINARY_EXT="zip"; #Can be zip,tar.bz2, 7z Generally do not change this off of Zip unless you are supplying your own binaries using $VAR_CEF_USE_BINARY_PATH above, and they have a different extension, will try to work with the other formats however $VAR_CEF_SAVE_SOURCES="0"; #normally sources are deleted before finishing the CEF build step. Set to 1 to create a /code/sources.zip archive that has them (note it is left in docker image, must use docker cp to copy it out, it is also around 30GB). $VAR_CEF_VERSION_STR="auto"; #can set to "3.3239.1723" or similar if you have multiple binaries that Docker_cefsharp might find $VAR_HYPERV_MEMORY_ADD="--memory=30g"; #only matters if using HyperV, Note your swap file alone must be this big or able to grow to be this big, 30G is fairly safe for single build will need 60G for dual build. if ($false){ #Sample 106 overrides $VAR_CHROME_BRANCH="5304"; $VAR_CEFSHARP_VERSION="107.1.40"; $VAR_CEFSHARP_BRANCH="master"; }
Error:
Generating CEF project files...
Creating C:\code\chromium_git\chromium\src\out\Debug_GN_x64 directory.
ERROR at //build/config/compiler/compiler.gni:314:3: Assertion failed.
assert(
^-----
Can't do non-component debug builds at symbol_level=2 without use_debug_fission=true
See //build/config/compiler/compiler.gni:315:7:
symbol_level != 2 || current_toolchain != default_toolchain ||
^-------------------------------------------------------------
This is where it was set.
See //BUILD.gn:12:1: whence it was imported.
import("//build/config/compiler/compiler.gni")
^--------------------------------------------
Traceback (most recent call last):
File "tools\gclient_hook.py", line 146, in
1
Running: c:/code/depot_tools/ninja.exe -C out/Release_GN_x86 cefclient in C:\code\chromium_git\chromium\src
ninja: Entering directory out/Release_GN_x86' ninja: fatal: chdir to 'out/Release_GN_x86' - No such file or directory Running: c:/code/depot_tools/ninja.exe -C out/Release_GN_x64 cefclient in C:\code\chromium_git\chromium\src ninja: fatal: chdir to 'out/Release_GN_x64' - No such file or directory ninja: Entering directory
out/Release_GN_x64'
Running: c:/code/depot_tools/ninja.exe -C out/Release_GN_arm64 cefclient in C:\code\chromium_git\chromium\src
ninja: fatal: chdir to 'out/Release_GN_arm64' - No such file or directory
ninja: Entering directory `out/Release_GN_arm64'
appreciate your help in this.
Hello all. My first attempt to do the Docker build method and the build process seemed to be going smooth for a while so I stepped away. Upon return to check status I got the below error. Not sure what it means or is related to. I'm hoping for some guidance.
My goal is to build CefSharp for WinForms with the
proprietary_codecs=true
option set so the browser can goto YouTube and be able to play videos there.My version.ps1 used
Thank you!