-
Notifications
You must be signed in to change notification settings - Fork 8.3k
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
Fix for missing CopyComplete files in TerminalConnection.vcxproj #11804
Conversation
…ection, because vcpkg never writes it.
@check-spelling-bot ReportUnrecognized words, please review:
Previously acknowledged words that are now absentcarlos dpg sid SPACEBAR Unregister Urxvt vcvarsall xIcon yIcon zamoraTo accept these unrecognized words as correct (and remove the previously acknowledged and now absent words), run the following commands... in a clone of the git@github.com:microsoft/terminal.git repository
✏️ Contributor please read thisBy default the command suggestion will generate a file named based on your commit. That's generally ok as long as you add the file to your commit. Someone can reorganize it later.
If the listed items are:
See the 🔬 You can test your commits without appending to a PR by creating a new branch with that extra change and pushing it to your fork. The check-spelling action will run in response to your push -- it doesn't require an open pull request. By using such a branch, you can limit the number of typos your peers see you make. 😉 🗜️ If you see a bunch of garbageIf it relates to a ... well-formed patternSee if there's a pattern that would match it. If not, try writing one and adding it to a Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines. Note that patterns can't match multiline strings. binary-ish stringPlease add a file path to the File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.
|
Hello @zadjii-msft! Because this pull request has the p.s. you can customize the way I help with merging this pull request, such as holding this pull request until a specific person approves. Simply @mention me (
|
I'm working on making the FastUpToDate check in Vs work for the Terminal project. This is one of a few PRs in this area. FastUpToDate lets vs check quickly determine that it doesn't need to do anything for a given project. However, a few of our projects don't produce all the right artifacts, or check too many things, and this eventually causes the `wapproj` to rebuild, EVERY TIME YOU F5 in VS. This third PR deals with the Actual fast up to date check for the CascadiaPackage.wapproj. When #11804, #11805 and this PR are all merged, you should be able to just F5 the Terminal in VS, and then change NOTHING, and F5 it again, without doing a build at all. The wapproj `GetResolvedWinMD` target tries to get a winmd from every cppwinrt executable we put in the package. But we DON'T produce a winmd. This makes the FastUpToDate check fail every time, and leads to the whole wapproj build running even if you're just f5'ing the package. EVEN AFTER A SUCCESSFUL BUILD. Setting GenerateWindowsMetadata=false is enough to tell the build system that we don't produce one, and get it off our backs. ### teams chat where we figured this out [3:38 PM] Dustin Howett however, that's not the only thing that "GetTargetPath" checks. [3:38 PM] Dustin Howett oh yeah more info: wapproj calls GetTargetPath on all projects it references [3:38 PM] Dustin Howett when it calls GTP on WindowsTerminal.vcxproj it is getting back a winmd (!) [3:39 PM] Dustin Howett here's the magic [3:39 PM] Dustin Howett ![image](https://user-images.githubusercontent.com/18356694/142945542-74734836-20d8-4f50-bf3a-be4e1170ae13.png) [3:39 PM] Dustin Howett it checks if any Link items specify GenerateWindowsMetadata ![image](https://user-images.githubusercontent.com/18356694/142945593-fd232243-0175-4653-8c34-cdc364a16031.png)
🎉 Handy links: |
I'm working on making the FastUpToDate check in Vs work for the Terminal project. This is one of a few PRs in this area.
FastUpToDate lets vs check quickly determine that it doesn't need to do anything for a given project.
However, a few of our projects don't produce all the right artifacts, or check too many things, and this eventually causes the
wapproj
to rebuild, EVERY TIME YOU F5 in VS.This first PR deals with the
.copycomplete
file inobj\x64\debug\terminalconnection\
. Below are my verbatim notes, which led to the solution in this PR.Problem 1 ✅
There were missing
.copycomplete
files across the repo.UPDATE: checking out main, and building again - the
.copycomplete
s are gone. So that's something that can be improved.The only place I could find a reference was in
"obj\x64\Debug\TerminalConnection\TerminalConnection.vcxproj.FileListAbsolute.txt"
, which will get updated if you remove the line from that file (but no one seemingly writes it or mentiones it in the log)Deleting
bin\x64\Debug\TerminalConnection\cpprest142_2_10d.dll
then building the project did copy the file, but it didn't touch the copycomplete. Weird.Why does
TerminalConnection
think it needs thisMicrosoft.Terminal.Settings.Model.Lib
have oneMicrosoft.Terminal.Control*
NOT have oneThis file is a
@(CopyUpToDateMarker)
The target
_CopyFilesMarkedCopyLocal
touches@(CopyUpToDateMarker)
, when:"'@(ReferencesCopiedInThisBuild)' != ''
and'$(WroteAtLeastOneFile)' == 'true'"
In out build output:
WroteAtLeastOneFile
should be true, when it's currently false. That looks like it's set to true when the file does get copied, wheich did't happen because the copy was skipped."C:\Users\migrie\dev\public\terminal\bin\x64\Debug\TerminalConnection\cpprest142_2_10d.dll"
to file"C:\Users\migrie\dev\public\terminal\bin\x64\Debug\TerminalConnection\cpprest142_2_10d.dll"
THESE ARE THE SAME FILE.
@(ReferenceCopyLocalPaths)
is filled with the file already?!AppLocalFromInstalled
is the only other thing that referencescpprest142_2_10d.dll
.cpprest142_2_10d.dll
, then_CopyFilesMarkedCopyLocal
still evaluates the Touch condition as false, and doesn't touch it.deployBinary()
function inpackages\vcpkg-cpprestsdk.2.10.14\scripts\buildsystems\msbuild\applocal.ps1
does the actual job of copying the file. It copies it outside of MsBuild, which prevents MsBuild from copying it, and now MsBuild thinks it shouldn't write the.copycomplete
file itself.