From cf0c12aae2d9f50959ee02d1eec11532e6cb6b02 Mon Sep 17 00:00:00 2001 From: Valko Laszlo Date: Fri, 17 Dec 2021 18:59:32 +0100 Subject: [PATCH] Fix package handling in Windows 10 build 1904x. --- pkgtool.pm | 37 +++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/pkgtool.pm b/pkgtool.pm index c9b5e25..a167ce8 100644 --- a/pkgtool.pm +++ b/pkgtool.pm @@ -649,15 +649,28 @@ sub get_default_dnsdomain () { my $hostname = get_hostname(); return undef unless defined $hostname; + print "hostname: $hostname\n"; my $ipconfig = Win32::IPConfig->new($hostname); return undef unless defined $ipconfig; my $found; foreach my $adapter ($ipconfig->get_adapters()) { + my $name = $adapter->get_name(); my $domain = $adapter->get_domain(); - next unless defined $domain; + next unless defined $name and defined $domain; + next unless $name =~ /^Ethernet/o; $found = $domain; last; } + if (! defined $found) { + foreach my $adapter ($ipconfig->get_adapters()) { + my $name = $adapter->get_name(); + my $desc = $adapter->get_description(); + my $domain = $adapter->get_domain(); + next unless defined $name and defined $domain; + $found = $domain; + last; + } + } return $found; } @@ -2726,8 +2739,23 @@ sub get_patch_vars ($$$$$) my $patchdir = substitute_variables($vars, $$patchdef{'source-directory'}, 1, $basedir, 'pkg'); $$vars{patchdir} = $patchdir; $$vars{patch} = $kb; - my $number = $kb =~ /^(\d+)/o ? $1 : $kb; - my $extra = $kb =~ /^\d+([^0-9].*)$/o ? '-'.$1 : ''; + my $kbnum = $kb; + my $number; + my $extra; + if ($kb =~ /^([^\/]+)\/(.+)*$/o) { + $kbnum = $1; + $number = $2; + $extra = ''; + } + elsif ($kb =~ /^(\d+)([^0-9].*)$/o) { + $number = $1; + $extra = '-'.$2; + } + else { + $number = $kb; + $extra = ''; + } + $$vars{patchkbnum} = $kbnum; $$vars{patchnum} = $number; $$vars{patchextra} = $extra; $$vars{patchprefix} = defined $$patchdef{prefix} ? $$patchdef{prefix} : 'Windows'.get_win_version().'-'; @@ -2841,7 +2869,8 @@ sub assess_patch ($$$$$$$$$) my $pkgname = $$vars{pkgname}; my $patches = $$db{Patches}; my $pkgs = $$db{Pkgs}; - my $foundpatch = $$patches{$kb}; + my $patchdbname = $kb =~ /^([^\/]+)\.*$/o ? $1 : $kb; + my $foundpatch = $$patches{$patchdbname}; my $foundpkg = defined $pkgname ? $$pkgs{$pkgname} : undef; if (defined $foundpkg) { my $foundforpkgs = $$foundpkg{Packages};