Unity Linux, CircleCI and WebGL Build
Hello,
I am trying to automate a project build with CircleCI 2.0, using a docker container with Ubuntu 16 and the latest version of Unity installed. It works on my machine (LOL), using the same container image, but it fails miserably on CircleCI. I have tried things like setting "Strip engine code" off, but the error is always the same. I suspect this may be related to disk space, but would anyone be able to advise on what else it could be? The only other difference that I'm seeing at the moment is that I am using Docker for mac, while Circle is probably using Docker for Linux?
Error:
DisplayProgressbar: Scripting Filename: python Arguments: "/opt/Unity/Editor/Data/PlaybackEngines/WebGLSupport/BuildTools/Emscripten/emcc" @"/root/repo/Assets/../Temp/emcc_arguments.resp" index: -1 Failed running python "/opt/Unity/Editor/Data/PlaybackEngines/WebGLSupport/BuildTools/Emscripten/emcc" @"/root/repo/Assets/../Temp/emcc_arguments.resp"
stdout: stderr:WARNING:root:--separate-asm works best when compiling to HTML. otherwise, you must yourself load the '.asm.js' file that is emitted separately, and must do so before loading the main '.js` filewrote symbol map file to /root/repo/Temp/StagingArea/Data/linkresult_asm/build.js.symbolsProcess PoolWorker-30:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-22:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-6:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-25:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-29:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-17:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-15:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-32:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-31:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-20:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-26:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-7:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-28:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-19:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-4:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-12:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-14:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-8:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-23:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-13:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-1:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-10:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-5:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-3:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-21:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-27:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-9:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-11:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-16:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-2:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-24:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipeProcess PoolWorker-18:Traceback (most recent call last): File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run self._target(self._args, *self._kwargs) File "/usr/lib/python2.7/multiprocessing/pool.py", line 122, in worker put((job, i, (False, wrapped))) File "/usr/lib/python2.7/multiprocessing/queues.py", line 392, in put return send(obj)IOError: [Errno 32] Broken pipe UnityEngine.DebugLogHandler:Internal_Log(LogType, String, Object) UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[]) UnityEngine.Logger:Log(LogType, Object) UnityEngine.Debug:LogError(Object) UnityEditor.WebGL.ProgramUtils:StartProgramChecked(ProcessStartInfo) (at /Users/builduser/buildslave/unity/build/PlatformDependent/WebGL/Extensions/Unity.WebGL.extensions/ProgramUtils.cs:46) UnityEditor.WebGL.WebGlBuildPostprocessor:EmscriptenLink(BuildPostProcessArgs, Boolean, String, String) (at /Users/builduser/buildslave/unity/build/PlatformDependent/WebGL/Extensions/Unity.WebGL.extensions/BuildPostprocessor.cs:408) UnityEditor.WebGL.WebGlBuildPostprocessor:LinkBuild(BuildPostProcessArgs) (at /Users/builduser/buildslave/unity/build/PlatformDependent/WebGL/Extensions/Unity.WebGL.extensions/BuildPostprocessor.cs:451) UnityEditor.WebGL.WebGlBuildPostprocessor:PostProcess(BuildPostProcessArgs) (at /Users/builduser/buildslave/unity/build/PlatformDependent/WebGL/Extensions/Unity.WebGL.extensions/BuildPostprocessor.cs:916) UnityEditor.PostprocessBuildPlayer:Postprocess(BuildTargetGroup, BuildTarget, String, String, String, Int32, Int32, BuildOptions, RuntimeClassRegistry, BuildReport) (at /home/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:272) UnityEditor.BuildPipeline:BuildPlayerInternalNoCheck(String[], String, String, BuildTargetGroup, BuildTarget, BuildOptions, Boolean) UnityEditor.BuildPipeline:BuildPlayerInternal(String[], String, String, BuildTargetGroup, BuildTarget, BuildOptions) (at /home/builduser/buildslave/unity/build/artifacts/generated/common/editor/BuildPipelineBindings.gen.cs:335) UnityEditor.BuildPipeline:BuildPlayer(String[], String, String, BuildTargetGroup, BuildTarget, BuildOptions) (at /home/builduser/buildslave/unity/build/artifacts/generated/common/editor/BuildPipelineBindings.gen.cs:232) UnityEditor.BuildPipeline:BuildPlayer(BuildPlayerOptions) (at /home/builduser/buildslave/unity/build/artifacts/generated/common/editor/BuildPipelineBindings.gen.cs:210) UnityEditor.BuildPipeline:BuildPlayer(String[], String, BuildTarget, BuildOptions) (at /home/builduser/buildslave/unity/build/artifacts/generated/common/editor/BuildPipelineBindings.gen.cs:204) WebGLBuilder:build() (at Assets/Editor/WebGLBuilder.cs:6)
(Filename: /Users/builduser/buildslave/unity/build/PlatformDependent/WebGL/Extensions/Unity.WebGL.extensions/ProgramUtils.cs Line: 46)
Exception: Failed building WebGL Player. at UnityEditor.WebGL.ProgramUtils.StartProgramChecked (System.Diagnostics.ProcessStartInfo p) [0x0015b] in /Users/builduser/buildslave/unity/build/PlatformDependent/WebGL/Extensions/Unity.WebGL.extensions/ProgramUtils.cs:48 at UnityEditor.WebGL.WebGlBuildPostprocessor.EmscriptenLink (BuildPostProcessArgs args, Boolean wasmBuild, System.String sourceFiles, System.String sourceFilesHash) [0x001cd] in /Users/builduser/buildslave/unity/build/PlatformDependent/WebGL/Extensions/Unity.WebGL.extensions/BuildPostprocessor.cs:408 at UnityEditor.WebGL.WebGlBuildPostprocessor.LinkBuild (BuildPostProcessArgs args) [0x0016b] in /Users/builduser/buildslave/unity/build/PlatformDependent/WebGL/Extensions/Unity.WebGL.extensions/BuildPostprocessor.cs:451 at UnityEditor.WebGL.WebGlBuildPostprocessor.PostProcess (BuildPostProcessArgs args) [0x002a7] in /Users/builduser/buildslave/unity/build/PlatformDependent/WebGL/Extensions/Unity.WebGL.extensions/BuildPostprocessor.cs:916 at UnityEditor.PostprocessBuildPlayer.Postprocess (BuildTargetGroup targetGroup, BuildTarget target, System.String installPath, System.String companyName, System.String productName, Int32 width, Int32 height, BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.BuildReporting.BuildReport report) [0x000d7] in /home/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:272 UnityEditor.BuildPipeline:BuildPlayerInternalNoCheck(String[], String, String, BuildTargetGroup, BuildTarget, BuildOptions, Boolean) UnityEditor.BuildPipeline:BuildPlayerInternal(String[], String, String, BuildTargetGroup, BuildTarget, BuildOptions) (at /home/builduser/buildslave/unity/build/artifacts/generated/common/editor/BuildPipelineBindings.gen.cs:335) UnityEditor.BuildPipeline:BuildPlayer(String[], String, String, BuildTargetGroup, BuildTarget, BuildOptions) (at /home/builduser/buildslave/unity/build/artifacts/generated/common/editor/BuildPipelineBindings.gen.cs:232) UnityEditor.BuildPipeline:BuildPlayer(BuildPlayerOptions) (at /home/builduser/buildslave/unity/build/artifacts/generated/common/editor/BuildPipelineBindings.gen.cs:210) UnityEditor.BuildPipeline:BuildPlayer(String[], String, BuildTarget, BuildOptions) (at /home/builduser/buildslave/unity/build/artifacts/generated/common/editor/BuildPipelineBindings.gen.cs:204) WebGLBuilder:build() (at Assets/Editor/WebGLBuilder.cs:6)
(Filename: /Users/builduser/buildslave/unity/build/PlatformDependent/WebGL/Extensions/Unity.WebGL.extensions/ProgramUtils.cs Line: 48)
Answer by wtanaka · Jan 19, 2019 at 12:01 AM
In my case, asm2wasm was simply using too much memory for CircleCI. I had a similar error that started once the project became too large and complicated.
Your answer
