This repository was archived by the owner on Oct 13, 2023. It is now read-only.
[19.03 backport] Builder: fix "COPY --from" to non-existing directory on Windows [ENGCORE-935]#315
Merged
andrewhsu merged 2 commits intodocker-archive:19.03from Aug 8, 2019
Conversation
Member
Author
Member
Author
|
Ah, failing, because #313 isn't merged yet |
This function changed to the correct working directory before starting the tests (which is the same as on Linux), however the `ProcessStartInfo` process does not inherit this working directory, which caused Windows tests to be running with a different working directory as Linux (causing files used in tests to not be found). From the documentation; https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.processstartinfo.workingdirectory?view=netframework-4.8 > When `UseShellExecute` is `true`, the fully qualified name of the directory that contains > the process to be started. When the `UseShellExecute` property is `false`, the working > directory for the process to be started. The default is an empty string (`""`). This patch sets the `ProcessStartInfo.WorkingDirectory` to the correct working directory before starting the process. Signed-off-by: Sebastiaan van Stijn <github@gone.nl> (cherry picked from commit 6ae46ae) Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This fixes a regression introduced in 6d87f19, causing `COPY --from` to fail if the target directory does not exist: ``` FROM mcr.microsoft.com/windows/servercore:ltsc2019 as s1 RUN echo "Hello World" > /hello FROM mcr.microsoft.com/windows/servercore:ltsc2019 COPY --from=s1 /hello /hello/another/world ``` Would produce an error: ``` Step 4/4 : COPY --from=s1 /hello /hello/another/world failed to copy files: mkdir \\?: The filename, directory name, or volume label syntax is incorrect. ``` The cause for this was that Go's `os.MkdirAll()` does not support/detect volume GUID paths (`\\?\Volume{dae8d3ac-b9a1-11e9-88eb-e8554b2ba1db}\hello\another}`), and as a result attempted to create the volume as a directory (`\\?`), causing it to fail. This patch replaces `os.MkdirAll()` with our own `system.MkdirAll()` function, which is capable of detecting GUID volumes. Signed-off-by: Sebastiaan van Stijn <github@gone.nl> (cherry picked from commit 5858a99) Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
fe070fa to
ff0a0e3
Compare
Member
Author
|
#313 was merged; rebased this PR (should go green now) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
backport of:
Run-IntegrationTests(): set working directory for test suiteCOPY --fromto non-existing directory on Windowsfixes docker/for-win#4349
built on top of moby#39698
This fixes a regression introduced in 6d87f19 (moby#38599),
causing
COPY --fromto fail if the target directory does not exist:Would produce an error:
The cause for this was that Go's
os.MkdirAll()does not support/detect volume GUID paths(
\\?\Volume{dae8d3ac-b9a1-11e9-88eb-e8554b2ba1db}\hello\another}), and as a resultattempted to create the volume as a directory (
\\?), causing it to fail.This patch replaces
os.MkdirAll()with our ownsystem.MkdirAll()function, whichis capable of detecting GUID volumes.
- How to verify it
To verify (on Linux; don't know the equivalent on Windows, LOL):
- Description for the changelog
- A picture of a cute animal (not mandatory but encouraged)