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"
 ----
 

Reply via email to