Code Monkey home page Code Monkey logo

Comments (5)

mob-sakai avatar mob-sakai commented on June 30, 2024 2
REPOSITORY       TAG                   IMAGE ID       CREATED          SIZE
unityci/editor   dev                   ed64129acfe7   49 seconds ago   6.21GB
unityci/editor   2020.1.11f1-webgl-0   e10428a15532   5 days ago       6.2GB

It's small.

from docker.

mob-sakai avatar mob-sakai commented on June 30, 2024 1

GZip (in Unity 2020.1 or later)

Filename: gzip
Arguments: -9 --keep -S ".compressed" "/builds/gableroux/unity3d-gitlab-ci-example/Temp/StagingArea/Data/Output/Build/ExampleProjectName.data.gz"

  • The above command (i.e.gzip -9 --keep -S ".compressed" ".../ExampleProjectName.data.gz") will fail for the following reasons.
    • gzip: /data/logs/log01.log.gz already has .gz suffix -- unchanged
  • Workaround: add -f as default option for gzip
    • export GZIP=-f

Brotli (in all versions)

  • No module named pkg_resources
    • pkg_resources module is included in python-setuptools package.
    • Workaround: apt-get install python-setuptools
  • __bootstrap__ImportError: /root/.cache/Python-Eggs/Brotli-0.4.0-py2.7-macosx-10.10-x86_64.egg-tmp/brotli.so: invalid ELF header
    • Refer Brotli-0.4.0-py2.7-macosx-10.10-x86_64.egg instead of Brotli-0.4.0-py2.7-linux-x86_64.egg.
    • This reference is hard-coded in UnityEditor.WebGL.Extensions.dll, so we will need to copy or link the file.
    • Workaround: cp /opt/unity/Editor/Data/PlaybackEngines/WebGLSupport/BuildTools/Brotli/dist/Brotli-0.4.0-py2.7-linux-x86_64.egg /opt/unity/Editor/Data/PlaybackEngines/WebGLSupport/BuildTools/Brotli/dist/Brotli-0.4.0-py2.7-macosx-10.10-x86_64.egg

I'm testing the validity of these fixes.

ARG ediotrImage=unityci/editor:2020.1.11f1-webgl-0.9.0
FROM $ediotrImage

ENV GZIP=-f

RUN apt-get -q update \
  && apt-get -q install -y --no-install-recommends --allow-downgrades \
    python-setuptools \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/* \
  && cp \
    /opt/unity/Editor/Data/PlaybackEngines/WebGLSupport/BuildTools/Brotli/dist/Brotli-0.4.0-py2.7-linux-x86_64.egg \
    /opt/unity/Editor/Data/PlaybackEngines/WebGLSupport/BuildTools/Brotli/dist/Brotli-0.4.0-py2.7-macosx-10.10-x86_64.egg

from docker.

GabLeRoux avatar GabLeRoux commented on June 30, 2024

Using Brotli compression for webgl is also failing with following error:

Failed running python "/opt/unity/Editor/Data/PlaybackEngines/WebGLSupport/BuildTools/Brotli/python/bro.py" -o "/builds/gableroux/unity3d-gitlab-ci-example/Temp/StagingArea/Data/Output/Build/ExampleProjectName.data.br.compressed" -i "/builds/gableroux/unity3d-gitlab-ci-example/Temp/StagingArea/Data/Output/Build/ExampleProjectName.data.br" --comment "UnityWeb Compressed Content (brotli)"
stdout:
stderr:Traceback (most recent call last):  File "/opt/unity/Editor/Data/PlaybackEngines/WebGLSupport/BuildTools/Brotli/python/bro.py", line 8, in <module>    import brotli  File "build/bdist.macosx-10.10-x86_64/egg/brotli.py", line 7, in <module>  File "build/bdist.macosx-10.10-x86_64/egg/brotli.py", line 3, in __bootstrap__ImportError: No module named pkg_resources
UnityEngine.DebugLogHandler:Internal_Log(LogType, LogOption, 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/bokken/buildslave/unity/build/PlatformDependent/WebGL/Extensions/Unity.WebGL.extensions/ProgramUtils.cs:46)
UnityEditor.WebGL.WebGlBuildPostprocessor:CompressAndMarkBrotli(String) (at /Users/bokken/buildslave/unity/build/PlatformDependent/WebGL/Extensions/Unity.WebGL.extensions/BuildPostprocessor.cs:835)
UnityEditor.WebGL.WebGlBuildPostprocessor:CompressBuild(BuildPostProcessArgs) (at /Users/bokken/buildslave/unity/build/PlatformDependent/WebGL/Extensions/Unity.WebGL.extensions/BuildPostprocessor.cs:848)
UnityEditor.WebGL.WebGlBuildPostprocessor:PostProcess(BuildPostProcessArgs) (at /Users/bokken/buildslave/unity/build/PlatformDependent/WebGL/Extensions/Unity.WebGL.extensions/BuildPostprocessor.cs:920)
UnityEditor.Modules.DefaultBuildPostprocessor:PostProcess(BuildPostProcessArgs, BuildProperties&) (at /home/bokken/buildslave/unity/build/Editor/Mono/Modules/DefaultBuildPostprocessor.cs:27)
UnityEditor.PostprocessBuildPlayer:Postprocess(BuildTargetGroup, BuildTarget, String, String, String, Int32, Int32, BuildOptions, RuntimeClassRegistry, BuildReport) (at /home/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:324)
UnityEditor.BuildPipeline:BuildPlayerInternalNoCheck(String[], String, String, BuildTargetGroup, BuildTarget, BuildOptions, String[], Boolean)
UnityEditor.BuildPipeline:BuildPlayerInternal(String[], String, String, BuildTargetGroup, BuildTarget, BuildOptions, String[]) (at /home/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline.bindings.cs:399)
UnityEditor.BuildPipeline:BuildPlayer(String[], String, String, BuildTargetGroup, BuildTarget, BuildOptions, String[]) (at /home/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline.bindings.cs:298)
UnityEditor.BuildPipeline:BuildPlayer(BuildPlayerOptions) (at /home/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline.bindings.cs:272)
UnityEditor.BuildPipeline:BuildPlayer(String[], String, BuildTarget, BuildOptions) (at /home/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline.bindings.cs:267)
BuildCommand:PerformBuild() (at Assets/Scripts/Editor/BuildCommand.cs:181)

Updated issue description accordingly.

from docker.

mob-sakai avatar mob-sakai commented on June 30, 2024

Test results

I ran the following commands for log:

find . -name "7_Build project (GZip).txt" | sort | xargs -I {} grep -l '\(Build failed!\|CompressAndMarkGzip\)' {} > gzip_fails.txt
echo "GZip: `cat gzip_fails.txt | wc -l` versions failed"
find . -name "9_Build project (Brotli).txt" | sort | xargs -I {} grep -l '\(Build failed!\|CompressAndMarkBrotli\)' {} > brotli_fails.txt
echo "Brotli: `cat brotli_fails.txt | wc -l` versions failed"

Before the modification (0.9.0, 142 Unity versions)

Results: (NOTE) In Unity 2018.4.15 or earlier, even if the brotli fails, the build will be marked as successful.
gzip_fails.txt
brotli_fails.txt

GZip:       20 versions failed
Brotli:     142 versions failed
  • GZip failed in 2020.1.x, 2020.2.0 and 2020.2.1.
  • Brotli failed in all versions.

After the modification (142 Unity versions)

Results

GZip:       0 versions failed
Brotli:     0 versions failed

Conclusions

I think the modification is valid. I am going to create a PR.

from docker.

webbertakken avatar webbertakken commented on June 30, 2024

Great work!

I think the modification is valid. I am going to create a PR.

Yea sounds good. Could you please include the size difference for the image?

from docker.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.