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
