Skip to content

Commit 7841218

Browse files
committed
#36: delist .NET 7 and 8 packages from ARM32 Trixie, where HTTPS connections are broken due to incompatibilities with the versions of glibc and OpenSSL on that operating system version. .NET 6 and 9 still work on ARM32 Trixie, and all .NET versions 6–9 also work on Trixie arm64, so those remain listed in the Trixie package indexes.
1 parent 8cea898 commit 7841218

File tree

10 files changed

+233
-220
lines changed

10 files changed

+233
-220
lines changed

HelloWorldRuntime/HelloWorldRuntime.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
<TargetFramework>net6.0</TargetFramework>
66
<ImplicitUsings>enable</ImplicitUsings>
77
<Nullable>enable</Nullable>
8-
<RollForward>latestMajor</RollForward>
8+
<RollForward>latestMajor</RollForward>
9+
<NoWarn>$(NoWarn);NETSDK1138</NoWarn>
910
</PropertyGroup>
1011

1112
</Project>

RaspberryPiDotnetRepository/Data/DebianPackage.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,15 @@ public class DebianPackage(RuntimeType runtime, Version runtimeVersion, Version
3838
public CpuArchitecture architecture { get; } = architecture;
3939

4040
/// <summary>
41-
/// <para>The oldest version of Debian that this package can run on, usually dictated by its libc6 version</para>
41+
/// <para>Whether this package can run on a given Debian version, usually dictated by its libc version</para>
4242
/// <para>See <see href="https://github.com/dotnet/core/blob/main/release-notes/9.0/supported-os.md#linux-compatibility"/></para>
4343
/// <para>#28: .NET 9 and later don't run on ARM32 Debian 10 or 11</para>
44+
/// <para>#36: .NET 7 and 8 can't use OpenSSL on ARM32 Debian 13</para>
4445
/// </summary>
45-
[JsonIgnore]
46-
public DebianRelease minimumDebianRelease => architecture == CpuArchitecture.ARM32 && version >= new Version(9, 0, 0) ? DebianRelease.BOOKWORM : DebianRelease.BUSTER;
46+
public bool isCompatibleWithDebianRelease(DebianRelease debian) =>
47+
!(architecture == CpuArchitecture.ARM32 && (
48+
(version >= new Version(9, 0, 0) && debian <= DebianRelease.BULLSEYE) || // runtime crash on launch from old glibc
49+
(version >= new Version(7, 0, 0) && version < new Version(9, 0, 0) && debian >= DebianRelease.TRIXIE))); // HTTPS AuthenticationException from newer glibc and OpenSSL
4750

4851
/// <summary>
4952
/// Like <c>packages/dotnet-runtime-8.0.5-0-armhf.deb</c> or <c>packages/aspnetcore-runtime-8.0-0-arm64-latest-lts.deb</c>

RaspberryPiDotnetRepository/Data/Options.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public record Options {
1717

1818
public bool dryRun { get; init; }
1919

20-
// public bool forceRegenerate { get; init; }
20+
public bool forceRegenerate { get; init; }
2121

2222
public string? cdnTenantId { get; set; }
2323

RaspberryPiDotnetRepository/Debian/Repository/Indexer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public async Task<IEnumerable<IGrouping<DebianRelease, PackageIndexFile>>> gener
3939
Dictionary<(DebianRelease debianVersion, CpuArchitecture architecture), IList<DebianPackage>> groups = [];
4040
foreach (DebianPackage package in packages) {
4141
foreach (DebianRelease debianRelease in allDebianReleases) {
42-
if (package.minimumDebianRelease <= debianRelease) {
42+
if (package.isCompatibleWithDebianRelease(debianRelease)) {
4343
groups.GetOrAdd((debianRelease, package.architecture), [], out _).Add(package);
4444
}
4545
}

RaspberryPiDotnetRepository/Orchestrator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ protected override async Task ExecuteAsync(CancellationToken ct) {
3636
(IList<DotnetRelease> upstreamReleases, UpstreamReleasesSecondaryInfo upstreamInfo) = await sdkDownloader.downloadSdks(MIN_DOTNET_MINOR_VERSION, ct);
3737

3838
// Stop early if repo is already up to date
39-
if (!oldManifest?.isUpToDate(upstreamInfo.knownReleaseSdkVersions) ?? true) {
39+
if (options.Value.forceRegenerate || (!oldManifest?.isUpToDate(upstreamInfo.knownReleaseSdkVersions) ?? true)) {
4040

4141
// Generate .deb package files
4242
IEnumerable<PackageRequest> packagesToRequest = packageRequester.listPackagesToRequest(upstreamReleases);

RaspberryPiDotnetRepository/RaspberryPiDotnetRepository.csproj

Lines changed: 7 additions & 7 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.3.0</Version>
8+
<Version>1.3.1</Version>
99
<Authors>Ben Hutchison</Authors>
1010
<Copyright>© 2025 $(Authors)</Copyright>
1111
<Company>$(Authors)</Company>
@@ -24,19 +24,19 @@
2424
</ItemGroup>
2525

2626
<ItemGroup>
27-
<PackageReference Include="Azure.Identity" Version="1.16.0" />
27+
<PackageReference Include="Azure.Identity" Version="1.17.0" />
2828
<PackageReference Include="Azure.ResourceManager.Cdn" Version="1.5.0" />
29-
<PackageReference Include="Azure.Storage.Blobs" Version="12.25.1" />
29+
<PackageReference Include="Azure.Storage.Blobs" Version="12.26.0" />
3030
<PackageReference Include="Bom.Squad" Version="0.3.0" />
3131
<PackageReference Include="DataSizeUnits" Version="3.0.0-beta2" />
3232
<PackageReference Include="LibObjectFile" Version="2.1.0" />
33-
<PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.9" />
33+
<PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.10" />
3434
<PackageReference Include="PgpCore" Version="6.5.2" />
3535
<PackageReference Include="ThrottleDebounce" Version="3.0.0-beta5" />
36-
<PackageReference Include="Unfucked" Version="0.0.1-beta.13" />
36+
<PackageReference Include="Unfucked" Version="0.0.1-beta.14" />
3737
<PackageReference Include="Unfucked.Compression" Version="0.0.1-beta.1" />
38-
<PackageReference Include="Unfucked.DI" Version="0.0.1-beta.6" />
39-
<PackageReference Include="Unfucked.HTTP" Version="0.0.1-beta.13" />
38+
<PackageReference Include="Unfucked.DI" Version="0.0.1-beta.7" />
39+
<PackageReference Include="Unfucked.HTTP" Version="0.0.1-beta.14" />
4040
<PackageReference Include="Unfucked.PGP" Version="0.0.1-beta.1" />
4141
</ItemGroup>
4242

RaspberryPiDotnetRepository/appsettings.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"repositoryBaseDir": "./repo",
33
"tempDir": "./temp",
44
"dryRun": false,
5+
"forceRegenerate": false,
56
"keepTempDownloads": true,
67

78
// Insert the path to a binary-encoded public key (not ASCII-armored, because APT does not handle those)

0 commit comments

Comments
 (0)