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

Don't overwrite binary logs #66559

Merged
merged 8 commits into from
Jan 26, 2023
Merged

Don't overwrite binary logs #66559

merged 8 commits into from
Jan 26, 2023

Conversation

jaredpar
Copy link
Member

Several of our legs were calling build.ps1 -binaryLog in a row and that re-uses the binary log file name which causes an overwrite. This change allows us to specify the name and adds a warning if we do accidentally overwrite in the future.

@jaredpar
Copy link
Member Author

@dotnet/roslyn-infrastructure PTAL

@@ -166,13 +168,21 @@ function Process-Arguments() {
$script:applyOptimizationData = $false
}

if ($binaryLogName -ne "") {
$script:binaryLog = $true
Copy link
Member Author

Choose a reason for hiding this comment

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

Initially I required specifying both options so -binaryLog -binaryLogName "Build.binlog" but that just looked too verbose to me. Decided it was concise to allow -binaryLogName to imply -binaryLog

Several of our legs were calling `build.ps1 -binaryLog` in a row and
that re-uses the binary log file name which causes an overwrite. This
change allows us to specify the name and adds a warning if we do
accidentally overwrite in the future.
333fred
333fred previously approved these changes Jan 26, 2023
eng/build.ps1 Outdated Show resolved Hide resolved
@333fred 333fred dismissed their stale review January 26, 2023 19:10

Changes pushed

eng/build.ps1 Outdated Show resolved Hide resolved
@@ -180,7 +180,7 @@ function Process-Arguments() {
}

if ($binaryLog -and ($binaryLogName -eq "")) {
$binaryLogName = "Build.binlog"
$script:binaryLogName = "Build.binlog"
Copy link
Member

Choose a reason for hiding this comment

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

I'm scared.

Copy link
Member Author

Choose a reason for hiding this comment

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

Well because you asked ...

It's because when powershell reads a variable it will check function scope, then script scope. But if you write a variable it will write it in the function scope, even if one exists at script scope. So you need to be very explicit that you're writing a script scoped variable here.

Copy link
Member

Choose a reason for hiding this comment

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

Should the $binaryLogName just above be $script:binaryLogName as well then?

Copy link
Member

Choose a reason for hiding this comment

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

And the one on line 228?

Copy link
Member Author

Choose a reason for hiding this comment

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

The uses on 182 are reads. Those will fall back to script scope. Line 228 is creating a new variable $binaryLogPath which is intentionally function level scope.

Why don't we always use script: when accessing script variables and instead rely on fallback rules? I don't have a good argument for that other than that's just kinda how it's written in a lot of cases. It's like asking why we require this. for extension methods but not for normal instance methods.

@@ -207,7 +207,7 @@ stages:
- src/Compilers/*
- src/Dependencies/*

- job: Correctness_Build_Artifacts
- job: Correctness_Build_Artifacts
Copy link
Member Author

Choose a reason for hiding this comment

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

Well that's why the job hasn't started yet ... invalid YML

@jaredpar
Copy link
Member Author

jaredpar commented Jan 26, 2023

The correctness legs have all passed. Force merging so we can unblock the rest of our active PRs.

@jaredpar jaredpar merged commit 66cf7ab into dotnet:main Jan 26, 2023
@jaredpar jaredpar deleted the logs branch January 26, 2023 23:08
@ghost ghost added this to the Next milestone Jan 26, 2023
@Cosifne Cosifne modified the milestones: Next, 17.6 P1 Jan 31, 2023
allisonchou pushed a commit to allisonchou/roslyn that referenced this pull request Mar 20, 2023
* Don't overwrite binary logs

Several of our legs were calling `build.ps1 -binaryLog` in a row and
that re-uses the binary log file name which causes an overwrite. This
change allows us to specify the name and adds a warning if we do
accidentally overwrite in the future.

* enable trace for diff issue

* Work around NuGet static graph restore bug

NuGet/Home#12373
@genlu genlu mentioned this pull request Mar 20, 2023
dibarbet pushed a commit that referenced this pull request Apr 19, 2023
* Don't overwrite binary logs

Several of our legs were calling `build.ps1 -binaryLog` in a row and
that re-uses the binary log file name which causes an overwrite. This
change allows us to specify the name and adds a warning if we do
accidentally overwrite in the future.

* enable trace for diff issue

* Work around NuGet static graph restore bug

NuGet/Home#12373
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants