Fedora Account System
Red Hat Associate
Red Hat Customer
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
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/
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.
> 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.
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.
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.
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.
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.
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.
[fedora-review-service-build]
Created attachment 2148067 [details] The .spec file difference from Copr build 10698914 to 10699067
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.
Created attachment 2148068 [details] The .spec file difference from Copr build 10699067 to 10699208
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.
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.
> 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.
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]
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]
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]
Created attachment 2149413 [details] The .spec file difference from Copr build 10699208 to 10757484
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.
[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.
Created attachment 2149457 [details] The .spec file difference from Copr build 10757484 to 10759066
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.
[fedora-review-service-build] fixed the source url, and added smp flags to the make commands.
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.
[fedora-review-service-build] another try.
Created attachment 2150352 [details] The .spec file difference from Copr build 10759226 to 10759448
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.
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
Created attachment 2153362 [details] The .spec file difference from Copr build 10759448 to 10805966
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.
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.
Created attachment 2153421 [details] The .spec file difference from Copr build 10805966 to 10807985
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.