Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Drop engines older than 4.27 #370

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ The ue4-docker Python package contains a set of Dockerfiles and accompanying bui

Key features include:

- The six most recent versions of the Unreal Engine are supported (currently Unreal Engine 4.26 and newer).
- The six most recent versions of the Unreal Engine are supported (currently Unreal Engine 4.27 and newer).
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This patch makes it 7 versions. Perhaps we just say "Six most recent plus 4.27-plus" (or whatever the official name for that 4.27-plus LTS branch is...) That's assuming we'll keep 4.27-plus support but drop 5.0 support when 5.6 is released.

- Both Windows containers and Linux containers are supported.
- Building and packaging Unreal Engine projects is supported.
- Running automation tests is supported.
Expand Down
34 changes: 9 additions & 25 deletions docs/advanced-build-options.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ For example:
[source,shell]
----
# Excludes both debug symbols and template projects
ue4-docker build 4.21.2 --exclude debug --exclude templates
ue4-docker build 4.27.0 --exclude debug --exclude templates
----

=== Enabling system resource monitoring during builds
Expand All @@ -78,19 +78,19 @@ You can also use the `-interval` flag to override the default interval of 20 sec
[source,shell]
----
# Logs system resource levels every 20 seconds
ue4-docker build 4.24.2 --monitor
ue4-docker build 4.27.0 --monitor
----

[source,shell]
----
# Logs system resource levels every 20 seconds
ue4-docker build 4.24.2 --monitor
ue4-docker build 4.27.0 --monitor
----

[source,shell]
----
# Logs system resource levels every 5 seconds
ue4-docker build 4.24.2 --monitor -interval=5
ue4-docker build 4.27.0 --monitor -interval=5
----

[[exporting-generated-dockerfiles]]
Expand All @@ -103,19 +103,19 @@ You can use these flags like so:
[source,shell]
----
# Exports Dockerfiles for all images to the specified filesystem directory
ue4-docker build 4.25.4 -layout "/path/to/Dockerfiles"
ue4-docker build 4.27.0 -layout "/path/to/Dockerfiles"
----

[source,shell]
----
# Exports Dockerfiles for all images
ue4-docker build 4.25.4 -layout "/path/to/Dockerfiles"
ue4-docker build 4.27.0 -layout "/path/to/Dockerfiles"
----

[source,shell]
----
# Exports Dockerfiles for all images and combines them into a single Dockerfile
ue4-docker build 4.25.4 -layout "/path/to/Dockerfiles" --combine
ue4-docker build 4.27.0 -layout "/path/to/Dockerfiles" --combine
----

Exporting Dockerfiles is useful for debugging or contributing to the development of ue4-docker itself.
Expand Down Expand Up @@ -158,29 +158,13 @@ This includes the labels which specify the <<exclude-components,components exclu
This is useful when building a custom fork of the Unreal Engine to which the appropriate patches have already been applied, **but will break the build process when used with a version of the Unreal Engine that requires one or more patches**.
It is typically safer to disable individual patches using the specific flag for each patch instead of simply disabling everything:

- **`disable_release_patches`**: *(boolean)* disables the patches that ue4-docker ordinarily applies to versions of the Unreal Engine which are known to contain bugs, such as Unreal Engine 4.25.4. This will obviously break the build process when building these known broken releases, but will have no effect when building other versions of the Unreal Engine.
- **`disable_release_patches`**: *(boolean)* disables the patches that ue4-docker ordinarily applies to versions of the Unreal Engine which are known to contain bugs. This will obviously break the build process when building these known broken releases, but will have no effect when building other versions of the Unreal Engine.

- **`disable_windows_setup_patch`**: *(boolean)* prevents ue4-docker from patching `Setup.bat` under Windows to comment out the calls to the Unreal Engine prerequisites installer and UnrealVersionSelector, both of which are known to cause issues during the build process for Windows containers.

- **`disable_linker_fixup`**: *(boolean)* prevents ue4-docker from replacing the linker in the Unreal Engine's bundled toolchain with a symbolic link to the system linker under Linux.

- **`disable_example_platform_cleanup`**: *(boolean)* prevents ue4-docker from removing the `Engine/Platforms/XXX` directory that was introduced in Unreal Engine 4.24.0 and subsequently removed in Unreal Engine 4.26.0. This directory represents a "dummy" target platform for demonstration purposes, and the presence of this directory will typically break the build process.

- **`disable_ubt_patches`**: *(boolean)* disables the patches that ue4-docker ordinarily applies to fix bugs in UnrealBuildTool (UBT) under various versions of the Unreal Engine.

- **`disable_opengl_patch`**: *(boolean)* prevents ue4-docker from attempting to re-enable the OpenGL RHI under Linux for versions of the Unreal Engine in which it is present but deprecated.

- **`disable_buildgraph_patches`**: *(boolean)* disables the patches that ue4-docker ordinarily applies to the BuildGraph XML files used to create an Installed Build of the Unreal Engine.
These patches fix various bugs under both Windows and Linux across multiple versions of the Unreal Engine.

- **`disable_target_patches`**: *(boolean)* disables the patches that ue4-docker ordinarily applies to fix broken `PlatformType` fields for client and server targets in `BaseEngine.ini` under Unreal Engine versions where these values are set incorrectly.

- **`disable_unrealpak_copy`**: *(boolean)* prevents ue4-docker from ensuring the UnrealPak tool is correctly copied into Installed Builds of the Unreal Engine under Linux.
Some older versions of the Unreal Engine did not copy this correctly, breaking the functionality of created Installed Builds.

- **`disable_toolchain_copy`**: *(boolean)* prevents ue4-docker from ensuring the bundled clang toolchain is correctly copied into Installed Builds of the Unreal Engine under Linux.
Some older versions of the Unreal Engine did not copy this correctly, breaking the functionality of created Installed Builds.

== Windows-specific options

[[windows-base-tag]]
Expand All @@ -197,7 +181,7 @@ If you are building images with the intention of subsequently running them under

[source,shell]
----
ue4-docker build 4.20.3 -basetag=ltsc2016 # Uses Windows Server 2016 (Long Term Support Channel)
ue4-docker build 4.27.0 -basetag=ltsc2019 # Uses Windows Server 2019 (Long Term Support Channel)
----

For a list of supported base image tags, see the https://hub.docker.com/r/microsoft/windowsservercore/[Windows Server Core base image on Docker Hub].
Expand Down
4 changes: 2 additions & 2 deletions docs/ue4-docker-build.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ ue4-docker-build - build container image for a specific version of Unreal Engine
== Description

To build container images for a specific version of the Unreal Engine, simply specify the _version_ that you would like to build using full https://semver.org/[semver] syntax.
For example, to build Unreal Engine 4.20.3, run:
For example, to build Unreal Engine 4.27.0, run:

[source,shell]
----
ue4-docker build 4.20.3
ue4-docker build 4.27.0
----

You will be prompted for the Git credentials to be used when cloning the Unreal Engine GitHub repository (this will be the GitHub username and password you normally use when cloning <https://github.com/EpicGames/UnrealEngine>.
Expand Down
32 changes: 0 additions & 32 deletions src/ue4docker/dockerfiles/ue4-minimal/linux/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,6 @@ RUN python3 /tmp/set-changelist.py /home/ue4/UnrealEngine/Engine/Build/Build.ver
# Remove the .git directory to disable UBT `git status` calls and speed up the build process
RUN rm -rf /home/ue4/UnrealEngine/.git

{% if (not disable_all_patches) and (not disable_opengl_patch) %}
# Enable the OpenGL RHI for Engine versions where it is present but deprecated
COPY enable-opengl.py /tmp/enable-opengl.py
RUN python3 /tmp/enable-opengl.py /home/ue4/UnrealEngine/Engine/Config/BaseEngine.ini
{% endif %}

{% if (not disable_all_patches) and (not disable_buildgraph_patches) %}
COPY patch-filters-xml.py /tmp/patch-filters-xml.py
RUN python3 /tmp/patch-filters-xml.py /home/ue4/UnrealEngine/Engine/Build/InstalledEngineFilters.xml

# Patch the default settings in InstalledEngineBuild.xml and increase the output verbosity of the DDC generation step
COPY patch-build-graph.py /tmp/patch-build-graph.py
RUN python3 /tmp/patch-build-graph.py /home/ue4/UnrealEngine/Engine/Build/InstalledEngineBuild.xml /home/ue4/UnrealEngine/Engine/Build/Build.version
{% endif %}

# Ensure UBT is built before we create the Installed Build, since Build.sh explicitly sets the
# target .NET Framework version, whereas InstalledEngineBuild.xml just uses the system default,
# which can result in errors when running the built UBT due to the wrong version being targeted
Expand All @@ -54,23 +39,6 @@ RUN ./Engine/Build/BatchFiles/Linux/Build.sh UnrealVersionSelector Linux Shippin
RUN cp /home/ue4/UnrealEngine/LocalBuilds/Engine/Linux/Engine/Build/InstalledBuild.txt /home/ue4/UnrealEngine/Engine/Build/InstalledBuild.txt && \
./Engine/Binaries/Linux/UnrealVersionSelector-Linux-Shipping -register -unattended

{% if (not disable_all_patches) and (not disable_target_patches) %}
# Ensure Client and Server targets have their `PlatformType` field set correctly in BaseEngine.ini
COPY fix-targets.py /tmp/fix-targets.py
RUN python3 /tmp/fix-targets.py /home/ue4/UnrealEngine/LocalBuilds/Engine/Linux/Engine/Config/BaseEngine.ini
{% endif %}

{% if (not disable_all_patches) and (not disable_unrealpak_copy) %}
# Some versions of the Engine fail to include UnrealPak in the Installed Build, so copy it manually
RUN cp ./Engine/Binaries/Linux/UnrealPak ./LocalBuilds/Engine/Linux/Engine/Binaries/Linux/UnrealPak
{% endif %}

{% if (not disable_all_patches) and (not disable_toolchain_copy) %}
# Ensure the bundled toolchain included in 4.20.0 and newer is copied to the Installed Build
COPY --chown=ue4:ue4 copy-toolchain.py /tmp/copy-toolchain.py
RUN python3 /tmp/copy-toolchain.py /home/ue4/UnrealEngine
{% endif %}

{% if enable_ushell %}
# Ensure ushell is copied to the Installed Build
RUN rm -rf ./LocalBuilds/Engine/Linux/Engine/Extras/ushell && \
Expand Down
43 changes: 0 additions & 43 deletions src/ue4docker/dockerfiles/ue4-minimal/linux/copy-toolchain.py

This file was deleted.

19 changes: 0 additions & 19 deletions src/ue4docker/dockerfiles/ue4-minimal/linux/enable-opengl.py

This file was deleted.

23 changes: 0 additions & 23 deletions src/ue4docker/dockerfiles/ue4-minimal/linux/fix-targets.py

This file was deleted.

57 changes: 0 additions & 57 deletions src/ue4docker/dockerfiles/ue4-minimal/linux/patch-build-graph.py

This file was deleted.

16 changes: 0 additions & 16 deletions src/ue4docker/dockerfiles/ue4-minimal/windows/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,6 @@ RUN python C:\set-changelist.py C:\UnrealEngine\Engine\Build\Build.version %CHAN
# Remove the .git directory to disable UBT `git status` calls and speed up the build process
RUN if exist C:\UnrealEngine\.git rmdir /s /q C:\UnrealEngine\.git

{% if (not disable_all_patches) and (not disable_buildgraph_patches) %}
# Patch out problematic entries in InstalledEngineFilters.xml introduced in UE4.20.0
COPY patch-filters-xml.py C:\patch-filters-xml.py
RUN python C:\patch-filters-xml.py C:\UnrealEngine\Engine\Build\InstalledEngineFilters.xml

# Patch out problematic entries in InstalledEngineBuild.xml introduced in UE4.23.0
COPY patch-build-graph.py C:\patch-build-graph.py
RUN python C:\patch-build-graph.py C:\UnrealEngine\Engine\Build\InstalledEngineBuild.xml
{% endif %}

# Create an Installed Build of the Engine
WORKDIR C:\UnrealEngine
RUN .\Engine\Build\BatchFiles\RunUAT.bat BuildGraph `
Expand All @@ -37,12 +27,6 @@ RUN .\Engine\Build\BatchFiles\RunUAT.bat BuildGraph `
(if exist C:\UnrealEngine\LocalBuilds\InstalledDDC rmdir /s /q C:\UnrealEngine\LocalBuilds\InstalledDDC) && `
rmdir /s /q C:\UnrealEngine\Engine

{% if (not disable_all_patches) and (not disable_target_patches) %}
# Ensure Client and Server targets have their `PlatformType` field set correctly in BaseEngine.ini
COPY fix-targets.py C:\fix-targets.py
RUN python C:\fix-targets.py C:\UnrealEngine\LocalBuilds\Engine\Windows\Engine\Config\BaseEngine.ini
{% endif %}

# Split out components (DDC, debug symbols, template projects) so they can be copied into the final container image as separate filesystem layers
COPY split-components.py C:\split-components.py
RUN python C:\split-components.py C:\UnrealEngine\LocalBuilds\Engine\Windows C:\UnrealEngine\Components
Expand Down
23 changes: 0 additions & 23 deletions src/ue4docker/dockerfiles/ue4-minimal/windows/fix-targets.py

This file was deleted.

Loading
Loading