Remove date number from dev build version - #1835

Merged
safern merged 9 commits into
dotnet:masterfrom
dagood:rm-date
Jan 24, 2020
Merged

Remove date number from dev build version#1835
safern merged 9 commits into
dotnet:masterfrom
dagood:rm-date

Conversation

@dagood

@dagooddagood commented Jan 16, 2020

Copy link
Copy Markdown
Member

Fixes: #1089

Comment threadeng/Versions.props
<MinorVersion>0</MinorVersion>
<PatchVersion>0</PatchVersion>
<!-- Always use shipping version instead of dummy version -->
<DotNetUseShippingVersions>true</DotNetUseShippingVersions>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can we leave this set to true when we're in an Official build? So that package versions are unique?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Awesome, arcade is ahead of me 😄

@dagood

Copy link
Copy Markdown
MemberAuthor

Getting errors in Libraries build--a lot of these:

.packages\microsoft.dotnet.build.tasks.packaging\5.0.0-beta.20063.2\build\Packaging.targets(1161,5): error : File Microsoft.Win32.Primitives, version 42.42.42.42 was included framework package Microsoft.Private.CoreFx.NETCoreApp/5.0.0-ci but that version is not considered inbox in package index F:\workspace_work\1\s\src\libraries\pkg\Microsoft.Private.PackageBaseline\packageIndex.json. Please add it with appropriate InboxOn entry for netcoreapp5.0 or suppress this message with PermitInbox suppression.

@safern

Copy link
Copy Markdown
Member

Getting errors in Libraries build--a lot of these:

Yeah, the assembly version was affected by this change and now it is getting arcade's 42.42.42.42 version... we need to figure out how to set it up so that it respects our AssemblyVersions.

@dagood

Copy link
Copy Markdown
MemberAuthor

Might be tricky, getting Arcade to produce date-based assembly versions but not use the date for the packages. Maybe condition DotNetUseShippingVersions so it's specifically on during certain parts of the build? Don't know if that'll work out.

Feel free to push to this PR if you have time to work on it (or make a new one, no real difference).

@dagood

Copy link
Copy Markdown
MemberAuthor

An alternative that fixes CI (but not dev build annoyances) is to pipe in a "non-official officialbuildid" so the date number stays constant throughout the course of the CI run.

@safern

Copy link
Copy Markdown
Member

We could also introduce an arcade property... something like UseAssemblyShippingVersions.

@safern

Copy link
Copy Markdown
Member

cc: @tmat@mmitche for discussion.

@safern

Copy link
Copy Markdown
Member

We could also introduce an arcade property... something like UseAssemblyShippingVersions.

Never mind I think we figured out the issue.

Comment threadsrc/libraries/Directory.Build.props Outdated
<Import Project="..\..\Directory.Build.props" />

<PropertyGroup>
<AssemblyVersion>5.0.0.0</AssemblyVersion>

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

This matches https://github.com/dotnet/corefx/pull/41723/files#diff-8b8f08ffbf7b863fb3700c1718eeb4cbR5, we should maybe use ProductVersion or Major/Minor/PatchVersion though.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

cc: @ericstj I think it makes sense to use any of the recommendations above.

@tmattmatJan 20, 2020

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Yes, we should not have the version specified in multiple places.
I'd use <AssemblyVersion>$(MajorVersion).$(MinorVersion).$(PatchVersion).0</AssemblyVersion> if you want to suppress defaulting to 42.42.42.42.

@tmattmatJan 20, 2020

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I'd be also nice to add a comment that explains why is this set here - something like (guessing) "The AssemblyVersion must match netcoreappM.N moniker. Whenever the version is updated we need to update the TFM as well.".

@dagood

Copy link
Copy Markdown
MemberAuthor

An alternative that fixes CI (but not dev build annoyances) is to pipe in a "non-official officialbuildid" so the date number stays constant throughout the course of the CI run.

To expand on this a bit (in case the assembly version fix doesn't work, or maybe something else breaks downstream), maybe we can keep DotNetUseShippingVersions as true, but set /p:_BuildNumber=$(BUILD_BUILDNUMBER) so that the version stays constant across the jobs.

@safern

Copy link
Copy Markdown
Member

That might be a good idea, the problem I see with that is that it doesn't solve the local live live issue of people having to rebuild libraries/coreclr if they want to build again the installer a day after they built libraries or coreclr.

@safern

Copy link
Copy Markdown
Member

It seems like the dependency to System.Private.CoreLib has the wrong version, I don't know if CoreLib also needs to be 5.0.0.0 or if we're calculating the dependency wrong. @ericstj might know.

C:\h\w\98B8088C\p\packageTest.targets(74,5): error : Assembly 'System.Runtime.Intrinsics.Experimental' has insufficient version for dependency 'System.Private.CoreLib' : 5.0.0.0 < 42.42.42.42. [C:\h\w\98B8088C\w\A0E70914\u\netcoreapp5.0\project.csproj]

@mmitche

Copy link
Copy Markdown
Member

What's the context here? I think I'm missing what the root of the issue is.

@dagood

Copy link
Copy Markdown
MemberAuthor

See #1089

@tmat

tmat commented Jan 20, 2020

Copy link
Copy Markdown
Member

@dagood Are there any customizations to versioning in dotnet/runtime repo that tweak the default Arcade versions or are there any parts of the repo that use something different than the versions Arcade sets? I don't see how PR validation spanning a day boundary could be a problem if the whole build used $(OfficialBuildId) to derive version numbers (which happens to be a date based number, but that's not a requirement). The build should not depend on current time in any way. If there is some part of the build that depends on current date/time that'd be a bug.

@dagood

dagood commented Jan 20, 2020

Copy link
Copy Markdown
MemberAuthor

I don't see how PR validation spanning a day boundary could be a problem if the whole build used $(OfficialBuildId) to derive version numbers (which happens to be a date based number, but that's not a requirement).

PR builds are not official builds, so we don't use OfficialBuildId. The Arcade docs include this guidance: Versioning.md#build-kind.

However, this is basically the same as my suggestion to set /p:_BuildNumber=$(BUILD_BUILDNUMBER).

@dagooddagood removed their assignment Jan 20, 2020
@dagood

Copy link
Copy Markdown
MemberAuthor

As for why we have this issue:

it doesn't solve the local live live issue of people having to rebuild libraries/coreclr if they want to build again the installer a day after they built libraries or coreclr.

It's because dotnet/runtime sets <DotNetUseShippingVersions>true</DotNetUseShippingVersions>.

@tmat

tmat commented Jan 21, 2020

Copy link
Copy Markdown
Member

PR builds are not official builds, so we don't use OfficialBuildId.

I see. I mistaken this for official build issue. Got it. In PR validation though the version has Major.Minor.Path-ci format. No date based version number is added.

However, this is basically the same as my suggestion to set /p:_BuildNumber=$(BUILD_BUILDNUMBER).

I would rather avoid that. _BuildNumber is a private property not to be used outside of Arcade SDK targets.

@tmat

tmat commented Jan 21, 2020

Copy link
Copy Markdown
Member

It's because dotnet/runtime sets <DotNetUseShippingVersions>true</DotNetUseShippingVersions>.

Now I understand. Yes, don't set this.

@dagood

Copy link
Copy Markdown
MemberAuthor

You don't have to tell me. 😄

@safern

Copy link
Copy Markdown
Member

I think we just need to figure out why we're getting the package test failures. I agree we shouldn't set DotNetUseShippingVersions. I'll take a look locally to see if I get a repro and a suggested fix.

@dagood

Copy link
Copy Markdown
MemberAuthor

Please feel free to push to this PR or make your own, I'm not actively working on this.

@safern

Copy link
Copy Markdown
Member

@dagood I moved the AssemblyVersion declaration to Versions.props and also, I made it use $(MajorVersion).$(MinorVersion).0.0 -- as for the patches and revisions should be manually updated per assembly if it is serviced (talked to @ericstj on this).

Also, package testing is currently using a Microsoft.NETCore.App package from our custom feeds. I updated it manually to use the latest one. I didn't want to add a BAR subscription to the runtime repo because of the ongoing discussion regarding to that and we should eventually fix package testing to use the live bits rather than the latest published bits. Will open an issue for that.

Comment threadeng/Versions.props Outdated
<PreReleaseVersionLabel>alpha</PreReleaseVersionLabel>
<PreReleaseVersionIteration>1</PreReleaseVersionIteration>

<!-- Set assembly version to align with Major and Minor version -->

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Also mention this? My first thought looking at this line is why it doesn't use patch version.

as for the patches and revisions should be manually updated per assembly if it is serviced

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Sure. will update the comment.

Comment threadeng/Versions.props
<MicrosoftDotNetVersionToolsTasksVersion>5.0.0-beta.20063.2</MicrosoftDotNetVersionToolsTasksVersion>
<!-- Installer dependencies -->
<MicrosoftNETCoreAppVersion>5.0.0-alpha.1.19562.8</MicrosoftNETCoreAppVersion>
<MicrosoftNETCoreAppVersion>5.0.0-alpha.1.20071.1</MicrosoftNETCoreAppVersion>

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I'm concerned that this version is being used... the installer tests need to be running on the current build's outputs or else they aren't covering anything. 😕 Can you link the issue you mentioned you'd file for this?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I'm surprised the installer tests use this property, I thought this property was used by package testing only.

I mentioned it here:
#1823 (comment)

Could you elaborate how the installer tests use this instead of the recently built product?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Could you elaborate how the installer tests use this instead of the recently built product?

No, I'm not familiar with it and I'm surprised by it when you mentioned you had to change this to make the installer tests work.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I didn't mean installer tests, I mean libraries all configuration package tests... we run some tests on our oob packages to make sure closure is complete and that we don't ship duplicate types and that all supported rids for those packages publish correctly, etc.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Ah. This should be moved out from <!-- Installer dependencies --> then, it seems to me. Thanks for the background.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I see, that was a result from the repo merge as in corefx it was "core-setup dependencies" maybe when we consolidated it was just a find and replace from "core-setup" to "installer". Will remove.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Actually, what it means is that those dependencies as built by the installer. If you look the file, those comments split the sections on where are those packages coming from, for example look at runtime-assets dependencies which comes from https://github.com/dotnet/runtime-assets or arcade dependencies.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Oh, that makes sense. Sorry for the confusion on this, no need to change it.

@dagood

Copy link
Copy Markdown
MemberAuthor

I don't have enough context on the test expectations to help with the current CI error:

Assert.Equal() Failure
↓ (pos 20)
Expected: ComLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=···
Actual: ComLibrary, Version=5.0.0.0, Culture=neutral, PublicKeyToken=···
↑ (pos 20)
at Microsoft.NET.HostModel.ComHost.Tests.ClsidMapTests.PublicComVisibleTypeWithGuidAdded() in /_/src/installer/test/Microsoft.NET.HostModel.Tests/Microsoft.NET.HostModel.ComHost.Tests/ClsidMapTests.cs:line 35

Maybe @vitek-karas and @elinor-fung can help?

@safern

Copy link
Copy Markdown
Member

Thanks @dagood -- I'm already looking at this locally, getting a repro and then see why ComLibrary is not getting the right AssemblyVersion.

@elinor-fung

Copy link
Copy Markdown
Member

The test checks creating of a file (used for COM support) with data about a library - reading the assembly metadata; it uses the output assembly of the ComLibrary project (https://github.com/dotnet/runtime/tree/master/src/installer/test/Assets/TestProjects/ComLibrary) reading the assembly metadata.

It is hard-coded to expect version 1.0.0.0, but it looks like the output of the ComLibrary test project is now 5.0.0.0? I would expect that it should have been set to 1.0.0.0 based on this though: https://github.com/dotnet/runtime/pull/1835/files#diff-dcf139fe6da30186f3ea56c8ff1a086bR10?

@safern

Copy link
Copy Markdown
Member

thanks for explaining @elinor-fung 😄

It is hard-coded to expect version 1.0.0.0, but it looks like the output of the ComLibrary test project is now 5.0.0.0? I would expect that it should have been set to 1.0.0.0 based on this though: https://github.com/dotnet/runtime/pull/1835/files#diff-dcf139fe6da30186f3ea56c8ff1a086bR10?

Me too, that''s why now I'm trying this locally to figure out why it didn't honor my AssemblyVersion in the props file for the test projects.

@safern
safern marked this pull request as ready for review January 24, 2020 06:41
@safern

Copy link
Copy Markdown
Member

This is now ready 😄

@dagood

Copy link
Copy Markdown
MemberAuthor

LGTM. (Can't approve "my" PR. 🙂)

@safern
safern merged commit 1e09e98 into dotnet:masterJan 24, 2020
@dagood
dagood deleted the rm-date branch January 24, 2020 18:18
@ghostghost locked as resolved and limited conversation to collaborators Dec 11, 2020
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

When PR validation spans a UTC day, the Installer build may fail due to a package version mismatch

5 participants

@dagood@safern@mmitche@tmat@elinor-fung
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Remove date number from dev build version - #1835

Merged
safern merged 9 commits into
dotnet:masterfrom
dagood:rm-date
Jan 24, 2020
Merged

Remove date number from dev build version#1835
safern merged 9 commits into
dotnet:masterfrom
dagood:rm-date

Conversation

@dagood

@dagooddagood commented Jan 16, 2020

Copy link
Copy Markdown
Member

Fixes: #1089

Comment threadeng/Versions.props
<MinorVersion>0</MinorVersion>
<PatchVersion>0</PatchVersion>
<!-- Always use shipping version instead of dummy version -->
<DotNetUseShippingVersions>true</DotNetUseShippingVersions>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can we leave this set to true when we're in an Official build? So that package versions are unique?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Awesome, arcade is ahead of me 😄

@dagood

Copy link
Copy Markdown
MemberAuthor

Getting errors in Libraries build--a lot of these:

.packages\microsoft.dotnet.build.tasks.packaging\5.0.0-beta.20063.2\build\Packaging.targets(1161,5): error : File Microsoft.Win32.Primitives, version 42.42.42.42 was included framework package Microsoft.Private.CoreFx.NETCoreApp/5.0.0-ci but that version is not considered inbox in package index F:\workspace_work\1\s\src\libraries\pkg\Microsoft.Private.PackageBaseline\packageIndex.json. Please add it with appropriate InboxOn entry for netcoreapp5.0 or suppress this message with PermitInbox suppression.

@safern

Copy link
Copy Markdown
Member

Getting errors in Libraries build--a lot of these:

Yeah, the assembly version was affected by this change and now it is getting arcade's 42.42.42.42 version... we need to figure out how to set it up so that it respects our AssemblyVersions.

@dagood

Copy link
Copy Markdown
MemberAuthor

Might be tricky, getting Arcade to produce date-based assembly versions but not use the date for the packages. Maybe condition DotNetUseShippingVersions so it's specifically on during certain parts of the build? Don't know if that'll work out.

Feel free to push to this PR if you have time to work on it (or make a new one, no real difference).

@dagood

Copy link
Copy Markdown
MemberAuthor

An alternative that fixes CI (but not dev build annoyances) is to pipe in a "non-official officialbuildid" so the date number stays constant throughout the course of the CI run.

@safern

Copy link
Copy Markdown
Member

We could also introduce an arcade property... something like UseAssemblyShippingVersions.

@safern

Copy link
Copy Markdown
Member

cc: @tmat@mmitche for discussion.

@safern

Copy link
Copy Markdown
Member

We could also introduce an arcade property... something like UseAssemblyShippingVersions.

Never mind I think we figured out the issue.

Comment threadsrc/libraries/Directory.Build.props Outdated
<Import Project="..\..\Directory.Build.props" />

<PropertyGroup>
<AssemblyVersion>5.0.0.0</AssemblyVersion>

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

This matches https://github.com/dotnet/corefx/pull/41723/files#diff-8b8f08ffbf7b863fb3700c1718eeb4cbR5, we should maybe use ProductVersion or Major/Minor/PatchVersion though.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

cc: @ericstj I think it makes sense to use any of the recommendations above.

@tmattmatJan 20, 2020

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Yes, we should not have the version specified in multiple places.
I'd use <AssemblyVersion>$(MajorVersion).$(MinorVersion).$(PatchVersion).0</AssemblyVersion> if you want to suppress defaulting to 42.42.42.42.

@tmattmatJan 20, 2020

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I'd be also nice to add a comment that explains why is this set here - something like (guessing) "The AssemblyVersion must match netcoreappM.N moniker. Whenever the version is updated we need to update the TFM as well.".

@dagood

Copy link
Copy Markdown
MemberAuthor

An alternative that fixes CI (but not dev build annoyances) is to pipe in a "non-official officialbuildid" so the date number stays constant throughout the course of the CI run.

To expand on this a bit (in case the assembly version fix doesn't work, or maybe something else breaks downstream), maybe we can keep DotNetUseShippingVersions as true, but set /p:_BuildNumber=$(BUILD_BUILDNUMBER) so that the version stays constant across the jobs.

@safern

Copy link
Copy Markdown
Member

That might be a good idea, the problem I see with that is that it doesn't solve the local live live issue of people having to rebuild libraries/coreclr if they want to build again the installer a day after they built libraries or coreclr.

@safern

Copy link
Copy Markdown
Member

It seems like the dependency to System.Private.CoreLib has the wrong version, I don't know if CoreLib also needs to be 5.0.0.0 or if we're calculating the dependency wrong. @ericstj might know.

C:\h\w\98B8088C\p\packageTest.targets(74,5): error : Assembly 'System.Runtime.Intrinsics.Experimental' has insufficient version for dependency 'System.Private.CoreLib' : 5.0.0.0 < 42.42.42.42. [C:\h\w\98B8088C\w\A0E70914\u\netcoreapp5.0\project.csproj]

@mmitche

Copy link
Copy Markdown
Member

What's the context here? I think I'm missing what the root of the issue is.

@dagood

Copy link
Copy Markdown
MemberAuthor

See #1089

@tmat

tmat commented Jan 20, 2020

Copy link
Copy Markdown
Member

@dagood Are there any customizations to versioning in dotnet/runtime repo that tweak the default Arcade versions or are there any parts of the repo that use something different than the versions Arcade sets? I don't see how PR validation spanning a day boundary could be a problem if the whole build used $(OfficialBuildId) to derive version numbers (which happens to be a date based number, but that's not a requirement). The build should not depend on current time in any way. If there is some part of the build that depends on current date/time that'd be a bug.

@dagood

dagood commented Jan 20, 2020

Copy link
Copy Markdown
MemberAuthor

I don't see how PR validation spanning a day boundary could be a problem if the whole build used $(OfficialBuildId) to derive version numbers (which happens to be a date based number, but that's not a requirement).

PR builds are not official builds, so we don't use OfficialBuildId. The Arcade docs include this guidance: Versioning.md#build-kind.

However, this is basically the same as my suggestion to set /p:_BuildNumber=$(BUILD_BUILDNUMBER).

@dagooddagood removed their assignment Jan 20, 2020
@dagood

Copy link
Copy Markdown
MemberAuthor

As for why we have this issue:

it doesn't solve the local live live issue of people having to rebuild libraries/coreclr if they want to build again the installer a day after they built libraries or coreclr.

It's because dotnet/runtime sets <DotNetUseShippingVersions>true</DotNetUseShippingVersions>.

@tmat

tmat commented Jan 21, 2020

Copy link
Copy Markdown
Member

PR builds are not official builds, so we don't use OfficialBuildId.

I see. I mistaken this for official build issue. Got it. In PR validation though the version has Major.Minor.Path-ci format. No date based version number is added.

However, this is basically the same as my suggestion to set /p:_BuildNumber=$(BUILD_BUILDNUMBER).

I would rather avoid that. _BuildNumber is a private property not to be used outside of Arcade SDK targets.

@tmat

tmat commented Jan 21, 2020

Copy link
Copy Markdown
Member

It's because dotnet/runtime sets <DotNetUseShippingVersions>true</DotNetUseShippingVersions>.

Now I understand. Yes, don't set this.

@dagood

Copy link
Copy Markdown
MemberAuthor

You don't have to tell me. 😄

@safern

Copy link
Copy Markdown
Member

I think we just need to figure out why we're getting the package test failures. I agree we shouldn't set DotNetUseShippingVersions. I'll take a look locally to see if I get a repro and a suggested fix.

@dagood

Copy link
Copy Markdown
MemberAuthor

Please feel free to push to this PR or make your own, I'm not actively working on this.

@safern

Copy link
Copy Markdown
Member

@dagood I moved the AssemblyVersion declaration to Versions.props and also, I made it use $(MajorVersion).$(MinorVersion).0.0 -- as for the patches and revisions should be manually updated per assembly if it is serviced (talked to @ericstj on this).

Also, package testing is currently using a Microsoft.NETCore.App package from our custom feeds. I updated it manually to use the latest one. I didn't want to add a BAR subscription to the runtime repo because of the ongoing discussion regarding to that and we should eventually fix package testing to use the live bits rather than the latest published bits. Will open an issue for that.

Comment threadeng/Versions.props Outdated
<PreReleaseVersionLabel>alpha</PreReleaseVersionLabel>
<PreReleaseVersionIteration>1</PreReleaseVersionIteration>

<!-- Set assembly version to align with Major and Minor version -->

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Also mention this? My first thought looking at this line is why it doesn't use patch version.

as for the patches and revisions should be manually updated per assembly if it is serviced

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Sure. will update the comment.

Comment threadeng/Versions.props
<MicrosoftDotNetVersionToolsTasksVersion>5.0.0-beta.20063.2</MicrosoftDotNetVersionToolsTasksVersion>
<!-- Installer dependencies -->
<MicrosoftNETCoreAppVersion>5.0.0-alpha.1.19562.8</MicrosoftNETCoreAppVersion>
<MicrosoftNETCoreAppVersion>5.0.0-alpha.1.20071.1</MicrosoftNETCoreAppVersion>

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I'm concerned that this version is being used... the installer tests need to be running on the current build's outputs or else they aren't covering anything. 😕 Can you link the issue you mentioned you'd file for this?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I'm surprised the installer tests use this property, I thought this property was used by package testing only.

I mentioned it here:
#1823 (comment)

Could you elaborate how the installer tests use this instead of the recently built product?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Could you elaborate how the installer tests use this instead of the recently built product?

No, I'm not familiar with it and I'm surprised by it when you mentioned you had to change this to make the installer tests work.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I didn't mean installer tests, I mean libraries all configuration package tests... we run some tests on our oob packages to make sure closure is complete and that we don't ship duplicate types and that all supported rids for those packages publish correctly, etc.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Ah. This should be moved out from <!-- Installer dependencies --> then, it seems to me. Thanks for the background.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I see, that was a result from the repo merge as in corefx it was "core-setup dependencies" maybe when we consolidated it was just a find and replace from "core-setup" to "installer". Will remove.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Actually, what it means is that those dependencies as built by the installer. If you look the file, those comments split the sections on where are those packages coming from, for example look at runtime-assets dependencies which comes from https://github.com/dotnet/runtime-assets or arcade dependencies.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Oh, that makes sense. Sorry for the confusion on this, no need to change it.

@dagood

Copy link
Copy Markdown
MemberAuthor

I don't have enough context on the test expectations to help with the current CI error:

Assert.Equal() Failure
↓ (pos 20)
Expected: ComLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=···
Actual: ComLibrary, Version=5.0.0.0, Culture=neutral, PublicKeyToken=···
↑ (pos 20)
at Microsoft.NET.HostModel.ComHost.Tests.ClsidMapTests.PublicComVisibleTypeWithGuidAdded() in /_/src/installer/test/Microsoft.NET.HostModel.Tests/Microsoft.NET.HostModel.ComHost.Tests/ClsidMapTests.cs:line 35

Maybe @vitek-karas and @elinor-fung can help?

@safern

Copy link
Copy Markdown
Member

Thanks @dagood -- I'm already looking at this locally, getting a repro and then see why ComLibrary is not getting the right AssemblyVersion.

@elinor-fung

Copy link
Copy Markdown
Member

The test checks creating of a file (used for COM support) with data about a library - reading the assembly metadata; it uses the output assembly of the ComLibrary project (https://github.com/dotnet/runtime/tree/master/src/installer/test/Assets/TestProjects/ComLibrary) reading the assembly metadata.

It is hard-coded to expect version 1.0.0.0, but it looks like the output of the ComLibrary test project is now 5.0.0.0? I would expect that it should have been set to 1.0.0.0 based on this though: https://github.com/dotnet/runtime/pull/1835/files#diff-dcf139fe6da30186f3ea56c8ff1a086bR10?

@safern

Copy link
Copy Markdown
Member

thanks for explaining @elinor-fung 😄

It is hard-coded to expect version 1.0.0.0, but it looks like the output of the ComLibrary test project is now 5.0.0.0? I would expect that it should have been set to 1.0.0.0 based on this though: https://github.com/dotnet/runtime/pull/1835/files#diff-dcf139fe6da30186f3ea56c8ff1a086bR10?

Me too, that''s why now I'm trying this locally to figure out why it didn't honor my AssemblyVersion in the props file for the test projects.

@safern
safern marked this pull request as ready for review January 24, 2020 06:41
@safern

Copy link
Copy Markdown
Member

This is now ready 😄

@dagood

Copy link
Copy Markdown
MemberAuthor

LGTM. (Can't approve "my" PR. 🙂)

@safern
safern merged commit 1e09e98 into dotnet:masterJan 24, 2020
@dagood
dagood deleted the rm-date branch January 24, 2020 18:18
@ghostghost locked as resolved and limited conversation to collaborators Dec 11, 2020
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

When PR validation spans a UTC day, the Installer build may fail due to a package version mismatch

5 participants

@dagood@safern@mmitche@tmat@elinor-fung
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Remove date number from dev build version - #1835

Merged
safern merged 9 commits into
dotnet:masterfrom
dagood:rm-date
Jan 24, 2020
Merged

Remove date number from dev build version#1835
safern merged 9 commits into
dotnet:masterfrom
dagood:rm-date

Conversation

@dagood

@dagooddagood commented Jan 16, 2020

Copy link
Copy Markdown
Member

Fixes: #1089

Comment threadeng/Versions.props
<MinorVersion>0</MinorVersion>
<PatchVersion>0</PatchVersion>
<!-- Always use shipping version instead of dummy version -->
<DotNetUseShippingVersions>true</DotNetUseShippingVersions>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can we leave this set to true when we're in an Official build? So that package versions are unique?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Awesome, arcade is ahead of me 😄

@dagood

Copy link
Copy Markdown
MemberAuthor

Getting errors in Libraries build--a lot of these:

.packages\microsoft.dotnet.build.tasks.packaging\5.0.0-beta.20063.2\build\Packaging.targets(1161,5): error : File Microsoft.Win32.Primitives, version 42.42.42.42 was included framework package Microsoft.Private.CoreFx.NETCoreApp/5.0.0-ci but that version is not considered inbox in package index F:\workspace_work\1\s\src\libraries\pkg\Microsoft.Private.PackageBaseline\packageIndex.json. Please add it with appropriate InboxOn entry for netcoreapp5.0 or suppress this message with PermitInbox suppression.

@safern

Copy link
Copy Markdown
Member

Getting errors in Libraries build--a lot of these:

Yeah, the assembly version was affected by this change and now it is getting arcade's 42.42.42.42 version... we need to figure out how to set it up so that it respects our AssemblyVersions.

@dagood

Copy link
Copy Markdown
MemberAuthor

Might be tricky, getting Arcade to produce date-based assembly versions but not use the date for the packages. Maybe condition DotNetUseShippingVersions so it's specifically on during certain parts of the build? Don't know if that'll work out.

Feel free to push to this PR if you have time to work on it (or make a new one, no real difference).

@dagood

Copy link
Copy Markdown
MemberAuthor

An alternative that fixes CI (but not dev build annoyances) is to pipe in a "non-official officialbuildid" so the date number stays constant throughout the course of the CI run.

@safern

Copy link
Copy Markdown
Member

We could also introduce an arcade property... something like UseAssemblyShippingVersions.

@safern

Copy link
Copy Markdown
Member

cc: @tmat@mmitche for discussion.

@safern

Copy link
Copy Markdown
Member

We could also introduce an arcade property... something like UseAssemblyShippingVersions.

Never mind I think we figured out the issue.

Comment threadsrc/libraries/Directory.Build.props Outdated
<Import Project="..\..\Directory.Build.props" />

<PropertyGroup>
<AssemblyVersion>5.0.0.0</AssemblyVersion>

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

This matches https://github.com/dotnet/corefx/pull/41723/files#diff-8b8f08ffbf7b863fb3700c1718eeb4cbR5, we should maybe use ProductVersion or Major/Minor/PatchVersion though.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

cc: @ericstj I think it makes sense to use any of the recommendations above.

@tmattmatJan 20, 2020

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Yes, we should not have the version specified in multiple places.
I'd use <AssemblyVersion>$(MajorVersion).$(MinorVersion).$(PatchVersion).0</AssemblyVersion> if you want to suppress defaulting to 42.42.42.42.

@tmattmatJan 20, 2020

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I'd be also nice to add a comment that explains why is this set here - something like (guessing) "The AssemblyVersion must match netcoreappM.N moniker. Whenever the version is updated we need to update the TFM as well.".

@dagood

Copy link
Copy Markdown
MemberAuthor

An alternative that fixes CI (but not dev build annoyances) is to pipe in a "non-official officialbuildid" so the date number stays constant throughout the course of the CI run.

To expand on this a bit (in case the assembly version fix doesn't work, or maybe something else breaks downstream), maybe we can keep DotNetUseShippingVersions as true, but set /p:_BuildNumber=$(BUILD_BUILDNUMBER) so that the version stays constant across the jobs.

@safern

Copy link
Copy Markdown
Member

That might be a good idea, the problem I see with that is that it doesn't solve the local live live issue of people having to rebuild libraries/coreclr if they want to build again the installer a day after they built libraries or coreclr.

@safern

Copy link
Copy Markdown
Member

It seems like the dependency to System.Private.CoreLib has the wrong version, I don't know if CoreLib also needs to be 5.0.0.0 or if we're calculating the dependency wrong. @ericstj might know.

C:\h\w\98B8088C\p\packageTest.targets(74,5): error : Assembly 'System.Runtime.Intrinsics.Experimental' has insufficient version for dependency 'System.Private.CoreLib' : 5.0.0.0 < 42.42.42.42. [C:\h\w\98B8088C\w\A0E70914\u\netcoreapp5.0\project.csproj]

@mmitche

Copy link
Copy Markdown
Member

What's the context here? I think I'm missing what the root of the issue is.

@dagood

Copy link
Copy Markdown
MemberAuthor

See #1089

@tmat

tmat commented Jan 20, 2020

Copy link
Copy Markdown
Member

@dagood Are there any customizations to versioning in dotnet/runtime repo that tweak the default Arcade versions or are there any parts of the repo that use something different than the versions Arcade sets? I don't see how PR validation spanning a day boundary could be a problem if the whole build used $(OfficialBuildId) to derive version numbers (which happens to be a date based number, but that's not a requirement). The build should not depend on current time in any way. If there is some part of the build that depends on current date/time that'd be a bug.

@dagood

dagood commented Jan 20, 2020

Copy link
Copy Markdown
MemberAuthor

I don't see how PR validation spanning a day boundary could be a problem if the whole build used $(OfficialBuildId) to derive version numbers (which happens to be a date based number, but that's not a requirement).

PR builds are not official builds, so we don't use OfficialBuildId. The Arcade docs include this guidance: Versioning.md#build-kind.

However, this is basically the same as my suggestion to set /p:_BuildNumber=$(BUILD_BUILDNUMBER).

@dagooddagood removed their assignment Jan 20, 2020
@dagood

Copy link
Copy Markdown
MemberAuthor

As for why we have this issue:

it doesn't solve the local live live issue of people having to rebuild libraries/coreclr if they want to build again the installer a day after they built libraries or coreclr.

It's because dotnet/runtime sets <DotNetUseShippingVersions>true</DotNetUseShippingVersions>.

@tmat

tmat commented Jan 21, 2020

Copy link
Copy Markdown
Member

PR builds are not official builds, so we don't use OfficialBuildId.

I see. I mistaken this for official build issue. Got it. In PR validation though the version has Major.Minor.Path-ci format. No date based version number is added.

However, this is basically the same as my suggestion to set /p:_BuildNumber=$(BUILD_BUILDNUMBER).

I would rather avoid that. _BuildNumber is a private property not to be used outside of Arcade SDK targets.

@tmat

tmat commented Jan 21, 2020

Copy link
Copy Markdown
Member

It's because dotnet/runtime sets <DotNetUseShippingVersions>true</DotNetUseShippingVersions>.

Now I understand. Yes, don't set this.

@dagood

Copy link
Copy Markdown
MemberAuthor

You don't have to tell me. 😄

@safern

Copy link
Copy Markdown
Member

I think we just need to figure out why we're getting the package test failures. I agree we shouldn't set DotNetUseShippingVersions. I'll take a look locally to see if I get a repro and a suggested fix.

@dagood

Copy link
Copy Markdown
MemberAuthor

Please feel free to push to this PR or make your own, I'm not actively working on this.

@safern

Copy link
Copy Markdown
Member

@dagood I moved the AssemblyVersion declaration to Versions.props and also, I made it use $(MajorVersion).$(MinorVersion).0.0 -- as for the patches and revisions should be manually updated per assembly if it is serviced (talked to @ericstj on this).

Also, package testing is currently using a Microsoft.NETCore.App package from our custom feeds. I updated it manually to use the latest one. I didn't want to add a BAR subscription to the runtime repo because of the ongoing discussion regarding to that and we should eventually fix package testing to use the live bits rather than the latest published bits. Will open an issue for that.

Comment threadeng/Versions.props Outdated
<PreReleaseVersionLabel>alpha</PreReleaseVersionLabel>
<PreReleaseVersionIteration>1</PreReleaseVersionIteration>

<!-- Set assembly version to align with Major and Minor version -->

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Also mention this? My first thought looking at this line is why it doesn't use patch version.

as for the patches and revisions should be manually updated per assembly if it is serviced

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Sure. will update the comment.

Comment threadeng/Versions.props
<MicrosoftDotNetVersionToolsTasksVersion>5.0.0-beta.20063.2</MicrosoftDotNetVersionToolsTasksVersion>
<!-- Installer dependencies -->
<MicrosoftNETCoreAppVersion>5.0.0-alpha.1.19562.8</MicrosoftNETCoreAppVersion>
<MicrosoftNETCoreAppVersion>5.0.0-alpha.1.20071.1</MicrosoftNETCoreAppVersion>

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I'm concerned that this version is being used... the installer tests need to be running on the current build's outputs or else they aren't covering anything. 😕 Can you link the issue you mentioned you'd file for this?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I'm surprised the installer tests use this property, I thought this property was used by package testing only.

I mentioned it here:
#1823 (comment)

Could you elaborate how the installer tests use this instead of the recently built product?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Could you elaborate how the installer tests use this instead of the recently built product?

No, I'm not familiar with it and I'm surprised by it when you mentioned you had to change this to make the installer tests work.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I didn't mean installer tests, I mean libraries all configuration package tests... we run some tests on our oob packages to make sure closure is complete and that we don't ship duplicate types and that all supported rids for those packages publish correctly, etc.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Ah. This should be moved out from <!-- Installer dependencies --> then, it seems to me. Thanks for the background.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I see, that was a result from the repo merge as in corefx it was "core-setup dependencies" maybe when we consolidated it was just a find and replace from "core-setup" to "installer". Will remove.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Actually, what it means is that those dependencies as built by the installer. If you look the file, those comments split the sections on where are those packages coming from, for example look at runtime-assets dependencies which comes from https://github.com/dotnet/runtime-assets or arcade dependencies.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Oh, that makes sense. Sorry for the confusion on this, no need to change it.

@dagood

Copy link
Copy Markdown
MemberAuthor

I don't have enough context on the test expectations to help with the current CI error:

Assert.Equal() Failure
↓ (pos 20)
Expected: ComLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=···
Actual: ComLibrary, Version=5.0.0.0, Culture=neutral, PublicKeyToken=···
↑ (pos 20)
at Microsoft.NET.HostModel.ComHost.Tests.ClsidMapTests.PublicComVisibleTypeWithGuidAdded() in /_/src/installer/test/Microsoft.NET.HostModel.Tests/Microsoft.NET.HostModel.ComHost.Tests/ClsidMapTests.cs:line 35

Maybe @vitek-karas and @elinor-fung can help?

@safern

Copy link
Copy Markdown
Member

Thanks @dagood -- I'm already looking at this locally, getting a repro and then see why ComLibrary is not getting the right AssemblyVersion.

@elinor-fung

Copy link
Copy Markdown
Member

The test checks creating of a file (used for COM support) with data about a library - reading the assembly metadata; it uses the output assembly of the ComLibrary project (https://github.com/dotnet/runtime/tree/master/src/installer/test/Assets/TestProjects/ComLibrary) reading the assembly metadata.

It is hard-coded to expect version 1.0.0.0, but it looks like the output of the ComLibrary test project is now 5.0.0.0? I would expect that it should have been set to 1.0.0.0 based on this though: https://github.com/dotnet/runtime/pull/1835/files#diff-dcf139fe6da30186f3ea56c8ff1a086bR10?

@safern

Copy link
Copy Markdown
Member

thanks for explaining @elinor-fung 😄

It is hard-coded to expect version 1.0.0.0, but it looks like the output of the ComLibrary test project is now 5.0.0.0? I would expect that it should have been set to 1.0.0.0 based on this though: https://github.com/dotnet/runtime/pull/1835/files#diff-dcf139fe6da30186f3ea56c8ff1a086bR10?

Me too, that''s why now I'm trying this locally to figure out why it didn't honor my AssemblyVersion in the props file for the test projects.

@safern
safern marked this pull request as ready for review January 24, 2020 06:41
@safern

Copy link
Copy Markdown
Member

This is now ready 😄

@dagood

Copy link
Copy Markdown
MemberAuthor

LGTM. (Can't approve "my" PR. 🙂)

@safern
safern merged commit 1e09e98 into dotnet:masterJan 24, 2020
@dagood
dagood deleted the rm-date branch January 24, 2020 18:18
@ghostghost locked as resolved and limited conversation to collaborators Dec 11, 2020
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

When PR validation spans a UTC day, the Installer build may fail due to a package version mismatch

5 participants

@dagood@safern@mmitche@tmat@elinor-fung
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Remove date number from dev build version - #1835

Merged
safern merged 9 commits into
dotnet:masterfrom
dagood:rm-date
Jan 24, 2020
Merged

Remove date number from dev build version#1835
safern merged 9 commits into
dotnet:masterfrom
dagood:rm-date

Conversation

@dagood

@dagooddagood commented Jan 16, 2020

Copy link
Copy Markdown
Member

Fixes: #1089

Comment threadeng/Versions.props
<MinorVersion>0</MinorVersion>
<PatchVersion>0</PatchVersion>
<!-- Always use shipping version instead of dummy version -->
<DotNetUseShippingVersions>true</DotNetUseShippingVersions>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can we leave this set to true when we're in an Official build? So that package versions are unique?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Awesome, arcade is ahead of me 😄

@dagood

Copy link
Copy Markdown
MemberAuthor

Getting errors in Libraries build--a lot of these:

.packages\microsoft.dotnet.build.tasks.packaging\5.0.0-beta.20063.2\build\Packaging.targets(1161,5): error : File Microsoft.Win32.Primitives, version 42.42.42.42 was included framework package Microsoft.Private.CoreFx.NETCoreApp/5.0.0-ci but that version is not considered inbox in package index F:\workspace_work\1\s\src\libraries\pkg\Microsoft.Private.PackageBaseline\packageIndex.json. Please add it with appropriate InboxOn entry for netcoreapp5.0 or suppress this message with PermitInbox suppression.

@safern

Copy link
Copy Markdown
Member

Getting errors in Libraries build--a lot of these:

Yeah, the assembly version was affected by this change and now it is getting arcade's 42.42.42.42 version... we need to figure out how to set it up so that it respects our AssemblyVersions.

@dagood

Copy link
Copy Markdown
MemberAuthor

Might be tricky, getting Arcade to produce date-based assembly versions but not use the date for the packages. Maybe condition DotNetUseShippingVersions so it's specifically on during certain parts of the build? Don't know if that'll work out.

Feel free to push to this PR if you have time to work on it (or make a new one, no real difference).

@dagood

Copy link
Copy Markdown
MemberAuthor

An alternative that fixes CI (but not dev build annoyances) is to pipe in a "non-official officialbuildid" so the date number stays constant throughout the course of the CI run.

@safern

Copy link
Copy Markdown
Member

We could also introduce an arcade property... something like UseAssemblyShippingVersions.

@safern

Copy link
Copy Markdown
Member

cc: @tmat@mmitche for discussion.

@safern

Copy link
Copy Markdown
Member

We could also introduce an arcade property... something like UseAssemblyShippingVersions.

Never mind I think we figured out the issue.

Comment threadsrc/libraries/Directory.Build.props Outdated
<Import Project="..\..\Directory.Build.props" />

<PropertyGroup>
<AssemblyVersion>5.0.0.0</AssemblyVersion>

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

This matches https://github.com/dotnet/corefx/pull/41723/files#diff-8b8f08ffbf7b863fb3700c1718eeb4cbR5, we should maybe use ProductVersion or Major/Minor/PatchVersion though.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

cc: @ericstj I think it makes sense to use any of the recommendations above.

@tmattmatJan 20, 2020

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Yes, we should not have the version specified in multiple places.
I'd use <AssemblyVersion>$(MajorVersion).$(MinorVersion).$(PatchVersion).0</AssemblyVersion> if you want to suppress defaulting to 42.42.42.42.

@tmattmatJan 20, 2020

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I'd be also nice to add a comment that explains why is this set here - something like (guessing) "The AssemblyVersion must match netcoreappM.N moniker. Whenever the version is updated we need to update the TFM as well.".

@dagood

Copy link
Copy Markdown
MemberAuthor

An alternative that fixes CI (but not dev build annoyances) is to pipe in a "non-official officialbuildid" so the date number stays constant throughout the course of the CI run.

To expand on this a bit (in case the assembly version fix doesn't work, or maybe something else breaks downstream), maybe we can keep DotNetUseShippingVersions as true, but set /p:_BuildNumber=$(BUILD_BUILDNUMBER) so that the version stays constant across the jobs.

@safern

Copy link
Copy Markdown
Member

That might be a good idea, the problem I see with that is that it doesn't solve the local live live issue of people having to rebuild libraries/coreclr if they want to build again the installer a day after they built libraries or coreclr.

@safern

Copy link
Copy Markdown
Member

It seems like the dependency to System.Private.CoreLib has the wrong version, I don't know if CoreLib also needs to be 5.0.0.0 or if we're calculating the dependency wrong. @ericstj might know.

C:\h\w\98B8088C\p\packageTest.targets(74,5): error : Assembly 'System.Runtime.Intrinsics.Experimental' has insufficient version for dependency 'System.Private.CoreLib' : 5.0.0.0 < 42.42.42.42. [C:\h\w\98B8088C\w\A0E70914\u\netcoreapp5.0\project.csproj]

@mmitche

Copy link
Copy Markdown
Member

What's the context here? I think I'm missing what the root of the issue is.

@dagood

Copy link
Copy Markdown
MemberAuthor

See #1089

@tmat

tmat commented Jan 20, 2020

Copy link
Copy Markdown
Member

@dagood Are there any customizations to versioning in dotnet/runtime repo that tweak the default Arcade versions or are there any parts of the repo that use something different than the versions Arcade sets? I don't see how PR validation spanning a day boundary could be a problem if the whole build used $(OfficialBuildId) to derive version numbers (which happens to be a date based number, but that's not a requirement). The build should not depend on current time in any way. If there is some part of the build that depends on current date/time that'd be a bug.

@dagood

dagood commented Jan 20, 2020

Copy link
Copy Markdown
MemberAuthor

I don't see how PR validation spanning a day boundary could be a problem if the whole build used $(OfficialBuildId) to derive version numbers (which happens to be a date based number, but that's not a requirement).

PR builds are not official builds, so we don't use OfficialBuildId. The Arcade docs include this guidance: Versioning.md#build-kind.

However, this is basically the same as my suggestion to set /p:_BuildNumber=$(BUILD_BUILDNUMBER).

@dagooddagood removed their assignment Jan 20, 2020
@dagood

Copy link
Copy Markdown
MemberAuthor

As for why we have this issue:

it doesn't solve the local live live issue of people having to rebuild libraries/coreclr if they want to build again the installer a day after they built libraries or coreclr.

It's because dotnet/runtime sets <DotNetUseShippingVersions>true</DotNetUseShippingVersions>.

@tmat

tmat commented Jan 21, 2020

Copy link
Copy Markdown
Member

PR builds are not official builds, so we don't use OfficialBuildId.

I see. I mistaken this for official build issue. Got it. In PR validation though the version has Major.Minor.Path-ci format. No date based version number is added.

However, this is basically the same as my suggestion to set /p:_BuildNumber=$(BUILD_BUILDNUMBER).

I would rather avoid that. _BuildNumber is a private property not to be used outside of Arcade SDK targets.

@tmat

tmat commented Jan 21, 2020

Copy link
Copy Markdown
Member

It's because dotnet/runtime sets <DotNetUseShippingVersions>true</DotNetUseShippingVersions>.

Now I understand. Yes, don't set this.

@dagood

Copy link
Copy Markdown
MemberAuthor

You don't have to tell me. 😄

@safern

Copy link
Copy Markdown
Member

I think we just need to figure out why we're getting the package test failures. I agree we shouldn't set DotNetUseShippingVersions. I'll take a look locally to see if I get a repro and a suggested fix.

@dagood

Copy link
Copy Markdown
MemberAuthor

Please feel free to push to this PR or make your own, I'm not actively working on this.

@safern

Copy link
Copy Markdown
Member

@dagood I moved the AssemblyVersion declaration to Versions.props and also, I made it use $(MajorVersion).$(MinorVersion).0.0 -- as for the patches and revisions should be manually updated per assembly if it is serviced (talked to @ericstj on this).

Also, package testing is currently using a Microsoft.NETCore.App package from our custom feeds. I updated it manually to use the latest one. I didn't want to add a BAR subscription to the runtime repo because of the ongoing discussion regarding to that and we should eventually fix package testing to use the live bits rather than the latest published bits. Will open an issue for that.

Comment threadeng/Versions.props Outdated
<PreReleaseVersionLabel>alpha</PreReleaseVersionLabel>
<PreReleaseVersionIteration>1</PreReleaseVersionIteration>

<!-- Set assembly version to align with Major and Minor version -->

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Also mention this? My first thought looking at this line is why it doesn't use patch version.

as for the patches and revisions should be manually updated per assembly if it is serviced

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Sure. will update the comment.

Comment threadeng/Versions.props
<MicrosoftDotNetVersionToolsTasksVersion>5.0.0-beta.20063.2</MicrosoftDotNetVersionToolsTasksVersion>
<!-- Installer dependencies -->
<MicrosoftNETCoreAppVersion>5.0.0-alpha.1.19562.8</MicrosoftNETCoreAppVersion>
<MicrosoftNETCoreAppVersion>5.0.0-alpha.1.20071.1</MicrosoftNETCoreAppVersion>

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I'm concerned that this version is being used... the installer tests need to be running on the current build's outputs or else they aren't covering anything. 😕 Can you link the issue you mentioned you'd file for this?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I'm surprised the installer tests use this property, I thought this property was used by package testing only.

I mentioned it here:
#1823 (comment)

Could you elaborate how the installer tests use this instead of the recently built product?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Could you elaborate how the installer tests use this instead of the recently built product?

No, I'm not familiar with it and I'm surprised by it when you mentioned you had to change this to make the installer tests work.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I didn't mean installer tests, I mean libraries all configuration package tests... we run some tests on our oob packages to make sure closure is complete and that we don't ship duplicate types and that all supported rids for those packages publish correctly, etc.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Ah. This should be moved out from <!-- Installer dependencies --> then, it seems to me. Thanks for the background.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I see, that was a result from the repo merge as in corefx it was "core-setup dependencies" maybe when we consolidated it was just a find and replace from "core-setup" to "installer". Will remove.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Actually, what it means is that those dependencies as built by the installer. If you look the file, those comments split the sections on where are those packages coming from, for example look at runtime-assets dependencies which comes from https://github.com/dotnet/runtime-assets or arcade dependencies.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Oh, that makes sense. Sorry for the confusion on this, no need to change it.

@dagood

Copy link
Copy Markdown
MemberAuthor

I don't have enough context on the test expectations to help with the current CI error:

Assert.Equal() Failure
↓ (pos 20)
Expected: ComLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=···
Actual: ComLibrary, Version=5.0.0.0, Culture=neutral, PublicKeyToken=···
↑ (pos 20)
at Microsoft.NET.HostModel.ComHost.Tests.ClsidMapTests.PublicComVisibleTypeWithGuidAdded() in /_/src/installer/test/Microsoft.NET.HostModel.Tests/Microsoft.NET.HostModel.ComHost.Tests/ClsidMapTests.cs:line 35

Maybe @vitek-karas and @elinor-fung can help?

@safern

Copy link
Copy Markdown
Member

Thanks @dagood -- I'm already looking at this locally, getting a repro and then see why ComLibrary is not getting the right AssemblyVersion.

@elinor-fung

Copy link
Copy Markdown
Member

The test checks creating of a file (used for COM support) with data about a library - reading the assembly metadata; it uses the output assembly of the ComLibrary project (https://github.com/dotnet/runtime/tree/master/src/installer/test/Assets/TestProjects/ComLibrary) reading the assembly metadata.

It is hard-coded to expect version 1.0.0.0, but it looks like the output of the ComLibrary test project is now 5.0.0.0? I would expect that it should have been set to 1.0.0.0 based on this though: https://github.com/dotnet/runtime/pull/1835/files#diff-dcf139fe6da30186f3ea56c8ff1a086bR10?

@safern

Copy link
Copy Markdown
Member

thanks for explaining @elinor-fung 😄

It is hard-coded to expect version 1.0.0.0, but it looks like the output of the ComLibrary test project is now 5.0.0.0? I would expect that it should have been set to 1.0.0.0 based on this though: https://github.com/dotnet/runtime/pull/1835/files#diff-dcf139fe6da30186f3ea56c8ff1a086bR10?

Me too, that''s why now I'm trying this locally to figure out why it didn't honor my AssemblyVersion in the props file for the test projects.

@safern
safern marked this pull request as ready for review January 24, 2020 06:41
@safern

Copy link
Copy Markdown
Member

This is now ready 😄

@dagood

Copy link
Copy Markdown
MemberAuthor

LGTM. (Can't approve "my" PR. 🙂)

@safern
safern merged commit 1e09e98 into dotnet:masterJan 24, 2020
@dagood
dagood deleted the rm-date branch January 24, 2020 18:18
@ghostghost locked as resolved and limited conversation to collaborators Dec 11, 2020
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

When PR validation spans a UTC day, the Installer build may fail due to a package version mismatch

5 participants

@dagood@safern@mmitche@tmat@elinor-fung
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Remove date number from dev build version - #1835

Merged
safern merged 9 commits into
dotnet:masterfrom
dagood:rm-date
Jan 24, 2020
Merged

Remove date number from dev build version#1835
safern merged 9 commits into
dotnet:masterfrom
dagood:rm-date

Conversation

@dagood

@dagooddagood commented Jan 16, 2020

Copy link
Copy Markdown
Member

Fixes: #1089

Comment threadeng/Versions.props
<MinorVersion>0</MinorVersion>
<PatchVersion>0</PatchVersion>
<!-- Always use shipping version instead of dummy version -->
<DotNetUseShippingVersions>true</DotNetUseShippingVersions>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can we leave this set to true when we're in an Official build? So that package versions are unique?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Awesome, arcade is ahead of me 😄

@dagood

Copy link
Copy Markdown
MemberAuthor

Getting errors in Libraries build--a lot of these:

.packages\microsoft.dotnet.build.tasks.packaging\5.0.0-beta.20063.2\build\Packaging.targets(1161,5): error : File Microsoft.Win32.Primitives, version 42.42.42.42 was included framework package Microsoft.Private.CoreFx.NETCoreApp/5.0.0-ci but that version is not considered inbox in package index F:\workspace_work\1\s\src\libraries\pkg\Microsoft.Private.PackageBaseline\packageIndex.json. Please add it with appropriate InboxOn entry for netcoreapp5.0 or suppress this message with PermitInbox suppression.

@safern

Copy link
Copy Markdown
Member

Getting errors in Libraries build--a lot of these:

Yeah, the assembly version was affected by this change and now it is getting arcade's 42.42.42.42 version... we need to figure out how to set it up so that it respects our AssemblyVersions.

@dagood

Copy link
Copy Markdown
MemberAuthor

Might be tricky, getting Arcade to produce date-based assembly versions but not use the date for the packages. Maybe condition DotNetUseShippingVersions so it's specifically on during certain parts of the build? Don't know if that'll work out.

Feel free to push to this PR if you have time to work on it (or make a new one, no real difference).

@dagood

Copy link
Copy Markdown
MemberAuthor

An alternative that fixes CI (but not dev build annoyances) is to pipe in a "non-official officialbuildid" so the date number stays constant throughout the course of the CI run.

@safern

Copy link
Copy Markdown
Member

We could also introduce an arcade property... something like UseAssemblyShippingVersions.

@safern

Copy link
Copy Markdown
Member

cc: @tmat@mmitche for discussion.

@safern

Copy link
Copy Markdown
Member

We could also introduce an arcade property... something like UseAssemblyShippingVersions.

Never mind I think we figured out the issue.

Comment threadsrc/libraries/Directory.Build.props Outdated
<Import Project="..\..\Directory.Build.props" />

<PropertyGroup>
<AssemblyVersion>5.0.0.0</AssemblyVersion>

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

This matches https://github.com/dotnet/corefx/pull/41723/files#diff-8b8f08ffbf7b863fb3700c1718eeb4cbR5, we should maybe use ProductVersion or Major/Minor/PatchVersion though.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

cc: @ericstj I think it makes sense to use any of the recommendations above.

@tmattmatJan 20, 2020

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Yes, we should not have the version specified in multiple places.
I'd use <AssemblyVersion>$(MajorVersion).$(MinorVersion).$(PatchVersion).0</AssemblyVersion> if you want to suppress defaulting to 42.42.42.42.

@tmattmatJan 20, 2020

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I'd be also nice to add a comment that explains why is this set here - something like (guessing) "The AssemblyVersion must match netcoreappM.N moniker. Whenever the version is updated we need to update the TFM as well.".

@dagood

Copy link
Copy Markdown
MemberAuthor

An alternative that fixes CI (but not dev build annoyances) is to pipe in a "non-official officialbuildid" so the date number stays constant throughout the course of the CI run.

To expand on this a bit (in case the assembly version fix doesn't work, or maybe something else breaks downstream), maybe we can keep DotNetUseShippingVersions as true, but set /p:_BuildNumber=$(BUILD_BUILDNUMBER) so that the version stays constant across the jobs.

@safern

Copy link
Copy Markdown
Member

That might be a good idea, the problem I see with that is that it doesn't solve the local live live issue of people having to rebuild libraries/coreclr if they want to build again the installer a day after they built libraries or coreclr.

@safern

Copy link
Copy Markdown
Member

It seems like the dependency to System.Private.CoreLib has the wrong version, I don't know if CoreLib also needs to be 5.0.0.0 or if we're calculating the dependency wrong. @ericstj might know.

C:\h\w\98B8088C\p\packageTest.targets(74,5): error : Assembly 'System.Runtime.Intrinsics.Experimental' has insufficient version for dependency 'System.Private.CoreLib' : 5.0.0.0 < 42.42.42.42. [C:\h\w\98B8088C\w\A0E70914\u\netcoreapp5.0\project.csproj]

@mmitche

Copy link
Copy Markdown
Member

What's the context here? I think I'm missing what the root of the issue is.

@dagood

Copy link
Copy Markdown
MemberAuthor

See #1089

@tmat

tmat commented Jan 20, 2020

Copy link
Copy Markdown
Member

@dagood Are there any customizations to versioning in dotnet/runtime repo that tweak the default Arcade versions or are there any parts of the repo that use something different than the versions Arcade sets? I don't see how PR validation spanning a day boundary could be a problem if the whole build used $(OfficialBuildId) to derive version numbers (which happens to be a date based number, but that's not a requirement). The build should not depend on current time in any way. If there is some part of the build that depends on current date/time that'd be a bug.

@dagood

dagood commented Jan 20, 2020

Copy link
Copy Markdown
MemberAuthor

I don't see how PR validation spanning a day boundary could be a problem if the whole build used $(OfficialBuildId) to derive version numbers (which happens to be a date based number, but that's not a requirement).

PR builds are not official builds, so we don't use OfficialBuildId. The Arcade docs include this guidance: Versioning.md#build-kind.

However, this is basically the same as my suggestion to set /p:_BuildNumber=$(BUILD_BUILDNUMBER).

@dagooddagood removed their assignment Jan 20, 2020
@dagood

Copy link
Copy Markdown
MemberAuthor

As for why we have this issue:

it doesn't solve the local live live issue of people having to rebuild libraries/coreclr if they want to build again the installer a day after they built libraries or coreclr.

It's because dotnet/runtime sets <DotNetUseShippingVersions>true</DotNetUseShippingVersions>.

@tmat

tmat commented Jan 21, 2020

Copy link
Copy Markdown
Member

PR builds are not official builds, so we don't use OfficialBuildId.

I see. I mistaken this for official build issue. Got it. In PR validation though the version has Major.Minor.Path-ci format. No date based version number is added.

However, this is basically the same as my suggestion to set /p:_BuildNumber=$(BUILD_BUILDNUMBER).

I would rather avoid that. _BuildNumber is a private property not to be used outside of Arcade SDK targets.

@tmat

tmat commented Jan 21, 2020

Copy link
Copy Markdown
Member

It's because dotnet/runtime sets <DotNetUseShippingVersions>true</DotNetUseShippingVersions>.

Now I understand. Yes, don't set this.

@dagood

Copy link
Copy Markdown
MemberAuthor

You don't have to tell me. 😄

@safern

Copy link
Copy Markdown
Member

I think we just need to figure out why we're getting the package test failures. I agree we shouldn't set DotNetUseShippingVersions. I'll take a look locally to see if I get a repro and a suggested fix.

@dagood

Copy link
Copy Markdown
MemberAuthor

Please feel free to push to this PR or make your own, I'm not actively working on this.

@safern

Copy link
Copy Markdown
Member

@dagood I moved the AssemblyVersion declaration to Versions.props and also, I made it use $(MajorVersion).$(MinorVersion).0.0 -- as for the patches and revisions should be manually updated per assembly if it is serviced (talked to @ericstj on this).

Also, package testing is currently using a Microsoft.NETCore.App package from our custom feeds. I updated it manually to use the latest one. I didn't want to add a BAR subscription to the runtime repo because of the ongoing discussion regarding to that and we should eventually fix package testing to use the live bits rather than the latest published bits. Will open an issue for that.

Comment threadeng/Versions.props Outdated
<PreReleaseVersionLabel>alpha</PreReleaseVersionLabel>
<PreReleaseVersionIteration>1</PreReleaseVersionIteration>

<!-- Set assembly version to align with Major and Minor version -->

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Also mention this? My first thought looking at this line is why it doesn't use patch version.

as for the patches and revisions should be manually updated per assembly if it is serviced

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Sure. will update the comment.

Comment threadeng/Versions.props
<MicrosoftDotNetVersionToolsTasksVersion>5.0.0-beta.20063.2</MicrosoftDotNetVersionToolsTasksVersion>
<!-- Installer dependencies -->
<MicrosoftNETCoreAppVersion>5.0.0-alpha.1.19562.8</MicrosoftNETCoreAppVersion>
<MicrosoftNETCoreAppVersion>5.0.0-alpha.1.20071.1</MicrosoftNETCoreAppVersion>

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I'm concerned that this version is being used... the installer tests need to be running on the current build's outputs or else they aren't covering anything. 😕 Can you link the issue you mentioned you'd file for this?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I'm surprised the installer tests use this property, I thought this property was used by package testing only.

I mentioned it here:
#1823 (comment)

Could you elaborate how the installer tests use this instead of the recently built product?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Could you elaborate how the installer tests use this instead of the recently built product?

No, I'm not familiar with it and I'm surprised by it when you mentioned you had to change this to make the installer tests work.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I didn't mean installer tests, I mean libraries all configuration package tests... we run some tests on our oob packages to make sure closure is complete and that we don't ship duplicate types and that all supported rids for those packages publish correctly, etc.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Ah. This should be moved out from <!-- Installer dependencies --> then, it seems to me. Thanks for the background.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I see, that was a result from the repo merge as in corefx it was "core-setup dependencies" maybe when we consolidated it was just a find and replace from "core-setup" to "installer". Will remove.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Actually, what it means is that those dependencies as built by the installer. If you look the file, those comments split the sections on where are those packages coming from, for example look at runtime-assets dependencies which comes from https://github.com/dotnet/runtime-assets or arcade dependencies.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Oh, that makes sense. Sorry for the confusion on this, no need to change it.

@dagood

Copy link
Copy Markdown
MemberAuthor

I don't have enough context on the test expectations to help with the current CI error:

Assert.Equal() Failure
↓ (pos 20)
Expected: ComLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=···
Actual: ComLibrary, Version=5.0.0.0, Culture=neutral, PublicKeyToken=···
↑ (pos 20)
at Microsoft.NET.HostModel.ComHost.Tests.ClsidMapTests.PublicComVisibleTypeWithGuidAdded() in /_/src/installer/test/Microsoft.NET.HostModel.Tests/Microsoft.NET.HostModel.ComHost.Tests/ClsidMapTests.cs:line 35

Maybe @vitek-karas and @elinor-fung can help?

@safern

Copy link
Copy Markdown
Member

Thanks @dagood -- I'm already looking at this locally, getting a repro and then see why ComLibrary is not getting the right AssemblyVersion.

@elinor-fung

Copy link
Copy Markdown
Member

The test checks creating of a file (used for COM support) with data about a library - reading the assembly metadata; it uses the output assembly of the ComLibrary project (https://github.com/dotnet/runtime/tree/master/src/installer/test/Assets/TestProjects/ComLibrary) reading the assembly metadata.

It is hard-coded to expect version 1.0.0.0, but it looks like the output of the ComLibrary test project is now 5.0.0.0? I would expect that it should have been set to 1.0.0.0 based on this though: https://github.com/dotnet/runtime/pull/1835/files#diff-dcf139fe6da30186f3ea56c8ff1a086bR10?

@safern

Copy link
Copy Markdown
Member

thanks for explaining @elinor-fung 😄

It is hard-coded to expect version 1.0.0.0, but it looks like the output of the ComLibrary test project is now 5.0.0.0? I would expect that it should have been set to 1.0.0.0 based on this though: https://github.com/dotnet/runtime/pull/1835/files#diff-dcf139fe6da30186f3ea56c8ff1a086bR10?

Me too, that''s why now I'm trying this locally to figure out why it didn't honor my AssemblyVersion in the props file for the test projects.

@safern
safern marked this pull request as ready for review January 24, 2020 06:41
@safern

Copy link
Copy Markdown
Member

This is now ready 😄

@dagood

Copy link
Copy Markdown
MemberAuthor

LGTM. (Can't approve "my" PR. 🙂)

@safern
safern merged commit 1e09e98 into dotnet:masterJan 24, 2020
@dagood
dagood deleted the rm-date branch January 24, 2020 18:18
@ghostghost locked as resolved and limited conversation to collaborators Dec 11, 2020
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

When PR validation spans a UTC day, the Installer build may fail due to a package version mismatch

5 participants

@dagood@safern@mmitche@tmat@elinor-fung
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Remove date number from dev build version - #1835

Merged
safern merged 9 commits into
dotnet:masterfrom
dagood:rm-date
Jan 24, 2020
Merged

Remove date number from dev build version#1835
safern merged 9 commits into
dotnet:masterfrom
dagood:rm-date

Conversation

@dagood

@dagooddagood commented Jan 16, 2020

Copy link
Copy Markdown
Member

Fixes: #1089

Comment threadeng/Versions.props
<MinorVersion>0</MinorVersion>
<PatchVersion>0</PatchVersion>
<!-- Always use shipping version instead of dummy version -->
<DotNetUseShippingVersions>true</DotNetUseShippingVersions>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can we leave this set to true when we're in an Official build? So that package versions are unique?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Awesome, arcade is ahead of me 😄

@dagood

Copy link
Copy Markdown
MemberAuthor

Getting errors in Libraries build--a lot of these:

.packages\microsoft.dotnet.build.tasks.packaging\5.0.0-beta.20063.2\build\Packaging.targets(1161,5): error : File Microsoft.Win32.Primitives, version 42.42.42.42 was included framework package Microsoft.Private.CoreFx.NETCoreApp/5.0.0-ci but that version is not considered inbox in package index F:\workspace_work\1\s\src\libraries\pkg\Microsoft.Private.PackageBaseline\packageIndex.json. Please add it with appropriate InboxOn entry for netcoreapp5.0 or suppress this message with PermitInbox suppression.

@safern

Copy link
Copy Markdown
Member

Getting errors in Libraries build--a lot of these:

Yeah, the assembly version was affected by this change and now it is getting arcade's 42.42.42.42 version... we need to figure out how to set it up so that it respects our AssemblyVersions.

@dagood

Copy link
Copy Markdown
MemberAuthor

Might be tricky, getting Arcade to produce date-based assembly versions but not use the date for the packages. Maybe condition DotNetUseShippingVersions so it's specifically on during certain parts of the build? Don't know if that'll work out.

Feel free to push to this PR if you have time to work on it (or make a new one, no real difference).

@dagood

Copy link
Copy Markdown
MemberAuthor

An alternative that fixes CI (but not dev build annoyances) is to pipe in a "non-official officialbuildid" so the date number stays constant throughout the course of the CI run.

@safern

Copy link
Copy Markdown
Member

We could also introduce an arcade property... something like UseAssemblyShippingVersions.

@safern

Copy link
Copy Markdown
Member

cc: @tmat@mmitche for discussion.

@safern

Copy link
Copy Markdown
Member

We could also introduce an arcade property... something like UseAssemblyShippingVersions.

Never mind I think we figured out the issue.

Comment threadsrc/libraries/Directory.Build.props Outdated
<Import Project="..\..\Directory.Build.props" />

<PropertyGroup>
<AssemblyVersion>5.0.0.0</AssemblyVersion>

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

This matches https://github.com/dotnet/corefx/pull/41723/files#diff-8b8f08ffbf7b863fb3700c1718eeb4cbR5, we should maybe use ProductVersion or Major/Minor/PatchVersion though.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

cc: @ericstj I think it makes sense to use any of the recommendations above.

@tmattmatJan 20, 2020

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Yes, we should not have the version specified in multiple places.
I'd use <AssemblyVersion>$(MajorVersion).$(MinorVersion).$(PatchVersion).0</AssemblyVersion> if you want to suppress defaulting to 42.42.42.42.

@tmattmatJan 20, 2020

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I'd be also nice to add a comment that explains why is this set here - something like (guessing) "The AssemblyVersion must match netcoreappM.N moniker. Whenever the version is updated we need to update the TFM as well.".

@dagood

Copy link
Copy Markdown
MemberAuthor

An alternative that fixes CI (but not dev build annoyances) is to pipe in a "non-official officialbuildid" so the date number stays constant throughout the course of the CI run.

To expand on this a bit (in case the assembly version fix doesn't work, or maybe something else breaks downstream), maybe we can keep DotNetUseShippingVersions as true, but set /p:_BuildNumber=$(BUILD_BUILDNUMBER) so that the version stays constant across the jobs.

@safern

Copy link
Copy Markdown
Member

That might be a good idea, the problem I see with that is that it doesn't solve the local live live issue of people having to rebuild libraries/coreclr if they want to build again the installer a day after they built libraries or coreclr.

@safern

Copy link
Copy Markdown
Member

It seems like the dependency to System.Private.CoreLib has the wrong version, I don't know if CoreLib also needs to be 5.0.0.0 or if we're calculating the dependency wrong. @ericstj might know.

C:\h\w\98B8088C\p\packageTest.targets(74,5): error : Assembly 'System.Runtime.Intrinsics.Experimental' has insufficient version for dependency 'System.Private.CoreLib' : 5.0.0.0 < 42.42.42.42. [C:\h\w\98B8088C\w\A0E70914\u\netcoreapp5.0\project.csproj]

@mmitche

Copy link
Copy Markdown
Member

What's the context here? I think I'm missing what the root of the issue is.

@dagood

Copy link
Copy Markdown
MemberAuthor

See #1089

@tmat

tmat commented Jan 20, 2020

Copy link
Copy Markdown
Member

@dagood Are there any customizations to versioning in dotnet/runtime repo that tweak the default Arcade versions or are there any parts of the repo that use something different than the versions Arcade sets? I don't see how PR validation spanning a day boundary could be a problem if the whole build used $(OfficialBuildId) to derive version numbers (which happens to be a date based number, but that's not a requirement). The build should not depend on current time in any way. If there is some part of the build that depends on current date/time that'd be a bug.

@dagood

dagood commented Jan 20, 2020

Copy link
Copy Markdown
MemberAuthor

I don't see how PR validation spanning a day boundary could be a problem if the whole build used $(OfficialBuildId) to derive version numbers (which happens to be a date based number, but that's not a requirement).

PR builds are not official builds, so we don't use OfficialBuildId. The Arcade docs include this guidance: Versioning.md#build-kind.

However, this is basically the same as my suggestion to set /p:_BuildNumber=$(BUILD_BUILDNUMBER).

@dagooddagood removed their assignment Jan 20, 2020
@dagood

Copy link
Copy Markdown
MemberAuthor

As for why we have this issue:

it doesn't solve the local live live issue of people having to rebuild libraries/coreclr if they want to build again the installer a day after they built libraries or coreclr.

It's because dotnet/runtime sets <DotNetUseShippingVersions>true</DotNetUseShippingVersions>.

@tmat

tmat commented Jan 21, 2020

Copy link
Copy Markdown
Member

PR builds are not official builds, so we don't use OfficialBuildId.

I see. I mistaken this for official build issue. Got it. In PR validation though the version has Major.Minor.Path-ci format. No date based version number is added.

However, this is basically the same as my suggestion to set /p:_BuildNumber=$(BUILD_BUILDNUMBER).

I would rather avoid that. _BuildNumber is a private property not to be used outside of Arcade SDK targets.

@tmat

tmat commented Jan 21, 2020

Copy link
Copy Markdown
Member

It's because dotnet/runtime sets <DotNetUseShippingVersions>true</DotNetUseShippingVersions>.

Now I understand. Yes, don't set this.

@dagood

Copy link
Copy Markdown
MemberAuthor

You don't have to tell me. 😄

@safern

Copy link
Copy Markdown
Member

I think we just need to figure out why we're getting the package test failures. I agree we shouldn't set DotNetUseShippingVersions. I'll take a look locally to see if I get a repro and a suggested fix.

@dagood

Copy link
Copy Markdown
MemberAuthor

Please feel free to push to this PR or make your own, I'm not actively working on this.

@safern

Copy link
Copy Markdown
Member

@dagood I moved the AssemblyVersion declaration to Versions.props and also, I made it use $(MajorVersion).$(MinorVersion).0.0 -- as for the patches and revisions should be manually updated per assembly if it is serviced (talked to @ericstj on this).

Also, package testing is currently using a Microsoft.NETCore.App package from our custom feeds. I updated it manually to use the latest one. I didn't want to add a BAR subscription to the runtime repo because of the ongoing discussion regarding to that and we should eventually fix package testing to use the live bits rather than the latest published bits. Will open an issue for that.

Comment threadeng/Versions.props Outdated
<PreReleaseVersionLabel>alpha</PreReleaseVersionLabel>
<PreReleaseVersionIteration>1</PreReleaseVersionIteration>

<!-- Set assembly version to align with Major and Minor version -->

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Also mention this? My first thought looking at this line is why it doesn't use patch version.

as for the patches and revisions should be manually updated per assembly if it is serviced

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Sure. will update the comment.

Comment threadeng/Versions.props
<MicrosoftDotNetVersionToolsTasksVersion>5.0.0-beta.20063.2</MicrosoftDotNetVersionToolsTasksVersion>
<!-- Installer dependencies -->
<MicrosoftNETCoreAppVersion>5.0.0-alpha.1.19562.8</MicrosoftNETCoreAppVersion>
<MicrosoftNETCoreAppVersion>5.0.0-alpha.1.20071.1</MicrosoftNETCoreAppVersion>

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I'm concerned that this version is being used... the installer tests need to be running on the current build's outputs or else they aren't covering anything. 😕 Can you link the issue you mentioned you'd file for this?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I'm surprised the installer tests use this property, I thought this property was used by package testing only.

I mentioned it here:
#1823 (comment)

Could you elaborate how the installer tests use this instead of the recently built product?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Could you elaborate how the installer tests use this instead of the recently built product?

No, I'm not familiar with it and I'm surprised by it when you mentioned you had to change this to make the installer tests work.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I didn't mean installer tests, I mean libraries all configuration package tests... we run some tests on our oob packages to make sure closure is complete and that we don't ship duplicate types and that all supported rids for those packages publish correctly, etc.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Ah. This should be moved out from <!-- Installer dependencies --> then, it seems to me. Thanks for the background.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I see, that was a result from the repo merge as in corefx it was "core-setup dependencies" maybe when we consolidated it was just a find and replace from "core-setup" to "installer". Will remove.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Actually, what it means is that those dependencies as built by the installer. If you look the file, those comments split the sections on where are those packages coming from, for example look at runtime-assets dependencies which comes from https://github.com/dotnet/runtime-assets or arcade dependencies.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Oh, that makes sense. Sorry for the confusion on this, no need to change it.

@dagood

Copy link
Copy Markdown
MemberAuthor

I don't have enough context on the test expectations to help with the current CI error:

Assert.Equal() Failure
↓ (pos 20)
Expected: ComLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=···
Actual: ComLibrary, Version=5.0.0.0, Culture=neutral, PublicKeyToken=···
↑ (pos 20)
at Microsoft.NET.HostModel.ComHost.Tests.ClsidMapTests.PublicComVisibleTypeWithGuidAdded() in /_/src/installer/test/Microsoft.NET.HostModel.Tests/Microsoft.NET.HostModel.ComHost.Tests/ClsidMapTests.cs:line 35

Maybe @vitek-karas and @elinor-fung can help?

@safern

Copy link
Copy Markdown
Member

Thanks @dagood -- I'm already looking at this locally, getting a repro and then see why ComLibrary is not getting the right AssemblyVersion.

@elinor-fung

Copy link
Copy Markdown
Member

The test checks creating of a file (used for COM support) with data about a library - reading the assembly metadata; it uses the output assembly of the ComLibrary project (https://github.com/dotnet/runtime/tree/master/src/installer/test/Assets/TestProjects/ComLibrary) reading the assembly metadata.

It is hard-coded to expect version 1.0.0.0, but it looks like the output of the ComLibrary test project is now 5.0.0.0? I would expect that it should have been set to 1.0.0.0 based on this though: https://github.com/dotnet/runtime/pull/1835/files#diff-dcf139fe6da30186f3ea56c8ff1a086bR10?

@safern

Copy link
Copy Markdown
Member

thanks for explaining @elinor-fung 😄

It is hard-coded to expect version 1.0.0.0, but it looks like the output of the ComLibrary test project is now 5.0.0.0? I would expect that it should have been set to 1.0.0.0 based on this though: https://github.com/dotnet/runtime/pull/1835/files#diff-dcf139fe6da30186f3ea56c8ff1a086bR10?

Me too, that''s why now I'm trying this locally to figure out why it didn't honor my AssemblyVersion in the props file for the test projects.

@safern
safern marked this pull request as ready for review January 24, 2020 06:41
@safern

Copy link
Copy Markdown
Member

This is now ready 😄

@dagood

Copy link
Copy Markdown
MemberAuthor

LGTM. (Can't approve "my" PR. 🙂)

@safern
safern merged commit 1e09e98 into dotnet:masterJan 24, 2020
@dagood
dagood deleted the rm-date branch January 24, 2020 18:18
@ghostghost locked as resolved and limited conversation to collaborators Dec 11, 2020
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

When PR validation spans a UTC day, the Installer build may fail due to a package version mismatch

5 participants

@dagood@safern@mmitche@tmat@elinor-fung
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Remove date number from dev build version - #1835

Merged
safern merged 9 commits into
dotnet:masterfrom
dagood:rm-date
Jan 24, 2020
Merged

Remove date number from dev build version#1835
safern merged 9 commits into
dotnet:masterfrom
dagood:rm-date

Conversation

@dagood

@dagooddagood commented Jan 16, 2020

Copy link
Copy Markdown
Member

Fixes: #1089

Comment threadeng/Versions.props
<MinorVersion>0</MinorVersion>
<PatchVersion>0</PatchVersion>
<!-- Always use shipping version instead of dummy version -->
<DotNetUseShippingVersions>true</DotNetUseShippingVersions>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can we leave this set to true when we're in an Official build? So that package versions are unique?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Awesome, arcade is ahead of me 😄

@dagood

Copy link
Copy Markdown
MemberAuthor

Getting errors in Libraries build--a lot of these:

.packages\microsoft.dotnet.build.tasks.packaging\5.0.0-beta.20063.2\build\Packaging.targets(1161,5): error : File Microsoft.Win32.Primitives, version 42.42.42.42 was included framework package Microsoft.Private.CoreFx.NETCoreApp/5.0.0-ci but that version is not considered inbox in package index F:\workspace_work\1\s\src\libraries\pkg\Microsoft.Private.PackageBaseline\packageIndex.json. Please add it with appropriate InboxOn entry for netcoreapp5.0 or suppress this message with PermitInbox suppression.

@safern

Copy link
Copy Markdown
Member

Getting errors in Libraries build--a lot of these:

Yeah, the assembly version was affected by this change and now it is getting arcade's 42.42.42.42 version... we need to figure out how to set it up so that it respects our AssemblyVersions.

@dagood

Copy link
Copy Markdown
MemberAuthor

Might be tricky, getting Arcade to produce date-based assembly versions but not use the date for the packages. Maybe condition DotNetUseShippingVersions so it's specifically on during certain parts of the build? Don't know if that'll work out.

Feel free to push to this PR if you have time to work on it (or make a new one, no real difference).

@dagood

Copy link
Copy Markdown
MemberAuthor

An alternative that fixes CI (but not dev build annoyances) is to pipe in a "non-official officialbuildid" so the date number stays constant throughout the course of the CI run.

@safern

Copy link
Copy Markdown
Member

We could also introduce an arcade property... something like UseAssemblyShippingVersions.

@safern

Copy link
Copy Markdown
Member

cc: @tmat@mmitche for discussion.

@safern

Copy link
Copy Markdown
Member

We could also introduce an arcade property... something like UseAssemblyShippingVersions.

Never mind I think we figured out the issue.

Comment threadsrc/libraries/Directory.Build.props Outdated
<Import Project="..\..\Directory.Build.props" />

<PropertyGroup>
<AssemblyVersion>5.0.0.0</AssemblyVersion>

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

This matches https://github.com/dotnet/corefx/pull/41723/files#diff-8b8f08ffbf7b863fb3700c1718eeb4cbR5, we should maybe use ProductVersion or Major/Minor/PatchVersion though.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

cc: @ericstj I think it makes sense to use any of the recommendations above.

@tmattmatJan 20, 2020

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Yes, we should not have the version specified in multiple places.
I'd use <AssemblyVersion>$(MajorVersion).$(MinorVersion).$(PatchVersion).0</AssemblyVersion> if you want to suppress defaulting to 42.42.42.42.

@tmattmatJan 20, 2020

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I'd be also nice to add a comment that explains why is this set here - something like (guessing) "The AssemblyVersion must match netcoreappM.N moniker. Whenever the version is updated we need to update the TFM as well.".

@dagood

Copy link
Copy Markdown
MemberAuthor

An alternative that fixes CI (but not dev build annoyances) is to pipe in a "non-official officialbuildid" so the date number stays constant throughout the course of the CI run.

To expand on this a bit (in case the assembly version fix doesn't work, or maybe something else breaks downstream), maybe we can keep DotNetUseShippingVersions as true, but set /p:_BuildNumber=$(BUILD_BUILDNUMBER) so that the version stays constant across the jobs.

@safern

Copy link
Copy Markdown
Member

That might be a good idea, the problem I see with that is that it doesn't solve the local live live issue of people having to rebuild libraries/coreclr if they want to build again the installer a day after they built libraries or coreclr.

@safern

Copy link
Copy Markdown
Member

It seems like the dependency to System.Private.CoreLib has the wrong version, I don't know if CoreLib also needs to be 5.0.0.0 or if we're calculating the dependency wrong. @ericstj might know.

C:\h\w\98B8088C\p\packageTest.targets(74,5): error : Assembly 'System.Runtime.Intrinsics.Experimental' has insufficient version for dependency 'System.Private.CoreLib' : 5.0.0.0 < 42.42.42.42. [C:\h\w\98B8088C\w\A0E70914\u\netcoreapp5.0\project.csproj]

@mmitche

Copy link
Copy Markdown
Member

What's the context here? I think I'm missing what the root of the issue is.

@dagood

Copy link
Copy Markdown
MemberAuthor

See #1089

@tmat

tmat commented Jan 20, 2020

Copy link
Copy Markdown
Member

@dagood Are there any customizations to versioning in dotnet/runtime repo that tweak the default Arcade versions or are there any parts of the repo that use something different than the versions Arcade sets? I don't see how PR validation spanning a day boundary could be a problem if the whole build used $(OfficialBuildId) to derive version numbers (which happens to be a date based number, but that's not a requirement). The build should not depend on current time in any way. If there is some part of the build that depends on current date/time that'd be a bug.

@dagood

dagood commented Jan 20, 2020

Copy link
Copy Markdown
MemberAuthor

I don't see how PR validation spanning a day boundary could be a problem if the whole build used $(OfficialBuildId) to derive version numbers (which happens to be a date based number, but that's not a requirement).

PR builds are not official builds, so we don't use OfficialBuildId. The Arcade docs include this guidance: Versioning.md#build-kind.

However, this is basically the same as my suggestion to set /p:_BuildNumber=$(BUILD_BUILDNUMBER).

@dagooddagood removed their assignment Jan 20, 2020
@dagood

Copy link
Copy Markdown
MemberAuthor

As for why we have this issue:

it doesn't solve the local live live issue of people having to rebuild libraries/coreclr if they want to build again the installer a day after they built libraries or coreclr.

It's because dotnet/runtime sets <DotNetUseShippingVersions>true</DotNetUseShippingVersions>.

@tmat

tmat commented Jan 21, 2020

Copy link
Copy Markdown
Member

PR builds are not official builds, so we don't use OfficialBuildId.

I see. I mistaken this for official build issue. Got it. In PR validation though the version has Major.Minor.Path-ci format. No date based version number is added.

However, this is basically the same as my suggestion to set /p:_BuildNumber=$(BUILD_BUILDNUMBER).

I would rather avoid that. _BuildNumber is a private property not to be used outside of Arcade SDK targets.

@tmat

tmat commented Jan 21, 2020

Copy link
Copy Markdown
Member

It's because dotnet/runtime sets <DotNetUseShippingVersions>true</DotNetUseShippingVersions>.

Now I understand. Yes, don't set this.

@dagood

Copy link
Copy Markdown
MemberAuthor

You don't have to tell me. 😄

@safern

Copy link
Copy Markdown
Member

I think we just need to figure out why we're getting the package test failures. I agree we shouldn't set DotNetUseShippingVersions. I'll take a look locally to see if I get a repro and a suggested fix.

@dagood

Copy link
Copy Markdown
MemberAuthor

Please feel free to push to this PR or make your own, I'm not actively working on this.

@safern

Copy link
Copy Markdown
Member

@dagood I moved the AssemblyVersion declaration to Versions.props and also, I made it use $(MajorVersion).$(MinorVersion).0.0 -- as for the patches and revisions should be manually updated per assembly if it is serviced (talked to @ericstj on this).

Also, package testing is currently using a Microsoft.NETCore.App package from our custom feeds. I updated it manually to use the latest one. I didn't want to add a BAR subscription to the runtime repo because of the ongoing discussion regarding to that and we should eventually fix package testing to use the live bits rather than the latest published bits. Will open an issue for that.

Comment threadeng/Versions.props Outdated
<PreReleaseVersionLabel>alpha</PreReleaseVersionLabel>
<PreReleaseVersionIteration>1</PreReleaseVersionIteration>

<!-- Set assembly version to align with Major and Minor version -->

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Also mention this? My first thought looking at this line is why it doesn't use patch version.

as for the patches and revisions should be manually updated per assembly if it is serviced

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Sure. will update the comment.

Comment threadeng/Versions.props
<MicrosoftDotNetVersionToolsTasksVersion>5.0.0-beta.20063.2</MicrosoftDotNetVersionToolsTasksVersion>
<!-- Installer dependencies -->
<MicrosoftNETCoreAppVersion>5.0.0-alpha.1.19562.8</MicrosoftNETCoreAppVersion>
<MicrosoftNETCoreAppVersion>5.0.0-alpha.1.20071.1</MicrosoftNETCoreAppVersion>

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I'm concerned that this version is being used... the installer tests need to be running on the current build's outputs or else they aren't covering anything. 😕 Can you link the issue you mentioned you'd file for this?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I'm surprised the installer tests use this property, I thought this property was used by package testing only.

I mentioned it here:
#1823 (comment)

Could you elaborate how the installer tests use this instead of the recently built product?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Could you elaborate how the installer tests use this instead of the recently built product?

No, I'm not familiar with it and I'm surprised by it when you mentioned you had to change this to make the installer tests work.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I didn't mean installer tests, I mean libraries all configuration package tests... we run some tests on our oob packages to make sure closure is complete and that we don't ship duplicate types and that all supported rids for those packages publish correctly, etc.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Ah. This should be moved out from <!-- Installer dependencies --> then, it seems to me. Thanks for the background.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I see, that was a result from the repo merge as in corefx it was "core-setup dependencies" maybe when we consolidated it was just a find and replace from "core-setup" to "installer". Will remove.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Actually, what it means is that those dependencies as built by the installer. If you look the file, those comments split the sections on where are those packages coming from, for example look at runtime-assets dependencies which comes from https://github.com/dotnet/runtime-assets or arcade dependencies.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Oh, that makes sense. Sorry for the confusion on this, no need to change it.

@dagood

Copy link
Copy Markdown
MemberAuthor

I don't have enough context on the test expectations to help with the current CI error:

Assert.Equal() Failure
↓ (pos 20)
Expected: ComLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=···
Actual: ComLibrary, Version=5.0.0.0, Culture=neutral, PublicKeyToken=···
↑ (pos 20)
at Microsoft.NET.HostModel.ComHost.Tests.ClsidMapTests.PublicComVisibleTypeWithGuidAdded() in /_/src/installer/test/Microsoft.NET.HostModel.Tests/Microsoft.NET.HostModel.ComHost.Tests/ClsidMapTests.cs:line 35

Maybe @vitek-karas and @elinor-fung can help?

@safern

Copy link
Copy Markdown
Member

Thanks @dagood -- I'm already looking at this locally, getting a repro and then see why ComLibrary is not getting the right AssemblyVersion.

@elinor-fung

Copy link
Copy Markdown
Member

The test checks creating of a file (used for COM support) with data about a library - reading the assembly metadata; it uses the output assembly of the ComLibrary project (https://github.com/dotnet/runtime/tree/master/src/installer/test/Assets/TestProjects/ComLibrary) reading the assembly metadata.

It is hard-coded to expect version 1.0.0.0, but it looks like the output of the ComLibrary test project is now 5.0.0.0? I would expect that it should have been set to 1.0.0.0 based on this though: https://github.com/dotnet/runtime/pull/1835/files#diff-dcf139fe6da30186f3ea56c8ff1a086bR10?

@safern

Copy link
Copy Markdown
Member

thanks for explaining @elinor-fung 😄

It is hard-coded to expect version 1.0.0.0, but it looks like the output of the ComLibrary test project is now 5.0.0.0? I would expect that it should have been set to 1.0.0.0 based on this though: https://github.com/dotnet/runtime/pull/1835/files#diff-dcf139fe6da30186f3ea56c8ff1a086bR10?

Me too, that''s why now I'm trying this locally to figure out why it didn't honor my AssemblyVersion in the props file for the test projects.

@safern
safern marked this pull request as ready for review January 24, 2020 06:41
@safern

Copy link
Copy Markdown
Member

This is now ready 😄

@dagood

Copy link
Copy Markdown
MemberAuthor

LGTM. (Can't approve "my" PR. 🙂)

@safern
safern merged commit 1e09e98 into dotnet:masterJan 24, 2020
@dagood
dagood deleted the rm-date branch January 24, 2020 18:18
@ghostghost locked as resolved and limited conversation to collaborators Dec 11, 2020
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

When PR validation spans a UTC day, the Installer build may fail due to a package version mismatch

5 participants

@dagood@safern@mmitche@tmat@elinor-fung
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Remove date number from dev build version - #1835

Merged
safern merged 9 commits into
dotnet:masterfrom
dagood:rm-date
Jan 24, 2020
Merged

Remove date number from dev build version#1835
safern merged 9 commits into
dotnet:masterfrom
dagood:rm-date

Conversation

@dagood

@dagooddagood commented Jan 16, 2020

Copy link
Copy Markdown
Member

Fixes: #1089

Comment threadeng/Versions.props
<MinorVersion>0</MinorVersion>
<PatchVersion>0</PatchVersion>
<!-- Always use shipping version instead of dummy version -->
<DotNetUseShippingVersions>true</DotNetUseShippingVersions>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can we leave this set to true when we're in an Official build? So that package versions are unique?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Awesome, arcade is ahead of me 😄

@dagood

Copy link
Copy Markdown
MemberAuthor

Getting errors in Libraries build--a lot of these:

.packages\microsoft.dotnet.build.tasks.packaging\5.0.0-beta.20063.2\build\Packaging.targets(1161,5): error : File Microsoft.Win32.Primitives, version 42.42.42.42 was included framework package Microsoft.Private.CoreFx.NETCoreApp/5.0.0-ci but that version is not considered inbox in package index F:\workspace_work\1\s\src\libraries\pkg\Microsoft.Private.PackageBaseline\packageIndex.json. Please add it with appropriate InboxOn entry for netcoreapp5.0 or suppress this message with PermitInbox suppression.

@safern

Copy link
Copy Markdown
Member

Getting errors in Libraries build--a lot of these:

Yeah, the assembly version was affected by this change and now it is getting arcade's 42.42.42.42 version... we need to figure out how to set it up so that it respects our AssemblyVersions.

@dagood

Copy link
Copy Markdown
MemberAuthor

Might be tricky, getting Arcade to produce date-based assembly versions but not use the date for the packages. Maybe condition DotNetUseShippingVersions so it's specifically on during certain parts of the build? Don't know if that'll work out.

Feel free to push to this PR if you have time to work on it (or make a new one, no real difference).

@dagood

Copy link
Copy Markdown
MemberAuthor

An alternative that fixes CI (but not dev build annoyances) is to pipe in a "non-official officialbuildid" so the date number stays constant throughout the course of the CI run.

@safern

Copy link
Copy Markdown
Member

We could also introduce an arcade property... something like UseAssemblyShippingVersions.

@safern

Copy link
Copy Markdown
Member

cc: @tmat@mmitche for discussion.

@safern

Copy link
Copy Markdown
Member

We could also introduce an arcade property... something like UseAssemblyShippingVersions.

Never mind I think we figured out the issue.

Comment threadsrc/libraries/Directory.Build.props Outdated
<Import Project="..\..\Directory.Build.props" />

<PropertyGroup>
<AssemblyVersion>5.0.0.0</AssemblyVersion>

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

This matches https://github.com/dotnet/corefx/pull/41723/files#diff-8b8f08ffbf7b863fb3700c1718eeb4cbR5, we should maybe use ProductVersion or Major/Minor/PatchVersion though.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

cc: @ericstj I think it makes sense to use any of the recommendations above.

@tmattmatJan 20, 2020

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Yes, we should not have the version specified in multiple places.
I'd use <AssemblyVersion>$(MajorVersion).$(MinorVersion).$(PatchVersion).0</AssemblyVersion> if you want to suppress defaulting to 42.42.42.42.

@tmattmatJan 20, 2020

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I'd be also nice to add a comment that explains why is this set here - something like (guessing) "The AssemblyVersion must match netcoreappM.N moniker. Whenever the version is updated we need to update the TFM as well.".

@dagood

Copy link
Copy Markdown
MemberAuthor

An alternative that fixes CI (but not dev build annoyances) is to pipe in a "non-official officialbuildid" so the date number stays constant throughout the course of the CI run.

To expand on this a bit (in case the assembly version fix doesn't work, or maybe something else breaks downstream), maybe we can keep DotNetUseShippingVersions as true, but set /p:_BuildNumber=$(BUILD_BUILDNUMBER) so that the version stays constant across the jobs.

@safern

Copy link
Copy Markdown
Member

That might be a good idea, the problem I see with that is that it doesn't solve the local live live issue of people having to rebuild libraries/coreclr if they want to build again the installer a day after they built libraries or coreclr.

@safern

Copy link
Copy Markdown
Member

It seems like the dependency to System.Private.CoreLib has the wrong version, I don't know if CoreLib also needs to be 5.0.0.0 or if we're calculating the dependency wrong. @ericstj might know.

C:\h\w\98B8088C\p\packageTest.targets(74,5): error : Assembly 'System.Runtime.Intrinsics.Experimental' has insufficient version for dependency 'System.Private.CoreLib' : 5.0.0.0 < 42.42.42.42. [C:\h\w\98B8088C\w\A0E70914\u\netcoreapp5.0\project.csproj]

@mmitche

Copy link
Copy Markdown
Member

What's the context here? I think I'm missing what the root of the issue is.

@dagood

Copy link
Copy Markdown
MemberAuthor

See #1089

@tmat

tmat commented Jan 20, 2020

Copy link
Copy Markdown
Member

@dagood Are there any customizations to versioning in dotnet/runtime repo that tweak the default Arcade versions or are there any parts of the repo that use something different than the versions Arcade sets? I don't see how PR validation spanning a day boundary could be a problem if the whole build used $(OfficialBuildId) to derive version numbers (which happens to be a date based number, but that's not a requirement). The build should not depend on current time in any way. If there is some part of the build that depends on current date/time that'd be a bug.

@dagood

dagood commented Jan 20, 2020

Copy link
Copy Markdown
MemberAuthor

I don't see how PR validation spanning a day boundary could be a problem if the whole build used $(OfficialBuildId) to derive version numbers (which happens to be a date based number, but that's not a requirement).

PR builds are not official builds, so we don't use OfficialBuildId. The Arcade docs include this guidance: Versioning.md#build-kind.

However, this is basically the same as my suggestion to set /p:_BuildNumber=$(BUILD_BUILDNUMBER).

@dagooddagood removed their assignment Jan 20, 2020
@dagood

Copy link
Copy Markdown
MemberAuthor

As for why we have this issue:

it doesn't solve the local live live issue of people having to rebuild libraries/coreclr if they want to build again the installer a day after they built libraries or coreclr.

It's because dotnet/runtime sets <DotNetUseShippingVersions>true</DotNetUseShippingVersions>.

@tmat

tmat commented Jan 21, 2020

Copy link
Copy Markdown
Member

PR builds are not official builds, so we don't use OfficialBuildId.

I see. I mistaken this for official build issue. Got it. In PR validation though the version has Major.Minor.Path-ci format. No date based version number is added.

However, this is basically the same as my suggestion to set /p:_BuildNumber=$(BUILD_BUILDNUMBER).

I would rather avoid that. _BuildNumber is a private property not to be used outside of Arcade SDK targets.

@tmat

tmat commented Jan 21, 2020

Copy link
Copy Markdown
Member

It's because dotnet/runtime sets <DotNetUseShippingVersions>true</DotNetUseShippingVersions>.

Now I understand. Yes, don't set this.

@dagood

Copy link
Copy Markdown
MemberAuthor

You don't have to tell me. 😄

@safern

Copy link
Copy Markdown
Member

I think we just need to figure out why we're getting the package test failures. I agree we shouldn't set DotNetUseShippingVersions. I'll take a look locally to see if I get a repro and a suggested fix.

@dagood

Copy link
Copy Markdown
MemberAuthor

Please feel free to push to this PR or make your own, I'm not actively working on this.

@safern

Copy link
Copy Markdown
Member

@dagood I moved the AssemblyVersion declaration to Versions.props and also, I made it use $(MajorVersion).$(MinorVersion).0.0 -- as for the patches and revisions should be manually updated per assembly if it is serviced (talked to @ericstj on this).

Also, package testing is currently using a Microsoft.NETCore.App package from our custom feeds. I updated it manually to use the latest one. I didn't want to add a BAR subscription to the runtime repo because of the ongoing discussion regarding to that and we should eventually fix package testing to use the live bits rather than the latest published bits. Will open an issue for that.

Comment threadeng/Versions.props Outdated
<PreReleaseVersionLabel>alpha</PreReleaseVersionLabel>
<PreReleaseVersionIteration>1</PreReleaseVersionIteration>

<!-- Set assembly version to align with Major and Minor version -->

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Also mention this? My first thought looking at this line is why it doesn't use patch version.

as for the patches and revisions should be manually updated per assembly if it is serviced

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Sure. will update the comment.

Comment threadeng/Versions.props
<MicrosoftDotNetVersionToolsTasksVersion>5.0.0-beta.20063.2</MicrosoftDotNetVersionToolsTasksVersion>
<!-- Installer dependencies -->
<MicrosoftNETCoreAppVersion>5.0.0-alpha.1.19562.8</MicrosoftNETCoreAppVersion>
<MicrosoftNETCoreAppVersion>5.0.0-alpha.1.20071.1</MicrosoftNETCoreAppVersion>

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

I'm concerned that this version is being used... the installer tests need to be running on the current build's outputs or else they aren't covering anything. 😕 Can you link the issue you mentioned you'd file for this?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I'm surprised the installer tests use this property, I thought this property was used by package testing only.

I mentioned it here:
#1823 (comment)

Could you elaborate how the installer tests use this instead of the recently built product?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Could you elaborate how the installer tests use this instead of the recently built product?

No, I'm not familiar with it and I'm surprised by it when you mentioned you had to change this to make the installer tests work.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I didn't mean installer tests, I mean libraries all configuration package tests... we run some tests on our oob packages to make sure closure is complete and that we don't ship duplicate types and that all supported rids for those packages publish correctly, etc.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Ah. This should be moved out from <!-- Installer dependencies --> then, it seems to me. Thanks for the background.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I see, that was a result from the repo merge as in corefx it was "core-setup dependencies" maybe when we consolidated it was just a find and replace from "core-setup" to "installer". Will remove.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Actually, what it means is that those dependencies as built by the installer. If you look the file, those comments split the sections on where are those packages coming from, for example look at runtime-assets dependencies which comes from https://github.com/dotnet/runtime-assets or arcade dependencies.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Oh, that makes sense. Sorry for the confusion on this, no need to change it.

@dagood

Copy link
Copy Markdown
MemberAuthor

I don't have enough context on the test expectations to help with the current CI error:

Assert.Equal() Failure
↓ (pos 20)
Expected: ComLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=···
Actual: ComLibrary, Version=5.0.0.0, Culture=neutral, PublicKeyToken=···
↑ (pos 20)
at Microsoft.NET.HostModel.ComHost.Tests.ClsidMapTests.PublicComVisibleTypeWithGuidAdded() in /_/src/installer/test/Microsoft.NET.HostModel.Tests/Microsoft.NET.HostModel.ComHost.Tests/ClsidMapTests.cs:line 35

Maybe @vitek-karas and @elinor-fung can help?

@safern

Copy link
Copy Markdown
Member

Thanks @dagood -- I'm already looking at this locally, getting a repro and then see why ComLibrary is not getting the right AssemblyVersion.

@elinor-fung

Copy link
Copy Markdown
Member

The test checks creating of a file (used for COM support) with data about a library - reading the assembly metadata; it uses the output assembly of the ComLibrary project (https://github.com/dotnet/runtime/tree/master/src/installer/test/Assets/TestProjects/ComLibrary) reading the assembly metadata.

It is hard-coded to expect version 1.0.0.0, but it looks like the output of the ComLibrary test project is now 5.0.0.0? I would expect that it should have been set to 1.0.0.0 based on this though: https://github.com/dotnet/runtime/pull/1835/files#diff-dcf139fe6da30186f3ea56c8ff1a086bR10?

@safern

Copy link
Copy Markdown
Member

thanks for explaining @elinor-fung 😄

It is hard-coded to expect version 1.0.0.0, but it looks like the output of the ComLibrary test project is now 5.0.0.0? I would expect that it should have been set to 1.0.0.0 based on this though: https://github.com/dotnet/runtime/pull/1835/files#diff-dcf139fe6da30186f3ea56c8ff1a086bR10?

Me too, that''s why now I'm trying this locally to figure out why it didn't honor my AssemblyVersion in the props file for the test projects.

@safern
safern marked this pull request as ready for review January 24, 2020 06:41
@safern

Copy link
Copy Markdown
Member

This is now ready 😄

@dagood

Copy link
Copy Markdown
MemberAuthor

LGTM. (Can't approve "my" PR. 🙂)

@safern
safern merged commit 1e09e98 into dotnet:masterJan 24, 2020
@dagood
dagood deleted the rm-date branch January 24, 2020 18:18
@ghostghost locked as resolved and limited conversation to collaborators Dec 11, 2020
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

When PR validation spans a UTC day, the Installer build may fail due to a package version mismatch

5 participants

@dagood@safern@mmitche@tmat@elinor-fung