Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package mkdud for openSUSE:Factory checked in at 2026-03-24 18:48:37 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/mkdud (Old) and /work/SRC/openSUSE:Factory/.mkdud.new.8177 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mkdud" Tue Mar 24 18:48:37 2026 rev:41 rq:1342084 version:2.4 Changes: -------- --- /work/SRC/openSUSE:Factory/mkdud/mkdud.changes 2026-01-13 21:27:40.798893881 +0100 +++ /work/SRC/openSUSE:Factory/.mkdud.new.8177/mkdud.changes 2026-03-24 18:49:28.355950606 +0100 @@ -1,0 +2,10 @@ +Mon Mar 23 18:37:29 UTC 2026 - [email protected] + +- merge gh#openSUSE/mkdud#47 +- de-duplicate files to reduce size (bsc#1258149) +- update dist handling to match our official product naming more + closely +- update supported architecture list +- 2.4 + +-------------------------------------------------------------------- Old: ---- mkdud-2.3.tar.xz New: ---- mkdud-2.4.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ mkdud.spec ++++++ --- /var/tmp/diff_new_pack.lL1ga3/_old 2026-03-24 18:49:28.847970907 +0100 +++ /var/tmp/diff_new_pack.lL1ga3/_new 2026-03-24 18:49:28.847970907 +0100 @@ -49,7 +49,7 @@ Summary: Create driver update from rpms License: GPL-3.0-or-later Group: Hardware/Other -Version: 2.3 +Version: 2.4 Release: 0 Source: %{name}-%{version}.tar.xz Url: https://github.com/openSUSE/mkdud ++++++ mkdud-2.3.tar.xz -> mkdud-2.4.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mkdud-2.3/VERSION new/mkdud-2.4/VERSION --- old/mkdud-2.3/VERSION 2026-01-12 18:22:48.000000000 +0100 +++ new/mkdud-2.4/VERSION 2026-03-23 19:37:29.000000000 +0100 @@ -1 +1 @@ -2.3 +2.4 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mkdud-2.3/changelog new/mkdud-2.4/changelog --- old/mkdud-2.3/changelog 2026-01-12 18:22:48.000000000 +0100 +++ new/mkdud-2.4/changelog 2026-03-23 19:37:29.000000000 +0100 @@ -1,3 +1,10 @@ +2026-03-23: 2.4 + - merge gh#openSUSE/mkdud#47 + - de-duplicate files to reduce size (bsc#1258149) + - update dist handling to match our official product naming more + closely + - update supported architecture list + 2026-01-12: 2.3 - merge gh#openSUSE/mkdud#46 - make dependence on osc package optional (bsc#1254110) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mkdud-2.3/mkdud new/mkdud-2.4/mkdud --- old/mkdud-2.3/mkdud 2026-01-12 18:22:48.000000000 +0100 +++ new/mkdud-2.4/mkdud 2026-03-23 19:37:29.000000000 +0100 @@ -94,7 +94,8 @@ our $VERSION = "0.0"; -my @all_archs = qw ( x86_64 aarch64 armv7l i386 ia64 ppc ppc64 ppc64le s390 s390x ); +my @all_archs_legacy = qw ( x86_64 aarch64 armv7l i386 ia64 ppc ppc64 ppc64le s390 s390x ); +my @all_archs = qw ( x86_64 aarch64 i386 ppc64 ppc64le s390x riscv64 loongarch64 ); my $REPLACEABLE_YAST = '3.1.135'; # valid kernel module extensions @@ -114,6 +115,7 @@ sub write_dud; sub fix_duds; sub show_dud; +sub product_string; sub nice_arch_list; sub show_single_dir; sub get_service_pack; @@ -330,11 +332,10 @@ @dists = @opt_dist; if($opt_fix_dist) { + map { s/^(opensuse|sl)-// } @dists; map { tr/-//d } @dists; # kubic is part of tumbleweed map { s/^(tumbleweed|tw|kubic).*/tw/g } @dists; - # map 'micro' to 'suse-microos' - map { s/^micro(\d)/suse-microos$1/ } @dists; # map 'casp' to the new 'caasp' map { s/^casp(\d)/caasp$1/ } @dists; # CaaSP should be aligned with the respective SLES @@ -345,20 +346,23 @@ push @dists, "sles12" if grep { /^caasp[123]\./ } @dists; push @dists, "sles15" if grep { /^caasp4\./ } @dists; push @dists, "13.2" if grep { $_ eq "leap42.1" } @dists; - @d{map { /^sle([sd]?)(\d+)/i ? $1 eq "" && $2 <= 15 ? ("sles$2", "sled$2") : "sle\L$1$2" : "\L$_" } @dists} = (); + @d{map { /^sle([sd]?)(\d+)(\.\d+)?/i ? $1 eq "" && $2 <= 15 ? ("sles$2", "sled$2") : "sles\L$2$3" : "\L$_" } @dists} = (); @dists = sort keys %d; @d{map { /^(\d+)\.(\d+)$/ && $1 == 15 ? ("leap$1.$2", "sles$1", "sled$1") : $_ } @dists} = (); @d{map { /^(\d+)$/ && $1 == 15 ? ("sles$1", "sled$1") : $_ } @dists} = (); - @d{map { /^(\d+)\.(\d+)$/ && $1 >= 16 ? ("leap$1.$2", "sles$1") : $_ } @dists} = (); - @d{map { /^(\d+)$/ && $1 >= 16 ? ("sle$1") : $_ } @dists} = (); - @d{map { /^sle[sd](\d+)$/ && $1 >= 16 ? ("sle$1") : $_ } @dists} = (); - for (16 .. 19) { delete $d{"sles$_"}; delete $d{"sled$_"}; } + @d{map { /^(\d+)$/ && $1 >= 16 ? ("sles$1.0") : $_ } @dists} = (); + @d{map { /^(\d+)\.(\d+)$/ && $1 >= 16 ? ("leap$1.$2", "sles$1.$2") : $_ } @dists} = (); + @d{map { /^sles?(\d+)$/ && $1 >= 16 ? ("sles$1.0") : $_ } @dists} = (); + for (16 .. 19) { delete $d{"sle$_"}; delete $d{"sles$_"}; delete $d{"sled$_"}; } @dists = sort keys %d; @dists = grep { !(/^(\d+)(\.(\d+))?$/ && $1 >= 15) } @dists; } + map { s/^micro(\d+)/$1 >= 6 ? "sl-micro$1" : "suse-microos$1"/e } @dists; + map { s/^leap(\d+)/$1 >= 16 ? "opensuse-leap$1" : "leap$1"/e } @dists; + for (@dists) { - if(!/^((leap|kubic|casp|caasp|suse-microos)?\d+\.\d+|tw|sle[sd]\d+|sle1[6-9]|((fedora|rhel|sll)\d+))$/) { + if(!/^((opensuse-leap|leap|kubic|casp|caasp|sl-micro|suse-microos)?\d+\.\d+|tw|sle[sd]\d+|sles1[6-9]\.\d+|((fedora|rhel|sll)\d+))$/) { if(!$opt_fix_dist) { print STDERR "*** Note: using unsupported dist \"$_\"\n"; } @@ -925,8 +929,9 @@ my $dud_ok = 0; - my @dists = @dists; - my $dist = shift @dists; + my @my_dists = @dists; + + my $dist = shift @my_dists; analyze_ycp_files \@files; @@ -942,12 +947,20 @@ my $installer = installer_from_dist($dist); + my $product; + my $products; + for my $d (@dists) { + my $p = product_string "X-$d"; + $products->{$p->{product}} = 1 if $p->{product}; + } + $product = join ", ", sort keys %$products; + for my $arch (sort keys %arch) { my $base = "$tmp_dud/linux/suse/$arch-$dist"; mkdir $base, 0755; - for (@dists) { + for (@my_dists) { symlink "$arch-$dist", "$tmp_dud/linux/suse/$arch-$_"; } @@ -955,6 +968,15 @@ print $cfg "# created by mkdud $VERSION\n"; print $cfg "UpdateID:\t$id\n"; + if($product) { + print $cfg "UpdateProduct:\t$product\n"; + } + + if($use_all_archs) { + my $all = join ",", sort @all_archs; + print $cfg "UpdateAllArchs:\t$all\n"; + } + for (@opt_condition) { my $x = $_; $x =~ s#.*/##; @@ -1248,7 +1270,7 @@ if($installer eq "yast" && $opt_fix_adddir) { # only for sle11, sle12, leap42.X, caasp1.X, caasp2.X, caasp3.X - if(grep { /^(sle[sd]?1[12]|leap42\.|caasp[1-3]\.)/ } (@dists, $dist)) { + if(grep { /^(sle[sd]?1[12]|leap42\.|caasp[1-3]\.)/ } (@my_dists, $dist)) { my $danger = 0; $danger ||= -e "$base/inst-sys/usr/bin/$_" for qw (chmod chown cp ln mktemp mv readlink rm); if($danger) { @@ -1525,7 +1547,7 @@ shift @a; for my $arch (@a) { - for ($dist, @dists) { + for ($dist, @my_dists) { symlink "$all_archs[0]-$_", "$tmp_dud/linux/suse/$arch-$_"; } } @@ -1666,6 +1688,8 @@ } } + system "hardlink --quiet --content $tmp_src"; + my $cmd_archive = 'find . | cpio --quiet -o -H newc -R 0:0'; $cmd_archive = 'tar -cf - .' if $format_archive eq 'tar'; @@ -1829,7 +1853,9 @@ push @{$section->{$l}{links}}, $p; } elsif(-d $part) { - $section->{$p}{log} = show_single_dir $part; + my $single = show_single_dir $part; + $section->{$p}{log} = $single->{log}; + $section->{$p}{all_archs} = $single->{all_archs}; } } @@ -1852,7 +1878,7 @@ push @{$s->{links}}, $_; print " ["; - print nice_arch_list($s->{links}); + print nice_arch_list($s->{links}, $s->{all_archs}); print "]\n"; print $s->{log}; @@ -1861,62 +1887,97 @@ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# $string = nice_arch_list(\@list) +# { product => PRODUCT, arch => ARCH } = product_string str +# +# str is a string of the form "<arch>-<dist>". +# +# Return hash with parsed arch and nice product name, if the string matches some known product. +# +sub product_string +{ + my $str = $_[0]; + my $prod; + my $arch; + + if($str =~ /^(\S+?)-((sle([sd]?)|fedora|rhel|sll)(\d+)|(sles|opensuse-leap|leap|kubic|casp|caasp|sl-micro|suse-microos)?(\d+\.\d+)|tw|tumbleweed|opensuse-tumbleweed)$/) { + # print STDERR "+++ 1=$1 2=$2 3=$3 4=$4 5=$5 6=$6 7=$7 +++\n"; + $arch = $1; + if($3 eq 'sles') { + $prod = "SUSE Linux Enterprise Server $5"; + } + elsif($3 eq 'sled') { + $prod = "SUSE Linux Enterprise Desktop $5"; + } + elsif($3 eq 'sle') { + $prod = "SUSE Linux Enterprise $5"; + } + elsif($6 eq 'sles') { + $prod = "SUSE Linux Enterprise Server $7"; + } + elsif($6 eq 'leap' || $6 eq 'opensuse-leap') { + $prod = "openSUSE Leap $7"; + } + elsif($6 eq 'kubic') { + $prod = "openSUSE Kubic $7"; + } + elsif($6 eq 'casp') { + $prod = "SUSE Containers as a Service Platform $7"; + } + elsif($6 eq 'caasp') { + $prod = "SUSE Containers as a Service Platform $7"; + } + elsif($6 eq 'sl-micro') { + $prod = "SUSE Linux Micro $7"; + } + elsif($6 eq 'suse-microos') { + $prod = "SUSE Linux Enterprise Micro $7"; + } + elsif($2 eq "tw" || $2 eq "tumbleweed" || $2 eq "opensuse-tumbleweed") { + $prod = "openSUSE Tumbleweed"; + } + elsif($3 eq 'fedora') { + $prod = "Fedora $5"; + } + elsif($3 eq 'rhel') { + $prod = "Red Hat Enterprise Linux $5"; + } + elsif($3 eq 'sll') { + $prod = "SUSE Liberty Linux $5"; + } + else { + $prod = "openSUSE $2"; + } + } + + return { product => $prod, arch => $arch }; +} + + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# $string = nice_arch_list(\@list, $all_archs) # # Put a list of <arch>-<dist> values into something more compact and better # readable. # sub nice_arch_list { - my $l = shift; + my $l = $_[0]; + my $all_archs = $_[1]; local $_; - my $all_ar = join ", ", sort @all_archs; + + if($all_archs eq "") { + $all_archs = join ",", sort @all_archs_legacy; + } + + $all_archs =~ s/,/, /g; # split by known products my %p1; for (@$l) { - if(/^(\S+)-((sle([sd]?)|fedora|rhel|sll)(\d+)|(leap|kubic|casp|caasp|suse-microos)?(\d+\.\d+)|tw)$/) { - # print STDERR "+++ 1=$1 2=$2 3=$3 4=$4 5=$5 6=$6 7=$7 +++\n"; - if($3 eq 'sles') { - push @{$p1{"SUSE Linux Enterprise Server $5"}}, $1; - } - elsif($3 eq 'sled') { - push @{$p1{"SUSE Linux Enterprise Desktop $5"}}, $1; - } - elsif($3 eq 'sle') { - push @{$p1{"SUSE Linux Enterprise $5"}}, $1; - } - elsif($6 eq 'leap') { - push @{$p1{"openSUSE Leap $7"}}, $1; - } - elsif($6 eq 'kubic') { - push @{$p1{"openSUSE Kubic $7"}}, $1; - } - elsif($6 eq 'casp') { - push @{$p1{"SUSE Containers as a Service Platform $7"}}, $1; - } - elsif($6 eq 'caasp') { - push @{$p1{"SUSE Containers as a Service Platform $7"}}, $1; - } - elsif($6 eq 'suse-microos') { - push @{$p1{"SUSE Linux Enterprise Micro $7"}}, $1; - } - elsif($2 eq "tw") { - push @{$p1{"openSUSE Tumbleweed"}}, $1; - } - elsif($3 eq 'fedora') { - push @{$p1{"Fedora $5"}}, $1; - } - elsif($3 eq 'rhel') { - push @{$p1{"Red Hat Enterprise Linux $5"}}, $1; - } - elsif($3 eq 'sll') { - push @{$p1{"SUSE Liberty Linux $5"}}, $1; - } - else { - push @{$p1{"openSUSE $2"}}, $1; - } + my $p = product_string $_; + if($p->{product}) { + push @{$p1{$p->{product}}}, $p->{arch}; } else { push @{$p1{$_}}, ""; @@ -1948,7 +2009,7 @@ my @l; for (sort keys %p2) { my $al = $p2{$_}; - $al = "" if $al eq $all_ar; + $al = "" if $al eq $all_archs; push @l, $_ . ($al ? " ($al)" : ""); } @@ -1968,6 +2029,7 @@ my (@i, %i); my $id; + my $all_archs; my $installer_names = { agama => "Agama", anaconda => "Anaconda", yast => "YaST" }; @@ -1994,6 +2056,9 @@ elsif("\L$key" eq 'updatename') { $sect{name} .= " $val\n"; } + elsif("\L$key" eq 'updateallarchs') { + $all_archs = $val; + } elsif("\L$key" eq 'boot') { $sect{boot} .= " $val\n"; } @@ -2370,7 +2435,7 @@ $log .= " How to apply this DUD:\n$sect{howto}"; } - return $log; + return { log => $log, all_archs => $all_archs }; } @@ -2780,7 +2845,7 @@ my $installer = "yast"; - $installer = "agama" if $dist =~ /^(sle[sd]?|leap)(\d+)/ && $2 >= 16; + $installer = "agama" if $dist =~ /^(sle[sd]?|.*leap)(\d+)/ && $2 >= 16; $installer = "anaconda" if $dist =~ /^(fedora|rhel|sll)\d+(\.\d+)?$/; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mkdud-2.3/mkdud_man.adoc new/mkdud-2.4/mkdud_man.adoc --- old/mkdud-2.3/mkdud_man.adoc 2026-01-12 18:22:48.000000000 +0100 +++ new/mkdud-2.4/mkdud_man.adoc 2026-03-23 19:37:29.000000000 +0100 @@ -53,15 +53,16 @@ Specify the product the DUD is for. Possible values for _DIST_ include: `13.2`, `sle15`, `leap16.1`, `caasp1.0`, 'micro5.0', `tw` standing for openSUSE 13.2, SLE 15, Leap 16.1, CaaSP 1.0, SLE Micro 5.0, Tumbleweed, respectively. + -*Note 1*: Since SLE 16 / Leap 16.0 Agama replaces YaST as installer. + +Option can be repeated to specify several distribution targets. +*Note 1*: Since SLES 16.0 / Leap 16.0 Agama replaces YaST as installer. + See *Agama vs. YaST* below for more details. + *Note 2*: `sle15` is a short hand for specifying both `sles15` and `sled15`. + *Note 3*: There are no separate names for service packs. So `sles15-sp1` is the same as `sles15`. But see *--condition* below for a way to target specific service packs. + -*Note 4*: `sle16` is used for SLE 16. There are no service packs for the SLE 16 product line. + See *Distribution (Product) Names* below for more details. + -Option can be repeated to specify several distribution targets. +*Note 4*: For Tumbleweed, YaST is assumed as installer. If you need +to apply the DUD to a Tumbleweed variant using Agama, use the *--installer* option. *--condition*=_SCRIPT_:: Run _SCRIPT_ and apply DUD only if _SCRIPT_ has exit status 0. @@ -291,26 +292,29 @@ The *--dist* option accepts these values (case-insensitive; X, Y: decimal numbers): -- X.Y (e.g. `13.2`) = openSUSE X.Y -- leapX.Y (e.g. `leap15.1`) = openSUSE Leap X.Y +- leapX.Y (e.g. `leap16.1`) = openSUSE Leap X.Y - (obsolete) kubicX.Y (e.g. kubic1.0) = openSUSE Kubic X.Y - tw = openSUSE Tumbleweed - sleX (e.g. sle15) = SUSE Linux Enterprise (Server + Desktop) X - slesX (e.g. sles15) = SUSE Linux Enterprise Server X - sledX (e.g. sled15) = SUSE Linux Enterprise Desktop X - but see notes below -- sle16, sles16 = SUSE Linux Enterprise 16 +- slesX.Y (e.g. sles16.1) = SUSE Linux Enterprise Server X.Y - caaspX.Y (e.g. caasp1.0) = SUSE Container as a Service Platform X.Y - see notes below - microX.Y (e.g. micro5.0) = SUSE Linux Enterprise Micro X.Y As a shorthand and to avoid common mistakes, these aliases do also work (X, Y: decimal numbers): -- X.Y with X >= 15 (e.g. 15.1) resolves to: + - SUSE Linux Enterprise (Server + Desktop) X + openSUSE Leap X.Y -- X with X >= 15 (e.g. 15) resolves to: + - SUSE Linux Enterprise (Server + Desktop) X +- X.Y with X = 15 (e.g. 15.1) resolves to: + + SUSE Linux Enterprise (Server + Desktop) 15 + openSUSE Leap 15.Y +- X.Y with X >= 16 (e.g. 16.1) resolves to: + + SUSE Linux Enterprise Server X.Y + openSUSE Leap X.Y +- X with X = 15 resolves to: + + SUSE Linux Enterprise (Server + Desktop) 15 +- X with X >= 16 resolves to: + + SUSE Linux Enterprise Server X.0 *Note 1*: there aren't any products anymore that actually use `sledX`, -even SLED uses the `sles` DUDs meanwhile. Because of this, please just use `sleX` +even SLED uses the `sles` DUDs meanwhile. Because of this, please just use `slesX` when creating a DUD for a SUSE Linux Enterprise product. *Note 2*: CaaSP releases are based on SLE releases. Since driver @@ -346,9 +350,12 @@ == Agama vs. YaST -Starting with SLE 16 and Leap 16.0, the installer changes from YaST to Agama. With this, the installation +Starting with SLES 16.0 and Leap 16.0, the installer changes from YaST to Agama. With this, the installation system setup changes substantially and there are a few differences in driver update handling. +There are currently Tumbleweed media with either Agama or YaST. Use the *--installer* option to specify for +which variant you need the driver update in this case. + With Agama: - dracut replaces linuxrc for initial setup steps in the initrd; this results in different boot and config options @@ -370,7 +377,7 @@ + [source] ---- -mkdud --create foobar.dud --dist sle16 \ +mkdud --create foobar.dud --dist sles16.1 \ --dracut-hook pre-pivot:90-foobar.sh 90-foobar.sh ---- @@ -379,7 +386,7 @@ + [source] ---- -mkdud --create foobar.dud --dist sle16 \ +mkdud --create foobar.dud --dist sles16.1 \ --dracut-hook "pre-pivot:echo hello" ----
