Bug 2497737 - Review Request: dupeguru - a GUI tool to find duplicate files
Summary: Review Request: dupeguru - a GUI tool to find duplicate files
Keywords:
Status: NEW
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Nobody's working on this, feel free to take it
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2026-07-07 15:44 UTC by Carl Byington
Modified: 2026-08-03 17:21 UTC (History)
3 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Type: ---
Embargoed:


Attachments (Terms of Use)
The .spec file difference from Copr build 10698914 to 10699067 (2.25 KB, patch)
2026-07-08 18:42 UTC, Fedora Review Service
no flags Details | Diff
The .spec file difference from Copr build 10699067 to 10699208 (760 bytes, patch)
2026-07-08 19:42 UTC, Fedora Review Service
no flags Details | Diff
The .spec file difference from Copr build 10699208 to 10757484 (10.15 KB, patch)
2026-07-21 08:44 UTC, Fedora Review Service
no flags Details | Diff
The .spec file difference from Copr build 10757484 to 10759066 (580 bytes, patch)
2026-07-21 16:27 UTC, Fedora Review Service
no flags Details | Diff
The .spec file difference from Copr build 10759226 to 10759448 (842 bytes, patch)
2026-07-21 19:25 UTC, Fedora Review Service
no flags Details | Diff
The .spec file difference from Copr build 10759448 to 10805966 (5.18 KB, patch)
2026-08-03 00:14 UTC, Fedora Review Service
no flags Details | Diff
The .spec file difference from Copr build 10805966 to 10807985 (3.02 KB, patch)
2026-08-03 17:21 UTC, Fedora Review Service
no flags Details | Diff

Description Carl Byington 2026-07-07 15:44:45 UTC
Spec URL: https://www.five-ten-sg.com/util/dupeguru.spec
SRPM URL: https://www.five-ten-sg.com/util/dupeguru.dupeguru-4.3.1^20260628git16aa6c2-1.fc44.src.rpm

Description: dupeGuru is a cross-platform (Linux and OS X) GUI tool to find
duplicate files.  It's written mostly in Python 3 and has the
peculiarity of using multiple GUI toolkits, all using the same core
Python code.  On OS X, the UI layer is written in Objective-C and uses
Cocoa.  On Linux, it's written in Python and uses Qt5.

Fedora Account System Username: carllibpst

Comment 1 Cristian Le 2026-07-07 20:09:44 UTC
Please use python packaging guidelines macros [1]. It does not follow the standard python build flags that are used in the `%pyproject` macros for example.

Afaict the modern build process should work out of the box minus the auxiliary build steps. You can use `build.py` for those, but please open a ticket in upstream to properly support a PEP517 build system. They have options like scikit-build-core, meson, pyside, etc. some having explicit qt integration.

[1]: https://docs.fedoraproject.org/en-US/packaging-guidelines/Python/

Comment 2 Carl Byington 2026-07-07 21:40:22 UTC
From the python packaging guidelines: "The rest of the Guidelines apply to packages that ship code that can be imported with Python’s import statement. Specifically, that is all packages that install files under /usr/lib*/python*/."

I think the current spec file follows the two distro-wide guidelines. dupeguru does not install anything in /usr/lib.

Comment 3 Cristian Le 2026-07-07 22:13:46 UTC
> dupeguru does not install anything in /usr/lib.

But that's the issue, why shouldn't it be. To give an example what if there is another package that has a `core.*` package defined in either site-packages or similarly in its own private path. How will the `import` commands function/break.

Having everything in the site-packages with all the conflicts tracked avoids all of these issues amd it is the python packaging standard as in python's documentation, not Fedora's.

Comment 4 Carl Byington 2026-07-08 01:59:55 UTC
Upstream solved that by making /usr/bin/dupeguru a symlink to /usr/share/dupeguru/run.py, so the imports are satisfied by being in the same directory as the python script. I changed that by installing run.py as /usr/bin/dupeguru, and adding sys.path.append() - but that should be sys.path.insert(0,) - will change that in the next update.

All the core.* and other stuff that dupeguru uses via import are strictly internal to this package, and not usable from other programs. That stuff really cannot be put in site-packages. See for example /usr/share/crypto-policies/python/policygenerators/java.py - again private to some crypto policy thing. See for example ibus-anthy and ibus-anthy-python - installing python code in /usr/share/ibus-anthy.

I did not realize that the python .pyc files can go in a noarch subpackage as in ibus-anthy-python. I will change that in the next update.

Comment 5 Fedora Review Service 2026-07-08 02:06:15 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/10695311
(failed)

Build log:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2497737-dupeguru/srpm-builds/10695311/builder-live.log.gz

Please make sure the package builds successfully at least for Fedora Rawhide.

- If the build failed for unrelated reasons (e.g. temporary network
  unavailability), please ignore it.
- If the build failed because of missing BuildRequires, please make sure they
  are listed in the "Depends On" field


---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.

Comment 6 Cristian Le 2026-07-08 04:23:22 UTC
It is a fragile design and I do insist to open a ticket with upstream to properly support a PEP517 build system. Here is an example:
- core.* imports foo
- in python 3.72 a new std library core is introduced and foo picks up a dependency on it
- either foo starts to import the package's core.* or package is importing the std core.*

The proper pythonic packaging approach is for each package to own a namespace and use that in their imports. The project should be pip/uv installable and be consumed like that, not having a custom build process. This not a strictly blocking issue, but as packagers we ought to give feedback to upstream about following proper packaging guidelines and (not even that) modern practices.

Comment 7 Carl Byington 2026-07-08 17:09:12 UTC
Spec URL: https://www.five-ten-sg.com/util/dupeguru.spec
SRPM URL: https://www.five-ten-sg.com/util/dupeguru-4.3.1^20260628git16aa6c2-1.fc44.src.rpm
[fedora-review-service-build] 

Split into main and -python packages so all the noarch stuff is not duplicated in the repos.

Used the mechanism from ibus-anthy where the main /usr/bin/dupeguru is a shell script that execs python to run the unmodified upstream run.py in /usr/share/dupeguru. That seems cleaner than patching run.py and installing it directly in /usr/bin/dupeguru.

Comment 8 Fedora Review Service 2026-07-08 17:21:08 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/10698914
(succeeded)

Review template:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2497737-dupeguru/fedora-rawhide-x86_64/10698914-dupeguru/fedora-review/review.txt

Found issues:

- dupeguru-python : /usr/share/dupeguru/core/pe/modules/common.h 
  Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/#_devel_packages
- Unversionned Python dependency found.
  Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/Python/#_dependencies
- License file copyright is not marked as %license
  Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/LicensingGuidelines/#_license_text
- Not a valid SPDX expression 'GPLv3'. It seems that you are using the old Fedora license abbreviations. Try `license-fedora2spdx' for converting it to SPDX.
  Read more: https://fedoraproject.org/wiki/Changes/SPDX_Licenses_Phase_1
- Upstream MD5sum check error, diff is in /var/lib/copr-rpmbuild/results/dupeguru/diff.txt
  Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/SourceURL/

Please know that there can be false-positives.

---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.

Comment 9 Carl Byington 2026-07-08 18:34:23 UTC
[fedora-review-service-build]

Comment 10 Fedora Review Service 2026-07-08 18:42:10 UTC
Created attachment 2148067 [details]
The .spec file difference from Copr build 10698914 to 10699067

Comment 11 Fedora Review Service 2026-07-08 18:42:14 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/10699067
(succeeded)

Review template:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2497737-dupeguru/fedora-rawhide-x86_64/10699067-dupeguru/fedora-review/review.txt

Found issues:

- Upstream MD5sum check error, diff is in /var/lib/copr-rpmbuild/results/dupeguru/diff.txt
  Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/SourceURL/

Please know that there can be false-positives.

---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.

Comment 12 Carl Byington 2026-07-08 19:34:58 UTC
[fedora-review-service-build]

Comment 13 Fedora Review Service 2026-07-08 19:42:42 UTC
Created attachment 2148068 [details]
The .spec file difference from Copr build 10699067 to 10699208

Comment 14 Fedora Review Service 2026-07-08 19:42:45 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/10699208
(succeeded)

Review template:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2497737-dupeguru/fedora-rawhide-x86_64/10699208-dupeguru/fedora-review/review.txt

Please take a look if any issues were found.


---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.

Comment 15 Carl Byington 2026-07-08 19:59:52 UTC
Ok, I finally figured out what forgeversion/forgeautosetup/forcesource0 want with respect to the github archive tarball naming.

I think it is ready to review.

Comment 16 Artur Frenszek-Iwicki 2026-07-09 18:00:49 UTC
> BuildRequires:  libappstream-glib
This seems unused.

> Requires:       python3
> Requires:       python3-mutagen
> Requires:       python3-qt5
> Requires:       python3-semantic_version
> Requires:       python3-send2trash
> Requires:       python3-xxhash
I'd argue these tags should be required on the python package, not the main package.

> cat >%{name} <<EOF
> #!/usr/bin/sh
> exec /usr/bin/python3 /usr/share/dupeguru/run.py "$@"
> EOF
You should be able to use %{_bindir} and %{_sharedir} macroshere.
rpmbuild will expand those while parsing the spec and cat will see only the expanded values.

> %make_install NO_VENV=1 PREFIX=/usr
> make installdocs NO_VENV=1 DESTDIR=%{buildroot} PREFIX=/usr
You can use the %{_prefix} macro here.

> install -m 755    %{name}               %{buildroot}%{_bindir}/%{name}
> install -m 644 -D README.md             %{buildroot}%{_pkgdocdir}/README.md
> install -m 644    help/changelog        %{buildroot}%{_pkgdocdir}/changelog
Use the -p option to preserve file timestamps.

Comment 17 Carl Byington 2026-07-15 20:25:22 UTC
Thanks for the comments - those are done.

I have been working on adding a top level dupeguru namespace to the python code. This project was also much closer than I thought to a standard setuptools build. The current .spec file uses 
%pyproject_buildrequires
%pyproject_wheel
%pyproject_install
%pyproject_save_files

In order to add the namespace, I think we need to move (core,hscommon,qt) down one level in the file system tree, so the patch would be the same size as the entire project. For now, that is done via commands in %setup, and two small patches. All of that will eventually be changed to a pull request patch, but I want to get feedback first confirming that this is the proper way to package this.

With the addition of the namespace, the %pyproject_* packaging puts the python code in %{python3_sitearch}/%{name}. At runtime, we are looking for the help/ and locale/ files in that same directory, but it seems those should be installed into %{_datadir}/%{name}. I fixed this via two absolute symlinks from %{python3_sitearch}/%{name} into %{_datadir}/%{name}. Is there a cleaner way to do that?

[fedora-review-service-build]

Comment 18 Carl Byington 2026-07-19 20:24:16 UTC
Spec URL: https://www.five-ten-sg.com/util/dupeguru.spec
SRPM URL: https://www.five-ten-sg.com/util/dupeguru.dupeguru-4.3.1^20260628git16aa6c2-1.fc44.src.rpm

This version picks up all the open pull requests, including the port to qt6. There are still a few bugs in the qt6 version, but I am hopeful they can be fixed soon. 

[fedora-review-service-build]

Comment 19 Carl Byington 2026-07-20 17:39:13 UTC
Oops, type in url

Spec URL: https://www.five-ten-sg.com/util/dupeguru.spec
SRPM URL: https://www.five-ten-sg.com/util/dupeguru-4.3.1^20260628git16aa6c2-1.fc44.src.rpm

[fedora-review-service-build]

Comment 20 Fedora Review Service 2026-07-21 08:44:00 UTC
Created attachment 2149413 [details]
The .spec file difference from Copr build 10699208 to 10757484

Comment 21 Fedora Review Service 2026-07-21 08:44:02 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/10757484
(failed)

Build log:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2497737-dupeguru/fedora-rawhide-x86_64/10757484-dupeguru/builder-live.log.gz

Please make sure the package builds successfully at least for Fedora Rawhide.

- If the build failed for unrelated reasons (e.g. temporary network
  unavailability), please ignore it.
- If the build failed because of missing BuildRequires, please make sure they
  are listed in the "Depends On" field


---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.

Comment 22 Carl Byington 2026-07-21 16:20:39 UTC
[fedora-review-service-build]

f45 rawhide has send2trash 2.1.0, which seem to be compatible for our purposes with f44 1.8.3. Fixed the restrictions to allow that.

Comment 23 Fedora Review Service 2026-07-21 16:27:30 UTC
Created attachment 2149457 [details]
The .spec file difference from Copr build 10757484 to 10759066

Comment 24 Fedora Review Service 2026-07-21 16:27:33 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/10759066
(succeeded)

Review template:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2497737-dupeguru/fedora-rawhide-x86_64/10759066-dupeguru/fedora-review/review.txt

Please take a look if any issues were found.


---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.

Comment 25 Carl Byington 2026-07-21 17:11:47 UTC
[fedora-review-service-build]

fixed the source url, and added smp flags to the make commands.

Comment 26 Fedora Review Service 2026-07-21 17:18:04 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/10759226
(succeeded)

Review template:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2497737-dupeguru/fedora-rawhide-x86_64/10759226-dupeguru/fedora-review/review.txt

Please take a look if any issues were found.


---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.

Comment 27 Carl Byington 2026-07-21 19:19:18 UTC
[fedora-review-service-build]

another try.

Comment 28 Fedora Review Service 2026-07-21 19:25:42 UTC
Created attachment 2150352 [details]
The .spec file difference from Copr build 10759226 to 10759448

Comment 29 Fedora Review Service 2026-07-21 19:25:45 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/10759448
(succeeded)

Review template:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2497737-dupeguru/fedora-rawhide-x86_64/10759448-dupeguru/fedora-review/review.txt

Please take a look if any issues were found.


---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.

Comment 30 Carl Byington 2026-08-03 00:08:05 UTC
Spec URL: https://www.five-ten-sg.com/util/dupeguru.spec
SRPM URL: https://www.five-ten-sg.com/util/dupeguru-4.3.1^20260802gite8f50a9-1.fc44.src.rpm

[fedora-review-service-build]

Moved from github/arsenetar to github/carlbyington2

Comment 31 Fedora Review Service 2026-08-03 00:14:33 UTC
Created attachment 2153362 [details]
The .spec file difference from Copr build 10759448 to 10805966

Comment 32 Fedora Review Service 2026-08-03 00:14:36 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/10805966
(succeeded)

Review template:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2497737-dupeguru/fedora-rawhide-x86_64/10805966-dupeguru/fedora-review/review.txt

Please take a look if any issues were found.


---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.

Comment 33 Carl Byington 2026-08-03 17:15:17 UTC
Spec URL: https://www.five-ten-sg.com/util/dupeguru.spec
SRPM URL: https://www.five-ten-sg.com/util/dupeguru-4.3.1^20260802gitd6e2978-1.fc44.src.rpm

[fedora-review-service-build]

Abandoned the attempt at noarch, everything in a single package now.

Comment 34 Fedora Review Service 2026-08-03 17:21:26 UTC
Created attachment 2153421 [details]
The .spec file difference from Copr build 10805966 to 10807985

Comment 35 Fedora Review Service 2026-08-03 17:21:28 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/10807985
(succeeded)

Review template:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2497737-dupeguru/fedora-rawhide-x86_64/10807985-dupeguru/fedora-review/review.txt

Please take a look if any issues were found.


---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.


Note You need to log in before you can comment on or make changes to this bug.