You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@arrow.apache.org by "Eric Erhardt (JIRA)" <ji...@apache.org> on 2019/04/02 20:35:00 UTC

[jira] [Created] (ARROW-5092) [C#] Source Link doesn't work with the C# release script

Eric Erhardt created ARROW-5092:
-----------------------------------

             Summary: [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


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
(v7.6.3#76005)