[ 
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)

Reply via email to