Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package qclib for openSUSE:Factory checked 
in at 2026-07-12 16:20:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/qclib (Old)
 and      /work/SRC/openSUSE:Factory/.qclib.new.1991 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "qclib"

Sun Jul 12 16:20:29 2026 rev:21 rq:1364828 version:2.5.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/qclib/qclib.changes      2026-06-30 
15:11:53.636914773 +0200
+++ /work/SRC/openSUSE:Factory/.qclib.new.1991/qclib.changes    2026-07-12 
16:20:52.503423613 +0200
@@ -1,0 +2,9 @@
+Fri Jul 10 05:35:32 UTC 2026 - Nikolay Gueorguiev <[email protected]>
+
+- Upgrade qclib to version v2.5.2
+  * Changes:
+    - Recognize IBM z17 single frame and LinuxONE Rockhopper models
+  * Bug fixes:
+    - Fix duplicate LPAR group entries
+
+-------------------------------------------------------------------

Old:
----
  qclib-2.5.1.tar.gz

New:
----
  qclib-2.5.2.tar.gz

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

Other differences:
------------------
++++++ qclib.spec ++++++
--- /var/tmp/diff_new_pack.a04hXu/_old  2026-07-12 16:20:54.487491476 +0200
+++ /var/tmp/diff_new_pack.a04hXu/_new  2026-07-12 16:20:54.511492297 +0200
@@ -19,7 +19,7 @@
 %global _lto_cflags %{?_lto_cflags} -ffat-lto-objects
 
 Name:           qclib
-Version:        2.5.1
+Version:        2.5.2
 Release:        0
 Summary:        Query Capacity library
 License:        BSD-3-Clause

++++++ qclib-2.5.1.tar.gz -> qclib-2.5.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qclib-2.5.1/Makefile new/qclib-2.5.2/Makefile
--- old/qclib-2.5.1/Makefile    2025-05-11 09:25:37.000000000 +0200
+++ new/qclib-2.5.2/Makefile    2026-07-06 09:31:02.000000000 +0200
@@ -4,7 +4,7 @@
 #     major : Backwards compatible changes to the API
 #     minor : Additions leaving the API unmodified
 #     bugfix: Bugfixes only
-VERSION    = 2.5.1
+VERSION    = 2.5.2
 VERM       = $(shell echo $(VERSION) | cut -d '.' -f 1)
 CFLAGS    ?= -g -Wall -O2
 LDFLAGS   ?=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qclib-2.5.1/README.md new/qclib-2.5.2/README.md
--- old/qclib-2.5.1/README.md   2025-05-11 09:25:37.000000000 +0200
+++ new/qclib-2.5.2/README.md   2026-07-06 09:31:02.000000000 +0200
@@ -87,6 +87,14 @@
 Release History
 ---------------
 
+* __v2.5.2 (2026-07-06)__
+
+    _Changes_:
+    - Recognize IBM z17 single frame and LinuxONE Rockhopper models
+
+    _Bug fixes_:
+    - Fix duplicate LPAR group entries
+
 * __v2.5.1 (2025-05-10)__
 
     _Changes_:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qclib-2.5.1/query_capacity.c 
new/qclib-2.5.2/query_capacity.c
--- old/qclib-2.5.1/query_capacity.c    2025-05-11 09:25:37.000000000 +0200
+++ new/qclib-2.5.2/query_capacity.c    2026-07-06 09:31:02.000000000 +0200
@@ -239,17 +239,22 @@
 
 void qc_mark_dump_incomplete(struct qc_handle *hdl, char *missing_component) {
        int rc;
-       char *cmd;
+       FILE *fp = NULL;
+       char *fname = NULL;
 
-       if (asprintf(&cmd, "/bin/echo %s >> %s/%s", missing_component, 
qc_dbg_dump_dir,
-                                                               
QC_DUMP_INCOMPLETE) == -1) {
-               qc_debug(hdl, "Error: Failed to alloc mem to indicate dump as 
incomplete\n");
+       rc = asprintf(&fname, "%s/%s", qc_dbg_dump_dir, QC_DUMP_INCOMPLETE);
+       if (rc) {
+               qc_debug(hdl, "Error: Failed to alloc memory in 
qc_mark_dump_incomplete()\n");
                return;
        }
-       if ((rc = system(cmd)) != 0)
-               qc_debug(hdl, "Error: Failed to exec command to indicate dump 
as incomplete, "
-                                                                               
"rc=%d\n", rc);
-       free(cmd);
+       fp = fopen(fname, "w");
+       if (fp) {
+               fprintf(fp, "Failed to alloc memory in 
qc_mark_dump_incomplete()\n");
+               fclose(fp);
+       } else
+               qc_debug(hdl, "Error: Failed to open %s/%s in 
qc_mark_dump_incomplete()\n",
+                        qc_dbg_dump_dir, QC_DUMP_INCOMPLETE);
+       free(fname);
 }
 
 /* Convert EBCDIC input to ASCII in place, removing trailing whitespace */
@@ -532,9 +537,10 @@
 
 struct qc_mtype {
        int     type;
+       char   *ztype;          // currently unused
        char   *zname;          // IBM Z
-       char   *lname;          // LinuxONE
        char   *ltype;
+       char   *lname;          // LinuxONE
        char   *zrack_type;     // IBM Z rack mount model type
        char   *zrack_name;
        char   *lrack_type;     // LinuxONE rack mount model type
@@ -542,36 +548,38 @@
 };
 
 static struct qc_mtype mtypes[] = {
-       //     IBM Z                            LinuxONE
-       {4381, "IBM 4381",                      NULL,                           
NULL, NULL, NULL, NULL, NULL},
-       {3090, "IBM 3090",                      NULL,                           
NULL, NULL, NULL, NULL, NULL},
-       {9221, "IBM S/390 9221",                NULL,                           
NULL, NULL, NULL, NULL, NULL},
-       {9021, "IBM ES/9000 9021",              NULL,                           
NULL, NULL, NULL, NULL, NULL},
-       {2003, "IBM S/390 Multiprise 2000",     NULL,                           
NULL, NULL, NULL, NULL, NULL},
-       {3000, "IBM S/390 StarterPak 3000",     NULL,                           
NULL, NULL, NULL, NULL, NULL},
-       {9672, "IBM S/390 9672",                NULL,                           
NULL, NULL, NULL, NULL, NULL},
-       {2066, "IBM zSeries 800",               NULL,                           
NULL, NULL, NULL, NULL, NULL},
-       {2064, "IBM zSeries 900",               NULL,                           
NULL, NULL, NULL, NULL, NULL},
-       {2086, "IBM zSeries 890",               NULL,                           
NULL, NULL, NULL, NULL, NULL},
-       {2084, "IBM zSeries 990",               NULL,                           
NULL, NULL, NULL, NULL, NULL},
-       {2096, "IBM System z9 BC",              NULL,                           
NULL, NULL, NULL, NULL, NULL},
-       {2094, "IBM System z9 EC",              NULL,                           
NULL, NULL, NULL, NULL, NULL},
-       {2098, "IBM System z10 BC",             NULL,                           
NULL, NULL, NULL, NULL, NULL},
-       {2097, "IBM System z10 EC",             NULL,                           
NULL, NULL, NULL, NULL, NULL},
-       {2818, "IBM zEnterprise 114",           NULL,                           
NULL, NULL, NULL, NULL, NULL},
-       {2817, "IBM zEnterprise 196",           NULL,                           
NULL, NULL, NULL, NULL, NULL},
-       {2827, "IBM zEnterprise EC12",          NULL,                           
NULL, NULL, NULL, NULL, NULL},
-       {2828, "IBM zEnterprise BC12",          NULL,                           
NULL, NULL, NULL, NULL, NULL},
-       {2964, "IBM z13",                       "IBM LinuxONE Emperor",         
NULL, NULL, NULL, NULL, NULL},
-       {2965, "IBM z13s",                      "IBM LinuxONE Rockhopper",      
NULL, NULL, NULL, NULL, NULL},
-       {3906, "IBM z14",                       "IBM LinuxONE Emperor II",      
NULL, NULL, NULL, NULL, NULL},
-       {3907, "IBM z14 ZR1",                   "IBM LinuxONE Rockhopper II",   
NULL, NULL, NULL, NULL, NULL},
-       {8561, "IBM z15",                       "IBM LinuxONE III",             
NULL, NULL, NULL, NULL, NULL},
-       {8562, "IBM z15 Model T02",             "IBM LinuxONE III Model LT2",   
NULL, NULL, NULL, NULL, NULL},
-       {3931, "IBM z16",                       "IBM LinuxONE Emperor 4",       
NULL, NULL, NULL, NULL, NULL},
-       {3932, "IBM z16 A02",                   "IBM LinuxONE Rockhopper 4",    
NULL, "AGZ", "IBM z16 AGZ", "AGL", "IBM LinuxONE Rockhopper 4"},
-       {9175, "IBM z17",                       "IBM LinuxONE Emperor 5",       
"ML1", NULL, NULL, NULL, NULL},
-       {0,    NULL,                            NULL,                           
NULL, NULL, NULL, NULL, NULL}
+       //     IBM Z                                    LinuxONE                
                Z rack mount                    LinuxONE rack mount
+       {4381, NULL,  "IBM 4381",                       NULL,  NULL,            
                NULL,  NULL,                    NULL,  NULL},
+       {3090, NULL,  "IBM 3090",                       NULL,  NULL,            
                NULL,  NULL,                    NULL,  NULL},
+       {9221, NULL,  "IBM S/390 9221",                 NULL,  NULL,            
                NULL,  NULL,                    NULL,  NULL},
+       {9021, NULL,  "IBM ES/9000 9021",               NULL,  NULL,            
                NULL,  NULL,                    NULL,  NULL},
+       {2003, NULL,  "IBM S/390 Multiprise 2000",      NULL,  NULL,            
                NULL,  NULL,                    NULL,  NULL},
+       {3000, NULL,  "IBM S/390 StarterPak 3000",      NULL,  NULL,            
                NULL,  NULL,                    NULL,  NULL},
+       {9672, NULL,  "IBM S/390 9672",                 NULL,  NULL,            
                NULL,  NULL,                    NULL,  NULL},
+       {2066, NULL,  "IBM zSeries 800",                NULL,  NULL,            
                NULL,  NULL,                    NULL,  NULL},
+       {2064, NULL,  "IBM zSeries 900",                NULL,  NULL,            
                NULL,  NULL,                    NULL,  NULL},
+       {2086, NULL,  "IBM zSeries 890",                NULL,  NULL,            
                NULL,  NULL,                    NULL,  NULL},
+       {2084, NULL,  "IBM zSeries 990",                NULL,  NULL,            
                NULL,  NULL,                    NULL,  NULL},
+       {2096, NULL,  "IBM System z9 BC",               NULL,  NULL,            
                NULL,  NULL,                    NULL,  NULL},
+       {2094, NULL,  "IBM System z9 EC",               NULL,  NULL,            
                NULL,  NULL,                    NULL,  NULL},
+       {2098, NULL,  "IBM System z10 BC",              NULL,  NULL,            
                NULL,  NULL,                    NULL,  NULL},
+       {2097, NULL,  "IBM System z10 EC",              NULL,  NULL,            
                NULL,  NULL,                    NULL,  NULL},
+       {2818, NULL,  "IBM zEnterprise 114",            NULL,  NULL,            
                NULL,  NULL,                    NULL,  NULL},
+       {2817, NULL,  "IBM zEnterprise 196",            NULL,  NULL,            
                NULL,  NULL,                    NULL,  NULL},
+       {2827, NULL,  "IBM zEnterprise EC12",           NULL,  NULL,            
                NULL,  NULL,                    NULL,  NULL},
+       {2828, NULL,  "IBM zEnterprise BC12",           NULL,  NULL,            
                NULL,  NULL,                    NULL,  NULL},
+       // z13 and z14 generations have multiple model types per brand - hence 
we cannot use
+       {2964, NULL,  "IBM z13",                        NULL,  "IBM LinuxONE 
Emperor",          NULL,  NULL,                    NULL,  NULL},
+       {2965, NULL,  "IBM z13s",                       NULL,  "IBM LinuxONE 
Rockhopper",       NULL,  NULL,                    NULL,  NULL},
+       {3906, NULL,  "IBM z14",                        NULL,  "IBM LinuxONE 
Emperor II",       NULL,  NULL,                    NULL,  NULL},
+       {3907, NULL,  "IBM z14 ZR1",                    NULL,  "IBM LinuxONE 
Rockhopper II",    NULL,  NULL,                    NULL,  NULL},
+       {8561, "T01", "IBM z15",                        "LT1", "IBM LinuxONE 
III",              NULL,  NULL,                    NULL,  NULL},
+       {8562, "T02", "IBM z15 Model T02",              "LT2", "IBM LinuxONE 
III Model LT2",    NULL,  NULL,                    NULL,  NULL},
+       {3931, "A01", "IBM z16",                        "LA1", "IBM LinuxONE 
Emperor 4",        NULL,  NULL,                    NULL,  NULL},
+       {3932, "A02", "IBM z16 A02",                    "LA2", "IBM LinuxONE 
Rockhopper 4",     "AGZ", "IBM z16 AGZ",           "AGL", "IBM LinuxONE 
Rockhopper 4"},
+       {9175, "ME1", "IBM z17",                        "ML1", "IBM LinuxONE 
Emperor 5",        NULL,  NULL,                    NULL,  NULL},
+       {9176, "ME2", "IBM z17 ME2",                    "ML2", "IBM LinuxONE 
Rockhopper 5",     "MER", "IBM z17 MER",           "MLR", "IBM LinuxONE 
Rockhopper 5"},
+       {0,    NULL,  NULL,                             NULL,  NULL,            
                NULL,  NULL,                    NULL,  NULL}
 };
 
 static int qc_post_process_ziip_thrds(struct qc_handle *hdl) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qclib-2.5.1/query_capacity.h 
new/qclib-2.5.2/query_capacity.h
--- old/qclib-2.5.1/query_capacity.h    2025-05-11 09:25:37.000000000 +0200
+++ new/qclib-2.5.2/query_capacity.h    2026-07-06 09:31:02.000000000 +0200
@@ -5,7 +5,7 @@
 #ifndef QUERY_CAPACITY
 #define QUERY_CAPACITY
 
-#define QC_VERSION     "2.5.1"
+#define QC_VERSION     "2.5.2"
 
 
 /* Build Customization */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qclib-2.5.1/query_capacity_data.c 
new/qclib-2.5.2/query_capacity_data.c
--- old/qclib-2.5.1/query_capacity_data.c       2025-05-11 09:25:37.000000000 
+0200
+++ new/qclib-2.5.2/query_capacity_data.c       2026-07-06 09:31:02.000000000 
+0200
@@ -742,6 +742,12 @@
        return hdl;
 }
 
+static struct qc_handle *qc_hdl_get_lpar_group(struct qc_handle *hdl) {
+       for (hdl = hdl->root; hdl != NULL && *(int *)(hdl->layer) != 
QC_LAYER_TYPE_LPAR_GROUP; hdl = hdl->next);
+
+       return hdl;
+}
+
 // 'hdl' is for error reporting, as 'tgthdl' might not be part of the pointer 
lists yet
 int qc_hdl_new(struct qc_handle *hdl, struct qc_handle **tgthdl, int layer_no,
                  int layer_type_num) {
@@ -900,6 +906,20 @@
        return 0;
 }
 
+/* LPAR groups are reflected in both, STHYI and binary hypfs, so we have to 
skip
+ * creation in case either one has already added it */
+int qc_hdl_insert_lpar_group(struct qc_handle *hdl, struct qc_handle 
**inserted_hdl) {
+       int rc = 0;
+
+       *inserted_hdl = qc_hdl_get_lpar_group(hdl);
+       if (*inserted_hdl == NULL) {
+               qc_debug(hdl, "Insert LPAR group layer\n");
+               rc = qc_hdl_insert(hdl, inserted_hdl, QC_LAYER_TYPE_LPAR_GROUP);
+       }
+
+       return rc;
+}
+
 void qc_hdl_prune(struct qc_handle *hdl) {
         struct qc_handle *ptr = hdl, *skip = NULL;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qclib-2.5.1/query_capacity_hypfs.c 
new/qclib-2.5.2/query_capacity_hypfs.c
--- old/qclib-2.5.1/query_capacity_hypfs.c      2025-05-11 09:25:37.000000000 
+0200
+++ new/qclib-2.5.2/query_capacity_hypfs.c      2026-07-06 09:31:02.000000000 
+0200
@@ -121,7 +121,8 @@
 }
 
 static void qc_dump_hypfs_bin(struct qc_handle *hdl, const char *diag, __u8 
*data, ssize_t len) {
-       char *fname = NULL, *cmd;
+       FILE *fp = NULL;
+       char *fname = NULL;
        int fd, rc, success = 0;
 
        /* We re-create the same directory/file structure that we read from */
@@ -160,20 +161,21 @@
        if (strcmp(diag, QC_HYPFS_ZVM) == 0) {
                // if we're on z/VM, we need to make sure that the LPAR file 
exists, as logic
                // uses it as a flag to indicate presence of the binary hypfs 
API
-               if (asprintf(&cmd, "/bin/touch %s/%s > /dev/null 2>&1", 
qc_dbg_dump_dir,
-                                                               QC_HYPFS_LPAR) 
== -1) {
+               free(fname);
+               if (asprintf(&fname, "%s/%s", qc_dbg_dump_dir, QC_HYPFS_LPAR) 
== -1) {
                        qc_debug(hdl, "Error: Mem alloc failure, could not 
touch '%s'. "
-                               "Dump will not work without, fix by adding it 
manually later on.\n",
-                               QC_HYPFS_LPAR);
+                                "Dump will not work without, fix by adding it 
manually later on.\n",
+                                QC_HYPFS_LPAR);
                        qc_mark_dump_incomplete(hdl, QC_HYPFS_LPAR);
                        goto out;
                }
-               if ((rc = system(cmd)) != 0) {
-                       qc_debug(hdl, "Error: Command '%s' failed, rc=%d. Dump 
will not work "
-                               "without, fix by adding it manually later 
on.\n", cmd, rc);
+               fp = fopen(fname, "a");
+               if (!fp) {
+                       qc_debug(hdl, "Error: Failed to touch file %s. Dump 
will not work "
+                               "without, fix by adding it manually later 
on.\n", fname);
                        qc_mark_dump_incomplete(hdl, QC_HYPFS_LPAR);
-               }
-               free(cmd);
+               } else
+                       fclose(fp);
        }
 
 out:
@@ -309,11 +311,11 @@
        }
        if (qc_is_nonempty_ebcdic((__u64*)tgt_lpar->grp_name)) {
                /* LPAR group is only defined in case group name is not binary 
zero */
-               qc_debug(hdl, "Insert LPAR group layer\n");
-               if (qc_hdl_insert(hdl, &group, QC_LAYER_TYPE_LPAR_GROUP)) {
+               if (qc_hdl_insert_lpar_group(hdl, &group)) {
                        qc_debug(hdl, "Error: Failed to insert LPAR group 
layer\n");
                        goto out_err;
                }
+               qc_debug(group, "Add LPAR group information\n");
                rc = qc_set_attr_ebcdic_string(group, qc_layer_name, (unsigned 
char *)tgt_lpar->grp_name, sizeof(tgt_lpar->grp_name), ATTR_SRC_STHYI);
                if (cp_cap)
                        rc |= qc_set_attr_int(group, qc_cp_absolute_capping, 
cp_cap * 0x10000 / 100, ATTR_SRC_STHYI);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qclib-2.5.1/query_capacity_int.h 
new/qclib-2.5.2/query_capacity_int.h
--- old/qclib-2.5.1/query_capacity_int.h        2025-05-11 09:25:37.000000000 
+0200
+++ new/qclib-2.5.2/query_capacity_int.h        2026-07-06 09:31:02.000000000 
+0200
@@ -68,6 +68,8 @@
 int qc_hdl_new(struct qc_handle *hdl, struct qc_handle **tgthdl, int layer_no, 
int layer_type);
 // Insert new layer 'inserted_hdl' of type 'type' before 'hdl'. Won't support 
inserting a new root
 int qc_hdl_insert(struct qc_handle *hdl, struct qc_handle **inserted_hdl, int 
type);
+// Insert a new layer for an LPAR group if it doesn't exist yet
+int qc_hdl_insert_lpar_group(struct qc_handle *hdl, struct qc_handle 
**inserted_hdl);
 // Insert new layer 'appended_hdl' of type 'type' after 'hdl'
 int qc_hdl_append(struct qc_handle *hdl, struct qc_handle **appended_hdl, int 
type);
 // Remove the layer pointed to by the handle and all layers on top
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qclib-2.5.1/query_capacity_sthyi.c 
new/qclib-2.5.2/query_capacity_sthyi.c
--- old/qclib-2.5.1/query_capacity_sthyi.c      2025-05-11 09:25:37.000000000 
+0200
+++ new/qclib-2.5.2/query_capacity_sthyi.c      2026-07-06 09:31:02.000000000 
+0200
@@ -231,11 +231,11 @@
 
        if (partition->infpval1 & infplgvl && (rc = 
qc_is_nonempty_ebcdic((__u64*)partition->infplgnm)) > 0) {
                /* LPAR group is only defined in case group name is not empty */
-               qc_debug(lpar, "Insert LPAR group layer\n");
-               if (qc_hdl_insert(lpar, &group, QC_LAYER_TYPE_LPAR_GROUP)) {
+               if (qc_hdl_insert_lpar_group(lpar, &group)) {
                        qc_debug(lpar, "Error: Failed to insert LPAR group 
layer\n");
                        goto out_err;
                }
+               qc_debug(lpar, "Add LPAR group information\n");
                rc = qc_set_attr_ebcdic_string(group, qc_layer_name, 
partition->infplgnm, sizeof(partition->infplgnm), ATTR_SRC_STHYI);
                if (htobe32(partition->infplgcp))
                        rc |= qc_set_attr_int(group, qc_cp_absolute_capping, 
htobe32(partition->infplgcp), ATTR_SRC_STHYI);

Reply via email to