Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package minio-client for openSUSE:Factory 
checked in at 2025-02-10 17:30:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/minio-client (Old)
 and      /work/SRC/openSUSE:Factory/.minio-client.new.19470 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "minio-client"

Mon Feb 10 17:30:37 2025 rev:106 rq:1244759 version:20250208T191421Z

Changes:
--------
--- /work/SRC/openSUSE:Factory/minio-client/minio-client.changes        
2025-02-05 17:23:19.930003709 +0100
+++ /work/SRC/openSUSE:Factory/.minio-client.new.19470/minio-client.changes     
2025-02-10 18:15:21.458603973 +0100
@@ -1,0 +2,10 @@
+Sat Feb 08 22:52:48 UTC 2025 - mrueck...@suse.de
+
+- Update to version 20250208T191421Z:
+  * mirror: add the duration time and beautify the output (#5125)
+  * fix: urls equals nil deref (#5126)
+  * add support for pre-2023 minio deployments (#5122)
+  * Change enable to "enable=" (#5104)
+  * Giving mirror the option to exit early when --remove is not set (#5116)
+
+-------------------------------------------------------------------

Old:
----
  minio-client-20250204T045750Z.obscpio

New:
----
  minio-client-20250208T191421Z.obscpio

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

Other differences:
------------------
++++++ minio-client.spec ++++++
--- /var/tmp/diff_new_pack.7hKaqx/_old  2025-02-10 18:15:23.282679410 +0100
+++ /var/tmp/diff_new_pack.7hKaqx/_new  2025-02-10 18:15:23.290679741 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           minio-client
-Version:        20250204T045750Z
+Version:        20250208T191421Z
 Release:        0
 Summary:        Client for MinIO
 License:        AGPL-3.0-only

++++++ _service ++++++
--- /var/tmp/diff_new_pack.7hKaqx/_old  2025-02-10 18:15:23.518689170 +0100
+++ /var/tmp/diff_new_pack.7hKaqx/_new  2025-02-10 18:15:23.538689998 +0100
@@ -5,7 +5,7 @@
     <param name="exclude">.git</param>
     <param name="changesgenerate">enable</param>
     <param name="versionformat">@PARENT_TAG@</param>
-    <param name="revision">RELEASE.2025-02-04T04-57-50Z</param>
+    <param name="revision">RELEASE.2025-02-08T19-14-21Z</param>
     <param name="match-tag">RELEASE.*</param>
     <param 
name="versionrewrite-pattern">RELEASE\.(.*)-(.*)-(.*)-(.*)-(.*)</param>
     <param name="versionrewrite-replacement">\1\2\3\4\5</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.7hKaqx/_old  2025-02-10 18:15:23.630693802 +0100
+++ /var/tmp/diff_new_pack.7hKaqx/_new  2025-02-10 18:15:23.666695291 +0100
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param name="url">https://github.com/minio/mc</param>
-              <param 
name="changesrevision">318e7070718f59198a9c6911f72e46dab1625b3a</param></service></servicedata>
+              <param 
name="changesrevision">bd925c01a1ccab367993f20c251b7bae9d22f8a5</param></service></servicedata>
 (No newline at EOF)
 

++++++ minio-client-20250204T045750Z.obscpio -> 
minio-client-20250208T191421Z.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/minio-client-20250204T045750Z/cmd/accounting-reader.go 
new/minio-client-20250208T191421Z/cmd/accounting-reader.go
--- old/minio-client-20250204T045750Z/cmd/accounting-reader.go  2025-02-04 
05:57:50.000000000 +0100
+++ new/minio-client-20250208T191421Z/cmd/accounting-reader.go  2025-02-08 
20:14:21.000000000 +0100
@@ -18,11 +18,14 @@
 package cmd
 
 import (
-       "fmt"
+       "strings"
        "sync"
        "sync/atomic"
        "time"
 
+       "github.com/fatih/color"
+       "github.com/minio/pkg/v3/console"
+
        "github.com/cheggaaa/pb"
        json "github.com/minio/colorjson"
        "github.com/minio/mc/pkg/probe"
@@ -56,14 +59,14 @@
 }
 
 // write calculate the final speed.
-func (a *accounter) write(current int64) float64 {
+func (a *accounter) write(current int64) (float64, time.Duration) {
        fromStart := time.Since(a.startTime)
        currentFromStart := current - a.startValue
        if currentFromStart > 0 {
                speed := float64(currentFromStart) / (float64(fromStart) / 
float64(time.Second))
-               return speed
+               return speed, fromStart
        }
-       return 0.0
+       return 0.0, 0
 }
 
 // writer update new accounting data for a specified refreshRate.
@@ -81,10 +84,11 @@
 
 // accountStat cantainer for current stats captured.
 type accountStat struct {
-       Status      string  `json:"status"`
-       Total       int64   `json:"total"`
-       Transferred int64   `json:"transferred"`
-       Speed       float64 `json:"speed"`
+       Status      string        `json:"status"`
+       Total       int64         `json:"total"`
+       Transferred int64         `json:"transferred"`
+       Duration    time.Duration `json:"duration"`
+       Speed       float64       `json:"speed"`
 }
 
 func (c accountStat) JSON() string {
@@ -96,15 +100,42 @@
 }
 
 func (c accountStat) String() string {
+       dspOrder := []col{colGreen} // Header
+       dspOrder = append(dspOrder, colGrey)
+       var printColors []*color.Color
+       for _, c := range dspOrder {
+               printColors = append(printColors, getPrintCol(c))
+       }
+
+       tbl := console.NewTable(printColors, []bool{false, false, false, 
false}, 0)
+
+       var builder strings.Builder
+       cellText := make([][]string, 0, 2)
+       cellText = append(cellText, []string{
+               "Total",
+               "Transferred",
+               "Duration",
+               "Speed",
+       })
+
        speedBox := pb.Format(int64(c.Speed)).To(pb.U_BYTES).String()
        if speedBox == "" {
                speedBox = "0 MB"
        } else {
                speedBox = speedBox + "/s"
        }
-       message := fmt.Sprintf("Total: %s, Transferred: %s, Speed: %s", 
pb.Format(c.Total).To(pb.U_BYTES),
-               pb.Format(c.Transferred).To(pb.U_BYTES), speedBox)
-       return message
+
+       cellText = append(cellText, []string{
+               pb.Format(c.Total).To(pb.U_BYTES).String(),
+               pb.Format(c.Transferred).To(pb.U_BYTES).String(),
+               pb.Format(int64(c.Duration)).To(pb.U_DURATION).String(),
+               speedBox,
+       })
+
+       e := tbl.PopulateTable(&builder, cellText)
+       fatalIf(probe.NewError(e), "unable to populate the table")
+
+       return builder.String()
 }
 
 // Stat provides current stats captured.
@@ -114,7 +145,7 @@
                close(a.isFinished)
                acntStat.Total = a.total
                acntStat.Transferred = atomic.LoadInt64(&a.current)
-               acntStat.Speed = a.write(atomic.LoadInt64(&a.current))
+               acntStat.Speed, acntStat.Duration = 
a.write(atomic.LoadInt64(&a.current))
        })
        return acntStat
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/minio-client-20250204T045750Z/cmd/admin-info.go 
new/minio-client-20250208T191421Z/cmd/admin-info.go
--- old/minio-client-20250204T045750Z/cmd/admin-info.go 2025-02-04 
05:57:50.000000000 +0100
+++ new/minio-client-20250208T191421Z/cmd/admin-info.go 2025-02-08 
20:14:21.000000000 +0100
@@ -95,9 +95,11 @@
                                }
                        }
 
-                       if disk.DiskIndex < 
(info.Backend.DrivesPerSet[disk.PoolIndex] - info.Backend.StandardSCParity) {
-                               pool.drivesTotalFreeSpace += disk.AvailableSpace
-                               pool.drivesTotalUsableSpace += disk.TotalSpace
+                       if len(info.Backend.DrivesPerSet) > 0 {
+                               if disk.DiskIndex < 
(info.Backend.DrivesPerSet[disk.PoolIndex] - info.Backend.StandardSCParity) {
+                                       pool.drivesTotalFreeSpace += 
disk.AvailableSpace
+                                       pool.drivesTotalUsableSpace += 
disk.TotalSpace
+                               }
                        }
 
                        pool.endpoints.Add(srv.Endpoint)
@@ -105,8 +107,6 @@
                }
        }
 
-       // This was already added in 2022 enough time has passed to remove
-       // any other deprecated calculations
        for idx := range info.Backend.TotalSets {
                pool := summary[idx]
                if pool != nil {
@@ -150,11 +150,6 @@
                fatal(probe.NewError(errors.New("Unable to get service info")), 
"")
        }
 
-       // Validate such that we expect the server to be atleast from 2022
-       if len(u.Info.Backend.TotalSets) == 0 || 
len(u.Info.Backend.DrivesPerSet) == 0 {
-               fatal(probe.NewError(errors.New("Unable to display service 
info, server is too old")), "")
-       }
-
        // Initialization
        var totalOfflineNodes int
 
@@ -299,6 +294,7 @@
                        "Erasure sets",
                })
 
+               var printSummary bool
                // Keep the pool order while printing the output
                for poolIdx := 0; poolIdx < len(clusterSummary); poolIdx++ {
                        summary := clusterSummary[poolIdx]
@@ -308,12 +304,14 @@
                        totalSize := summary.drivesTotalUsableSpace
                        usedCurrent := summary.drivesTotalUsableSpace - 
summary.drivesTotalFreeSpace
                        var capacity string
-                       if totalSize == 0 {
-                               capacity = "0% (total: 0B)"
-                       } else {
+                       if totalSize > 0 {
                                capacity = fmt.Sprintf("%.1f%% (total: %s)", 
100*float64(usedCurrent)/float64(totalSize), humanize.IBytes(totalSize))
                        }
 
+                       if summary.drivesPerSet > 0 {
+                               printSummary = true
+                       }
+
                        cellText = append(cellText, []string{
                                humanize.Ordinal(poolIdx + 1),
                                capacity,
@@ -322,10 +320,12 @@
                        })
                }
 
-               e := tbl.PopulateTable(&builder, cellText)
-               fatalIf(probe.NewError(e), "unable to populate the table")
+               if printSummary {
+                       e := tbl.PopulateTable(&builder, cellText)
+                       fatalIf(probe.NewError(e), "unable to populate the 
table")
 
-               msg += builder.String() + "\n"
+                       msg += builder.String() + "\n"
+               }
        }
 
        // Summary on used space, total no of buckets and
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/minio-client-20250204T045750Z/cmd/diff-main.go 
new/minio-client-20250208T191421Z/cmd/diff-main.go
--- old/minio-client-20250204T045750Z/cmd/diff-main.go  2025-02-04 
05:57:50.000000000 +0100
+++ new/minio-client-20250208T191421Z/cmd/diff-main.go  2025-02-08 
20:14:21.000000000 +0100
@@ -184,7 +184,7 @@
        }
 
        // Diff first and second urls.
-       for diffMsg := range objectDifference(ctx, firstClient, secondClient, 
true) {
+       for diffMsg := range bucketObjectDifference(ctx, firstClient, 
secondClient) {
                if diffMsg.Error != nil {
                        errorIf(diffMsg.Error, "Unable to calculate objects 
difference.")
                        // Ignore error and proceed to next object.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/minio-client-20250204T045750Z/cmd/difference.go 
new/minio-client-20250208T191421Z/cmd/difference.go
--- old/minio-client-20250204T045750Z/cmd/difference.go 2025-02-04 
05:57:50.000000000 +0100
+++ new/minio-client-20250208T191421Z/cmd/difference.go 2025-02-08 
20:14:21.000000000 +0100
@@ -161,17 +161,23 @@
        return true
 }
 
-func objectDifference(ctx context.Context, sourceClnt, targetClnt Client, 
isMetadata bool) (diffCh chan diffMessage) {
+func bucketObjectDifference(ctx context.Context, sourceClnt, targetClnt 
Client) (diffCh chan diffMessage) {
+       return objectDifference(ctx, sourceClnt, targetClnt, mirrorOptions{
+               isMetadata: false,
+       })
+}
+
+func objectDifference(ctx context.Context, sourceClnt, targetClnt Client, opts 
mirrorOptions) (diffCh chan diffMessage) {
        sourceURL := sourceClnt.GetURL().String()
-       sourceCh := sourceClnt.List(ctx, ListOptions{Recursive: true, 
WithMetadata: isMetadata, ShowDir: DirNone})
+       sourceCh := sourceClnt.List(ctx, ListOptions{Recursive: true, 
WithMetadata: opts.isMetadata, ShowDir: DirNone})
 
        targetURL := targetClnt.GetURL().String()
-       targetCh := targetClnt.List(ctx, ListOptions{Recursive: true, 
WithMetadata: isMetadata, ShowDir: DirNone})
+       targetCh := targetClnt.List(ctx, ListOptions{Recursive: true, 
WithMetadata: opts.isMetadata, ShowDir: DirNone})
 
-       return difference(sourceURL, sourceCh, targetURL, targetCh, isMetadata, 
false)
+       return difference(sourceURL, sourceCh, targetURL, targetCh, opts, false)
 }
 
-func bucketDifference(ctx context.Context, sourceClnt, targetClnt Client) 
(diffCh chan diffMessage) {
+func bucketDifference(ctx context.Context, sourceClnt, targetClnt Client, opts 
mirrorOptions) (diffCh chan diffMessage) {
        sourceURL := sourceClnt.GetURL().String()
        sourceCh := make(chan *ClientContent)
 
@@ -215,11 +221,16 @@
                }
        }()
 
-       return difference(sourceURL, sourceCh, targetURL, targetCh, false, 
false)
+       return difference(sourceURL, sourceCh, targetURL, targetCh, opts, false)
 }
 
-func differenceInternal(sourceURL string, srcCh <-chan *ClientContent, 
targetURL string, tgtCh <-chan *ClientContent,
-       cmpMetadata, returnSimilar bool, diffCh chan<- diffMessage,
+func differenceInternal(sourceURL string,
+       srcCh <-chan *ClientContent,
+       targetURL string,
+       tgtCh <-chan *ClientContent,
+       opts mirrorOptions,
+       returnSimilar bool,
+       diffCh chan<- diffMessage,
 ) *probe.Error {
        // Pop first entries from the source and targets
        srcCtnt, srcOk := <-srcCh
@@ -232,8 +243,14 @@
                tgtEOF = !tgtOk
 
                // No objects from source AND target: Finish
-               if srcEOF && tgtEOF {
-                       break
+               if opts.sourceListingOnly {
+                       if srcEOF {
+                               break
+                       }
+               } else {
+                       if srcEOF && tgtEOF {
+                               break
+                       }
                }
 
                if !srcEOF && srcCtnt.Err != nil {
@@ -332,7 +349,7 @@
                                        firstContent:  srcCtnt,
                                        secondContent: tgtCtnt,
                                }
-                       } else if cmpMetadata &&
+                       } else if opts.isMetadata &&
                                !metadataEqual(srcCtnt.UserMetadata, 
tgtCtnt.UserMetadata) &&
                                !metadataEqual(srcCtnt.Metadata, 
tgtCtnt.Metadata) {
 
@@ -375,13 +392,13 @@
 
 // objectDifference function finds the difference between all objects
 // recursively in sorted order from source and target.
-func difference(sourceURL string, sourceCh <-chan *ClientContent, targetURL 
string, targetCh <-chan *ClientContent, cmpMetadata, returnSimilar bool) 
(diffCh chan diffMessage) {
+func difference(sourceURL string, sourceCh <-chan *ClientContent, targetURL 
string, targetCh <-chan *ClientContent, opts mirrorOptions, returnSimilar bool) 
(diffCh chan diffMessage) {
        diffCh = make(chan diffMessage, 10000)
 
        go func() {
                defer close(diffCh)
 
-               err := differenceInternal(sourceURL, sourceCh, targetURL, 
targetCh, cmpMetadata, returnSimilar, diffCh)
+               err := differenceInternal(sourceURL, sourceCh, targetURL, 
targetCh, opts, returnSimilar, diffCh)
                if err != nil {
                        // handle this specifically for filesystem related 
errors.
                        switch v := err.ToGoError().(type) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/minio-client-20250204T045750Z/cmd/idp-openid-subcommands.go 
new/minio-client-20250208T191421Z/cmd/idp-openid-subcommands.go
--- old/minio-client-20250204T045750Z/cmd/idp-openid-subcommands.go     
2025-02-04 05:57:50.000000000 +0100
+++ new/minio-client-20250208T191421Z/cmd/idp-openid-subcommands.go     
2025-02-08 20:14:21.000000000 +0100
@@ -416,12 +416,16 @@
                return "Not configured."
        }
 
+       enableStr := "on"
        // Determine required width for key column.
        fieldColWidth := 0
        for _, kv := range i.Info {
                if fieldColWidth < len(kv.Key) {
                        fieldColWidth = len(kv.Key)
                }
+               if kv.Key == "enable" {
+                       enableStr = kv.Value
+               }
        }
        // Add 1 for the colon-suffix in each entry.
        fieldColWidth++
@@ -439,7 +443,14 @@
                PaddingLeft(1)
 
        var lines []string
+       lines = append(lines, fmt.Sprintf("%s%s",
+               fieldColStyle.Render("enable:"),
+               valueColStyle.Render(enableStr),
+       ))
        for _, kv := range i.Info {
+               if kv.Key == "enable" {
+                       continue
+               }
                envStr := ""
                if kv.IsCfg && kv.IsEnv {
                        envStr = " (environment)"
@@ -509,7 +520,7 @@
                idpType = madmin.OpenidIDPCfg
        }
 
-       configBody := "enable=on"
+       configBody := "enable="
        if !enable {
                configBody = "enable=off"
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/minio-client-20250204T045750Z/cmd/mirror-main.go 
new/minio-client-20250208T191421Z/cmd/mirror-main.go
--- old/minio-client-20250204T045750Z/cmd/mirror-main.go        2025-02-04 
05:57:50.000000000 +0100
+++ new/minio-client-20250208T191421Z/cmd/mirror-main.go        2025-02-08 
20:14:21.000000000 +0100
@@ -558,6 +558,13 @@
 
        var cancelInProgress bool
 
+       defer func() {
+               // make sure we always cancel the context
+               if !cancelInProgress {
+                       cancel()
+               }
+       }()
+
        for sURLs := range mj.statusCh {
                if cancelInProgress {
                        // Do not need to print any error after
@@ -1011,6 +1018,13 @@
                activeActive:          isWatch,
        }
 
+       // If we are not using active/active and we are not removing
+       // files from the remote, then we can exit the listing once
+       // local files have been checked for diff.
+       if !mopts.activeActive && !mopts.isRemove {
+               mopts.sourceListingOnly = true
+       }
+
        // Create a new mirror job and execute it
        mj := newMirrorJob(srcURL, dstURL, mopts)
 
@@ -1022,7 +1036,7 @@
 
        if mirrorSrcBuckets || createDstBuckets {
                // Synchronize buckets using dirDifference function
-               for d := range bucketDifference(ctx, srcClt, dstClt) {
+               for d := range bucketDifference(ctx, srcClt, dstClt, mj.opts) {
                        if d.Error != nil {
                                if mj.opts.activeActive {
                                        errorIf(d.Error, "Failed to start 
mirroring.. retrying")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/minio-client-20250204T045750Z/cmd/mirror-url.go 
new/minio-client-20250208T191421Z/cmd/mirror-url.go
--- old/minio-client-20250204T045750Z/cmd/mirror-url.go 2025-02-04 
05:57:50.000000000 +0100
+++ new/minio-client-20250208T191421Z/cmd/mirror-url.go 2025-02-08 
20:14:21.000000000 +0100
@@ -167,7 +167,7 @@
        }
 
        // List both source and target, compare and return values through 
channel.
-       for diffMsg := range objectDifference(ctx, sourceClnt, targetClnt, 
opts.isMetadata) {
+       for diffMsg := range objectDifference(ctx, sourceClnt, targetClnt, 
opts) {
                if diffMsg.Error != nil {
                        // Send all errors through the channel
                        URLsCh <- URLs{Error: diffMsg.Error, ErrorCond: 
differInUnknown}
@@ -277,6 +277,7 @@
        storageClass                                          string
        userMetadata                                          map[string]string
        checksum                                              minio.ChecksumType
+       sourceListingOnly                                     bool
 }
 
 // Prepares urls that need to be copied or removed based on requested options.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/minio-client-20250204T045750Z/cmd/urls.go 
new/minio-client-20250208T191421Z/cmd/urls.go
--- old/minio-client-20250204T045750Z/cmd/urls.go       2025-02-04 
05:57:50.000000000 +0100
+++ new/minio-client-20250208T191421Z/cmd/urls.go       2025-02-08 
20:14:21.000000000 +0100
@@ -50,7 +50,7 @@
                return false
        } else if m.SourceContent == nil && n.SourceContent != nil {
                return false
-       } else if m.SourceContent.URL != n.SourceContent.URL {
+       } else if m.SourceContent != nil && n.SourceContent != nil && 
m.SourceContent.URL != n.SourceContent.URL {
                return false
        }
 
@@ -58,7 +58,7 @@
                return false
        } else if m.TargetContent == nil && n.TargetContent != nil {
                return false
-       } else if m.TargetContent.URL != n.TargetContent.URL {
+       } else if m.TargetContent != nil && n.TargetContent != nil && 
m.TargetContent.URL != n.TargetContent.URL {
                return false
        }
 

++++++ minio-client.obsinfo ++++++
--- /var/tmp/diff_new_pack.7hKaqx/_old  2025-02-10 18:15:24.682737311 +0100
+++ /var/tmp/diff_new_pack.7hKaqx/_new  2025-02-10 18:15:24.702738138 +0100
@@ -1,5 +1,5 @@
 name: minio-client
-version: 20250204T045750Z
-mtime: 1738645070
-commit: 318e7070718f59198a9c6911f72e46dab1625b3a
+version: 20250208T191421Z
+mtime: 1739042061
+commit: bd925c01a1ccab367993f20c251b7bae9d22f8a5
 

++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/minio-client/vendor.tar.gz 
/work/SRC/openSUSE:Factory/.minio-client.new.19470/vendor.tar.gz differ: char 
5, line 1

Reply via email to