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: CLOSED NOTABUG
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Renich Bon Ciric
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-11-03 02:21 UTC (History)
4 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2026-11-03 02:21:09 UTC
Type: ---
Embargoed:
renich: fedora-review+


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.

Comment 36 Carl Byington 2026-09-01 22:34:13 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^20260901gitdfd190f-1.fc44.src.rpm

[fedora-review-service-build]

Comment 37 Carl Byington 2026-09-09 18:14:04 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^20260909gitddc8077-1.fc44.src.rpm

[fedora-review-service-build]

Comment 38 Carl Byington 2026-10-18 20:39:18 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^20261018git7b004af-1.fc44.src.rpm

[fedora-review-service-build]

Comment 39 wojnilowicz 2026-10-19 08:38:35 UTC
1. You have
> %global         version0  4.3.1
but there is no such version at https://github.com/carlbyington2/dupeguru.

2. You specify the same URL twice
> %global         forgeurl0 https://github.com/carlbyington2/dupeguru
> Url:            https://github.com/carlbyington2/dupeguru

3. You have
> Source0:        %forgeurl0/archive/%{commit}/%{name}-%{shortcommit}.tar.gz
instead of
> Source:  %{forgesource}

and I think that strips merits of using forge automation macros as seen at https://docs.fedoraproject.org/en-US/packaging-guidelines/SourceURL/#_using_forges_hosted_revision_control

4. You copy without preserving the timestamps.

5. You have

> %license pkg/debian/copyright

and in it is

> Copyright 2014 Hardcoded Software Inc. (http://www.hardcoded.net)
> All rights reserved.

Are you sure such license is allowed in Fedora?

6. You use
> https://github.com/carlbyington2/dupeguru
instead of
> https://github.com/arsenetar/dupeguru/

Why?

Comment 40 Carl Byington 2026-10-19 17:01:28 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^20261019git7b004af-1.fc44.src.rpm

[fedora-review-service-build]

Thank you for the comments!

1 - The last upstream release was 4.3.1 four years ago. I keep hoping he will pickup these changes and do a new release. Until then, I think it is appropriate to use versions like 4.3.1^20261019git7b004af.

2,3 - I have changed the forge automation in the spec file to match.

4 - I don't see where files are copied without preserving timestamps. cp -a and install -p should preserve those.

5 - Ah, I missed that. I have submitted PR 1433 to see if that fourth clause can be removed. In 2014 there may have been some license enforcement code in this package, but there is no such code now. Of course, if that request is refused we won't be able to get this into Fedora.

6 - The repo at arsenetar/dupeguru is *almost* dead. The last release was four years ago, and there were many PRs that never got merged there. I forked carlbyington2/dupeguru to merge the important ones, mainly the switch to qt6, bugfixes, and a few security issues with sql and xml. In order to be suitable for Fedora, I needed to reorganize the source tree, moving (core,hscommon,qt) down one level to avoid future Python conflicts. That reorganization invalidates all the PRs at arsenetar/dupeguru. I pick up those PRs, then edit the patch to compensate for that reorganization, and apply them at carlbyington2/dupeguru.

Comment 41 Carl Byington 2026-10-19 17:15:57 UTC
commit bb9908abb4c25c9cf99bb78414059115475c947a
Author: Virgil Dupras <hsoft>
Date:   Sun Jan 4 09:59:08 2015 -0500

    Change license from BSD to GPLv3

Clearly, the original author intended this code to be under GPLv3. It looks like he overlooked that fourth clause in debian/copyright file.

Comment 42 Carl Byington 2026-10-19 17:46:17 UTC
commit 4886982d43be531e5c2a7fb1f1267b182e101bff
Author: Virgil Dupras <hsoft>
Date:   Thu Sep 30 12:17:41 2010 +0200

    Re-licensed to BSD

diff --git a/LICENSE b/LICENSE
index 25c0e61a..7fb20adf 100644

That commit removed the fourth clause from the BSD license file at the root of the source tree. That happened shortly after removing the registration code and converting to Fairware. I think this clearly shows the intent of the original author that this code is not covered by that fourth clause.

Comment 43 Carl Byington 2026-10-20 21:12:02 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^20261020git62ea00a-1.fc44.src.rpm

[fedora-review-service-build]

Comment 44 Carl Byington 2026-10-30 20:50:07 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^20261020git521590f-1.fc44.src.rpm

[fedora-review-service-build]

patched out the about box check for new updates.

Comment 45 Carl Byington 2026-10-30 20:52:09 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^20261030git521590f-1.fc44.src.rpm

[fedora-review-service-build]

Oops, was wrong url for the rpm file.

Comment 46 Carl Byington 2026-10-30 21:33:36 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^20261030gitcd95e68-1.fc44.src.rpm

[fedora-review-service-build]

allow xxhash 4.0.2 in f45+

Comment 47 Renich Bon Ciric 2026-11-01 02:40:26 UTC
Package Review
==============

Legend:
[x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated

Blocking item before approval (fedora-review+):
1. License tag (SPDX):
   The binary RPM ships generated Sphinx HTML static assets under
   `%{_datadir}/dupeguru/help/*/_static/` (`doctools.js`/`basic.css` under
   `BSD-2-Clause`, `haiku.css` under `MIT`, and Snowball `*-stemmer.js`
   under `BSD-3-Clause`), plus `dupeguru/core/pe/exif.py` derived from
   Thierry Bousch's public-domain `exifdump.py`. Per Fedora's SPDX rules
   (no effective-license collapsing for files shipped in the binary RPM),
   please update `License:` to:
     License: GPL-3.0-only AND BSD-2-Clause AND BSD-3-Clause AND MIT AND LicenseRef-Fedora-Public-Domain
   (Note: `dupeguru/hscommon/LICENSE` is an old unused BSD-3-Clause file in
   the source tree that is not installed in the binary RPM; all `hscommon/*.py`
   headers and `pkg/debian/copyright` were cleanly updated to GPLv3.)

Minor SHOULD cleanups (non-blocking):
2. Spec & launcher polish:
   - Drop redundant explicit `Requires:` already generated automatically by
     `python3dist(...)` and shebangs (`python3`, `python3-mutagen`,
     `python3-semantic_version`, `python3-send2trash`, `python3-xxhash`),
     keeping only `python3-defusedxml`, `python3-pyqt6`, and
     `hicolor-icon-theme`.
   - Escape macros in comments at lines 92-93 (`%%{python3_sitearch}`,
     `%%{_datadir}`, `%%{name}`) to silence `rpmlint` `macro-in-comment`.
   - Optional: in `run.py`, consider `os.environ.setdefault("QT_QPA_PLATFORM", "xcb")`
     instead of overwriting `QT_QPA_PLATFORM` unconditionally.


===== MUST items =====

C/C++:
[x]: Package does not contain kernel modules.
[x]: Development (unversioned) .so files in -devel subpackage, if present.
     Note: Python Cython/C extension modules (`_block`, `_cache`, `_block_qt`)
     reside in private `%{python3_sitearch}/dupeguru/` (not in ld path).
[x]: If your application is a C or C++ application you must list a
     BuildRequires against gcc, gcc-c++ or clang.
[x]: Package does not contain any libtool archives (.la)
[x]: Package contains no static executables.
[x]: Rpath absent or only used for internal libs.

Generic:
[x]: Package is licensed with an open-source compatible license and meets
     other legal requirements as defined in the legal section of Packaging
     Guidelines. (Old 4-clause notice in `pkg/debian/copyright` has been
     removed upstream in `cd95e68`; all shipped licenses are Fedora-allowed.)
[!]: License field in the package spec file matches the actual license.
     Note: Add SPDX identifiers for shipped Sphinx `_static/` assets and
     public-domain `exif.py` derivation (see item #1 above).
[x]: Package must own all directories that it creates.
     Note: `/usr/lib64/python3.15/site-packages` is owned by `python3-libs`
     in Rawhide.
[x]: %build honors applicable compiler flags or justifies otherwise.
[x]: Package contains no bundled libraries or specifies bundled libraries
     with Provides: bundled(<libname>) if unbundling is not possible.
[x]: Changelog in prescribed format (`%autochangelog`).
[x]: Sources contain only permissible code or content.
[-]: Development files must be in a -devel package.
[x]: Package uses nothing in %doc for runtime.
[x]: Package consistently uses macros (instead of hard-coded directory
     names).
[x]: Package is named according to the Package Naming Guidelines.
[x]: Package does not generate any conflict.
[x]: Package obeys FHS, except libexecdir and /usr/target.
[-]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[x]: Requires correct, justified where necessary.
[x]: Spec file is legible and written in American English.
[-]: Package contains systemd file(s) if in need.
[x]: Useful -debuginfo package or justification otherwise.
[x]: Package is not known to require an ExcludeArch tag.
[x]: Large documentation must go in a -doc subpackage.
[x]: Package complies to the Packaging Guidelines.
[x]: Package successfully compiles and builds into binary rpms on at least
     one supported primary architecture (`fedora-rawhide-x86_64`, Python 3.15).
[x]: Package installs properly.
[x]: Rpmlint is run on all rpms the build produces.
[x]: License text included in `%license`.
[x]: The License field must be a valid SPDX expression.
[x]: Package requires other packages for directories it uses.
[x]: Package does not own files or directories owned by other packages.
[x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT.
[x]: Package does not run rm -rf %{buildroot} at the beginning of %install.
[x]: Macros in Summary, %description expandable at SRPM build time.
[x]: Package contains desktop file if it is a GUI application.
[x]: Package installs a %{name}.desktop using desktop-file-validate.
[x]: Dist tag is present.
[x]: Package does not contain duplicates in %files.
[x]: Permissions on files are set properly.
[x]: Package must not depend on deprecated() packages.
[x]: Package use %makeinstall only when make install DESTDIR=... doesn't work.
[x]: Package is named using only allowed ASCII characters.
[x]: Package does not use a name that already exists.
[x]: Package is not relocatable.
[x]: Sources used to build the package match the upstream source, as
     provided in the spec URL (SHA256:
     `f36612f52e1fc94d038529140f3490d1de0441309b75c08a0c9bb858c42e465a`).
[x]: Spec file name must match the spec package %{name}, in the format
     %{name}.spec.
[x]: File names are valid UTF-8.
[x]: Packages must not store files under /srv, /opt or /usr/local.

Python:
[x]: Python eggs must not download any dependencies during the build process.
[x]: A package which is used by another package via an egg interface should
     provide egg info (`.dist-info` present).
[x]: Package meets the Packaging Guidelines::Python.
[x]: Package contains BR: python3-devel.
[x]: Packages MUST NOT have dependencies on packages named with the
     unversioned python- prefix.
[x]: Python packages must not contain %{pythonX_site(lib|arch)}/* in %files.
[x]: Binary eggs must be removed in %prep.

===== SHOULD items =====

[x]: Final provides and requires are sane.
[x]: Latest snapshot version is packaged (`4.3.1^20261030gitcd95e68-1`).
[x]: Package does not include license text files separate from upstream.
[x]: Patches are justified (`remove-check-for-updates.patch` disables runtime
     upstream update checks per Fedora policy).
[-]: Sources are verified with gpgverify first in %prep if upstream
     publishes signatures.
[x]: Package should compile and build into binary rpms on all supported
     architectures.
[x]: %check is present and all tests pass (`558 passed, 1 skipped`).
[x]: Packages should try to preserve timestamps of original installed files.
[x]: Reviewer should test that the package builds in mock.
[x]: Buildroot is not present.
[x]: Package has no %clean section.
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file.
[x]: Uses parallel make %{?_smp_mflags} macro.
[x]: Sources can be downloaded from URI in Source: tag.
[x]: SourceX is a working URL.
[x]: Spec use %global instead of %define unless justified.

Rpmlint
-------
Checking: dupeguru-4.3.1^20261030gitcd95e68-1.fc46.x86_64.rpm
          dupeguru-4.3.1^20261030gitcd95e68-1.fc46.src.rpm
dupeguru.x86_64: W: python-leftover-require python3-defusedxml (justified: needed at runtime, missing from upstream metadata)
dupeguru.x86_64: W: python-leftover-require python3-pyqt6 (justified: needed at runtime, missing from upstream metadata)
dupeguru.spec: W: patch-not-applied Patch0: remove-check-for-updates.patch (false positive: applied by %forgeautosetup -p1)
dupeguru.x86_64: W: no-manual-page-for-binary dupeguru
dupeguru.spec:102-103: W: macro-in-comment (minor: escape % as %% in comments)
2 packages and 0 specfiles checked; 0 errors, 8 warnings, 0 badness.

Generated with fedora-review 0.12.0 against fedora-rawhide-x86_64.

--
Reviewed with Gemini (AI pair programmer collaborating with Rénich Bon Ćirić)

Comment 48 Carl Byington 2026-11-01 17:24:05 UTC
spec license tag fixed, and dupeguru/hscommon/LICENSE removed upstream.
fixed setup.cfg upstream, and dropped all the redundant requires: for python modules.
escaped macros in comments.
use os.environ.setdefault() in run.py

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

Comment 49 Renich Bon Ciric 2026-11-01 20:26:42 UTC
All blocking and optional items from Comment #47 are resolved in `dupeguru-4.3.1^20261101git7a2c79f-1`:

- [x] `License:` updated to `GPL-3.0-only AND BSD-2-Clause AND BSD-3-Clause AND MIT AND LicenseRef-Fedora-Public-Domain` with breakdown comment in `dupeguru.spec`, and obsolete `dupeguru/hscommon/LICENSE` removed upstream.
- [x] Upstream `setup.cfg` updated; all Python runtime dependencies (`defusedxml`, `distro`, `mutagen`, `pyqt6`, `semantic-version`, `send2trash`, `xxhash`) are now emitted automatically via `python3dist(...)` with zero `python-leftover-require` warnings.
- [x] Macros escaped in spec comments (`0` `macro-in-comment` warnings) and `run.py` updated to `os.environ.setdefault("QT_QPA_PLATFORM", "xcb")`.
- [x] Upstream source SHA-256 verified (`5d19bf2372e1722d8770dd92079babc4a112b444548cac892fa86d52878a6b5f`).
- [x] Rebuilt cleanly in Mock (`fedora-rawhide-x86_64`, Python 3.15); `%check` passes `desktop-file-validate`, `%pyproject_check_import`, and `pytest` (`558 passed, 1 skipped`).
- [x] `rpmlint` across SRPM, binary, debuginfo, and debugsource RPMs: `0 errors, 2 warnings, 0 badness` (`patch-not-applied` false positive from `%forgeautosetup` and `no-manual-page-for-binary`).

Package is approved (`fedora-review+`).

--
Reviewed with Gemini, AI pair programmer collaborating with Rénich Bon Ćirić

Comment 50 Carl Byington 2026-11-01 22:54:22 UTC
Hm, I have forgotten the next steps.

fedpkg request-repo dupeguru 2497737

that wants 'fedpkg set-forgejo-token' but how do I generate that token?

Comment 51 Fedora Admin user for bugzilla script actions 2026-11-01 23:11:51 UTC
The Pagure repository was created at https://src.fedoraproject.org/rpms/dupeguru
Monitoring:
Wasn't able to create project in Anitya. You can create it manually on: `https://release-monitoring.org`


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