Bug 906154 - fdupes needs to sort filenames of hardlink group
fdupes needs to sort filenames of hardlink group
Status: RESOLVED FIXED
Classification: openSUSE
Product: openSUSE Tumbleweed
Classification: openSUSE
Component: Basesystem
201411*
Other Other
: P5 - None : Enhancement (vote)
: ---
Assigned To: Tomáš Chvátal
E-mail List
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2014-11-19 16:43 UTC by Olaf Hering
Modified: 2016-02-18 16:28 UTC (History)
2 users (show)

See Also:
Found By: ---
Services Priority:
Business Priority:
Blocker: ---
Marketing QA Status: ---
IT Deployment: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Olaf Hering 2014-11-19 16:43:51 UTC
I guess rpm collects the list of hardlinked files and stores them in a random order. The "main binary" can be any of the hardlinked files. It would be nice if rpm would internally sort the targets to pick always the same entry as "main binary". This will reduce build-compare noise.

I think in this example rpm found a few files which are hardlinked. In one case it found vimdiff2 first, in the second vimdiff3.


[  372s] compare /.build.oldpackages/git-core-2.1.3-220.bax.2.x86_64.rpm /home/abuild/rpmbuild/RPMS/x86_64/git-core-2.1.3-220.bax.3.x86_64.rpm
[  372s] --- /tmp/tmp.urkIj2Z2GN        2014-11-19 16:34:01.848000000 +0000
[  372s] +++ /tmp/tmp.CaD9QVFt3Z        2014-11-19 16:34:01.856000000 +0000
[  372s] @@ -173,9 +173,9 @@
[  372s]  /usr/lib/git/mergetools/diffuse 0 (none) 100644 root root 0 4294967295 
[  372s]  /usr/lib/git/mergetools/ecmerge 0 (none) 100644 root root 0 4294967295 
[  372s]  /usr/lib/git/mergetools/emerge 0 (none) 100644 root root 0 4294967295 
[  372s] -/usr/lib/git/mergetools/gvimdiff 0 (none) 120777 root root 0 4294967295 vimdiff2
[  372s] -/usr/lib/git/mergetools/gvimdiff2 0 (none) 120777 root root 0 4294967295 vimdiff2
[  372s] -/usr/lib/git/mergetools/gvimdiff3 0 (none) 120777 root root 0 4294967295 vimdiff2
[  372s] +/usr/lib/git/mergetools/gvimdiff 0 (none) 120777 root root 0 4294967295 vimdiff3
[  372s] +/usr/lib/git/mergetools/gvimdiff2 0 (none) 120777 root root 0 4294967295 vimdiff3
[  372s] +/usr/lib/git/mergetools/gvimdiff3 0 (none) 120777 root root 0 4294967295 vimdiff3
[  372s]  /usr/lib/git/mergetools/kdiff3 0 (none) 100644 root root 0 4294967295 
[  372s]  /usr/lib/git/mergetools/kompare 0 (none) 100644 root root 0 4294967295 
[  372s]  /usr/lib/git/mergetools/meld 0 (none) 100644 root root 0 4294967295 
[  372s] @@ -184,8 +184,8 @@
[  372s]  /usr/lib/git/mergetools/tkdiff 0 (none) 100644 root root 0 4294967295 
[  372s]  /usr/lib/git/mergetools/tortoisemerge 0 (none) 100644 root root 0 4294967295 
[  372s]  /usr/lib/git/mergetools/vimdiff 0 (none) 100644 root root 0 4294967295 
[  372s] -/usr/lib/git/mergetools/vimdiff2 0 (none) 100644 root root 0 4294967295 
[  372s] -/usr/lib/git/mergetools/vimdiff3 0 (none) 120777 root root 0 4294967295 vimdiff2
[  372s] +/usr/lib/git/mergetools/vimdiff2 0 (none) 120777 root root 0 4294967295 vimdiff3
[  372s] +/usr/lib/git/mergetools/vimdiff3 0 (none) 100644 root root 0 4294967295 
[  372s]  /usr/lib/git/mergetools/xxdiff 0 (none) 100644 root root 0 4294967295 
[  372s]  /usr/lib/perl5/vendor_perl/5.18.2/Git 0 (none) 40755 root root 0 4294967295 
[  372s]  /usr/lib/perl5/vendor_perl/5.18.2/Git.pm 0 (none) 100444 root root 0 4294967295 
[  372s] RPM meta information is different

(git has other issues, but the above may affect more packages. A workaround would be to use symlinks during pkg build.)
Comment 1 Michael Schröder 2014-11-20 10:21:51 UTC
Changed to "enhancement"...
Comment 2 Olaf Hering 2015-01-26 11:57:12 UTC
This appears to be a bug in fdupes. In case of git the files below are turned into symlinks. Hardlinks are represented differently in FILENAMES / FILELINKTOS.

Looks like fdupes needs to sort its results before processing the output.
Comment 3 Bernhard Wiedemann 2016-02-18 16:28:55 UTC
just found that our fdupes already has a -o name option
to sort this from
https://build.opensuse.org/package/view_file/openSUSE:Factory/fdupes/0011-add-an-option-to-sort-duplicate-files-by-name.patch?expand=1

In current Factory /etc/rpm/macros.fdupes
already has -o name
to use this.