Bugzilla – Bug 906154
fdupes needs to sort filenames of hardlink group
Last modified: 2016-02-18 16:28:55 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.)
Changed to "enhancement"...
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.
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.