Skip to content

Azure Linux 4.0 .NET 11 build images — package blockers #1646

@richlander

Description

@richlander

Context

We are porting the full src/azurelinux/3.0/net11.0/ image graph (29 Dockerfiles) to Azure Linux 4.0. Azure Linux 4.0 is based on Fedora 44, which changes several packages.

Most images can be ported with straightforward package renames (see "Resolved" below), but a few packages are missing entirely from AzL 4.0 repos.

Blockers

1. debootstrap — not available in AzL 4.0

  • Used by: crossdeps-builder/amd64 (Tier 1 image)
  • Impact: Blocks all 18 cross/* images, plus android, webassembly, and crossdeps-llvm (24 of 29 images)
  • Purpose: Used by build-rootfs.sh to bootstrap Ubuntu/Debian rootfs for cross-compilation
  • Possible fix: Install from source (it is a shell script), or find an alternative repo

2. libbsd-devel — not available in AzL 4.0

  • Used by: crossdeps-builder/amd64
  • Impact: Same as above — blocks the cross-compilation chain
  • Note: The base libbsd runtime package is available, but the -devel headers are not
  • Previous source: Was installed from the AzL 3.0 extended repo (packages.microsoft.com/azurelinux/3.0/prod/extended/...)

3. No AzL 4.0 extended repo

  • The extended repo URL pattern https://packages.microsoft.com/azurelinux/4.0/prod/extended/x86_64/config.repo returns 404
  • Impact: Any package that was only available in the extended repo (e.g., libbsd-devel) cannot be installed
  • Used by: crossdeps-builder/amd64

4. powershell — not available in AzL 4.0

  • Used by: crossdeps/amd64, build/amd64
  • Impact: These images need PowerShell for Azure DevOps functionality
  • Workaround available: COPY from mcr.microsoft.com/dotnet/sdk:10.0-azurelinux3.0 (validated locally)

5. mcr.microsoft.com/dotnet/runtime-deps — no AzL 4.0 variant

  • Used by: build/amd64 (as base image: runtime-deps:10.0-azurelinux3.0)
  • Impact: The build image cannot use the standard .NET runtime-deps base
  • Workaround available: Inline the runtime dependencies (icu, etc.) on top of core:4.0 and COPY the .NET runtime from mcr.microsoft.com/dotnet/runtime:10.0-azurelinux3.0
  • Note: This workaround creates a dependency on the AzL 3.0 runtime/SDK images as COPY sources. Once runtime-deps is available for AzL 4.0, the build image should be rebased.

Resolved Package Renames

These have been verified against AzL 4.0 repos and have working replacements:

AzL 3.0 Package AzL 4.0 Package Affected Images
tdnf (pkg manager) dnf All
ca-certificates-microsoft ca-certificates crossdeps, build
awk gawk crossdeps, fpm, freebsd cross
build-essential gcc + make fpm
moby-cli docker-cli android/docker
wget wget2-wget crossdeps-builder, opt, android, crossdeps
zlib-devel zlib-ng-compat-devel crossdeps-builder, opt
libgcc-atomic libatomic helix (already ported)
libmsquic removed (unavailable) helix (already ported)
powershell COPY from SDK image crossdeps, build

Other Notes

  • The FreeBSD cross images have an AzL 3.0-specific workaround for liblzma.so symlink. On AzL 4.0, the library path is /usr/lib64/ instead of /usr/lib/. This needs updating but is not a blocker.
  • The openjdk/jdk:17-mariner image used by android/amd64 is an external dependency and does not need porting.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions