fsprojects / fsprojects/Paket

Paket fails to resolve packages in JFrog Artifactory with no dependencies

Open
#4,319 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
F#
Stars
2.1k
Forks
528
Avg merge
1d 12m
Merged PRs (30d)
54

Description

We are in the middle of migrating all our packages and CI pipelines from using an on-prem JFrog Artifactory server (a version from july 2025), to using their hosted cloud service (latest version). During this migration, we discovered that most of our builds using Paket started failing, with error messages like these:

Resolving dependency graph...
Possible Performance degradation, ignore '1_https://myserver.jfrog.io/artifactory/api/nuget/DIPS-Nuget/Packages(Id='dips.3rdparty.devexpress221.data',Version='22.1.4')'
Possible Performance degradation, ignore '1_https://myserver.jfrog.io/artifactory/api/nuget/DIPS-Nuget/Packages(Id='DIPS.3rdParty.DevExpress221.Data',Version='22.1.4')'
Possible Performance degradation, ignore '2_https://myserver.jfrog.io/artifactory/api/nuget/DIPS-Nuget/Packages?$filter=(Id eq 'DIPS.3rdParty.DevExpress221.Data') and (NormalizedVersion eq '22.1.4')'
Possible Performance degradation, ignore '2_https://myserver.jfrog.io/artifactory/api/nuget/DIPS-Nuget/Packages?$filter=(tolower(Id) eq 'dips.3rdparty.devexpress221.data') and (NormalizedVersion eq '22.1.4')'
Possible Performance degradation, ignore '2_https://myserver.jfrog.io/artifactory/api/nuget/DIPS-Nuget/Packages?$filter=(Id eq 'DIPS.3rdParty.DevExpress221.Data') and (Version eq '22.1.4')'
Possible Performance degradation, ignore '2_https://myserver.jfrog.io/artifactory/api/nuget/DIPS-Nuget/Packages?$filter=(tolower(Id) eq 'dips.3rdparty.devexpress221.data') and (Version eq '22.1.4')'
Source 'https://myserver.jfrog.io/artifactory/api/nuget/DIPS-Nuget' exception: System.Exception: unable to find dependencies for package DIPS.3rdParty.DevExpress221.Data 22.1.4
   at Microsoft.FSharp.Core.PrintfModule.PrintFormatToStringThenFail@1448.Invoke(String message)
   at Paket.NuGetV2.handleODataEntry[a,b](String nugetURL, a packageName, b version, XmlNode entry) in D:\code\Paket\src\Paket.Core\Dependencies\NuGetV2.fs:line 185
   at Paket.NuGetV2.parseFindPackagesByIDODataListDetails[a](a url, String nugetURL, PackageName packageName, SemVerInfo version, XmlNode doc) in D:\code\Paket\src\Paket.Core\Dependencies\NuGetV2.fs:line 406
   at Paket.NuGetV2.parseFindPackagesByIDODataEntryDetails@415-5.Invoke(Unit unitVar) in D:\code\Paket\src\Paket.Core\Dependencies\NuGetV2.fs:line 417
   at Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvoke[T,TResult](AsyncActivation`1 ctxt, TResult result1, FSharpFunc`2 part2) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 510
   at Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 112
Something failed in GetPackageDetails, trying again with force: Couldn't get package details for package DIPS.3rdParty.DevExpress221.Data 22.1.4 on https://myserver.jfrog.io/artifactory/api/nuget/DIPS-Nuget.
Source 'https://myserver.jfrog.io/artifactory/api/nuget/DIPS-Nuget' exception: System.Exception: unable to find dependencies for package DIPS.3rdParty.DevExpress221.Data 22.1.4
   at Microsoft.FSharp.Core.PrintfModule.PrintFormatToStringThenFail@1448.Invoke(String message)
   at Paket.NuGetV2.handleODataEntry[a,b](String nugetURL, a packageName, b version, XmlNode entry) in D:\code\Paket\src\Paket.Core\Dependencies\NuGetV2.fs:line 185
   at Paket.NuGetV2.parseFindPackagesByIDODataListDetails[a](a url, String nugetURL, PackageName packageName, SemVerInfo version, XmlNode doc) in D:\code\Paket\src\Paket.Core\Dependencies\NuGetV2.fs:line 406
   at Paket.NuGetV2.parseFindPackagesByIDODataEntryDetails@415-5.Invoke(Unit unitVar) in D:\code\Paket\src\Paket.Core\Dependencies\NuGetV2.fs:line 417
   at Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvoke[T,TResult](AsyncActivation`1 ctxt, TResult result1, FSharpFunc`2 part2) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 510
   at Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 112
    Package not available.
      Message: Unable to retrieve package details for 'DIPS.3rdParty.DevExpress221.Data'-22.1.4

The paket.dependencies for this specific case is very simple:

framework: net48
strategy: max

source https://myserver.jfrog.io/artifactory/api/nuget/DIPS-Nuget

nuget DIPS.3rdParty.DevExpress221.Data

It's worth mentioning that while our old on-prem solution allowed anonymous access, the cloud-hosted solution does not, so we have authenticated Paket with paket config add-credentials. This works for most packages, so authentication is likely not the issue.

We use the latest version of Paket as of today, 10.3.1+bbc45f336c7f9bac95cf1d17267ab2383d029682.

I suspected there might be differences in the responses from JFrog Artifactory, so I tried running the OData query directly, and there is indeed a difference. Here is the <m:properties> part the result from the on-prem server, which works:

<m:properties>
    <d:lastUpdated>2022-08-10T09:35:30</d:lastUpdated>
    <d:Version>22.1.4</d:Version>
    <d:Copyright m:null="true"/>
    <d:Created m:type="Edm.DateTime">2022-08-10T09:35:30</d:Created>
    <d:Dependencies></d:Dependencies>
    <d:Description>DIPS.3rdParty.DevExpress221.Data</d:Description>
    <d:DownloadCount m:type="Edm.Int64">562</d:DownloadCount>
    <d:IconUrl m:null="true"/>
    <d:IsLatestVersion m:type="Edm.Boolean">true</d:IsLatestVersion>
    <d:IsAbsoluteLatestVersion m:type="Edm.Boolean">true</d:IsAbsoluteLatestVersion>
    <d:IsPrerelease m:type="Edm.Boolean">false</d:IsPrerelease>
    <d:Published m:type="Edm.DateTime">2022-08-10T09:35:30</d:Published>
    <d:PackageHash>RcSJ1vTfLvUQUetNVsndWJ/B5gFWTLrzYrU0VuZyUwq1j/yyJvBo3lq+oMCS4BbLEQFtAzVwEZLcTD5K8YMvMQ==</d:PackageHash>
    <d:PackageHashAlgorithm>SHA512</d:PackageHashAlgorithm>
    <d:PackageSize m:type="Edm.Int64">2285730</d:PackageSize>
    <d:ReleaseNotes m:null="true"/>
    <d:RequireLicenseAcceptance m:type="Edm.Boolean">false</d:RequireLicenseAcceptance>
    <d:Title>DIPS.3rdParty.DevExpress221.Data</d:Title>
    <d:VersionDownloadCount m:type="Edm.Int64">562</d:VersionDownloadCount>
    <d:Authors>DIPS</d:Authors>
    <d:MinClientVersion m:null="true"/>
</m:properties>

Here is the same result from the cloud-hosted server:

<m:properties>
    <d:lastUpdated>2025-12-12T09:47:51</d:lastUpdated>
    <d:Version>22.1.4</d:Version>
    <d:Copyright m:null="true"/>
    <d:Created m:type="Edm.DateTime">2025-12-12T09:47:51</d:Created>
    <d:Description>DIPS.3rdParty.DevExpress221.Data</d:Description>
    <d:DownloadCount m:type="Edm.Int64">1</d:DownloadCount>
    <d:IconUrl m:null="true"/>
    <d:IsLatestVersion m:type="Edm.Boolean">true</d:IsLatestVersion>
    <d:IsAbsoluteLatestVersion m:type="Edm.Boolean">true</d:IsAbsoluteLatestVersion>
    <d:IsPrerelease m:type="Edm.Boolean">false</d:IsPrerelease>
    <d:Published m:type="Edm.DateTime">2025-12-12T09:47:51</d:Published>
    <d:PackageHash>RcSJ1vTfLvUQUetNVsndWJ/B5gFWTLrzYrU0VuZyUwq1j/yyJvBo3lq+oMCS4BbLEQFtAzVwEZLcTD5K8YMvMQ==</d:PackageHash>
    <d:PackageHashAlgorithm>SHA512</d:PackageHashAlgorithm>
    <d:PackageSize m:type="Edm.Int64">2285730</d:PackageSize>
    <d:ReleaseNotes m:null="true"/>
    <d:RequireLicenseAcceptance m:type="Edm.Boolean">false</d:RequireLicenseAcceptance>
    <d:Title>DIPS.3rdParty.DevExpress221.Data</d:Title>
    <d:VersionDownloadCount m:type="Edm.Int64">1</d:VersionDownloadCount>
    <d:Authors>DIPS</d:Authors>
    <d:MinClientVersion m:null="true"/>
</m:properties>

The self-hosted server returns an empty <d:Dependencies></d:Dependencies> block, but this is missing in the response from the cloud-hosted server running a newer version, and I suspect this is what's causing Paket to fail. I have not found any workaround yet.

While this is obviously a breaking change from JFrog, it would probably be good if Paket could handle the absence of dependencies more gracefully. This is currently blocking us from finishing our migration, so I'm hoping it's easy and quick to fix!

Thank you for keeping this tool running and up to date!

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in src/Paket.Core/Dependencies/NuGetV2.fs at handleODataEntry and the parseFindPackagesByIDODataListDetails path around lines 185, 406, and 417. Compare how the parser handles the on-premises OData response with an empty Dependencies element versus the cloud response where it is absent. Done means a package with no dependencies can resolve successfully from the cloud-hosted Artifactory response.

Written by the indexing model from the issue text.

Assessment

Tech stack
fsharp
Domain
tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.