From 921c93ffbc73b126c9d159ded35010690f224ecd Mon Sep 17 00:00:00 2001 From: Philip Taron Date: Wed, 17 Dec 2025 20:46:57 -0800 Subject: [PATCH] vmTools: add in Amazon Linux 2023 --- pkgs/build-support/vm/default.nix | 25 ++++++++++++++++++++++++ pkgs/build-support/vm/rpm/rpm-closure.pl | 8 +++++++- pkgs/build-support/vm/test.nix | 1 + 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/pkgs/build-support/vm/default.nix b/pkgs/build-support/vm/default.nix index 660b03c0b790..fdce25d41ae0 100644 --- a/pkgs/build-support/vm/default.nix +++ b/pkgs/build-support/vm/default.nix @@ -836,6 +836,7 @@ let { nativeBuildInputs = [ buildPackages.perl + buildPackages.perlPackages.URI buildPackages.perlPackages.XMLSimple buildPackages.zstd ]; @@ -1244,6 +1245,24 @@ let unifiedSystemDir = true; }; + amazon2023x86_64 = { + name = "amazon-2023-x86_64"; + fullName = "Amazon Linux 2023 (x86_64)"; + packagesList = fetchurl { + url = "https://cdn.amazonlinux.com/al2023/core/guids/6fa961924efb4835a7e8de43c89726dca28a5cf5906f891262d8f78a31ea3aaf/x86_64/repodata/primary.xml.gz"; + hash = "sha256-Ezdsc8a2aOIbyXvQ/nyanWe1fl089VgtfegaPcu2oo4="; + }; + urlPrefix = "https://cdn.amazonlinux.com/al2023/core/guids/6fa961924efb4835a7e8de43c89726dca28a5cf5906f891262d8f78a31ea3aaf/x86_64"; + archs = [ + "noarch" + "x86_64" + ]; + packages = commonAmazonPackages ++ [ + "annobin-plugin-gcc" + ]; + unifiedSystemDir = true; + }; + }; # The set of supported Dpkg-based distributions. @@ -1503,6 +1522,12 @@ let "pkgconf" ]; + commonAmazonPackages = baseRHELFamilyPackages ++ [ + "gcc-plugin-annobin" + "pkgconf" + "system-release" + ]; + # Common packages for openSUSE images. commonOpenSUSEPackages = [ "aaa_base" diff --git a/pkgs/build-support/vm/rpm/rpm-closure.pl b/pkgs/build-support/vm/rpm/rpm-closure.pl index 51ebfc9ade64..a11adc27ac10 100644 --- a/pkgs/build-support/vm/rpm/rpm-closure.pl +++ b/pkgs/build-support/vm/rpm/rpm-closure.pl @@ -1,6 +1,7 @@ use strict; use XML::Simple; use List::Util qw(min); +use URI::Escape; my @packagesFiles = (); my @urlPrefixes = (); @@ -174,8 +175,13 @@ print "[\n\n"; foreach my $pkgName (@needed) { my $pkg = $pkgs{$pkgName}; + # URL-encode each path segment separately to handle special characters like '+' + my $href = $pkg->{location}->{href}; + my @segments = split('/', $href); + my @encoded_segments = map { uri_escape($_) } @segments; + my $encoded_href = join('/', @encoded_segments); print " (fetchurl {\n"; - print " url = $pkg->{urlPrefix}/$pkg->{location}->{href};\n"; + print " url = \"$pkg->{urlPrefix}/$encoded_href\";\n"; if ($pkg->{checksum}->{type} eq "sha") { print " sha1 = \"$pkg->{checksum}->{content}\";\n"; } elsif ($pkg->{checksum}->{type} eq "sha256") { diff --git a/pkgs/build-support/vm/test.nix b/pkgs/build-support/vm/test.nix index 0320d86bb5be..667f0c84103e 100644 --- a/pkgs/build-support/vm/test.nix +++ b/pkgs/build-support/vm/test.nix @@ -55,5 +55,6 @@ in testAlma9Image = makeImageTestScript diskImages.alma9x86_64; testAlma10Image = makeImageTestScript diskImages.alma10x86_64; testOracle9Image = makeImageTestScript diskImages.oracle9x86_64; + testAmazon2023Image = makeImageTestScript diskImages.amazon2023x86_64; testUbuntuImage = makeImageTestScript diskImages.ubuntu2404x86_64; }