@@ -436,7 +436,18 @@ private async Task BuildInternal()
436436 // If we don't have any dependencies error, generate the package
437437 if ( ! hasDependencyErrors )
438438 {
439- bool packageConverted = await ConvertNuGetToUnityPackageIfDoesNotExist ( packageIdentity , npmPackageInfo , npmVersion , packageMeta , forceUpdate , packageEntry ) ;
439+ bool packageAvailable = await ConvertNuGetToUnityPackageIfDoesNotExist ( packageIdentity , npmPackageInfo , npmVersion , packageMeta , forceUpdate , packageEntry ) ;
440+
441+ if ( ! packageAvailable )
442+ {
443+ npmPackage . Versions . Remove ( npmVersion . Version ) ;
444+
445+ if ( npmPackageInfo . Versions . TryGetValue ( npmCurrentVersion , out var tagValue ) && tagValue == "latest" )
446+ npmPackageInfo . Versions . Remove ( npmCurrentVersion ) ;
447+
448+ continue ;
449+ }
450+
440451 npmPackage . Time [ npmCurrentVersion ] = packageMeta . Published ? . UtcDateTime ?? GetUnityPackageFileInfo ( packageIdentity , npmVersion ) . CreationTimeUtc ;
441452
442453 // Copy repository info if necessary
@@ -448,7 +459,7 @@ private async Task BuildInternal()
448459 // Update the cache entry
449460 await WritePackageCacheEntry ( packageId , cacheEntry ) ;
450461
451- if ( packageConverted && IsRunningOnAzure )
462+ if ( packageAvailable && IsRunningOnAzure )
452463 {
453464 string localPackagePath = Path . Combine ( globalPackagesFolder , packageIdentity . Id . ToLowerInvariant ( ) , packageIdentity . Version . ToString ( ) ) ;
454465
@@ -503,22 +514,18 @@ RegistryEntry packageEntry
503514
504515 if ( ! IsUnityPackageValid ( identity , npmPackageVersion ) || ! IsUnityPackageSha1Valid ( identity , npmPackageVersion ) )
505516 {
506- await ConvertNuGetPackageToUnity ( identity , npmPackageInfo , npmPackageVersion , packageMeta , packageEntry ) ;
507-
508- return true ;
517+ return await ConvertNuGetPackageToUnity ( identity , npmPackageInfo , npmPackageVersion , packageMeta , packageEntry ) ;
509518 }
510- else
511- {
512- npmPackageVersion . Distribution . Shasum = await ReadUnityPackageSha1 ( identity , npmPackageVersion ) ;
513519
514- return false ;
515- }
520+ npmPackageVersion . Distribution . Shasum = await ReadUnityPackageSha1 ( identity , npmPackageVersion ) ;
521+
522+ return true ;
516523 }
517524
518525 /// <summary>
519526 /// Converts a NuGet package to a Unity package.
520527 /// </summary>
521- private async Task ConvertNuGetPackageToUnity
528+ private async Task < bool > ConvertNuGetPackageToUnity
522529 (
523530 PackageIdentity identity ,
524531 NpmPackageInfo npmPackageInfo ,
@@ -556,38 +563,38 @@ RegistryEntry packageEntry
556563 {
557564 using var memStream = new MemoryStream ( ) ;
558565
559- using ( var outStream = File . Create ( unityPackageFilePath ) )
560- using ( var gzoStream = new GZipOutputStream ( outStream )
561- {
562- ModifiedTime = packageMeta . Published ? . UtcDateTime
563- } )
564- using ( var tarArchive = new TarOutputStream ( gzoStream , Encoding . UTF8 ) )
565- {
566- // Select the framework version that is the closest or equal to the latest configured framework version
567- var versions = await packageReader . GetLibItemsAsync ( CancellationToken . None ) ;
566+ // Select the framework version that is the closest or equal to the latest configured framework version
567+ var versions = await packageReader . GetLibItemsAsync ( CancellationToken . None ) ;
568568
569- var closestVersions = NuGetHelper . GetClosestFrameworkSpecificGroups ( versions , _targetFrameworks ) ;
569+ var closestVersions = NuGetHelper . GetClosestFrameworkSpecificGroups ( versions , _targetFrameworks ) ;
570570
571- var collectedItems = new Dictionary < FrameworkSpecificGroup , HashSet < RegistryTargetFramework > > ( ) ;
571+ var collectedItems = new Dictionary < FrameworkSpecificGroup , HashSet < RegistryTargetFramework > > ( ) ;
572572
573- foreach ( var ( item , targetFramework ) in closestVersions )
573+ foreach ( var ( item , targetFramework ) in closestVersions )
574+ {
575+ if ( ! collectedItems . TryGetValue ( item , out var frameworksPerGroup ) )
574576 {
575- if ( ! collectedItems . TryGetValue ( item , out var frameworksPerGroup ) )
576- {
577- frameworksPerGroup = new HashSet < RegistryTargetFramework > ( ) ;
578- collectedItems . Add ( item , frameworksPerGroup ) ;
579- }
580- frameworksPerGroup . Add ( targetFramework ) ;
577+ frameworksPerGroup = new HashSet < RegistryTargetFramework > ( ) ;
578+ collectedItems . Add ( item , frameworksPerGroup ) ;
581579 }
580+ frameworksPerGroup . Add ( targetFramework ) ;
581+ }
582582
583- if ( ! packageEntry . Analyzer && collectedItems . Count == 0 )
584- {
585- LogWarning (
586- $ "Skipping package `{ identity } ` because it does not contain a compatible .NET assembly " +
587- $ "for { string . Join ( "," , _targetFrameworks . Select ( x => x . Name ) ) } .") ;
588- return ;
589- }
583+ if ( ! packageEntry . Analyzer && collectedItems . Count == 0 )
584+ {
585+ LogWarning (
586+ $ "Skipping package `{ identity } ` because it does not contain a compatible .NET assembly " +
587+ $ "for { string . Join ( "," , _targetFrameworks . Select ( x => x . Name ) ) } .") ;
588+ return false ;
589+ }
590590
591+ using ( var outStream = File . Create ( unityPackageFilePath ) )
592+ using ( var gzoStream = new GZipOutputStream ( outStream )
593+ {
594+ ModifiedTime = packageMeta . Published ? . UtcDateTime
595+ } )
596+ using ( var tarArchive = new TarOutputStream ( gzoStream , Encoding . UTF8 ) )
597+ {
591598 var isPackageNetStandard21Assembly = DotNetHelper . IsNetStandard21Assembly ( identity . Id ) ;
592599 var hasMultiNetStandard = collectedItems . Count > 1 ;
593600 var hasOnlyNetStandard21 = collectedItems . Count == 1 && collectedItems . Values . First ( ) . All ( x => x . Name == "netstandard2.1" ) ;
@@ -834,7 +841,7 @@ RegistryEntry packageEntry
834841 LogWarning (
835842 $ "Skipping package `{ identity } ` because it does not contain a compatible .NET assembly " +
836843 $ "for { string . Join ( "," , _targetFrameworks . Select ( x => x . Name ) ) } .") ;
837- return ;
844+ return false ;
838845 }
839846
840847 // Write the native libraries
@@ -905,6 +912,7 @@ RegistryEntry packageEntry
905912 // Try to fetch the license from an URL
906913 using ( var httpClient = new HttpClient ( ) )
907914 {
915+ httpClient . Timeout = TimeSpan . FromSeconds ( 15 ) ;
908916 licenseUrlText = await httpClient . GetStringAsync ( licenseUrl ) ;
909917 }
910918
@@ -969,7 +977,10 @@ RegistryEntry packageEntry
969977 }
970978
971979 LogWarning ( $ "Error while processing package `{ identity } `. Reason: { ex } ") ;
980+ return false ;
972981 }
982+
983+ return true ;
973984 }
974985
975986 private static Guid GetStableGuid ( PackageIdentity identity , string name )
@@ -1183,4 +1194,4 @@ private static List<string> SplitCommaSeparatedString(string input)
11831194 return list ;
11841195 }
11851196 }
1186- }
1197+ }
0 commit comments