Skip to content

Commit 16b3965

Browse files
committed
Delete outdated SDK downloads so the temporary directory disk usage doesn't grow without bound
1 parent 5bd0974 commit 16b3965

4 files changed

Lines changed: 298 additions & 263 deletions

File tree

RaspberryPiDotnetRepository/DotnetUpstream/SdkDownloader.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ public interface SdkDownloader {
1313

1414
Task<UpstreamReleasesState> downloadSdks(Version minMinorVersion, CancellationToken ct = default);
1515

16+
void deleteSdksExcept(IEnumerable<DotnetRelease> sdksToKeep);
17+
1618
}
1719

1820
public class SdkDownloaderImpl(HttpClient httpClient, IOptions<Options> options, ILogger<SdkDownloaderImpl> logger): SdkDownloader {
@@ -103,6 +105,20 @@ Failed to verify .NET SDK {version} {arch}!
103105
leastProvidedReleaseMinorVersion: dotnetReleases.Last().sdkVersion.AsMinor()));
104106
}
105107

108+
public void deleteSdksExcept(IEnumerable<DotnetRelease> sdksToKeep) {
109+
IEnumerable<string> allSdks = Directory.EnumerateFiles(options.Value.tempDir, "*.tar.gz", SearchOption.TopDirectoryOnly);
110+
IEnumerable<string> sdksToDelete = allSdks.Except(sdksToKeep.SelectMany(sdkToKeep => sdkToKeep.downloadedSdkArchiveFilePaths.Values));
111+
112+
foreach (string sdkToDelete in sdksToDelete) {
113+
if (!options.Value.dryRun) {
114+
File.Delete(sdkToDelete);
115+
logger.LogDebug("Deleted outdated SDK file {file}", sdkToDelete);
116+
} else {
117+
logger.LogDebug("Would have deleted outdated SDK file {file} if not in dry-run mode", sdkToDelete);
118+
}
119+
}
120+
}
121+
106122
private static bool isStableVersion(JsonNode? release) {
107123
string patchVersionNumber = release!["release-version"]!.GetValue<string>();
108124
return !patchVersionNumber.Contains("-preview.") && !patchVersionNumber.Contains("-rc.");

RaspberryPiDotnetRepository/Orchestrator.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,9 @@ await Task.WhenAll(generatedPackages.Where(p => !p.isUpToDateInBlobStorage).Sele
9494
// Delete outdated .deb package files from Azure Blob Storage
9595
await Task.WhenAll(oldManifest?.packages.Except(newManifest.packages).Select(packageToDelete => blobStorage.deleteFile(packageToDelete.filePathRelativeToRepo, ct)) ?? []);
9696

97+
// Delete old downloaded SDK .tar.gz files from previous patch versions
98+
sdkDownloader.deleteSdksExcept(upstreamReleases);
99+
97100
} else {
98101
logger.LogInformation("Repository is already up to date according to the manifest file, stopping without generating or uploading any files.");
99102
}

RaspberryPiDotnetRepository/RaspberryPiDotnetRepository.csproj

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
66
<ImplicitUsings>enable</ImplicitUsings>
77
<Nullable>enable</Nullable>
8-
<Version>1.1.3</Version>
8+
<Version>1.2.0</Version>
99
<Authors>Ben Hutchison</Authors>
1010
<Copyright>© 2025 $(Authors)</Copyright>
1111
<Company>$(Authors)</Company>
@@ -23,28 +23,20 @@
2323
</ItemGroup>
2424

2525
<ItemGroup>
26-
<PackageReference Include="Azure.Identity" Version="1.13.2" />
27-
<PackageReference Include="Azure.ResourceManager.Cdn" Version="1.3.0" />
28-
<PackageReference Include="Azure.Storage.Blobs" Version="12.23.0" />
26+
<PackageReference Include="Azure.Identity" Version="1.14.0" />
27+
<PackageReference Include="Azure.ResourceManager.Cdn" Version="1.3.1" />
28+
<PackageReference Include="Azure.Storage.Blobs" Version="12.24.0" />
2929
<PackageReference Include="Bom.Squad" Version="0.3.0" />
3030
<PackageReference Include="DataSizeUnits" Version="3.0.0-beta1" />
3131
<PackageReference Include="LibObjectFile" Version="2.0.0" />
32-
<PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.2" />
32+
<PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.5" />
3333
<PackageReference Include="PgpCore" Version="6.5.1" />
34-
<PackageReference Include="ThrottleDebounce" Version="3.0.0-beta1" />
35-
<!-- <PackageReference Include="Unfucked" Version="0.0.0-beta4" /> -->
36-
<!-- <PackageReference Include="Unfucked.Compression" Version="0.0.0-beta3" /> -->
37-
<!-- <PackageReference Include="Unfucked.DI" Version="0.0.0-beta4" /> -->
38-
<!-- <PackageReference Include="Unfucked.PGP" Version="0.0.0-beta2" /> -->
39-
</ItemGroup>
40-
41-
<ItemGroup>
42-
<Reference Include="Unfucked" HintPath="..\..\Unfucked\Unfucked\bin\Debug\net8.0\Unfucked.dll" />
43-
<Reference Include="Unfucked.Compression" HintPath="..\..\Unfucked\Compression\bin\Debug\netstandard2.0\Unfucked.Compression.dll" />
44-
<PackageReference Include="SharpCompress" Version="0.39.0" />
45-
<Reference Include="Unfucked.DI" HintPath="..\..\Unfucked\DI\bin\Debug\net8.0\Unfucked.DI.dll" />
46-
<Reference Include="Unfucked.HTTP" HintPath="..\..\Unfucked\HTTP\bin\Debug\net8.0\Unfucked.HTTP.dll" />
47-
<Reference Include="Unfucked.PGP" HintPath="..\..\Unfucked\PGP\bin\Debug\net8.0\Unfucked.PGP.dll" />
34+
<PackageReference Include="ThrottleDebounce" Version="3.0.0-beta2" />
35+
<PackageReference Include="Unfucked" Version="0.0.1-beta.2" />
36+
<PackageReference Include="Unfucked.Compression" Version="0.0.1-beta.1" />
37+
<PackageReference Include="Unfucked.DI" Version="0.0.1-beta.1" />
38+
<PackageReference Include="Unfucked.HTTP" Version="0.0.1-beta.3" />
39+
<PackageReference Include="Unfucked.PGP" Version="0.0.1-beta.1" />
4840
</ItemGroup>
4941

5042
<ItemGroup>

0 commit comments

Comments
 (0)