Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package s390-tools for openSUSE:Factory 
checked in at 2026-01-06 17:46:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/s390-tools (Old)
 and      /work/SRC/openSUSE:Factory/.s390-tools.new.1928 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "s390-tools"

Tue Jan  6 17:46:42 2026 rev:103 rq:1325644 version:2.40.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/s390-tools/s390-tools.changes    2025-10-16 
17:39:47.403031919 +0200
+++ /work/SRC/openSUSE:Factory/.s390-tools.new.1928/s390-tools.changes  
2026-01-06 17:47:44.517420523 +0100
@@ -1,0 +2,51 @@
+Mon Jan  5 09:09:46 UTC 2026 - Nikolay Gueorguiev <[email protected]>
+
+- Upgrade s390-tools to 2.40 (jsc#PED-14586)
+- Add new tools / libraries:
+  * Add project-wide .clang-tidy configuration
+  * libutil: Introduce util_time for time related functionality
+  * libutil: Introduce zsh/bash autocompletion tooling based on util_opt
+  * pvinfo: Tool to display Secure Execution system information
+  * pvverify: Tool to verify host-key documents
+- Changes of existing tools:
+  * cpumf: Implement zsh and bash autocompletion
+  * dasdfmt: Implement zsh and bash autocompletion
+  * dbginfo.sh: Add NetworkManager and netplan
+  * dbginfo.sh: Add kvm_stat
+  * dbginfo.sh: Adding stp time information
+  * dbginfo.sh: Simplify procfs collection
+  * hyptop: Add physical information row
+  * hyptop: Calculate sample time delta for physical partition
+  * hyptop: Replace long option names using _ with - for consistency
+    For example: --cpu_types -> --cpu-types
+    (Options with _ are still supported for backward compatibility)
+  * libekmfweb: Add function to validate a certificate against the identity key
+  * netboot: Add longer kernel command lines support
+  * udev/rules.d: Make virtio-blk devices non-rotational
+  * udev/rules.d: Set default io scheduler to 'none' for virtio-blk
+  * ziomon: Add support to sample device symlinks (/dev/disk/...)
+  * ziorep_config: Add fcp-lun details to -M option output
+  * ziorep_config: Add port_id and failed attributes to -A option output
+  * netboot: Install on non-s390 architectures
+- Bug Fixes:
+  * lib(ekmfweb|kmipclient): Use ln without -r
+  * s390-tools: Fix various compilation issues with musl libc
+  * zipl/boot: Fix unused loadparm when SCLP line-mode console is absent
+- Reworked patches
+  * s390-tools-sles12-create-filesystem-links.patch
+  * s390-tools-sles12-fdasd-skip-partition-check-and-BLKRRPART-ioctl.patch
+  * s390-tools-sles12-zipl_boot_msg.patch
+  * s390-tools-sles15-sysconfig-compatible-dumpconf.patch
+  * s390-tools-sles15sp3-Allow-multiple-device-arguments.patch
+  * s390-tools-sles15sp3-Format-devices-in-parallel.patch
+  * s390-tools-sles15sp3-Implement-Y-yast_mode.patch
+  * s390-tools-sles15sp3-Implement-f-for-backwards-compability.patch
+  * s390-tools-sles15sp3-dasdfmt-retry-BIODASDINFO-if-device-is-busy.patch
+- Removed obsolete patch
+  * s390-tools-sles15sp5-remove-no-pie-link-arguments.patch
+- Applied additional patch
+  * s390-tools-sles15sp3-Format-devices-in-parallel-1.patch
+- Re-vendor-ed vendor.tar.zst
+- Amended the .spec file, fixed Rust compilation errors
+
+-------------------------------------------------------------------

Old:
----
  s390-tools-2.39.0.tar.gz
  s390-tools-sles15sp5-remove-no-pie-link-arguments.patch

New:
----
  s390-tools-2.40.0.tar.gz
  s390-tools-sles15sp3-Format-devices-in-parallel-1.patch

----------(Old B)----------
  Old:- Removed obsolete patch
  * s390-tools-sles15sp5-remove-no-pie-link-arguments.patch
- Applied additional patch
----------(Old E)----------

----------(New B)----------
  New:- Applied additional patch
  * s390-tools-sles15sp3-Format-devices-in-parallel-1.patch
- Re-vendor-ed vendor.tar.zst
----------(New E)----------

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

Other differences:
------------------
++++++ s390-tools.spec ++++++
--- /var/tmp/diff_new_pack.ppdJCU/_old  2026-01-06 17:47:46.277492929 +0100
+++ /var/tmp/diff_new_pack.ppdJCU/_new  2026-01-06 17:47:46.281493094 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package s390-tools
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -34,7 +34,7 @@
 %endif
 
 Name:           s390-tools
-Version:        2.39.0
+Version:        2.40.0
 Release:        0
 Summary:        S/390 tools like zipl and dasdfmt for s390x (plus selected 
tools for x86_64)
 License:        MIT
@@ -145,12 +145,12 @@
 %endif
 Patch904:       s390-tools-sles15sp3-Allow-multiple-device-arguments.patch
 Patch905:       s390-tools-sles15sp3-Format-devices-in-parallel.patch
-Patch906:       s390-tools-sles15sp3-Implement-Y-yast_mode.patch
-Patch907:       
s390-tools-sles15sp3-Implement-f-for-backwards-compability.patch
-Patch908:       
s390-tools-sles15sp3-dasdfmt-retry-BIODASDINFO-if-device-is-busy.patch
-Patch909:       
s390-tools-sles12-fdasd-skip-partition-check-and-BLKRRPART-ioctl.patch
-Patch910:       
s390-tools-sles15sp1-11-zdev-Do-not-call-zipl-on-initrd-update.patch
-Patch911:       s390-tools-sles15sp5-remove-no-pie-link-arguments.patch
+Patch906:       s390-tools-sles15sp3-Format-devices-in-parallel-1.patch
+Patch907:       s390-tools-sles15sp3-Implement-Y-yast_mode.patch
+Patch908:       
s390-tools-sles15sp3-Implement-f-for-backwards-compability.patch
+Patch909:       
s390-tools-sles15sp3-dasdfmt-retry-BIODASDINFO-if-device-is-busy.patch
+Patch910:       
s390-tools-sles12-fdasd-skip-partition-check-and-BLKRRPART-ioctl.patch
+Patch911:       
s390-tools-sles15sp1-11-zdev-Do-not-call-zipl-on-initrd-update.patch
 Patch912:       s390-tools-ALP-zdev-live.patch
 Patch913:       s390-tools-sles15sp6-kdump-initrd-59-zfcp-compat-rules.patch
 ###
@@ -187,6 +187,8 @@
 BuildRequires:  rust
 BuildRequires:  cargo
 BuildRequires:  cargo-packaging
+BuildRequires:  clang-devel
+BuildRequires:  llvm-devel
 BuildRequires:  openssl
 ###
 # Don't build with pie to avoid problems with zipl
@@ -196,6 +198,7 @@
 Requires:       util-linux
 %ifarch s390x
 Requires:       gawk
+BuildRequires:  libica-devel-static
 Requires:       perl-base
 Requires:       rsync
 Requires:       s390-tools-genprotimg-data
@@ -371,10 +374,12 @@
 # commands, since make install runs sed commands against various scripts to
 # modify the "-v" output appropriately.
 
-export OPT_FLAGS="%{optflags}"
+export OPT_FLAGS="$(echo "%{optflags}" | sed 's/-flto=auto//g')"
 export KERNELIMAGE_MAKEFLAGS="%%{?_smp_mflags}"
 
 %make_build \
+     ARCH=s390x \
+     RUSTFLAGS="-C link-arg=-fuse-ld=lld" \
      ZFCPDUMP_DIR=%{_prefix}/lib/s390-tools/zfcpdump \
      DISTRELEASE=%{rbrelease} \
      UDEVRUNDIR=/run/udev \
@@ -800,6 +805,7 @@
 %files genprotimg-data
 /lib/s390-tools/stage3.bin
 %dir %{_datadir}/s390-tools/pvimg
+%dir %{_datadir}/s390-tools/netboot
 %{_datadir}/s390-tools/pvimg/stage3a.bin
 %{_datadir}/s390-tools/pvimg/stage3b_reloc.bin
 
@@ -833,15 +839,18 @@
 %files
 %{_prefix}/bin/*
 %dir %{_datadir}/s390-tools
-%dir %{_datadir}/s390-tools/pvimg
+%{_datadir}/s390-tools/pvimg/
+%{_datadir}/s390-tools/netboot/
 %{_datadir}/bash-completion/completions/genprotimg.bash
 %{_datadir}/bash-completion/completions/pvattest.bash
 %{_datadir}/bash-completion/completions/pvimg.bash
 %{_datadir}/bash-completion/completions/pvsecret.bash
+%{_datadir}/bash-completion/completions/pvverify.bash
 %{_datadir}/zsh/site-functions/_genprotimg
 %{_datadir}/zsh/site-functions/_pvattest
 %{_datadir}/zsh/site-functions/_pvimg
 %{_datadir}/zsh/site-functions/_pvsecret
+%{_datadir}/zsh/site-functions/_pvverify
 %{_mandir}/man1/*
 
 %endif

++++++ s390-tools-2.39.0.tar.gz -> s390-tools-2.40.0.tar.gz ++++++
++++ 9417 lines of diff (skipped)

++++++ s390-tools-sles12-create-filesystem-links.patch ++++++
--- /var/tmp/diff_new_pack.ppdJCU/_old  2026-01-06 17:47:48.193571754 +0100
+++ /var/tmp/diff_new_pack.ppdJCU/_new  2026-01-06 17:47:48.213572577 +0100
@@ -2,9 +2,11 @@
  etc/udev/rules.d/59-dasd.rules |   10 +++++++++-
  1 file changed, 9 insertions(+), 1 deletion(-)
 
---- a/etc/udev/rules.d/59-dasd.rules
-+++ b/etc/udev/rules.d/59-dasd.rules
-@@ -15,7 +15,7 @@
+Index: s390-tools-2.40.0/etc/udev/rules.d/59-dasd.rules
+===================================================================
+--- s390-tools-2.40.0.orig/etc/udev/rules.d/59-dasd.rules
++++ s390-tools-2.40.0/etc/udev/rules.d/59-dasd.rules
+@@ -15,7 +15,7 @@ KERNEL=="dasd*[!0-9]", ENV{ID_XUID}=="?*
  
  LABEL="dasd_block_end"
  
@@ -13,7 +15,7 @@
  
  # for partitions import parent information
  KERNEL=="dasd*[0-9]", IMPORT{parent}=="ID_*"
-@@ -24,6 +24,14 @@
+@@ -24,6 +24,14 @@ KERNEL=="dasd*[0-9]", ENV{ID_SERIAL}=="?
  KERNEL=="dasd*[0-9]", ENV{ID_UID}=="?*", 
SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_UID}-part%n"
  KERNEL=="dasd*[0-9]", ENV{ID_XUID}=="?*", 
SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_XUID}-part%n"
  

++++++ s390-tools-sles12-fdasd-skip-partition-check-and-BLKRRPART-ioctl.patch 
++++++
--- /var/tmp/diff_new_pack.ppdJCU/_old  2026-01-06 17:47:48.245573893 +0100
+++ /var/tmp/diff_new_pack.ppdJCU/_new  2026-01-06 17:47:48.249574058 +0100
@@ -15,9 +15,11 @@
  fdasd/fdasd.c |    4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)
 
---- a/fdasd/fdasd.c
-+++ b/fdasd/fdasd.c
-@@ -1231,10 +1231,12 @@
+Index: s390-tools-2.40.0/fdasd/fdasd.c
+===================================================================
+--- s390-tools-2.40.0.orig/fdasd/fdasd.c
++++ s390-tools-2.40.0/fdasd/fdasd.c
+@@ -1232,10 +1232,12 @@ static int fdasd_get_volser(fdasd_anchor
   */
  static void fdasd_reread_partition_table(fdasd_anchor_t *anc)
  {

++++++ s390-tools-sles12-zipl_boot_msg.patch ++++++
--- /var/tmp/diff_new_pack.ppdJCU/_old  2026-01-06 17:47:48.297576033 +0100
+++ /var/tmp/diff_new_pack.ppdJCU/_new  2026-01-06 17:47:48.305576362 +0100
@@ -2,9 +2,11 @@
  zipl/boot/menu.c |    7 +++++--
  1 file changed, 5 insertions(+), 2 deletions(-)
 
---- a/zipl/boot/menu.c
-+++ b/zipl/boot/menu.c
-@@ -168,8 +168,11 @@
+Index: s390-tools-2.40.0/zipl/boot/menu.c
+===================================================================
+--- s390-tools-2.40.0.orig/zipl/boot/menu.c
++++ s390-tools-2.40.0/zipl/boot/menu.c
+@@ -191,8 +191,11 @@ int menu(void)
        /* print config list */
        menu_list();
  

++++++ s390-tools-sles15-sysconfig-compatible-dumpconf.patch ++++++
--- /var/tmp/diff_new_pack.ppdJCU/_old  2026-01-06 17:47:48.333577514 +0100
+++ /var/tmp/diff_new_pack.ppdJCU/_new  2026-01-06 17:47:48.341577843 +0100
@@ -2,8 +2,10 @@
  etc/sysconfig/dumpconf |  133 
+++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 133 insertions(+)
 
---- a/etc/sysconfig/dumpconf
-+++ b/etc/sysconfig/dumpconf
+Index: s390-tools-2.40.0/etc/sysconfig/dumpconf
+===================================================================
+--- s390-tools-2.40.0.orig/etc/sysconfig/dumpconf
++++ s390-tools-2.40.0/etc/sysconfig/dumpconf
 @@ -1,3 +1,4 @@
 
+###########################################################################################
  #

++++++ s390-tools-sles15sp3-Allow-multiple-device-arguments.patch ++++++
--- /var/tmp/diff_new_pack.ppdJCU/_old  2026-01-06 17:47:48.385579653 +0100
+++ /var/tmp/diff_new_pack.ppdJCU/_new  2026-01-06 17:47:48.389579818 +0100
@@ -11,9 +11,11 @@
  dasdfmt/dasdfmt.c |  197 
+++++++++++++++++++++++++++++++-----------------------
  2 files changed, 119 insertions(+), 84 deletions(-)
 
---- a/dasdfmt/dasdfmt.8
-+++ b/dasdfmt/dasdfmt.8
-@@ -11,14 +11,14 @@
+Index: s390-tools-2.40.0/dasdfmt/dasdfmt.8
+===================================================================
+--- s390-tools-2.40.0.orig/dasdfmt/dasdfmt.8
++++ s390-tools-2.40.0/dasdfmt/dasdfmt.8
+@@ -11,14 +11,14 @@ dasdfmt \- formatting of DASD (ECKD) dis
  .br
          [\-r \fIcylinder\fR] [\-b \fIblksize\fR] [\-l \fIvolser\fR] [\-d 
\fIlayout\fR]
  .br
@@ -31,18 +33,20 @@
  .br
  
  \fBWARNING\fR: Careless usage of \fBdasdfmt\fR can result in
---- a/dasdfmt/dasdfmt.c
-+++ b/dasdfmt/dasdfmt.c
-@@ -25,6 +25,8 @@
- 
+Index: s390-tools-2.40.0/dasdfmt/dasdfmt.c
+===================================================================
+--- s390-tools-2.40.0.orig/dasdfmt/dasdfmt.c
++++ s390-tools-2.40.0/dasdfmt/dasdfmt.c
+@@ -26,6 +26,8 @@
  #include "dasdfmt.h"
+ #include "dasdfmt_cli.h"
  
 +#define MAX_DEVICES 512
 +#define MAX_LENGTH 256
  #define BUSIDSIZE  8
  #define SEC_PER_DAY (60 * 60 * 24)
  #define SEC_PER_HOUR (60 * 60)
-@@ -57,7 +59,9 @@
+@@ -58,7 +60,9 @@ static const struct util_prg prg = {
  static struct dasdfmt_globals {
        dasd_information2_t dasd_info;
        char *dev_path; /* device path entered by user */
@@ -52,7 +56,7 @@
        int   verbosity;
        int   testmode;
        int   withoutprompt;
-@@ -484,15 +488,15 @@
+@@ -379,15 +383,15 @@ static void program_interrupt_signal(int
        program_interrupt_in_progress = 1;
  
        if (disk_disabled) {
@@ -71,7 +75,7 @@
        } else {
                printf("Exiting...\n");
        }
-@@ -512,9 +516,6 @@
+@@ -407,9 +411,6 @@ static void get_device_name(int optind,
        unsigned int maj, min;
        struct stat dev_stat;
  
@@ -81,7 +85,7 @@
        if (optind >= argc)
                error("No device specified!");
  
-@@ -610,10 +611,10 @@
+@@ -505,10 +506,10 @@ static void check_disk(void)
                error("the ioctl call to retrieve read/write status information 
failed: %s",
                      strerror(err));
        if (ro)
@@ -94,7 +98,7 @@
        }
        if (strncmp(g.dasd_info.type, "ECKD", 4) != 0) {
                warnx("Unsupported disk type");
-@@ -700,7 +701,7 @@
+@@ -595,7 +596,7 @@ static void set_geo(unsigned int *cylind
        struct dasd_eckd_characteristics *characteristics;
  
        if (g.verbosity > 0)
@@ -103,7 +107,7 @@
  
        characteristics = (struct dasd_eckd_characteristics *)
                                &g.dasd_info.characteristics;
-@@ -728,13 +729,13 @@
+@@ -623,13 +624,13 @@ static void set_label(volume_label_t *vl
                               "Cylinders above this limit will not be"
                               " accessible as a linux partition!\n"
                               "Type \"yes\" to continue, no will leave"
@@ -120,7 +124,7 @@
                                return;
                        }
                }
-@@ -872,7 +873,7 @@
+@@ -767,7 +768,7 @@ static void check_disk_format(unsigned i
        check_params->start_unit = 0;
        check_params->stop_unit = (cylinders * heads) - 1;
  
@@ -129,7 +133,7 @@
  
        if (g.testmode) {
                printf("Test mode active, omitting ioctl.\n");
-@@ -896,7 +897,7 @@
+@@ -791,7 +792,7 @@ static void check_disk_format(unsigned i
        if (process_tracks(cylinders, heads, check_params))
                error("Use --mode=full to perform a clean format.");
  
@@ -138,7 +142,7 @@
  }
  
  /*
-@@ -946,8 +947,8 @@
+@@ -841,8 +842,8 @@ static void dasdfmt_print_info(volume_la
  
        printf("Device Type: %s Provisioned\n",
               g.ese ? "Thinly" : "Fully");
@@ -149,7 +153,7 @@
        printf("   Device number of device : 0x%x\n", g.dasd_info.devno);
        printf("   Labelling device        : %s\n",
               (g.writenolabel) ? "no" : "yes");
-@@ -1012,7 +1013,7 @@
+@@ -907,7 +908,7 @@ static void dasdfmt_write_labels(volume_
        int ipl1_record_len, ipl2_record_len;
  
        if (g.verbosity > 0)
@@ -158,7 +162,7 @@
  
        get_blocksize(&blksize);
  
-@@ -1030,7 +1031,7 @@
+@@ -925,7 +926,7 @@ static void dasdfmt_write_labels(volume_
  
        /* write empty bootstrap (initial IPL records) */
        if (g.verbosity > 0)
@@ -167,7 +171,7 @@
  
        /*
         * Note: ldl labels do not contain the key field
-@@ -1089,7 +1090,7 @@
+@@ -984,7 +985,7 @@ static void dasdfmt_write_labels(volume_
        label_position = g.dasd_info.label_block * blksize;
  
        if (g.verbosity > 0)
@@ -176,7 +180,7 @@
  
        rc = lseek(fd, label_position, SEEK_SET);
        if (rc != label_position) {
-@@ -1120,7 +1121,7 @@
+@@ -1015,7 +1016,7 @@ static void dasdfmt_write_labels(volume_
        }
  
        if (g.verbosity > 0)
@@ -185,7 +189,7 @@
  
        label_position = (VTOC_START_CC * heads + VTOC_START_HH) *
                geo.sectors * blksize;
-@@ -1242,7 +1243,7 @@
+@@ -1137,7 +1138,7 @@ static void dasdfmt_release_space(void)
        if (!g.ese || g.no_discard)
                return;
  
@@ -194,7 +198,7 @@
        err = dasd_release_space(g.dev_node, &r);
        if (err)
                error("Could not release space: %s", strerror(err));
-@@ -1261,20 +1262,21 @@
+@@ -1156,20 +1157,21 @@ static void dasdfmt_prepare_and_format(u
        int err;
  
        if (!(g.withoutprompt && g.verbosity < 1))
@@ -221,7 +225,7 @@
  
        /* except track 0 from standard formatting procss */
        p->start_unit = 1;
-@@ -1282,19 +1284,19 @@
+@@ -1177,19 +1179,19 @@ static void dasdfmt_prepare_and_format(u
        process_tracks(cylinders, heads, p);
  
        if (g.verbosity > 0)
@@ -244,7 +248,7 @@
  
        disk_enable();
  }
-@@ -1306,18 +1308,18 @@
+@@ -1201,18 +1203,18 @@ static void dasdfmt_expand_format(unsign
                                  format_data_t *p)
  {
        if (!(g.withoutprompt && g.verbosity < 1))
@@ -267,7 +271,7 @@
  
        if (g.verbosity > 0)
                printf("Re-accessing the device...\n");
-@@ -1426,16 +1428,16 @@
+@@ -1321,16 +1323,16 @@ static void do_format_dasd(volume_label_
                if (!g.withoutprompt) {
                        printf("\n");
                        if (mode != EXPAND)
@@ -288,7 +292,7 @@
                                return;
                        }
                }
-@@ -1453,12 +1455,12 @@
+@@ -1348,12 +1350,12 @@ static void do_format_dasd(volume_label_
                        break;
                }
  
@@ -303,7 +307,7 @@
                err = dasd_reread_partition_table(g.dev_node, 5);
                if (err != 0) {
                        ERRMSG("%s: error during rereading the partition "
-@@ -1472,7 +1474,7 @@
+@@ -1367,7 +1369,7 @@ static void do_format_dasd(volume_label_
  static void eval_format_mode(void)
  {
        if (!g.force && g.mode_specified && g.ese && mode == EXPAND) {
@@ -312,7 +316,7 @@
                warnx("Format mode 'expand' is not feasible.");
                error("Use --mode=full or --mode=quick to perform a clean 
format");
        }
-@@ -1495,20 +1497,70 @@
+@@ -1390,20 +1392,70 @@ static void set_prog_name(char *s)
                prog_name = p + 1;
  }
  
@@ -387,7 +391,7 @@
  
        /* Establish a handler for interrupt signals. */
        signal(SIGTERM, program_interrupt_signal);
-@@ -1644,6 +1696,9 @@
+@@ -1539,6 +1591,9 @@ int main(int argc, char *argv[])
                        break; /* exit loop if finished */
        }
  
@@ -397,7 +401,7 @@
        CHECK_SPEC_MAX_ONCE(g.blksize_specified, "blocksize");
        CHECK_SPEC_MAX_ONCE(g.labelspec, "label");
        CHECK_SPEC_MAX_ONCE(g.writenolabel, "omit-label-writing flag");
-@@ -1662,48 +1717,28 @@
+@@ -1557,49 +1612,29 @@ int main(int argc, char *argv[])
        if (g.print_hashmarks)
                PARSE_PARAM_INTO(g.hashstep, hashstep_str, 10, "hashstep");
  
@@ -409,11 +413,7 @@
 -
 -      g.ese = dasd_sys_ese(g.dev_node);
 -      eval_format_mode();
-+      while (optind < argc) {
-+              get_device_name(optind, argc, argv);
-+              strncpy(g.dev_path_array[numdev], g.dev_path, 
strlen(g.dev_path));
-+              strncpy(g.dev_node_array[numdev], g.dev_node, 
strlen(g.dev_node));
- 
+-
 -      /* Either let the user specify the blksize or get it from the kernel */
 -      if (!g.blksize_specified) {
 -              if (!(mode == FULL ||
@@ -421,10 +421,8 @@
 -                      get_blocksize(&format_params.blksize);
 -              else
 -                      format_params = ask_user_for_blksize(format_params);
-+              optind++;
-+              numdev++;
-       }
- 
+-      }
+-
 -      if (g.keep_volser) {
 -              if (g.labelspec)
 -                      error("The -k and -l options are mutually exclusive");
@@ -435,15 +433,31 @@
 -                      vtoc_volume_label_set_volser(&vlabel, old_volser);
 -              else
 -                      error("VOLSER not found on device %s", g.dev_path);
--      }
++      while (optind < argc) {
++              get_device_name(optind, argc, argv);
++              strncpy(g.dev_path_array[numdev], g.dev_path, 
strlen(g.dev_path));
++              strncpy(g.dev_node_array[numdev], g.dev_node, 
strlen(g.dev_node));
++
++              optind++;
++              numdev++;
++      }
++
 +      if (!numdev)
 +              error("%s: No device specified!\n",
 +                      prog_name);
- 
--      check_disk();
++
 +      if (numdev > 1 && g.labelspec)
 +              error("Specifying a volser to be written doesn't make sense 
when formatting multiple DASD volumes.");
++
++      for (i = 0; i < numdev; i++)
++      {
++              strncpy(g.dev_path, g.dev_path_array[i], 
strlen(g.dev_path_array[i])+1);
++              strncpy(g.dev_node, g.dev_node_array[i], 
strlen(g.dev_node_array[i])+1);
++              process_dasd(&vlabel, format_params);
+       }
  
+-      check_disk();
+-
 -      if (check_param(str, ERR_LENGTH, &format_params) < 0)
 -              error("%s", str);
 -
@@ -454,13 +468,8 @@
 -              check_disk_format(cylinders, heads, &format_params);
 -      else
 -              do_format_dasd(&vlabel, &format_params, cylinders, heads);
-+      for (i = 0; i < numdev; i++)
-+      {
-+              strncpy(g.dev_path, g.dev_path_array[i], 
strlen(g.dev_path_array[i])+1);
-+              strncpy(g.dev_node, g.dev_node_array[i], 
strlen(g.dev_node_array[i])+1);
-+              process_dasd(&vlabel, format_params);
-+      }
- 
+-
        free(g.dev_path);
        free(g.dev_node);
+ 
 

++++++ s390-tools-sles15sp3-Format-devices-in-parallel-1.patch ++++++
--- a/dasdfmt/dasdfmt_cli.h     2025-12-11 17:03:28.000000000 +0100
+++ b/dasdfmt/dasdfmt_cli.h     2026-01-05 13:25:46.220565369 +0100
@@ -91,7 +91,7 @@
                .desc = "Show a progressbar",
        },
        {
-               .option = { "percentage", no_argument, NULL, 'P' },
+               .option = { "percentage", no_argument, NULL, 'Q' },
                .desc = "Show progress in percent",
        },
        UTIL_OPT_SECTION("MISC"),

++++++ s390-tools-sles15sp3-Format-devices-in-parallel.patch ++++++
--- /var/tmp/diff_new_pack.ppdJCU/_old  2026-01-06 17:47:48.441581957 +0100
+++ /var/tmp/diff_new_pack.ppdJCU/_new  2026-01-06 17:47:48.445582122 +0100
@@ -11,8 +11,10 @@
  dasdfmt/dasdfmt.c |   58 
++++++++++++++++++++++++++++++++++++++++++------------
  2 files changed, 60 insertions(+), 14 deletions(-)
 
---- a/dasdfmt/dasdfmt.8
-+++ b/dasdfmt/dasdfmt.8
+Index: s390-tools-2.40.0/dasdfmt/dasdfmt.8
+===================================================================
+--- s390-tools-2.40.0.orig/dasdfmt/dasdfmt.8
++++ s390-tools-2.40.0/dasdfmt/dasdfmt.8
 @@ -7,7 +7,7 @@
  dasdfmt \- formatting of DASD (ECKD) disk drives.
  
@@ -22,7 +24,7 @@
  .br
          [\-r \fIcylinder\fR] [\-b \fIblksize\fR] [\-l \fIvolser\fR] [\-d 
\fIlayout\fR]
  .br
-@@ -95,7 +95,7 @@
+@@ -95,7 +95,7 @@ Do not use this option if you are using
  running in background or redirecting the output to a file.
  
  .TP
@@ -31,7 +33,7 @@
  Print one line for each formatted cylinder showing the number of the
  cylinder and percentage of formatting process.
  Intended to be used by higher level interfaces.
-@@ -164,6 +164,18 @@
+@@ -164,6 +164,18 @@ and always be a power of two. The recomm
  
  .TP
  \fB\-l\fR \fIvolser\fR or \fB\-\-label\fR=\fIvolser\fR
@@ -50,8 +52,10 @@
  Specify the volume serial number or volume identifier to be written
  to disk after formatting. If no label is specified, a sensible default
  is used. \fIvolser\fR is interpreted as ASCII string and is automatically
---- a/dasdfmt/dasdfmt.c
-+++ b/dasdfmt/dasdfmt.c
+Index: s390-tools-2.40.0/dasdfmt/dasdfmt.c
+===================================================================
+--- s390-tools-2.40.0.orig/dasdfmt/dasdfmt.c
++++ s390-tools-2.40.0/dasdfmt/dasdfmt.c
 @@ -13,6 +13,7 @@
  #include <sys/sysmacros.h>
  #include <sys/time.h>
@@ -60,7 +64,7 @@
  
  #include "lib/dasd_base.h"
  #include "lib/dasd_sys.h"
-@@ -81,6 +82,7 @@
+@@ -82,6 +83,7 @@ static struct dasdfmt_globals {
        int   mode_specified;
        int   ese;
        int   no_discard;
@@ -68,28 +72,19 @@
  } g = {
        .dasd_info = { 0 },
  };
-@@ -105,6 +107,11 @@
-               .desc = "Perform complete format check on device",
-               .flags = UTIL_OPT_FLAG_NOSHORT,
-       },
+@@ -106,6 +108,11 @@ static void error(const char *format, ..
+ /*
+  * Helper function to calculate the days, hours, minutes, and seconds
+  * for a given timestamp in seconds
 +      {
 +              .option = { "max_parallel", required_argument, NULL, 'P' },
 +              .desc = "Format devices in parallel",
 +              .flags = UTIL_OPT_FLAG_NOLONG,
 +      },
-       UTIL_OPT_SECTION("FORMAT OPTIONS"),
-       {
-               .option = { "blocksize", required_argument, NULL, 'b' },
-@@ -162,7 +169,7 @@
-               .desc = "Show a progressbar",
-       },
-       {
--              .option = { "percentage", no_argument, NULL, 'P' },
-+              .option = { "percentage", no_argument, NULL, 'Q' },
-               .desc = "Show progress in percent",
-       },
-       UTIL_OPT_SECTION("MISC"),
-@@ -311,7 +318,7 @@
+  */
+ static void calc_time(time_t time, int *d, int *h, int *m, int *s)
+ {
+@@ -206,7 +213,7 @@ static void draw_progress(int cyl, unsig
        }
  
        if (g.print_hashmarks && (cyl / g.hashstep - hashcount) != 0) {
@@ -98,7 +93,7 @@
                fflush(stdout);
                hashcount++;
        }
-@@ -1560,7 +1567,11 @@
+@@ -1455,7 +1462,11 @@ int main(int argc, char *argv[])
        char *reqsize_param_str = NULL;
        char *hashstep_str      = NULL;
  
@@ -111,7 +106,7 @@
  
        /* Establish a handler for interrupt signals. */
        signal(SIGTERM, program_interrupt_signal);
-@@ -1623,7 +1634,7 @@
+@@ -1518,7 +1529,7 @@ int main(int argc, char *argv[])
                                g.print_hashmarks = 1;
                        }
                        break;
@@ -120,7 +115,7 @@
                        if (!(g.print_hashmarks || g.print_progressbar))
                                g.print_percentage = 1;
                        break;
-@@ -1682,6 +1693,9 @@
+@@ -1577,6 +1588,9 @@ int main(int argc, char *argv[])
                case OPT_NODISCARD:
                        g.no_discard = 1;
                        break;
@@ -130,7 +125,7 @@
                case OPT_CHECK:
                        g.check = 1;
                        break;
-@@ -1733,15 +1747,35 @@
+@@ -1628,15 +1642,35 @@ int main(int argc, char *argv[])
        if (numdev > 1 && g.labelspec)
                error("Specifying a volser to be written doesn't make sense 
when formatting multiple DASD volumes.");
  

++++++ s390-tools-sles15sp3-Implement-Y-yast_mode.patch ++++++
--- /var/tmp/diff_new_pack.ppdJCU/_old  2026-01-06 17:47:48.473583273 +0100
+++ /var/tmp/diff_new_pack.ppdJCU/_new  2026-01-06 17:47:48.477583438 +0100
@@ -11,8 +11,10 @@
  dasdfmt/dasdfmt.c |   73 
++++++++++++++++++++++++++++++++++++++++++++++++------
  2 files changed, 72 insertions(+), 8 deletions(-)
 
---- a/dasdfmt/dasdfmt.8
-+++ b/dasdfmt/dasdfmt.8
+Index: s390-tools-2.40.0/dasdfmt/dasdfmt.8
+===================================================================
+--- s390-tools-2.40.0.orig/dasdfmt/dasdfmt.8
++++ s390-tools-2.40.0/dasdfmt/dasdfmt.8
 @@ -7,7 +7,7 @@
  dasdfmt \- formatting of DASD (ECKD) disk drives.
  
@@ -22,7 +24,7 @@
  .br
          [\-r \fIcylinder\fR] [\-b \fIblksize\fR] [\-l \fIvolser\fR] [\-d 
\fIlayout\fR]
  .br
-@@ -112,6 +112,11 @@
+@@ -112,6 +112,11 @@ The value will be at least as big as the
  .br
  
  .TP
@@ -34,9 +36,11 @@
  \fB\-M\fR \fImode\fR or \fB\-\-mode\fR=\fImode\fR
  Specify the \fImode\fR to be used to format the device. Valid modes are:
  .RS
---- a/dasdfmt/dasdfmt.c
-+++ b/dasdfmt/dasdfmt.c
-@@ -83,6 +83,7 @@
+Index: s390-tools-2.40.0/dasdfmt/dasdfmt.c
+===================================================================
+--- s390-tools-2.40.0.orig/dasdfmt/dasdfmt.c
++++ s390-tools-2.40.0/dasdfmt/dasdfmt.c
+@@ -84,6 +84,7 @@ static struct dasdfmt_globals {
        int   ese;
        int   no_discard;
        int   procnum;
@@ -44,18 +48,7 @@
  } g = {
        .dasd_info = { 0 },
  };
-@@ -172,6 +173,10 @@
-               .option = { "percentage", no_argument, NULL, 'Q' },
-               .desc = "Show progress in percent",
-       },
-+      {
-+              .option = { "yast_mode", no_argument, NULL, 'Y' },
-+              .desc = "YaST mode",
-+      },
-       UTIL_OPT_SECTION("MISC"),
-       {
-               .option = { "check_host_count", no_argument, NULL, 'C' },
-@@ -318,7 +323,9 @@
+@@ -213,7 +214,9 @@ static void draw_progress(int cyl, unsig
        }
  
        if (g.print_hashmarks && (cyl / g.hashstep - hashcount) != 0) {
@@ -66,7 +59,7 @@
                fflush(stdout);
                hashcount++;
        }
-@@ -392,7 +399,7 @@
+@@ -287,7 +290,7 @@ static void evaluate_format_error(format
        unsigned int kl = 0;
        int blksize = cdata->expect.blksize;
  
@@ -75,7 +68,7 @@
                printf("\n");
  
        /*
-@@ -780,8 +787,9 @@
+@@ -675,8 +678,9 @@ static void check_hashmarks(void)
                        g.hashstep = 10;
                }
  
@@ -87,7 +80,7 @@
        }
  }
  
-@@ -1462,17 +1470,19 @@
+@@ -1357,17 +1361,19 @@ static void do_format_dasd(volume_label_
                        break;
                }
  
@@ -110,7 +103,7 @@
                        printf("ok\n");
                }
        }
-@@ -1548,6 +1558,7 @@
+@@ -1443,6 +1449,7 @@ void process_dasd(volume_label_t *orig_v
                error("%s", str);
  
        set_geo(&cylinders, &heads);
@@ -118,7 +111,7 @@
        set_label(&vlabel, &format_params, cylinders);
  
        if (g.check)
-@@ -1557,6 +1568,29 @@
+@@ -1452,6 +1459,29 @@ void process_dasd(volume_label_t *orig_v
  
  }
  
@@ -148,7 +141,7 @@
  int main(int argc, char *argv[])
  {
        volume_label_t vlabel;
-@@ -1693,6 +1727,10 @@
+@@ -1588,6 +1618,10 @@ int main(int argc, char *argv[])
                case OPT_NODISCARD:
                        g.no_discard = 1;
                        break;
@@ -159,7 +152,7 @@
                case 'P':
                        max_parallel = atoi(optarg);
                        break;
-@@ -1728,6 +1766,21 @@
+@@ -1623,6 +1657,21 @@ int main(int argc, char *argv[])
                reqsize = DEFAULT_REQUESTSIZE;
        }
  
@@ -181,7 +174,7 @@
        if (g.print_hashmarks)
                PARSE_PARAM_INTO(g.hashstep, hashstep_str, 10, "hashstep");
  
-@@ -1747,6 +1800,12 @@
+@@ -1642,6 +1691,12 @@ int main(int argc, char *argv[])
        if (numdev > 1 && g.labelspec)
                error("Specifying a volser to be written doesn't make sense 
when formatting multiple DASD volumes.");
  

++++++ s390-tools-sles15sp3-Implement-f-for-backwards-compability.patch ++++++
--- /var/tmp/diff_new_pack.ppdJCU/_old  2026-01-06 17:47:48.501584425 +0100
+++ /var/tmp/diff_new_pack.ppdJCU/_new  2026-01-06 17:47:48.509584754 +0100
@@ -13,9 +13,11 @@
  dasdfmt/dasdfmt.c |   10 ++++++++++
  2 files changed, 14 insertions(+), 1 deletion(-)
 
---- a/dasdfmt/dasdfmt.8
-+++ b/dasdfmt/dasdfmt.8
-@@ -11,7 +11,7 @@
+Index: s390-tools-2.40.0/dasdfmt/dasdfmt.8
+===================================================================
+--- s390-tools-2.40.0.orig/dasdfmt/dasdfmt.8
++++ s390-tools-2.40.0/dasdfmt/dasdfmt.8
+@@ -11,7 +11,7 @@ dasdfmt \- formatting of DASD (ECKD) dis
  .br
          [\-r \fIcylinder\fR] [\-b \fIblksize\fR] [\-l \fIvolser\fR] [\-d 
\fIlayout\fR]
  .br
@@ -24,7 +26,7 @@
  
  .SH DESCRIPTION
  \fBdasdfmt\fR formats one or several  DASD (ECKD) disk drive(s) to prepare 
them
-@@ -39,6 +39,9 @@
+@@ -39,6 +39,9 @@ out, what it \fBwould\fR do.
  .TP
  \fB\-v\fR
  Increases verbosity.
@@ -34,20 +36,22 @@
  
  .TP
  \fB\-y\fR
---- a/dasdfmt/dasdfmt.c
-+++ b/dasdfmt/dasdfmt.c
-@@ -113,6 +113,10 @@
+Index: s390-tools-2.40.0/dasdfmt/dasdfmt.c
+===================================================================
+--- s390-tools-2.40.0.orig/dasdfmt/dasdfmt.c
++++ s390-tools-2.40.0/dasdfmt/dasdfmt.c
+@@ -113,6 +113,10 @@ static void error(const char *format, ..
+               .option = { "max_parallel", required_argument, NULL, 'P' },
                .desc = "Format devices in parallel",
                .flags = UTIL_OPT_FLAG_NOLONG,
-       },
 +      {
 +              .option = { "device", required_argument, NULL, 'f' },
 +              .desc = "Specify device to format",
 +      },
-       UTIL_OPT_SECTION("FORMAT OPTIONS"),
-       {
-               .option = { "blocksize", required_argument, NULL, 'b' },
-@@ -1649,6 +1653,12 @@
+       },
+  */
+ static void calc_time(time_t time, int *d, int *h, int *m, int *s)
+@@ -1540,6 +1544,12 @@ int main(int argc, char *argv[])
                        }
                        g.layout_specified = 1;
                        break;

++++++ s390-tools-sles15sp3-dasdfmt-retry-BIODASDINFO-if-device-is-busy.patch 
++++++
--- /var/tmp/diff_new_pack.ppdJCU/_old  2026-01-06 17:47:48.525585413 +0100
+++ /var/tmp/diff_new_pack.ppdJCU/_new  2026-01-06 17:47:48.529585577 +0100
@@ -19,9 +19,11 @@
  dasdfmt/dasdfmt.c |   19 ++++++++++++++++++-
  1 file changed, 18 insertions(+), 1 deletion(-)
 
---- a/dasdfmt/dasdfmt.c
-+++ b/dasdfmt/dasdfmt.c
-@@ -621,7 +621,7 @@
+Index: s390-tools-2.40.0/dasdfmt/dasdfmt.c
+===================================================================
+--- s390-tools-2.40.0.orig/dasdfmt/dasdfmt.c
++++ s390-tools-2.40.0/dasdfmt/dasdfmt.c
+@@ -512,7 +512,7 @@ static void check_layout(unsigned int in
   */
  static void check_disk(void)
  {
@@ -30,7 +32,7 @@
        bool ro;
  
        err = dasd_is_ro(g.dev_node, &ro);
-@@ -631,6 +631,23 @@
+@@ -522,6 +522,23 @@ static void check_disk(void)
        if (ro)
                error("Disk %s is read only!", g.dev_path);
        if (!g.force) {

++++++ vendor.tar.zst ++++++
/work/SRC/openSUSE:Factory/s390-tools/vendor.tar.zst 
/work/SRC/openSUSE:Factory/.s390-tools.new.1928/vendor.tar.zst differ: char 7, 
line 1

Reply via email to