Create a redist package for tensorflowCreate a nuget package that red… - #720

Closed
ericstj wants to merge 6 commits into
dotnet:masterfrom
ericstj:TfRedist
Closed

Create a redist package for tensorflowCreate a nuget package that red…#720
ericstj wants to merge 6 commits into
dotnet:masterfrom
ericstj:TfRedist

Conversation

@ericstj

Copy link
Copy Markdown
Member

Fixes#713

Create a nuget package that redistributes the TensorFlow C-API.

This is a straight up repack of the bits published on tensorflow.org. I made sure to apply the TensorFlow license to this package and not sign it with our authenticate certificates.

This is part 1 of the TF packaging. Once @abgoswam merges #704 I plan to refactor that into its own package and depend on this (as well as update the tests to use the binaries from this redist project). I can either do that as a separate PR or as part of this.

@ericstjericstj self-assigned this Aug 23, 2018
</PropertyGroup>

<ItemGroup>
<Content Include="..\common\CommonPackage.props" Pack="true" PackagePath="build\netstandard2.0\$(MSBuildProjectName).props" />

@eerhardteerhardtAug 23, 2018

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.

Question (probably for a lawyer): Do we need to put a license/notice in this package? or is using the PackageLicenseUrl enough to meet TF requirements? #Resolved

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.

We have a discussion going around this and will find out all the details.


In reply to: 212419037 [](ancestors = 212419037)

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.

TF included a license in their zips so I went ahead and placed it in the root of this package.


In reply to: 212426813 [](ancestors = 212426813,212419037)

@@ -0,0 +1,133 @@
<Project Sdk="Microsoft.NET.Sdk" DefaultTargets="Restore;Build">

@eerhardteerhardtAug 23, 2018

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.

Do you really need Restore? I don't see any PackageReference #Resolved

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.

SDK has a hard dependency. There's an implicit package reference, but even when I disabled it the SDK still complained.


In reply to: 212420522 [](ancestors = 212420522)

<TargetFramework>netstandard2.0</TargetFramework>

<DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
<CopyBuildOutputToOutputDirectory>false</CopyBuildOutputToOutputDirectory>

@eerhardteerhardtAug 23, 2018

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.

Could this just be a <Project> (note without an Sdk), and just import Directory.Build.props/targets itself? Then we wouldn't need to try to coerce the .NET.Sdk at all.

We could also just use the Build target, instead of overriding the CoreCompile target... See \src\Native\build.proj. #Resolved

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.

And we wouldn't need CreateManifestResourceNames.


In reply to: 212421508 [](ancestors = 212421508)

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'd lose the clean support then. I guess I could write my own.

Initially I was trying to make this participate in the SLN so I wanted more of the normal targets, but I ran into issues with VS not liking the extension and .msbuildproj being broken with SDK-style projects.

I'll go ahead and get rid of the SDK.


In reply to: 212421920 [](ancestors = 212421920,212421508)

@eerhardteerhardtAug 23, 2018

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 don't know if this helps or hurts (so don't take this as a "I think you should do this"). I'm just throwing it out there for discussion purposes.

There is a "NoTargets" Sdk that is supposed to help in these types of scenarios. I don't know how I feel about being dependent on this (I've never taken a dependency on it in a production project), but it is supposed to solve this scenario. #Resolved

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 don't think we actually need it. I took a look and it doesn't help much. It doesn't pull in common targets so I'd still need to roll my own clean. It also looks like the file extension it's using in samples is csproj. Not sure I like that. Feels cleaner to just use vanilla msbuild and let it be something that requires a full build of the repo before working.


In reply to: 212431038 [](ancestors = 212431038)

@eerhardteerhardtAug 23, 2018

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.

Sounds good to me. Thanks for taking a look. #Resolved

<!-- The archives are valid, lets extract them, ensuring an empty directory -->
<RemoveDir Directories="@(TensorFlowArchive->'%(ExtractDirectory)')" />
<MakeDir Directories="@(TensorFlowArchive->'%(ExtractDirectory)')" />
<ZipFileExtractToDirectory Condition="'%(FileExtension)' == '.zip'"

@eerhardteerhardtAug 23, 2018

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.

(nit) To be complete, shouldn't this be '%(TensorFlowArchive.FileExtension)'? Same for the .tar.gz check below. #Resolved

@eerhardteerhardt left a comment

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.

:shipit:

Create a nuget package that redistributes the TensorFlow C-API.
This is needed because TensorFlow doesn't ship an official NuGet package.
This is a straight up repack of the bits published on tensorflow.org. I made sure to apply the TensorFlow license to this package and not sign it with our authenticate certificates.
Remove the use of the SDK targets, and define our own build and clean.
@@ -0,0 +1,114 @@
<Project>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.props))\Directory.Build.props" />

@abgoswamabgoswamAug 23, 2018

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.

[](start = 0, length = 2)

question : do we have a need to package the gpu-libraries as well ? #Closed

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.

Not in this PR at least. TF only appears to publish the linux GPU build and the files have the same name as CPU build. We can consider doing something in the future, but I'd hope we have a better story than linux-only. Perhaps when we build them ourselves. Then we need to decide the user gesuture for selection: is it a property set in the project? package-reference?


In reply to: 212439593 [](ancestors = 212439593)

Tar on windows was failing when msbuild passed it a full path. Workaround by using relative
paths and running where we extract to.

@abgoswamabgoswam left a comment

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.

:shipit:

@ericstj

Copy link
Copy Markdown
MemberAuthor

This has been combined with #704

@ericstjericstj closed this Aug 24, 2018
@ghostghost locked as resolved and limited conversation to collaborators Mar 29, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@ericstj@eerhardt@abgoswam
, '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

Create a redist package for tensorflowCreate a nuget package that red… - #720

Closed
ericstj wants to merge 6 commits into
dotnet:masterfrom
ericstj:TfRedist
Closed

Create a redist package for tensorflowCreate a nuget package that red…#720
ericstj wants to merge 6 commits into
dotnet:masterfrom
ericstj:TfRedist

Conversation

@ericstj

Copy link
Copy Markdown
Member

Fixes#713

Create a nuget package that redistributes the TensorFlow C-API.

This is a straight up repack of the bits published on tensorflow.org. I made sure to apply the TensorFlow license to this package and not sign it with our authenticate certificates.

This is part 1 of the TF packaging. Once @abgoswam merges #704 I plan to refactor that into its own package and depend on this (as well as update the tests to use the binaries from this redist project). I can either do that as a separate PR or as part of this.

@ericstjericstj self-assigned this Aug 23, 2018
</PropertyGroup>

<ItemGroup>
<Content Include="..\common\CommonPackage.props" Pack="true" PackagePath="build\netstandard2.0\$(MSBuildProjectName).props" />

@eerhardteerhardtAug 23, 2018

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.

Question (probably for a lawyer): Do we need to put a license/notice in this package? or is using the PackageLicenseUrl enough to meet TF requirements? #Resolved

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.

We have a discussion going around this and will find out all the details.


In reply to: 212419037 [](ancestors = 212419037)

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.

TF included a license in their zips so I went ahead and placed it in the root of this package.


In reply to: 212426813 [](ancestors = 212426813,212419037)

@@ -0,0 +1,133 @@
<Project Sdk="Microsoft.NET.Sdk" DefaultTargets="Restore;Build">

@eerhardteerhardtAug 23, 2018

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.

Do you really need Restore? I don't see any PackageReference #Resolved

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.

SDK has a hard dependency. There's an implicit package reference, but even when I disabled it the SDK still complained.


In reply to: 212420522 [](ancestors = 212420522)

<TargetFramework>netstandard2.0</TargetFramework>

<DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
<CopyBuildOutputToOutputDirectory>false</CopyBuildOutputToOutputDirectory>

@eerhardteerhardtAug 23, 2018

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.

Could this just be a <Project> (note without an Sdk), and just import Directory.Build.props/targets itself? Then we wouldn't need to try to coerce the .NET.Sdk at all.

We could also just use the Build target, instead of overriding the CoreCompile target... See \src\Native\build.proj. #Resolved

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.

And we wouldn't need CreateManifestResourceNames.


In reply to: 212421508 [](ancestors = 212421508)

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'd lose the clean support then. I guess I could write my own.

Initially I was trying to make this participate in the SLN so I wanted more of the normal targets, but I ran into issues with VS not liking the extension and .msbuildproj being broken with SDK-style projects.

I'll go ahead and get rid of the SDK.


In reply to: 212421920 [](ancestors = 212421920,212421508)

@eerhardteerhardtAug 23, 2018

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 don't know if this helps or hurts (so don't take this as a "I think you should do this"). I'm just throwing it out there for discussion purposes.

There is a "NoTargets" Sdk that is supposed to help in these types of scenarios. I don't know how I feel about being dependent on this (I've never taken a dependency on it in a production project), but it is supposed to solve this scenario. #Resolved

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 don't think we actually need it. I took a look and it doesn't help much. It doesn't pull in common targets so I'd still need to roll my own clean. It also looks like the file extension it's using in samples is csproj. Not sure I like that. Feels cleaner to just use vanilla msbuild and let it be something that requires a full build of the repo before working.


In reply to: 212431038 [](ancestors = 212431038)

@eerhardteerhardtAug 23, 2018

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.

Sounds good to me. Thanks for taking a look. #Resolved

<!-- The archives are valid, lets extract them, ensuring an empty directory -->
<RemoveDir Directories="@(TensorFlowArchive->'%(ExtractDirectory)')" />
<MakeDir Directories="@(TensorFlowArchive->'%(ExtractDirectory)')" />
<ZipFileExtractToDirectory Condition="'%(FileExtension)' == '.zip'"

@eerhardteerhardtAug 23, 2018

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.

(nit) To be complete, shouldn't this be '%(TensorFlowArchive.FileExtension)'? Same for the .tar.gz check below. #Resolved

@eerhardteerhardt left a comment

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.

:shipit:

Create a nuget package that redistributes the TensorFlow C-API.
This is needed because TensorFlow doesn't ship an official NuGet package.
This is a straight up repack of the bits published on tensorflow.org. I made sure to apply the TensorFlow license to this package and not sign it with our authenticate certificates.
Remove the use of the SDK targets, and define our own build and clean.
@@ -0,0 +1,114 @@
<Project>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.props))\Directory.Build.props" />

@abgoswamabgoswamAug 23, 2018

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.

[](start = 0, length = 2)

question : do we have a need to package the gpu-libraries as well ? #Closed

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.

Not in this PR at least. TF only appears to publish the linux GPU build and the files have the same name as CPU build. We can consider doing something in the future, but I'd hope we have a better story than linux-only. Perhaps when we build them ourselves. Then we need to decide the user gesuture for selection: is it a property set in the project? package-reference?


In reply to: 212439593 [](ancestors = 212439593)

Tar on windows was failing when msbuild passed it a full path. Workaround by using relative
paths and running where we extract to.

@abgoswamabgoswam left a comment

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.

:shipit:

@ericstj

Copy link
Copy Markdown
MemberAuthor

This has been combined with #704

@ericstjericstj closed this Aug 24, 2018
@ghostghost locked as resolved and limited conversation to collaborators Mar 29, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@ericstj@eerhardt@abgoswam
, '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

Create a redist package for tensorflowCreate a nuget package that red… - #720

Closed
ericstj wants to merge 6 commits into
dotnet:masterfrom
ericstj:TfRedist
Closed

Create a redist package for tensorflowCreate a nuget package that red…#720
ericstj wants to merge 6 commits into
dotnet:masterfrom
ericstj:TfRedist

Conversation

@ericstj

Copy link
Copy Markdown
Member

Fixes#713

Create a nuget package that redistributes the TensorFlow C-API.

This is a straight up repack of the bits published on tensorflow.org. I made sure to apply the TensorFlow license to this package and not sign it with our authenticate certificates.

This is part 1 of the TF packaging. Once @abgoswam merges #704 I plan to refactor that into its own package and depend on this (as well as update the tests to use the binaries from this redist project). I can either do that as a separate PR or as part of this.

@ericstjericstj self-assigned this Aug 23, 2018
</PropertyGroup>

<ItemGroup>
<Content Include="..\common\CommonPackage.props" Pack="true" PackagePath="build\netstandard2.0\$(MSBuildProjectName).props" />

@eerhardteerhardtAug 23, 2018

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.

Question (probably for a lawyer): Do we need to put a license/notice in this package? or is using the PackageLicenseUrl enough to meet TF requirements? #Resolved

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.

We have a discussion going around this and will find out all the details.


In reply to: 212419037 [](ancestors = 212419037)

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.

TF included a license in their zips so I went ahead and placed it in the root of this package.


In reply to: 212426813 [](ancestors = 212426813,212419037)

@@ -0,0 +1,133 @@
<Project Sdk="Microsoft.NET.Sdk" DefaultTargets="Restore;Build">

@eerhardteerhardtAug 23, 2018

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.

Do you really need Restore? I don't see any PackageReference #Resolved

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.

SDK has a hard dependency. There's an implicit package reference, but even when I disabled it the SDK still complained.


In reply to: 212420522 [](ancestors = 212420522)

<TargetFramework>netstandard2.0</TargetFramework>

<DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
<CopyBuildOutputToOutputDirectory>false</CopyBuildOutputToOutputDirectory>

@eerhardteerhardtAug 23, 2018

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.

Could this just be a <Project> (note without an Sdk), and just import Directory.Build.props/targets itself? Then we wouldn't need to try to coerce the .NET.Sdk at all.

We could also just use the Build target, instead of overriding the CoreCompile target... See \src\Native\build.proj. #Resolved

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.

And we wouldn't need CreateManifestResourceNames.


In reply to: 212421508 [](ancestors = 212421508)

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'd lose the clean support then. I guess I could write my own.

Initially I was trying to make this participate in the SLN so I wanted more of the normal targets, but I ran into issues with VS not liking the extension and .msbuildproj being broken with SDK-style projects.

I'll go ahead and get rid of the SDK.


In reply to: 212421920 [](ancestors = 212421920,212421508)

@eerhardteerhardtAug 23, 2018

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 don't know if this helps or hurts (so don't take this as a "I think you should do this"). I'm just throwing it out there for discussion purposes.

There is a "NoTargets" Sdk that is supposed to help in these types of scenarios. I don't know how I feel about being dependent on this (I've never taken a dependency on it in a production project), but it is supposed to solve this scenario. #Resolved

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 don't think we actually need it. I took a look and it doesn't help much. It doesn't pull in common targets so I'd still need to roll my own clean. It also looks like the file extension it's using in samples is csproj. Not sure I like that. Feels cleaner to just use vanilla msbuild and let it be something that requires a full build of the repo before working.


In reply to: 212431038 [](ancestors = 212431038)

@eerhardteerhardtAug 23, 2018

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.

Sounds good to me. Thanks for taking a look. #Resolved

<!-- The archives are valid, lets extract them, ensuring an empty directory -->
<RemoveDir Directories="@(TensorFlowArchive->'%(ExtractDirectory)')" />
<MakeDir Directories="@(TensorFlowArchive->'%(ExtractDirectory)')" />
<ZipFileExtractToDirectory Condition="'%(FileExtension)' == '.zip'"

@eerhardteerhardtAug 23, 2018

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.

(nit) To be complete, shouldn't this be '%(TensorFlowArchive.FileExtension)'? Same for the .tar.gz check below. #Resolved

@eerhardteerhardt left a comment

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.

:shipit:

Create a nuget package that redistributes the TensorFlow C-API.
This is needed because TensorFlow doesn't ship an official NuGet package.
This is a straight up repack of the bits published on tensorflow.org. I made sure to apply the TensorFlow license to this package and not sign it with our authenticate certificates.
Remove the use of the SDK targets, and define our own build and clean.
@@ -0,0 +1,114 @@
<Project>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.props))\Directory.Build.props" />

@abgoswamabgoswamAug 23, 2018

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.

[](start = 0, length = 2)

question : do we have a need to package the gpu-libraries as well ? #Closed

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.

Not in this PR at least. TF only appears to publish the linux GPU build and the files have the same name as CPU build. We can consider doing something in the future, but I'd hope we have a better story than linux-only. Perhaps when we build them ourselves. Then we need to decide the user gesuture for selection: is it a property set in the project? package-reference?


In reply to: 212439593 [](ancestors = 212439593)

Tar on windows was failing when msbuild passed it a full path. Workaround by using relative
paths and running where we extract to.

@abgoswamabgoswam left a comment

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.

:shipit:

@ericstj

Copy link
Copy Markdown
MemberAuthor

This has been combined with #704

@ericstjericstj closed this Aug 24, 2018
@ghostghost locked as resolved and limited conversation to collaborators Mar 29, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@ericstj@eerhardt@abgoswam
, '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

Create a redist package for tensorflowCreate a nuget package that red… - #720

Closed
ericstj wants to merge 6 commits into
dotnet:masterfrom
ericstj:TfRedist
Closed

Create a redist package for tensorflowCreate a nuget package that red…#720
ericstj wants to merge 6 commits into
dotnet:masterfrom
ericstj:TfRedist

Conversation

@ericstj

Copy link
Copy Markdown
Member

Fixes#713

Create a nuget package that redistributes the TensorFlow C-API.

This is a straight up repack of the bits published on tensorflow.org. I made sure to apply the TensorFlow license to this package and not sign it with our authenticate certificates.

This is part 1 of the TF packaging. Once @abgoswam merges #704 I plan to refactor that into its own package and depend on this (as well as update the tests to use the binaries from this redist project). I can either do that as a separate PR or as part of this.

@ericstjericstj self-assigned this Aug 23, 2018
</PropertyGroup>

<ItemGroup>
<Content Include="..\common\CommonPackage.props" Pack="true" PackagePath="build\netstandard2.0\$(MSBuildProjectName).props" />

@eerhardteerhardtAug 23, 2018

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.

Question (probably for a lawyer): Do we need to put a license/notice in this package? or is using the PackageLicenseUrl enough to meet TF requirements? #Resolved

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.

We have a discussion going around this and will find out all the details.


In reply to: 212419037 [](ancestors = 212419037)

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.

TF included a license in their zips so I went ahead and placed it in the root of this package.


In reply to: 212426813 [](ancestors = 212426813,212419037)

@@ -0,0 +1,133 @@
<Project Sdk="Microsoft.NET.Sdk" DefaultTargets="Restore;Build">

@eerhardteerhardtAug 23, 2018

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.

Do you really need Restore? I don't see any PackageReference #Resolved

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.

SDK has a hard dependency. There's an implicit package reference, but even when I disabled it the SDK still complained.


In reply to: 212420522 [](ancestors = 212420522)

<TargetFramework>netstandard2.0</TargetFramework>

<DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
<CopyBuildOutputToOutputDirectory>false</CopyBuildOutputToOutputDirectory>

@eerhardteerhardtAug 23, 2018

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.

Could this just be a <Project> (note without an Sdk), and just import Directory.Build.props/targets itself? Then we wouldn't need to try to coerce the .NET.Sdk at all.

We could also just use the Build target, instead of overriding the CoreCompile target... See \src\Native\build.proj. #Resolved

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.

And we wouldn't need CreateManifestResourceNames.


In reply to: 212421508 [](ancestors = 212421508)

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'd lose the clean support then. I guess I could write my own.

Initially I was trying to make this participate in the SLN so I wanted more of the normal targets, but I ran into issues with VS not liking the extension and .msbuildproj being broken with SDK-style projects.

I'll go ahead and get rid of the SDK.


In reply to: 212421920 [](ancestors = 212421920,212421508)

@eerhardteerhardtAug 23, 2018

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 don't know if this helps or hurts (so don't take this as a "I think you should do this"). I'm just throwing it out there for discussion purposes.

There is a "NoTargets" Sdk that is supposed to help in these types of scenarios. I don't know how I feel about being dependent on this (I've never taken a dependency on it in a production project), but it is supposed to solve this scenario. #Resolved

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 don't think we actually need it. I took a look and it doesn't help much. It doesn't pull in common targets so I'd still need to roll my own clean. It also looks like the file extension it's using in samples is csproj. Not sure I like that. Feels cleaner to just use vanilla msbuild and let it be something that requires a full build of the repo before working.


In reply to: 212431038 [](ancestors = 212431038)

@eerhardteerhardtAug 23, 2018

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.

Sounds good to me. Thanks for taking a look. #Resolved

<!-- The archives are valid, lets extract them, ensuring an empty directory -->
<RemoveDir Directories="@(TensorFlowArchive->'%(ExtractDirectory)')" />
<MakeDir Directories="@(TensorFlowArchive->'%(ExtractDirectory)')" />
<ZipFileExtractToDirectory Condition="'%(FileExtension)' == '.zip'"

@eerhardteerhardtAug 23, 2018

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.

(nit) To be complete, shouldn't this be '%(TensorFlowArchive.FileExtension)'? Same for the .tar.gz check below. #Resolved

@eerhardteerhardt left a comment

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.

:shipit:

Create a nuget package that redistributes the TensorFlow C-API.
This is needed because TensorFlow doesn't ship an official NuGet package.
This is a straight up repack of the bits published on tensorflow.org. I made sure to apply the TensorFlow license to this package and not sign it with our authenticate certificates.
Remove the use of the SDK targets, and define our own build and clean.
@@ -0,0 +1,114 @@
<Project>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.props))\Directory.Build.props" />

@abgoswamabgoswamAug 23, 2018

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.

[](start = 0, length = 2)

question : do we have a need to package the gpu-libraries as well ? #Closed

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.

Not in this PR at least. TF only appears to publish the linux GPU build and the files have the same name as CPU build. We can consider doing something in the future, but I'd hope we have a better story than linux-only. Perhaps when we build them ourselves. Then we need to decide the user gesuture for selection: is it a property set in the project? package-reference?


In reply to: 212439593 [](ancestors = 212439593)

Tar on windows was failing when msbuild passed it a full path. Workaround by using relative
paths and running where we extract to.

@abgoswamabgoswam left a comment

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.

:shipit:

@ericstj

Copy link
Copy Markdown
MemberAuthor

This has been combined with #704

@ericstjericstj closed this Aug 24, 2018
@ghostghost locked as resolved and limited conversation to collaborators Mar 29, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@ericstj@eerhardt@abgoswam
, '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

Create a redist package for tensorflowCreate a nuget package that red… - #720

Closed
ericstj wants to merge 6 commits into
dotnet:masterfrom
ericstj:TfRedist
Closed

Create a redist package for tensorflowCreate a nuget package that red…#720
ericstj wants to merge 6 commits into
dotnet:masterfrom
ericstj:TfRedist

Conversation

@ericstj

Copy link
Copy Markdown
Member

Fixes#713

Create a nuget package that redistributes the TensorFlow C-API.

This is a straight up repack of the bits published on tensorflow.org. I made sure to apply the TensorFlow license to this package and not sign it with our authenticate certificates.

This is part 1 of the TF packaging. Once @abgoswam merges #704 I plan to refactor that into its own package and depend on this (as well as update the tests to use the binaries from this redist project). I can either do that as a separate PR or as part of this.

@ericstjericstj self-assigned this Aug 23, 2018
</PropertyGroup>

<ItemGroup>
<Content Include="..\common\CommonPackage.props" Pack="true" PackagePath="build\netstandard2.0\$(MSBuildProjectName).props" />

@eerhardteerhardtAug 23, 2018

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.

Question (probably for a lawyer): Do we need to put a license/notice in this package? or is using the PackageLicenseUrl enough to meet TF requirements? #Resolved

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.

We have a discussion going around this and will find out all the details.


In reply to: 212419037 [](ancestors = 212419037)

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.

TF included a license in their zips so I went ahead and placed it in the root of this package.


In reply to: 212426813 [](ancestors = 212426813,212419037)

@@ -0,0 +1,133 @@
<Project Sdk="Microsoft.NET.Sdk" DefaultTargets="Restore;Build">

@eerhardteerhardtAug 23, 2018

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.

Do you really need Restore? I don't see any PackageReference #Resolved

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.

SDK has a hard dependency. There's an implicit package reference, but even when I disabled it the SDK still complained.


In reply to: 212420522 [](ancestors = 212420522)

<TargetFramework>netstandard2.0</TargetFramework>

<DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
<CopyBuildOutputToOutputDirectory>false</CopyBuildOutputToOutputDirectory>

@eerhardteerhardtAug 23, 2018

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.

Could this just be a <Project> (note without an Sdk), and just import Directory.Build.props/targets itself? Then we wouldn't need to try to coerce the .NET.Sdk at all.

We could also just use the Build target, instead of overriding the CoreCompile target... See \src\Native\build.proj. #Resolved

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.

And we wouldn't need CreateManifestResourceNames.


In reply to: 212421508 [](ancestors = 212421508)

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'd lose the clean support then. I guess I could write my own.

Initially I was trying to make this participate in the SLN so I wanted more of the normal targets, but I ran into issues with VS not liking the extension and .msbuildproj being broken with SDK-style projects.

I'll go ahead and get rid of the SDK.


In reply to: 212421920 [](ancestors = 212421920,212421508)

@eerhardteerhardtAug 23, 2018

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 don't know if this helps or hurts (so don't take this as a "I think you should do this"). I'm just throwing it out there for discussion purposes.

There is a "NoTargets" Sdk that is supposed to help in these types of scenarios. I don't know how I feel about being dependent on this (I've never taken a dependency on it in a production project), but it is supposed to solve this scenario. #Resolved

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 don't think we actually need it. I took a look and it doesn't help much. It doesn't pull in common targets so I'd still need to roll my own clean. It also looks like the file extension it's using in samples is csproj. Not sure I like that. Feels cleaner to just use vanilla msbuild and let it be something that requires a full build of the repo before working.


In reply to: 212431038 [](ancestors = 212431038)

@eerhardteerhardtAug 23, 2018

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.

Sounds good to me. Thanks for taking a look. #Resolved

<!-- The archives are valid, lets extract them, ensuring an empty directory -->
<RemoveDir Directories="@(TensorFlowArchive->'%(ExtractDirectory)')" />
<MakeDir Directories="@(TensorFlowArchive->'%(ExtractDirectory)')" />
<ZipFileExtractToDirectory Condition="'%(FileExtension)' == '.zip'"

@eerhardteerhardtAug 23, 2018

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.

(nit) To be complete, shouldn't this be '%(TensorFlowArchive.FileExtension)'? Same for the .tar.gz check below. #Resolved

@eerhardteerhardt left a comment

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.

:shipit:

Create a nuget package that redistributes the TensorFlow C-API.
This is needed because TensorFlow doesn't ship an official NuGet package.
This is a straight up repack of the bits published on tensorflow.org. I made sure to apply the TensorFlow license to this package and not sign it with our authenticate certificates.
Remove the use of the SDK targets, and define our own build and clean.
@@ -0,0 +1,114 @@
<Project>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.props))\Directory.Build.props" />

@abgoswamabgoswamAug 23, 2018

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.

[](start = 0, length = 2)

question : do we have a need to package the gpu-libraries as well ? #Closed

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.

Not in this PR at least. TF only appears to publish the linux GPU build and the files have the same name as CPU build. We can consider doing something in the future, but I'd hope we have a better story than linux-only. Perhaps when we build them ourselves. Then we need to decide the user gesuture for selection: is it a property set in the project? package-reference?


In reply to: 212439593 [](ancestors = 212439593)

Tar on windows was failing when msbuild passed it a full path. Workaround by using relative
paths and running where we extract to.

@abgoswamabgoswam left a comment

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.

:shipit:

@ericstj

Copy link
Copy Markdown
MemberAuthor

This has been combined with #704

@ericstjericstj closed this Aug 24, 2018
@ghostghost locked as resolved and limited conversation to collaborators Mar 29, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@ericstj@eerhardt@abgoswam
, '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

Create a redist package for tensorflowCreate a nuget package that red… - #720

Closed
ericstj wants to merge 6 commits into
dotnet:masterfrom
ericstj:TfRedist
Closed

Create a redist package for tensorflowCreate a nuget package that red…#720
ericstj wants to merge 6 commits into
dotnet:masterfrom
ericstj:TfRedist

Conversation

@ericstj

Copy link
Copy Markdown
Member

Fixes#713

Create a nuget package that redistributes the TensorFlow C-API.

This is a straight up repack of the bits published on tensorflow.org. I made sure to apply the TensorFlow license to this package and not sign it with our authenticate certificates.

This is part 1 of the TF packaging. Once @abgoswam merges #704 I plan to refactor that into its own package and depend on this (as well as update the tests to use the binaries from this redist project). I can either do that as a separate PR or as part of this.

@ericstjericstj self-assigned this Aug 23, 2018
</PropertyGroup>

<ItemGroup>
<Content Include="..\common\CommonPackage.props" Pack="true" PackagePath="build\netstandard2.0\$(MSBuildProjectName).props" />

@eerhardteerhardtAug 23, 2018

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.

Question (probably for a lawyer): Do we need to put a license/notice in this package? or is using the PackageLicenseUrl enough to meet TF requirements? #Resolved

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.

We have a discussion going around this and will find out all the details.


In reply to: 212419037 [](ancestors = 212419037)

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.

TF included a license in their zips so I went ahead and placed it in the root of this package.


In reply to: 212426813 [](ancestors = 212426813,212419037)

@@ -0,0 +1,133 @@
<Project Sdk="Microsoft.NET.Sdk" DefaultTargets="Restore;Build">

@eerhardteerhardtAug 23, 2018

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.

Do you really need Restore? I don't see any PackageReference #Resolved

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.

SDK has a hard dependency. There's an implicit package reference, but even when I disabled it the SDK still complained.


In reply to: 212420522 [](ancestors = 212420522)

<TargetFramework>netstandard2.0</TargetFramework>

<DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
<CopyBuildOutputToOutputDirectory>false</CopyBuildOutputToOutputDirectory>

@eerhardteerhardtAug 23, 2018

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.

Could this just be a <Project> (note without an Sdk), and just import Directory.Build.props/targets itself? Then we wouldn't need to try to coerce the .NET.Sdk at all.

We could also just use the Build target, instead of overriding the CoreCompile target... See \src\Native\build.proj. #Resolved

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.

And we wouldn't need CreateManifestResourceNames.


In reply to: 212421508 [](ancestors = 212421508)

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'd lose the clean support then. I guess I could write my own.

Initially I was trying to make this participate in the SLN so I wanted more of the normal targets, but I ran into issues with VS not liking the extension and .msbuildproj being broken with SDK-style projects.

I'll go ahead and get rid of the SDK.


In reply to: 212421920 [](ancestors = 212421920,212421508)

@eerhardteerhardtAug 23, 2018

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 don't know if this helps or hurts (so don't take this as a "I think you should do this"). I'm just throwing it out there for discussion purposes.

There is a "NoTargets" Sdk that is supposed to help in these types of scenarios. I don't know how I feel about being dependent on this (I've never taken a dependency on it in a production project), but it is supposed to solve this scenario. #Resolved

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 don't think we actually need it. I took a look and it doesn't help much. It doesn't pull in common targets so I'd still need to roll my own clean. It also looks like the file extension it's using in samples is csproj. Not sure I like that. Feels cleaner to just use vanilla msbuild and let it be something that requires a full build of the repo before working.


In reply to: 212431038 [](ancestors = 212431038)

@eerhardteerhardtAug 23, 2018

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.

Sounds good to me. Thanks for taking a look. #Resolved

<!-- The archives are valid, lets extract them, ensuring an empty directory -->
<RemoveDir Directories="@(TensorFlowArchive->'%(ExtractDirectory)')" />
<MakeDir Directories="@(TensorFlowArchive->'%(ExtractDirectory)')" />
<ZipFileExtractToDirectory Condition="'%(FileExtension)' == '.zip'"

@eerhardteerhardtAug 23, 2018

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.

(nit) To be complete, shouldn't this be '%(TensorFlowArchive.FileExtension)'? Same for the .tar.gz check below. #Resolved

@eerhardteerhardt left a comment

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.

:shipit:

Create a nuget package that redistributes the TensorFlow C-API.
This is needed because TensorFlow doesn't ship an official NuGet package.
This is a straight up repack of the bits published on tensorflow.org. I made sure to apply the TensorFlow license to this package and not sign it with our authenticate certificates.
Remove the use of the SDK targets, and define our own build and clean.
@@ -0,0 +1,114 @@
<Project>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.props))\Directory.Build.props" />

@abgoswamabgoswamAug 23, 2018

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.

[](start = 0, length = 2)

question : do we have a need to package the gpu-libraries as well ? #Closed

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.

Not in this PR at least. TF only appears to publish the linux GPU build and the files have the same name as CPU build. We can consider doing something in the future, but I'd hope we have a better story than linux-only. Perhaps when we build them ourselves. Then we need to decide the user gesuture for selection: is it a property set in the project? package-reference?


In reply to: 212439593 [](ancestors = 212439593)

Tar on windows was failing when msbuild passed it a full path. Workaround by using relative
paths and running where we extract to.

@abgoswamabgoswam left a comment

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.

:shipit:

@ericstj

Copy link
Copy Markdown
MemberAuthor

This has been combined with #704

@ericstjericstj closed this Aug 24, 2018
@ghostghost locked as resolved and limited conversation to collaborators Mar 29, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@ericstj@eerhardt@abgoswam
, '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

Create a redist package for tensorflowCreate a nuget package that red… - #720

Closed
ericstj wants to merge 6 commits into
dotnet:masterfrom
ericstj:TfRedist
Closed

Create a redist package for tensorflowCreate a nuget package that red…#720
ericstj wants to merge 6 commits into
dotnet:masterfrom
ericstj:TfRedist

Conversation

@ericstj

Copy link
Copy Markdown
Member

Fixes#713

Create a nuget package that redistributes the TensorFlow C-API.

This is a straight up repack of the bits published on tensorflow.org. I made sure to apply the TensorFlow license to this package and not sign it with our authenticate certificates.

This is part 1 of the TF packaging. Once @abgoswam merges #704 I plan to refactor that into its own package and depend on this (as well as update the tests to use the binaries from this redist project). I can either do that as a separate PR or as part of this.

@ericstjericstj self-assigned this Aug 23, 2018
</PropertyGroup>

<ItemGroup>
<Content Include="..\common\CommonPackage.props" Pack="true" PackagePath="build\netstandard2.0\$(MSBuildProjectName).props" />

@eerhardteerhardtAug 23, 2018

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.

Question (probably for a lawyer): Do we need to put a license/notice in this package? or is using the PackageLicenseUrl enough to meet TF requirements? #Resolved

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.

We have a discussion going around this and will find out all the details.


In reply to: 212419037 [](ancestors = 212419037)

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.

TF included a license in their zips so I went ahead and placed it in the root of this package.


In reply to: 212426813 [](ancestors = 212426813,212419037)

@@ -0,0 +1,133 @@
<Project Sdk="Microsoft.NET.Sdk" DefaultTargets="Restore;Build">

@eerhardteerhardtAug 23, 2018

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.

Do you really need Restore? I don't see any PackageReference #Resolved

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.

SDK has a hard dependency. There's an implicit package reference, but even when I disabled it the SDK still complained.


In reply to: 212420522 [](ancestors = 212420522)

<TargetFramework>netstandard2.0</TargetFramework>

<DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
<CopyBuildOutputToOutputDirectory>false</CopyBuildOutputToOutputDirectory>

@eerhardteerhardtAug 23, 2018

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.

Could this just be a <Project> (note without an Sdk), and just import Directory.Build.props/targets itself? Then we wouldn't need to try to coerce the .NET.Sdk at all.

We could also just use the Build target, instead of overriding the CoreCompile target... See \src\Native\build.proj. #Resolved

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.

And we wouldn't need CreateManifestResourceNames.


In reply to: 212421508 [](ancestors = 212421508)

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'd lose the clean support then. I guess I could write my own.

Initially I was trying to make this participate in the SLN so I wanted more of the normal targets, but I ran into issues with VS not liking the extension and .msbuildproj being broken with SDK-style projects.

I'll go ahead and get rid of the SDK.


In reply to: 212421920 [](ancestors = 212421920,212421508)

@eerhardteerhardtAug 23, 2018

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 don't know if this helps or hurts (so don't take this as a "I think you should do this"). I'm just throwing it out there for discussion purposes.

There is a "NoTargets" Sdk that is supposed to help in these types of scenarios. I don't know how I feel about being dependent on this (I've never taken a dependency on it in a production project), but it is supposed to solve this scenario. #Resolved

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 don't think we actually need it. I took a look and it doesn't help much. It doesn't pull in common targets so I'd still need to roll my own clean. It also looks like the file extension it's using in samples is csproj. Not sure I like that. Feels cleaner to just use vanilla msbuild and let it be something that requires a full build of the repo before working.


In reply to: 212431038 [](ancestors = 212431038)

@eerhardteerhardtAug 23, 2018

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.

Sounds good to me. Thanks for taking a look. #Resolved

<!-- The archives are valid, lets extract them, ensuring an empty directory -->
<RemoveDir Directories="@(TensorFlowArchive->'%(ExtractDirectory)')" />
<MakeDir Directories="@(TensorFlowArchive->'%(ExtractDirectory)')" />
<ZipFileExtractToDirectory Condition="'%(FileExtension)' == '.zip'"

@eerhardteerhardtAug 23, 2018

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.

(nit) To be complete, shouldn't this be '%(TensorFlowArchive.FileExtension)'? Same for the .tar.gz check below. #Resolved

@eerhardteerhardt left a comment

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.

:shipit:

Create a nuget package that redistributes the TensorFlow C-API.
This is needed because TensorFlow doesn't ship an official NuGet package.
This is a straight up repack of the bits published on tensorflow.org. I made sure to apply the TensorFlow license to this package and not sign it with our authenticate certificates.
Remove the use of the SDK targets, and define our own build and clean.
@@ -0,0 +1,114 @@
<Project>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.props))\Directory.Build.props" />

@abgoswamabgoswamAug 23, 2018

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.

[](start = 0, length = 2)

question : do we have a need to package the gpu-libraries as well ? #Closed

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.

Not in this PR at least. TF only appears to publish the linux GPU build and the files have the same name as CPU build. We can consider doing something in the future, but I'd hope we have a better story than linux-only. Perhaps when we build them ourselves. Then we need to decide the user gesuture for selection: is it a property set in the project? package-reference?


In reply to: 212439593 [](ancestors = 212439593)

Tar on windows was failing when msbuild passed it a full path. Workaround by using relative
paths and running where we extract to.

@abgoswamabgoswam left a comment

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.

:shipit:

@ericstj

Copy link
Copy Markdown
MemberAuthor

This has been combined with #704

@ericstjericstj closed this Aug 24, 2018
@ghostghost locked as resolved and limited conversation to collaborators Mar 29, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@ericstj@eerhardt@abgoswam
, '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

Create a redist package for tensorflowCreate a nuget package that red… - #720

Closed
ericstj wants to merge 6 commits into
dotnet:masterfrom
ericstj:TfRedist
Closed

Create a redist package for tensorflowCreate a nuget package that red…#720
ericstj wants to merge 6 commits into
dotnet:masterfrom
ericstj:TfRedist

Conversation

@ericstj

Copy link
Copy Markdown
Member

Fixes#713

Create a nuget package that redistributes the TensorFlow C-API.

This is a straight up repack of the bits published on tensorflow.org. I made sure to apply the TensorFlow license to this package and not sign it with our authenticate certificates.

This is part 1 of the TF packaging. Once @abgoswam merges #704 I plan to refactor that into its own package and depend on this (as well as update the tests to use the binaries from this redist project). I can either do that as a separate PR or as part of this.

@ericstjericstj self-assigned this Aug 23, 2018
</PropertyGroup>

<ItemGroup>
<Content Include="..\common\CommonPackage.props" Pack="true" PackagePath="build\netstandard2.0\$(MSBuildProjectName).props" />

@eerhardteerhardtAug 23, 2018

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.

Question (probably for a lawyer): Do we need to put a license/notice in this package? or is using the PackageLicenseUrl enough to meet TF requirements? #Resolved

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.

We have a discussion going around this and will find out all the details.


In reply to: 212419037 [](ancestors = 212419037)

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.

TF included a license in their zips so I went ahead and placed it in the root of this package.


In reply to: 212426813 [](ancestors = 212426813,212419037)

@@ -0,0 +1,133 @@
<Project Sdk="Microsoft.NET.Sdk" DefaultTargets="Restore;Build">

@eerhardteerhardtAug 23, 2018

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.

Do you really need Restore? I don't see any PackageReference #Resolved

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.

SDK has a hard dependency. There's an implicit package reference, but even when I disabled it the SDK still complained.


In reply to: 212420522 [](ancestors = 212420522)

<TargetFramework>netstandard2.0</TargetFramework>

<DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
<CopyBuildOutputToOutputDirectory>false</CopyBuildOutputToOutputDirectory>

@eerhardteerhardtAug 23, 2018

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.

Could this just be a <Project> (note without an Sdk), and just import Directory.Build.props/targets itself? Then we wouldn't need to try to coerce the .NET.Sdk at all.

We could also just use the Build target, instead of overriding the CoreCompile target... See \src\Native\build.proj. #Resolved

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.

And we wouldn't need CreateManifestResourceNames.


In reply to: 212421508 [](ancestors = 212421508)

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'd lose the clean support then. I guess I could write my own.

Initially I was trying to make this participate in the SLN so I wanted more of the normal targets, but I ran into issues with VS not liking the extension and .msbuildproj being broken with SDK-style projects.

I'll go ahead and get rid of the SDK.


In reply to: 212421920 [](ancestors = 212421920,212421508)

@eerhardteerhardtAug 23, 2018

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 don't know if this helps or hurts (so don't take this as a "I think you should do this"). I'm just throwing it out there for discussion purposes.

There is a "NoTargets" Sdk that is supposed to help in these types of scenarios. I don't know how I feel about being dependent on this (I've never taken a dependency on it in a production project), but it is supposed to solve this scenario. #Resolved

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 don't think we actually need it. I took a look and it doesn't help much. It doesn't pull in common targets so I'd still need to roll my own clean. It also looks like the file extension it's using in samples is csproj. Not sure I like that. Feels cleaner to just use vanilla msbuild and let it be something that requires a full build of the repo before working.


In reply to: 212431038 [](ancestors = 212431038)

@eerhardteerhardtAug 23, 2018

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.

Sounds good to me. Thanks for taking a look. #Resolved

<!-- The archives are valid, lets extract them, ensuring an empty directory -->
<RemoveDir Directories="@(TensorFlowArchive->'%(ExtractDirectory)')" />
<MakeDir Directories="@(TensorFlowArchive->'%(ExtractDirectory)')" />
<ZipFileExtractToDirectory Condition="'%(FileExtension)' == '.zip'"

@eerhardteerhardtAug 23, 2018

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.

(nit) To be complete, shouldn't this be '%(TensorFlowArchive.FileExtension)'? Same for the .tar.gz check below. #Resolved

@eerhardteerhardt left a comment

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.

:shipit:

Create a nuget package that redistributes the TensorFlow C-API.
This is needed because TensorFlow doesn't ship an official NuGet package.
This is a straight up repack of the bits published on tensorflow.org. I made sure to apply the TensorFlow license to this package and not sign it with our authenticate certificates.
Remove the use of the SDK targets, and define our own build and clean.
@@ -0,0 +1,114 @@
<Project>
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.props))\Directory.Build.props" />

@abgoswamabgoswamAug 23, 2018

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.

[](start = 0, length = 2)

question : do we have a need to package the gpu-libraries as well ? #Closed

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.

Not in this PR at least. TF only appears to publish the linux GPU build and the files have the same name as CPU build. We can consider doing something in the future, but I'd hope we have a better story than linux-only. Perhaps when we build them ourselves. Then we need to decide the user gesuture for selection: is it a property set in the project? package-reference?


In reply to: 212439593 [](ancestors = 212439593)

Tar on windows was failing when msbuild passed it a full path. Workaround by using relative
paths and running where we extract to.

@abgoswamabgoswam left a comment

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.

:shipit:

@ericstj

Copy link
Copy Markdown
MemberAuthor

This has been combined with #704

@ericstjericstj closed this Aug 24, 2018
@ghostghost locked as resolved and limited conversation to collaborators Mar 29, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@ericstj@eerhardt@abgoswam