Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Run IBCMerge on Linux build#36763

Merged
MichalStrehovsky merged 2 commits into
dotnet:masterfrom
MichalStrehovsky:ibcMerge
Apr 11, 2019
Merged

Run IBCMerge on Linux build#36763
MichalStrehovsky merged 2 commits into
dotnet:masterfrom
MichalStrehovsky:ibcMerge

Conversation

@MichalStrehovsky
Copy link
Copy Markdown
Member

  • Restores IBC data for both Linux and Windows on all platforms
  • Chooses the right IBC data based on the target OS
  • When target OS isn't anything specific (like, e.g. System.Linq and other assemblies that are not OS specific), embeds Windows IBC data

* Restores IBC data for both Linux and Windows on all platforms
* Chooses the right IBC data based on the target OS
* When target OS isn't anything specific (like, e.g. System.Linq and other assemblies that are not OS specific), embeds Windows IBC data
@MichalStrehovsky
Copy link
Copy Markdown
Member Author

Cc @sergiy-k @RussKeldorph @brianrob

Copy link
Copy Markdown
Member

@ericstj ericstj left a comment

Choose a reason for hiding this comment

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

Looks reasonable. Just double check your condition.

Comment thread eng/codeOptimization.targets Outdated
@Wraith2
Copy link
Copy Markdown
Contributor

Wraith2 commented Apr 10, 2019

What is IBC data?

@filipnavara
Copy link
Copy Markdown
Member

What is IBC data?

Citing @MichalStrehovsky from Gitter: "IBC = Instrumented Block Counts. Basically, profile guided optimizations for managed code."

@MichalStrehovsky MichalStrehovsky merged commit ef2ee12 into dotnet:master Apr 11, 2019
@MichalStrehovsky MichalStrehovsky deleted the ibcMerge branch April 11, 2019 12:08
@ViktorHofer
Copy link
Copy Markdown
Member

This broke the official builds: https://dnceng.visualstudio.com/internal/_build/results?buildId=151325

@MichalStrehovsky
Copy link
Copy Markdown
Member Author

Well that's interesting.

/__w/1/s/.packages/microsoft.dotnet.arcade.sdk/1.0.0-beta.19207.1/tools/OptimizationData.targets(176,5): error MSB3073: The command ""/__w/1/s/.dotnet/dotnet" exec "/__w/1/s/.packages/microsoft.dotnet.ibcmerge/5.0.6-beta.19203.1/tools/netcoreapp2.0/ibcmerge.dll" -q -f  -minify -delete -mo "/__w/1/s/artifacts/tmp/netcoreapp-Release/OptimizedAssemblies/f5846cd9-09cb-4bff-80f4-5a9cc2e9169e" "/__w/1/s/artifacts/ibc/optimization.windows_nt-x64.IBC.CoreFx/data/System.Collections.NonGeneric.dll/System.Collections.NonGeneric.ibc"" exited with code 129. [/__w/1/s/src/System.Collections.NonGeneric/src/System.Collections.NonGeneric.csproj]
  The application to execute does not exist: '/__w/1/s/.packages/microsoft.dotnet.ibcmerge/5.0.6-beta.19203.1/tools/netcoreapp2.0/ibcmerge.dll'

The way this is supposed to work (and I actually tested this on both Windows and Linux in both configs) is that there are two options:

  1. Ibcmerge.dll was not restored (because we didn't restore the internal tools). We don't run it and just print a message with the arguments we would use to invoke it.
  2. Ibcmerge.dll exists. We run it.

Obviously, there's a secret option 3: Ibcmerge was restored on the official build machine where ibcmerge.dll has a quantum state. This does not spark joy.

MichalStrehovsky added a commit to MichalStrehovsky/corefx that referenced this pull request Apr 11, 2019
@MichalStrehovsky
Copy link
Copy Markdown
Member Author

Rollback in #36791.

stephentoub pushed a commit that referenced this pull request Apr 11, 2019
@ericstj
Copy link
Copy Markdown
Member

ericstj commented Apr 11, 2019

/cc @safern looks like this is a problem with the internal tools restore on linux.

@ViktorHofer
Copy link
Copy Markdown
Member

Yes internal tools restore currently only works on Windows as we use nuget.exe in the yml step. Locally we use a crossplat solution. I will check what we can do here.

@safern
Copy link
Copy Markdown
Member

safern commented Apr 11, 2019

use a crossplat solution. I will check what we can do here.

I'm already in it... @chcosta is helping me set some service connections or an upstream in dnceng that uses the feed. Instead of using nuget.exe, I have changed it locally to use the .net core task to restore.

@sergiy-k
Copy link
Copy Markdown

Given that #36840 has been merged, can we try enabling IBCMerge on Linux again?

@ViktorHofer
Copy link
Copy Markdown
Member

Yes 👍

MichalStrehovsky added a commit to MichalStrehovsky/corefx that referenced this pull request Apr 16, 2019
@MichalStrehovsky
Copy link
Copy Markdown
Member Author

#36924 has the revert of the revert.

@karelz karelz added this to the 3.0 milestone May 4, 2019
picenka21 pushed a commit to picenka21/runtime that referenced this pull request Feb 18, 2022
* Restores IBC data for both Linux and Windows on all platforms
* Chooses the right IBC data based on the target OS
* When target OS isn't anything specific (like, e.g. System.Linq and other assemblies that are not OS specific), embeds Windows IBC data

Commit migrated from dotnet/corefx@ef2ee12
picenka21 pushed a commit to picenka21/runtime that referenced this pull request Feb 18, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants