[ https://issues.apache.org/jira/browse/ARROW-5092?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Rok Mihevc updated ARROW-5092: ------------------------------ External issue URL: https://github.com/apache/arrow/issues/21580 > [C#] Source Link doesn't work with the C# release script > -------------------------------------------------------- > > Key: ARROW-5092 > URL: https://issues.apache.org/jira/browse/ARROW-5092 > Project: Apache Arrow > Issue Type: Bug > Components: C# > Affects Versions: 0.13.0 > Reporter: Eric Erhardt > Assignee: Yosuke Shiro > Priority: Major > Labels: pull-request-available > Fix For: 0.14.0 > > Time Spent: 7.5h > Remaining Estimate: 0h > > With the 0.13.0 C# NuGet package, [Source > Link|https://docs.microsoft.com/en-us/dotnet/standard/library-guidance/sourcelink] > doesn't work. The symbols can be downloaded from nuget.org correctly, but > when Visual Studio tries to download the code, it cannot find the correct > files. > The following is why it doesn't work: > The .NET tooling expects the build of an official release to happen in the > context of a {{git}} repository. This does 2 things to the produced assets: > # In the {{.nupkg}} file that is generated, the .NET tooling will encode the > current git commit's SHA hash into both the {{Apache.Arrow.nuspec}} file, and > into the compiled {{Apache.Arrow.dll}} assembly. Looking at the released > version that was published over the weekend: > [https://www.nuget.org/packages/Apache.Arrow/0.13.0], this information made > it into the {{.nuspec}} and the {{.dll}}: > {code} > [assembly: > AssemblyInformationalVersion("0.13.0+57de5c3adffe526f37366bb15c3ff0d4a2e84655")] > <repository type="git" url="https://github.com/apache/arrow" > commit="57de5c3adffe526f37366bb15c3ff0d4a2e84655" /> > {code} > However, I don't see how the [C# release > script|https://github.com/apache/arrow/blob/master/dev/release/post-06-csharp.sh] > could have done that. > # Also, .NET has a feature called "Source Link", which allows for the source > code to be automatically downloaded from GitHub when debugging into this > library. The way the tooling works today, it requires that the git > repository's {{origin}} remote is set to > [https://github.com/apache/arrow.git]. The tooling reads uses the `origin` > git remote to encode the GitHub URL into the symbols file in the {{.snupkg}} > file. > This, however, doesn't work with the 0.13.0 release that occurred over the > weekend. I tried using the Source Link feature, and it didn't automatically > download the source files from GitHub. > Looking into the symbols file, I see the Source Link information that was > embedded: > {code} > 1: > '/home/kou/work/cpp/arrow.kou/apache-arrow-0.13.0/csharp/src/Apache.Arrow/Flatbuf/FlatBuffers/ByteBuffer.cs' > (#19c) C# (#3) SHA-1 (#2) > 04-64-A0-48-82-EA-F5-B5-50-EC-CA-9F-85-75-E2-95-A4-EC-AB-B3 (#1b7) > 2: > '/home/kou/work/cpp/arrow.kou/apache-arrow-0.13.0/csharp/src/Apache.Arrow/Flatbuf/FlatBuffers/ByteBufferUtil.cs' > (#68f) C# (#3) SHA-1 (#2) > F0-4F-28-53-88-A4-E0-6E-F1-1F-17-F6-CD-FE-0E-64-AB-0B-C2-95 (#6aa) > {code} > {code:json} > { > "documents": { > "/home/kou/work/cpp/arrow.kou/*": > "https://raw.githubusercontent.com/kou/arrow/57de5c3adffe526f37366bb15c3ff0d4a2e84655/*", > "/home/kou/work/cpp/arrow.kou/cpp/submodules/parquet-testing/*": > "https://raw.githubusercontent.com/apache/parquet-testing/bb7b6abbb3fbeff845646364a4286142127be04c/*" > } > } > {code} > Here it appears the {{origin}} remote was set to {{kou/arrow}}, and not > {{apache/arrow}}. Also, it appears the {{apache-arrow-0.13.0}} folder was > under a git repository, and so the sources aren't matched up with the git > repository. (Basically that folder shouldn't have appeared in the Documents > list that has the {{.cs}} file path.) I think this explains how (1) above > happened - the build was under a git repository - but this script downloaded > an extra copy of the sources into that git repository. > I'm wondering how we can fix either this script, or the .NET Tooling, or > both, to make this experience better for the next release. I think we need to > ensure two things: > # The git commit information is set correctly in the {{.nuspec}} and the > {{.dll}} when the release build is run. I think it just happened by pure luck > this time. It just so happened that the script was executed in an already > established repo, and it just so happened to be on the right commit (or maybe > it wasn't the right commit?). > # The source link information is set correctly in the symbols file. > [~wesmckinn] [~kou] -- This message was sent by Atlassian Jira (v8.20.10#820010)