Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package duperemove for openSUSE:Factory 
checked in at 2026-10-18 19:26:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/duperemove (Old)
 and      /work/SRC/openSUSE:Factory/.duperemove.new.3698736 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "duperemove"

Sun Oct 18 19:26:51 2026 rev:35 rq:1385995 version:0.15.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/duperemove/duperemove.changes    2025-02-06 
22:07:05.570239669 +0100
+++ /work/SRC/openSUSE:Factory/.duperemove.new.3698736/duperemove.changes       
2026-10-18 19:27:25.806067038 +0200
@@ -1,0 +2,25 @@
+Sun Oct 18 05:35:35 UTC 2026 - Martin Pluskal <[email protected]>
+
+- Drop duperemove-0.15-buildfail.patch: fixed upstream, 0.15.2 ships list.h 
(gh#markfasheh/duperemove#367).
+- Spec cleanup: drop obsolete Group: tags, use pkgconfig() BuildRequires.
+
+-------------------------------------------------------------------
+Thu May 15 06:40:08 UTC 2025 - Michael Vetter <[email protected]>
+
+- Update to 0.15.2:
+  * dedupe.c: fix infinite looping on NoCOW files #376
+
+-------------------------------------------------------------------
+Mon Mar 24 13:07:25 UTC 2025 - [email protected]
+
+- require gcc-PIE [bsc#1239940] for build
+
+-------------------------------------------------------------------
+Thu Mar  6 05:29:46 UTC 2025 - Ilgaz Öcal <[email protected]>
+
+- Update to 0.15.1
+  * file_scan: allow scanning multi-device bcachefs
+  * dedupe: Skip extents with insufficient duplicates
+  * Fixes found when packaging for Chimera Linux
+
+-------------------------------------------------------------------

Old:
----
  duperemove-0.15-buildfail.patch
  duperemove-0.15.tar.gz

New:
----
  duperemove-0.15.2.tar.gz

----------(Old B)----------
  Old:
- Drop duperemove-0.15-buildfail.patch: fixed upstream, 0.15.2 ships list.h 
(gh#markfasheh/duperemove#367).
- Spec cleanup: drop obsolete Group: tags, use pkgconfig() BuildRequires.
----------(Old E)----------

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

Other differences:
------------------
++++++ duperemove.spec ++++++
--- /var/tmp/diff_new_pack.hG0ad0/_old  2026-10-18 19:27:26.757106885 +0200
+++ /var/tmp/diff_new_pack.hG0ad0/_new  2026-10-18 19:27:26.761107053 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package duperemove
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -23,23 +23,22 @@
 %define req_gcc_ver %{nil}
 %endif
 Name:           duperemove
-Version:        0.15
+Version:        0.15.2
 Release:        0
 Summary:        Software to find duplicate extents in files and remove them
 License:        GPL-2.0-only
-Group:          System/Filesystems
 URL:            https://github.com/markfasheh/duperemove
 Source:         
https://github.com/markfasheh/%{name}/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
-# PATCH-FIX-UPSTREAM [email protected] gh#markfasheh/duperemove#367
-Patch:          duperemove-0.15-buildfail.patch
 BuildRequires:  gcc%{req_gcc_ver}
+BuildRequires:  gcc%{req_gcc_ver}-PIE
 BuildRequires:  gcc%{req_gcc_ver}-c++
-BuildRequires:  libblkid-devel
-BuildRequires:  libbsd-devel
-BuildRequires:  libmount-devel
 BuildRequires:  pkgconfig
-BuildRequires:  xxhash-devel
+BuildRequires:  pkgconfig(blkid)
 BuildRequires:  pkgconfig(glib-2.0)
+BuildRequires:  pkgconfig(libbsd)
+BuildRequires:  pkgconfig(libbsd-overlay)
+BuildRequires:  pkgconfig(libxxhash)
+BuildRequires:  pkgconfig(mount)
 BuildRequires:  pkgconfig(sqlite3)
 BuildRequires:  pkgconfig(uuid)
 
@@ -50,14 +49,12 @@
 
 %package -n %{samename}
 Summary:        Debug/Test tool to exercise the btrfs out-of-band 
deduplication ioctl
-Group:          System/Filesystems
 
 %description -n %{samename}
 Debug/Test tool to exercise a btrfs ioctl for deduplicating file regions.
 
 %package        zsh-completion
 Summary:        Zsh Completion for %{name}
-Group:          System/Shells
 Requires:       zsh
 Supplements:    (%{name} and zsh)
 BuildArch:      noarch

++++++ duperemove-0.15.tar.gz -> duperemove-0.15.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/duperemove-0.15/Makefile 
new/duperemove-0.15.2/Makefile
--- old/duperemove-0.15/Makefile        2025-02-02 15:31:58.000000000 +0100
+++ new/duperemove-0.15.2/Makefile      2025-05-09 20:07:30.000000000 +0200
@@ -2,7 +2,7 @@
 IS_RELEASE ?= $(if $(filter $(shell git rev-list $(shell git describe 
--abbrev=0 --tags --exclude '*dev';)..HEAD --count;),0),1,0)
 
 CC ?= gcc
-CFLAGS ?= -Wall -ggdb --std=c23 -MMD
+CFLAGS ?= -Wall -ggdb -std=gnu11 -Werror=strict-prototypes -MMD
 PKG_CONFIG ?= pkg-config
 
 MANPAGES=duperemove.8 btrfs-extent-same.8 hashstats.8 show-shared-extents.8
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/duperemove-0.15/dbfile.c 
new/duperemove-0.15.2/dbfile.c
--- old/duperemove-0.15/dbfile.c        2025-02-02 15:31:58.000000000 +0100
+++ new/duperemove-0.15.2/dbfile.c      2025-05-09 20:07:30.000000000 +0200
@@ -561,6 +561,17 @@
        }
 }
 
+/*
+ * dbfile_close_handle takes struct dbhandle*.
+ * we need a function that takes void* so we
+ * can pass it to register_cleanup without
+ * causing UB.
+ */
+static void cleanup_dbhandle(void *db)
+{
+       dbfile_close_handle(db);
+}
+
 struct dbhandle *dbfile_open_handle_thread(char *filename, struct threads_pool 
*pool)
 {
        struct dbhandle *db;
@@ -569,7 +580,7 @@
        dbfile_unlock();
 
        if (db)
-               register_cleanup(pool, (void*)&dbfile_close_handle, db);
+               register_cleanup(pool, (void*)&cleanup_dbhandle, db);
        return db;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/duperemove-0.15/dbfile.h 
new/duperemove-0.15.2/dbfile.h
--- old/duperemove-0.15/dbfile.h        2025-02-02 15:31:58.000000000 +0100
+++ new/duperemove-0.15.2/dbfile.h      2025-05-09 20:07:30.000000000 +0200
@@ -77,8 +77,8 @@
  */
 struct dbhandle *dbfile_open_handle_thread(char *filename, struct threads_pool 
*pool);
 
-void dbfile_lock();
-void dbfile_unlock();
+void dbfile_lock(void);
+void dbfile_unlock(void);
 
 struct dbfile_config {
        unsigned int    blocksize;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/duperemove-0.15/dedupe.c 
new/duperemove-0.15.2/dedupe.c
--- old/duperemove-0.15/dedupe.c        2025-02-02 15:31:58.000000000 +0100
+++ new/duperemove-0.15.2/dedupe.c      2025-05-09 20:07:30.000000000 +0200
@@ -306,7 +306,6 @@
                 * get -EINVAL on all the fds. Short circuit this then
                 * by moving everything off the queued list.
                 */
-               fs_blocksize = get_fs_blocksize(ctxt->ioctl_file->fd);
                list_splice_init(&ctxt->queued, &ctxt->completed);
        }
 }
@@ -328,6 +327,7 @@
                        print_btrfs_same_info(ctxt);
 
                if (ctxt->same->info[0].status == -EINVAL && !fs_blocksize) {
+                       fs_blocksize = get_fs_blocksize(ctxt->ioctl_file->fd);
                        set_aligned_same_length(ctxt, ctxt->same);
                        goto retry;
                }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/duperemove-0.15/docs/duperemove.html 
new/duperemove-0.15.2/docs/duperemove.html
--- old/duperemove-0.15/docs/duperemove.html    2025-02-02 15:31:58.000000000 
+0100
+++ new/duperemove-0.15.2/docs/duperemove.html  2025-05-09 20:07:30.000000000 
+0200
@@ -4,7 +4,7 @@
   <meta charset="utf-8" />
   <meta name="generator" content="pandoc" />
   <meta name="viewport" content="width=device-width, initial-scale=1.0, 
user-scalable=yes" />
-  <meta name="dcterms.date" content="2025-11-02" />
+  <meta name="dcterms.date" content="2025-03-01" />
   <title>Duperemove</title>
   <style>
     html {
@@ -172,7 +172,7 @@
 <body>
 <header id="title-block-header">
 <h1 class="title">Duperemove</h1>
-<p class="date">02 Nov 2025</p>
+<p class="date">01 Mar 2025</p>
 </header>
 <h1 id="name">NAME</h1>
 <p><code>duperemove</code> - Find duplicate regions in files and submit
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/duperemove-0.15/duperemove.8 
new/duperemove-0.15.2/duperemove.8
--- old/duperemove-0.15/duperemove.8    2025-02-02 15:31:58.000000000 +0100
+++ new/duperemove-0.15.2/duperemove.8  2025-05-09 20:07:30.000000000 +0200
@@ -1,6 +1,6 @@
 .\" Automatically generated by Pandoc 3.1.11.1
 .\"
-.TH "Duperemove" "8" "02 Nov 2025" "duperemove 0.15" "System Manager\[cq]s 
Manual"
+.TH "Duperemove" "8" "01 Mar 2025" "duperemove 0.15.1" "System Manager\[cq]s 
Manual"
 .SH NAME
 \f[CR]duperemove\f[R] \- Find duplicate regions in files and submit them
 for deduplication
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/duperemove-0.15/duperemove.c 
new/duperemove-0.15.2/duperemove.c
--- old/duperemove-0.15/duperemove.c    2025-02-02 15:31:58.000000000 +0100
+++ new/duperemove-0.15.2/duperemove.c  2025-05-09 20:07:30.000000000 +0200
@@ -130,7 +130,7 @@
        return 0;
 }
 
-static void print_version()
+static void print_version(void)
 {
        char *s = NULL;
 #ifdef DEBUG_BUILD
@@ -206,7 +206,7 @@
        BATCH_SIZE_OPTION,
 };
 
-static int process_fdupes()
+static int process_fdupes(void)
 {
        int ret = 0;
        _cleanup_(freep) char *path = NULL;
@@ -285,7 +285,7 @@
        return 0;
 }
 
-static void help()
+static void help(void)
 {
        execlp("man", "man", "8", "duperemove", NULL);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/duperemove-0.15/file_scan.c 
new/duperemove-0.15.2/file_scan.c
--- old/duperemove-0.15/file_scan.c     2025-02-02 15:31:58.000000000 +0100
+++ new/duperemove-0.15.2/file_scan.c   2025-05-09 20:07:30.000000000 +0200
@@ -220,6 +220,30 @@
        return makedev(stx->stx_dev_major, stx->stx_dev_minor);
 }
 
+static char *extract_first_device(const char *fs_source)
+{
+       char *first_device = NULL;
+       const char *colon;
+
+       if (!fs_source)
+               return NULL;
+
+       colon = strchr(fs_source, ':');
+       if (colon) {
+               size_t len = colon - fs_source;
+               first_device = malloc(len + 1);
+               if (!first_device)
+                       return NULL;
+               memcpy(first_device, fs_source, len);
+               first_device[len] = '\0';
+       } else {
+               first_device = strdup(fs_source);
+               if (!first_device)
+                       return NULL;
+       }
+       return first_device;
+}
+
 /* Get the UUID associated with the FS that stores path */
 int get_uuid(char *path, uuid_t *uuid)
 {
@@ -245,6 +269,9 @@
                        return 1;
                }
        } else {
+               const char *fs_source;
+               char *first_device;
+
                dprintf("get_uuid: %s do not live on btrfs\n", path);
 
                ret = statx(0, path, 0, STATX_BASIC_STATS, &st);
@@ -274,7 +301,16 @@
                        return 1;
                }
 
-               uuid_found = blkid_get_tag_value(NULL, "UUID", 
mnt_fs_get_source(dev));
+               fs_source = mnt_fs_get_source(dev);
+               first_device = extract_first_device(fs_source);
+
+               if (!first_device) {
+                       eprintf("Memory allocation failed\n");
+                       return 1;
+               }
+
+               uuid_found = blkid_get_tag_value(NULL, "UUID", first_device);
+               free(first_device);
                if (!uuid_found) {
                        eprintf("libblkid could not get uuid for "
                                        "device %s. Run blkid as root to "
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/duperemove-0.15/file_scan.h 
new/duperemove-0.15.2/file_scan.h
--- old/duperemove-0.15/file_scan.h     2025-02-02 15:31:58.000000000 +0100
+++ new/duperemove-0.15.2/file_scan.h   2025-05-09 20:07:30.000000000 +0200
@@ -47,8 +47,8 @@
 
 int add_exclude_pattern(const char *pattern);
 
-void filescan_init();
-void filescan_free();
+void filescan_init(void);
+void filescan_free(void);
 
 void add_file_fdupes(char *path);
 #endif /* __FILE_SCAN_H__ */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/duperemove-0.15/hashstats.c 
new/duperemove-0.15.2/hashstats.c
--- old/duperemove-0.15/hashstats.c     2025-02-02 15:31:58.000000000 +0100
+++ new/duperemove-0.15.2/hashstats.c   2025-05-09 20:07:30.000000000 +0200
@@ -138,7 +138,7 @@
               stats->num_files, stats->num_b_hashes, stats->num_e_hashes);
 }
 
-static void version()
+static void version(void)
 {
        printf("hashstats %s\n", VERSTRING);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/duperemove-0.15/list.h new/duperemove-0.15.2/list.h
--- old/duperemove-0.15/list.h  2025-02-02 15:31:58.000000000 +0100
+++ new/duperemove-0.15.2/list.h        2025-05-09 20:07:30.000000000 +0200
@@ -31,6 +31,7 @@
 
 #define LIST_HEAD_INIT(name) { &(name), &(name) }
 
+#undef LIST_HEAD // <bsd/sys/queue.h>
 #define LIST_HEAD(name) \
        struct list_head name = LIST_HEAD_INIT(name)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/duperemove-0.15/markdown/duperemove.md 
new/duperemove-0.15.2/markdown/duperemove.md
--- old/duperemove-0.15/markdown/duperemove.md  2025-02-02 15:31:58.000000000 
+0100
+++ new/duperemove-0.15.2/markdown/duperemove.md        2025-05-09 
20:07:30.000000000 +0200
@@ -2,8 +2,8 @@
 title: Duperemove
 section: 8
 header: System Manager’s Manual
-footer: duperemove 0.15
-date: 02 Nov 2025
+footer: duperemove 0.15.1
+date: 01 Mar 2025
 ---
 # NAME
 `duperemove` - Find duplicate regions in files and submit them for 
deduplication
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/duperemove-0.15/progress.c 
new/duperemove-0.15.2/progress.c
--- old/duperemove-0.15/progress.c      2025-02-02 15:31:58.000000000 +0100
+++ new/duperemove-0.15.2/progress.c    2025-05-09 20:07:30.000000000 +0200
@@ -66,7 +66,7 @@
 /*
  * Used to track the status of our search extents from blocks
  */
-static uint64_t search_total, search_processed;
+static _Atomic uint64_t search_total, search_processed;
 
 #define s_save_pos() if (tty) printf("\33[s");
 #define s_restore_pos() if (tty) printf("\33[u");
@@ -176,7 +176,7 @@
        return NULL;
 }
 
-static void *pscan_progress_thread(void *)
+static void *pscan_progress_thread(void * p)
 {
        struct winsize w;
        do {
@@ -215,7 +215,7 @@
        return tprogress;
 }
 
-void pscan_run()
+void pscan_run(void)
 {
        tty = isatty(STDOUT_FILENO);
 
@@ -230,7 +230,7 @@
        printer = g_thread_new("progress_printer", pscan_progress_thread, NULL);
 }
 
-void pscan_join()
+void pscan_join(void)
 {
        g_thread_join(printer);
 
@@ -277,7 +277,7 @@
        (*progress)->file_path[0] = '\0';
 }
 
-bool is_progress_printer_running()
+bool is_progress_printer_running(void)
 {
        return printer ? true : false;
 }
@@ -312,7 +312,7 @@
        g_mutex_unlock(&pscan.mutex);
 }
 
-static void *psearch_progress_thread(void *)
+static void *psearch_progress_thread(void * p)
 {
        static int last_pos = -1;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/duperemove-0.15/progress.h 
new/duperemove-0.15.2/progress.h
--- old/duperemove-0.15/progress.h      2025-02-02 15:31:58.000000000 +0100
+++ new/duperemove-0.15.2/progress.h    2025-05-09 20:07:30.000000000 +0200
@@ -39,7 +39,7 @@
        struct pscan_thread     **threads;
 };
 
-void pscan_finish_listing();
+void pscan_finish_listing(void);
 
 /* Used to increment the global todo list */
 void pscan_set_progress(uint64_t added_files, uint64_t added_bytes);
@@ -53,13 +53,13 @@
  * - the listing is completed - pscan_finish_listing() has been called
  * - the sum of all threads progresses equals to the global totals
  */
-void pscan_run();
+void pscan_run(void);
 
 /*
  * Wait for the progress thread to finish
  * Also cleanup per-thread progresses and print the global totals
  */
-void pscan_join();
+void pscan_join(void);
 
 /*
  * Reset file tracking data
@@ -69,7 +69,7 @@
  */
 void pscan_reset_thread(struct pscan_thread **progress);
 
-bool is_progress_printer_running();
+bool is_progress_printer_running(void);
 
 /*
  * The progress thread overwrites its area.
@@ -87,7 +87,7 @@
 /*
  * Wait for the progress thread to finish
  */
-void psearch_join();
+void psearch_join(void);
 
 /*
  * extent search: update the number of processed filerecs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/duperemove-0.15/results-tree.h 
new/duperemove-0.15.2/results-tree.h
--- old/duperemove-0.15/results-tree.h  2025-02-02 15:31:58.000000000 +0100
+++ new/duperemove-0.15.2/results-tree.h        2025-05-09 20:07:30.000000000 
+0200
@@ -20,11 +20,7 @@
 #include <glib.h>
 
 #include "csum.h"
-
-// TODO: delete this
-struct list_head {
-       struct list_head *next, *prev;
-};
+#include "list.h"
 
 struct results_tree {
        struct rb_root  root;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/duperemove-0.15/run_dedupe.c 
new/duperemove-0.15.2/run_dedupe.c
--- old/duperemove-0.15/run_dedupe.c    2025-02-02 15:31:58.000000000 +0100
+++ new/duperemove-0.15.2/run_dedupe.c  2025-05-09 20:07:30.000000000 +0200
@@ -561,11 +561,16 @@
                 * around the rbtree code here so rb_erase doesn't
                 * change the tree underneath us.
                 */
-
                g_mutex_lock(&mutex);
                node = rb_next(node);
                g_mutex_unlock(&mutex);
 
+               if (dext->de_num_dupes < 2) {
+                       qprintf("Skipping extent - insufficient duplicates 
(%u)\n",
+                                  dext->de_num_dupes);
+                       continue;
+               }
+
                g_thread_pool_push(dedupe_pool, dext, &err);
                if (err) {
                        eprintf("Fatal error while deduping: %s\n",

Reply via email to