Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package mksusecd for openSUSE:Factory 
checked in at 2025-09-10 20:23:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mksusecd (Old)
 and      /work/SRC/openSUSE:Factory/.mksusecd.new.1977 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "mksusecd"

Wed Sep 10 20:23:05 2025 rev:95 rq:1303672 version:4.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/mksusecd/mksusecd.changes        2025-08-28 
17:20:39.548221058 +0200
+++ /work/SRC/openSUSE:Factory/.mksusecd.new.1977/mksusecd.changes      
2025-09-10 20:23:23.800140429 +0200
@@ -1,0 +2,8 @@
+Wed Sep 10 16:07:42 UTC 2025 - [email protected]
+
+- merge gh#openSUSE/mksusecd#95
+- update documentation
+- support applying ISO changes in DUDs (jsc#PED-13262)
+- 4.2
+
+--------------------------------------------------------------------

Old:
----
  mksusecd-4.1.tar.xz

New:
----
  mksusecd-4.2.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ mksusecd.spec ++++++
--- /var/tmp/diff_new_pack.8wm4p4/_old  2025-09-10 20:23:24.340163231 +0200
+++ /var/tmp/diff_new_pack.8wm4p4/_new  2025-09-10 20:23:24.340163231 +0200
@@ -18,7 +18,7 @@
 
 
 Name:           mksusecd
-Version:        4.1
+Version:        4.2
 Release:        0
 Summary:        Tool to create SUSE Linux installation ISOs
 License:        GPL-3.0+

++++++ mksusecd-4.1.tar.xz -> mksusecd-4.2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mksusecd-4.1/README.md new/mksusecd-4.2/README.md
--- old/mksusecd-4.1/README.md  2025-08-28 13:44:09.000000000 +0200
+++ new/mksusecd-4.2/README.md  2025-09-10 18:07:42.000000000 +0200
@@ -31,6 +31,7 @@
 
 See also my mini-series of articles around SUSE installation media and driver 
updates that highlight specific use-cases:
 
+- [Make your own SUSE DVD – Tooling for SUSE and Multi-Linux installation / 
Live 
media](https://www.suse.com/c/make-your-own-suse-dvd-tooling-for-suse-and-multi-linux-installation-live-media)
 - [Update the update 
process!](https://lizards.opensuse.org/2017/02/16/fun-things-to-do-with-driver-updates)
 - [But what if I need a new 
kernel?](https://lizards.opensuse.org/2017/03/16/fun-things-to-do-with-driver-updates-2)
 - [And what if I want to **remove** some 
files?](https://lizards.opensuse.org/2017/04/25/fun-things-to-do-with-driver-updates-3)
@@ -49,7 +50,7 @@
 final system, e.g. for an AutoYaST installation. The patch is included in
 yast2-core-3.1.12-0.x86_64.rpm.
 
-- Create a Driver Update Disk (DUD) from yast2-core.rpm:
+- Create a Driver Update Disk (DUD) from yast2-core.rpm using 
[mkdud](https://github.com/openSUSE/mkdud?tab=readme-ov-file#mkdud):
 
     ```sh
     mkdud --create bug-free.dud --dist 13.2 yast2-core-3.1.12-0.x86_64.rpm
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mksusecd-4.1/VERSION new/mksusecd-4.2/VERSION
--- old/mksusecd-4.1/VERSION    2025-08-28 13:44:09.000000000 +0200
+++ new/mksusecd-4.2/VERSION    2025-09-10 18:07:42.000000000 +0200
@@ -1 +1 @@
-4.1
+4.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mksusecd-4.1/changelog new/mksusecd-4.2/changelog
--- old/mksusecd-4.1/changelog  2025-08-28 13:44:09.000000000 +0200
+++ new/mksusecd-4.2/changelog  2025-09-10 18:07:42.000000000 +0200
@@ -1,3 +1,8 @@
+2025-09-10:    4.2
+       - merge gh#openSUSE/mksusecd#95
+       - update documentation
+       - support applying ISO changes in DUDs (jsc#PED-13262)
+
 2025-08-28:    4.1
        - merge gh#openSUSE/mksusecd#93
        - minor suse blog corrections
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mksusecd-4.1/mkmedia new/mksusecd-4.2/mkmedia
--- old/mksusecd-4.1/mkmedia    2025-08-28 13:44:09.000000000 +0200
+++ new/mksusecd-4.2/mkmedia    2025-09-10 18:07:42.000000000 +0200
@@ -237,7 +237,8 @@
 sub rebuild_efi_image;
 sub read_config;
 sub get_file_arch;
-sub apply_duds;
+sub apply_duds_1;
+sub apply_duds_2;
 sub apply_single_dud;
 sub kernel_module_exists;
 sub run_depmod;
@@ -502,6 +503,7 @@
 my $add_kernel;
 my $add_initrd;
 my $orig_initrd;
+my $orig_initrd_filename;
 my $initrd_has_parts;
 my $has_efi = 0;
 my $has_el_torito = 0;
@@ -695,6 +697,8 @@
   $boot = analyze_boot;
   get_initrd_format;
 
+  $applied_duds = apply_duds_1;
+
   if($opt_type eq "micro") {
     if($opt_defaultrepo) {
       $opt_instsys_in_repo = 0;
@@ -790,7 +794,7 @@
     replace_kernel_mods;
   }
 
-  $applied_duds = apply_duds;
+  apply_duds_2 $applied_duds;
 
   $add_initrd = create_initrd;
   update_kernel_initrd;
@@ -3157,6 +3161,12 @@
   if(my $x = get_kernel_initrd) {
     my $f = fname($x->{initrd});
     if(-f $f) {
+      if($orig_initrd_filename eq $f) {
+        print "keeping initrd file: $f\n" if $opt_verbose >= 2;
+        return;
+      }
+      $orig_initrd_filename = $f;
+      print "unpacking initrd file: $f\n" if $opt_verbose >= 2;
       $orig_initrd = $tmp->dir();
       my $type = get_archive_type $f;
       if($type) {
@@ -6240,7 +6250,7 @@
       my @fields;
       while(my $l = <$f>) {
         @fields = split /\s/, $l;
-        # ... and for each product definition, analyse it
+        # ... and for each product definition, analyze it
         my $ok = check_product($src_idx, $_, @fields) if @fields == 3;
         # If we find a valid product, skip the source dir (except if it's the 
first).
         # Instead, only the product (the repository) is added to the final 
medium.
@@ -7142,22 +7152,32 @@
 
 
 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-# apply_duds()
+# apply_duds_1()
+#
+# Apply all DUDs in @opt_duds - step 1 (analyze + iso).
+#
+# Update iso as needed.
+#
+# The critical part is that a DUD may replace the initrd. So we do it in two
+# steps: first look only for 'iso' parts and add them to the @sources list.
+# For this, avoid relying on initrd content too much and delay for example
+# module/kernel related things to apply_duds_2.
+#
+# Nevertheless there *is* a chicken-egg problem; the replaced initrd should
+# not introduce a changed 'dist' tag and have the same compression as the
+# old one.
 #
-# Apply all DUDs in @opt_duds.
+# Just don't overdo things.
 #
-# Updates initrd, instsys, boot options as needed.
+# In step 2 the main DUD parts are applied.
 #
-sub apply_duds
+sub apply_duds_1
 {
   return undef if !@opt_duds;
 
   unpack_orig_initrd if !$orig_initrd;
   die "initrd unpacking failed\n" if !$orig_initrd;
 
-  # to get $kernel hash
-  get_initrd_modules;
-
   my $linuxrc_config = read_config "$orig_initrd/linuxrc.config";
 
   my $dud;
@@ -7184,12 +7204,11 @@
     ($dud->{arch} = $1, $dud->{dist} = $2) if $dud->{dir} =~ 
m#/([^/-]+)-([^/-]+)$#;
   }
 
-  $dud->{kernel_dir} = 
"$kernel->{target_lib_dir}/modules/$kernel->{orig_version}";
-
   print "going to apply driver updates in $dud->{dir}\n" if $opt_verbose >= 1;
 
   $dud->{initrd} = $tmp->dir();
   $dud->{instsys} = $tmp->dir();
+  $dud->{iso} = $tmp->dir();
   $dud->{module_dir} = $tmp->dir();
 
   for my $d (@opt_duds) {
@@ -7209,45 +7228,93 @@
       for my $sub_dir (glob "$dir/$dud->{arch}-$dud->{dist}") {
         next unless -d $sub_dir;
         $dud->{count}++;
-        apply_single_dud $dud, $sub_dir;
+        push @{$dud->{dir_list}}, { count => $dud->{count}, dir => $sub_dir };
+        apply_single_dud $dud, $dud->{count}, $sub_dir, 1;
         last;
       }
     }
   }
 
-  push @opt_initrds, $dud->{initrd} if $dud->{initrd_added};
-  push @opt_instsys, $dud->{instsys} if $dud->{instsys_added};
+  if($dud->{iso_added}) {
+    my $new_source = { dir => $dud->{iso}, real_name => $dud->{iso}, type => 
'dir' };
+    push @sources, $new_source;
+    update_filelist [ $new_source ];
+    unpack_orig_initrd;
+  }
 
   return $dud;
 }
 
 
 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-# apply_single_dud(dud, dir)
+# apply_duds_2()
+#
+# Apply all DUDs in @opt_duds - step 2 (main part).
+#
+# Update initrd, instsys, boot options as needed.
+#
+sub apply_duds_2
+{
+  my $dud = $_[0];
+
+  return if !$dud->{dir_list};
+
+  # to get $kernel hash
+  get_initrd_modules;
+  $dud->{kernel_dir} = 
"$kernel->{target_lib_dir}/modules/$kernel->{orig_version}";
+
+  print "going to apply driver updates in $dud->{dir}\n" if $opt_verbose >= 1;
+
+  for my $d (@{$dud->{dir_list}}) {
+    apply_single_dud $dud, $d->{count}, $d->{dir}, 0;
+  }
+
+  push @opt_initrds, $dud->{initrd} if $dud->{initrd_added};
+  push @opt_instsys, $dud->{instsys} if $dud->{instsys_added};
+}
+
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# apply_single_dud(dud, count, dir, iso_only)
 #
 # Apply single DUD in $dir; $dud is hash describing DUD.
 # $dud is updated as needed.
 #
-# Updates initrd, instsys, boot options as needed.
+# Update iso, initrd, instsys, boot options as needed.
 #
 sub apply_single_dud
 {
   my $dud = $_[0];
-  my $dir = $_[1];
+  my $count = $_[1];
+  my $dir = $_[2];
+  my $iso_only = $_[3];
 
-  print "apply single dud: dir = $dir, count = $dud->{count}\n" if 
$opt_verbose >= 2;
+  print "apply single dud: dir = $dir, count = $count, iso = $iso_only\n" if 
$opt_verbose >= 2 && !$iso_only;
 
   $dud->{config} = read_config "$dir/dud.config";
 
   $dud->{name} = $dud->{config}{updatename};
   $dud->{id} = $dud->{config}{updateid};
 
-  print "applying driver update\n  - id: $dud->{id}\n  - name: $dud->{name}\n";
+  print "applying driver update\n  - id: $dud->{id}\n  - name: $dud->{name}\n" 
if !$iso_only;
 
   my $log;
   my $log_id = $dud->{id};
   $log_id =~ tr [./][__];
 
+  if($iso_only) {
+    if(-d "$dir/iso" ) {
+      $dud->{iso_added} = 1;
+      $dud->{has_iso_dir}{$dir} = 1;
+      system "tar -C '$dir/iso' -cf - . | tar -C '$dud->{iso}' 
--keep-directory-symlink -xpf -";
+      system "rm -rf '$dir/iso'";
+    }
+    return;
+  }
+  else {
+    print "  - iso updated\n" if $dud->{has_iso_dir}{$dir};
+  }
+
   if(-d "$dir/initrd" ) {
     print "  - initrd updated\n";
     $dud->{initrd_added} = 1;
@@ -7318,7 +7385,7 @@
   print "  - boot options added\n" if $boot_options;
 
   if($keep_keys || -d "$dir/install") {
-    my $c = sprintf "%02u", $dud->{count};
+    my $c = sprintf "%02u", $count;
     my $new_dir = "$dud->{initrd}/$c/linux/suse", $dud->{initrd};
     File::Path::make_path $new_dir;
 
@@ -7344,6 +7411,10 @@
       print $fd $log;
       close $fd;
     }
+    if(open my $fd, ">>", "$dud->{iso}/.update.iso.$log_id") {
+      print $fd $log;
+      close $fd;
+    }
   }
 
   if($opt_verbose >= 2) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mksusecd-4.1/mkmedia_man.adoc 
new/mksusecd-4.2/mkmedia_man.adoc
--- old/mksusecd-4.1/mkmedia_man.adoc   2025-08-28 13:44:09.000000000 +0200
+++ new/mksusecd-4.2/mkmedia_man.adoc   2025-09-10 18:07:42.000000000 +0200
@@ -572,6 +572,7 @@
 - update kernel modules
 - change files in the initrd of the installation medium
 - change files in the installation system / live root of the installation 
medium
+- change files on the installation medium
 - change boot options
 - change installer config options
 - provide updated packages to be installed
@@ -597,8 +598,8 @@
 loads the updated modules. While with the second way the updated modules are 
loaded
 right away.
 
-Also, things like boot options or initrd changes can only be applied 
successfully with the second method as it would
-simply be too late with the first method.
+Also, changes to boot options, the initrd content, or general installation 
media changes can only be applied successfully with
+the second method.
 
 === Kernel update notes
 

Reply via email to