adamrehn / ue4-docker

Windows and Linux containers for Unreal Engine 4
https://docs.adamrehn.com/ue4-docker/
MIT License
787 stars 174 forks source link

Tracking Windows buildkit required features #365

Open junglie85 opened 1 week ago

junglie85 commented 1 week ago

Experimental Windows support was released in version 0.13.0 of buildkit and details of how to use are in a blog entry.

This is a great step on the way to being able to unify Windows and Linux build processes.

What are the missing features in buildkit that are needed before unification can happen? Perhaps we could track them in this issue?

Required features:

Nice to have features:

slonopotamus commented 1 week ago

I'm not sure we want to directly call buildkitd. Instead, it would be much more convenient if Windows + buildkit support was implemented for docker buildx build (that we already use and would just need to adjust our code a little: https://github.com/moby/moby/blob/v27.3.1/builder/builder-next/executor_nolinux.go#L25)

TBBle commented 1 week ago

Well, then we can mark down "integration into buildx" as an example of a feature we're waiting for, which is mostly in the moby builder-next support, or alternatively if someone gets the docker-container or one of the remote drivers working, that'd work too.

Off-hand, the only other thing that we care about that is new in buildx is the --secret flag, i.e. https://github.com/moby/buildkit/issues/5273 says that's not available yet, and AFAIR that's our primary motivator for using buildx/BuildKit.

slonopotamus commented 1 week ago

the only other thing that we care about that is new in buildx is the --secret flag

We also care about cache-mounts that only work with buildkit.

TBBle commented 1 week ago

Good point. As it happens, that's the same ticket, I suspect, in the general sense of "Get everything in https://github.com/moby/buildkit/blob/master/solver/llbsolver/mounts/mount.go working on WIndows". I'm not sure how cache mounts work at the implementation level, but all the other mounts in that file currently utilise tmpfs in some way or other, and we don't have a Windows equivalent for that AFAIK.

slonopotamus commented 1 week ago

I believe cache mounts are just binds.

junglie85 commented 1 week ago

I'm not sure we want to directly call buildkitd.

I'm hopeful that longer term this wouldn't be needed. But I don't see why ue4-docker would need to directly call buildkitd. Until buildkit is better integrated into Docker on Windows, starting containerd and buildkitd, and creating a builder could be a pre-requesite to running ue4-dockeer.

the only other thing that we care about that is new in buildx is the --secret flag, i.e. https://github.com/moby/buildkit/issues/5273

This is probably a bigger blocker, given the statement that they don't plan to implement this until the classic builder has feature parity.

I believe cache mounts are just binds.

I can't find confirmation of this in the docs. @slonopotamus do you know where this can be confirmed?