Bug 1982210 - Review Request: shutter - GTK+3-based screenshot application written in Perl
Summary: Review Request: shutter - GTK+3-based screenshot application written in Perl
Keywords:
Status: CLOSED NEXTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Petr Pisar
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2021-07-14 12:47 UTC by MartinKG
Modified: 2021-08-20 16:04 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2021-08-20 16:04:14 UTC
Type: ---
Embargoed:
ppisar: fedora-review+


Attachments (Terms of Use)

Description MartinKG 2021-07-14 12:47:28 UTC
Spec URL: https://martinkg.fedorapeople.org/Review/SPECS/shutter.spec
SRPM URL: https://martinkg.fedorapeople.org/Review/SRPMS/shutter-0.97-0.1.git01d8563.fc34.src.rpm

Description: Shutter is a GTK+ 3.x based screenshot application written in Perl.
Shutter covers all features of common command line tools like
scrot or import and adds reasonable new features combined
with a comfortable GUI using the GTK+ 3.x framework.

Fedora Account System Username: martinkg


%changelog
* Tue Jun 22 2021 Martin Gansser <martinkg> - 0.97-0.1.git01d8563
- Update to 0.97-0.1.git01d8563
- Add RR perl(Gtk3::ImageView)
- Add RR perl(Goo::Canvas)
- Add RR perl(GooCanvas2::CairoTypes)
- Add RR perl-Pango
- Add RR libwnck3


rawhide koji build:
https://koji.fedoraproject.org/koji/taskinfo?taskID=71879340

Comment 1 MartinKG 2021-08-04 14:01:07 UTC
Spec URL: https://martinkg.fedorapeople.org/Review/SPECS/shutter.spec
SRPM URL: https://martinkg.fedorapeople.org/Review/SRPMS/home/martin/rpmbuild/SRPMS/shutter-0.98-1.fc34.src.rpm

%changelog
* Wed Aug 04 2021 Martin Gansser <martinkg> - 0.98-1
- Update to 0.98-1

Comment 2 Petr Pisar 2021-08-04 14:29:29 UTC
Those are my findings for 0.97-0.1.git01d8563.fc34. I guess thew will also apply for 0.98:

URL and Source0 addresses are usable. Ok.
TODO: Update URL to <https://shutter-project.org/>. This is where a redirection ends.

Source0 archive is original (SHA512: 546df7dec648300d19f56684c6a0fbd377fec56d457d97dcb0527a779e19a6d49e14a7771bacb773cbfdc1b4a067b67825f790defd367e27d945692869c2a2ae). Ok.
Summary is Ok.
Description is Ok.
TODO: I recommend you to use a description from bin/shutter POD or About section at the home page.

License verified from README, share/appdata/shutter.appdata.xml, share/shutter/resources/icons/draw.svg, share/shutter/resources/system/upload_plugins/upload/vgyme.pm etc.

FIX: Declare all these licenses:
FIX: share/shutter/resources/icons/draw.svg packaged is CC-BY-SA
FIX: share/shutter/resources/system/plugins/perl/spwatermark/spwatermark.svg is Public Domain
FIX: share/shutter/resources/po/shutter/zh_TW.po is MIT (same as gscrot <https://github.com/gscrot/gscrot/blob/master/LICENSE.md>)
FIX: share/shutter/resources/icons/drawing_tool/objects/tux.svg is GPLv2
FIX: share/appdata/shutter.appdata.xml is CC0

FIX: The software bundles Tango icons (tango-icon-theme package). You should unbundle them, or declare "Provides: bundled(tango-icon-theme)". See <https://docs.fedoraproject.org/en-US/packaging-guidelines/#bundling>. All the icons consume 7 MB. That's pretty wasteful.

FIX: Do not use %filter_provides_in. Use %__provides_exclude_from (https://docs.fedoraproject.org/en-US/packaging-guidelines/AutoProvidesAndRequiresFiltering/).

FIX: Build-require libappstream-glib (shutter.spec:101).
FIX: Build-require coreutils s(shutter.spec:61).
FIX: Build-require sed (shutter.spec:64).

$ rpmlint shutter.spec ../SRPMS/shutter-0.97-0.1.git01d8563.fc35.src.rpm ../RPMS/noarch/shutter-0.97-0.1.git01d8563.fc35.noarch.rpm
========================================================== rpmlint session starts =========================================================
rpmlint: 2.0.0
configuration:
    /usr/lib/python3.10/site-packages/rpmlint/configdefaults.toml
    /etc/xdg/rpmlint/fedora.toml
    /etc/xdg/rpmlint/licenses.toml
    /etc/xdg/rpmlint/scoring.toml
    /etc/xdg/rpmlint/users-groups.toml
    /etc/xdg/rpmlint/warn-on-functions.toml
checks: 31, packages: 3

shutter.noarch: E: wrong-icon-size /usr/share/icons/hicolor/24x24/apps/shutter-panel.png expected: 24x24 actual: 32x32
shutter.noarch: E: wrong-icon-size /usr/share/icons/hicolor/24x24/apps/shutter.png expected: 24x24 actual: 32x32
shutter.noarch: W: no-manual-page-for-binary shutter
shutter.noarch: E: invalid-lc-messages-dir /usr/share/locale/ber/LC_MESSAGES/shutter.mo
shutter.noarch: E: files-duplicated-waste 416318
shutter.noarch: W: files-duplicate /usr/share/icons/HighContrast/scalable/apps/shutter.svg /usr/share/icons/HighContrast/scalable/apps/shutter-panel.svg
shutter.noarch: W: files-duplicate /usr/share/icons/hicolor/16x16/apps/shutter.png /usr/share/icons/hicolor/16x16/apps/shutter-panel.png
shutter.noarch: W: files-duplicate /usr/share/icons/hicolor/22x22/apps/shutter.png /usr/share/icons/hicolor/22x22/apps/shutter-panel.png
shutter.noarch: W: files-duplicate /usr/share/icons/hicolor/24x24/apps/shutter.png /usr/share/icons/hicolor/24x24/apps/shutter-panel.png
shutter.noarch: W: files-duplicate /usr/share/pixmaps/shutter.png /usr/share/icons/hicolor/48x48/apps/shutter.png
shutter.noarch: W: files-duplicate /usr/share/icons/hicolor/scalable/apps/shutter.svg /usr/share/icons/hicolor/scalable/apps/shutter-panel.svg
shutter.noarch: W: files-duplicate /usr/share/shutter/resources/icons/drawing_tool/draw-image.svg /usr/share/shutter/resources/icons/Image.svg
shutter.noarch: W: files-duplicate /usr/share/shutter/resources/icons/drawing_tool/objects/Cursors/Normal.cur /usr/share/shutter/resources/icons/Normal.cur
shutter.noarch: W: files-duplicate /usr/share/shutter/resources/icons/drawing_tool/cursor/text /usr/share/shutter/resources/icons/drawing_tool/cursor/backtext
shutter.noarch: W: files-duplicate /usr/share/shutter/resources/icons/sel_window_tooltip.svg /usr/share/shutter/resources/icons/drawing_tool/objects/Tango icon library/Apps/internet-group-chat.svg
shutter.noarch: W: files-duplicate /usr/share/shutter/resources/icons/drawing_tool/objects/Tango icon library/Status/folder-visiting.icon /usr/share/shutter/resources/icons/drawing_tool/objects/Tango icon library/Status/folder-drag-accept.icon
shutter.noarch: E: explicit-lib-dependency libwnck3
========================== 2 packages and 1 specfiles checked; 5 errors, 12 warnings, 5 badness; has taken 0.9 s ==========================
rpmlint is not Ok.
FIX: Move the two icons into the correct directory.
FIX: Symlink the duplicated files.

File layout and permissions are Ok.

I will examine the new version and RPM run-time dependencies later.

Comment 3 MartinKG 2021-08-05 12:19:24 UTC
Spec URL: https://martinkg.fedorapeople.org/Review/SPECS/shutter.spec
SRPM URL: https://martinkg.fedorapeople.org/Review/SRPMS/shutter-0.98-2.fc34.src.rpm


%changelog
* Thu Aug 05 2021 Martin Gansser <martinkg> - 0.98-2
- Update URL
- Use a description from About
- Declare license files
- Add Provides bundled(tango-icon-theme)
- Do not use %%filter_provides_in use %%__provides_exclude_from
- Add BR libappstream-glib
- Add BR coreutils
- Add BR sed
- Move icons into the correct directory
- Symlink duplicated files


> FIX: Do not use %filter_provides_in. Use %__provides_exclude_from (https://docs.fedoraproject.org/en-US/packaging-guidelines/AutoProvidesAndRequiresFiltering/).

don't know how to use the correct command.
error: line 56: Unknown tag: %__provides_exclude_from /usr/share/shutter/resources/system/upload_plugins

Comment 4 MartinKG 2021-08-08 16:50:05 UTC
Spec URL: https://martinkg.fedorapeople.org/Review/SPECS/shutter.spec
SRPM URL: https://martinkg.fedorapeople.org/Review/SRPMS/shutter-0.98-3.fc34.src.rpm

%changelog
* Sun Aug 08 2021 Martin Gansser <martinkg> - 0.98-3
- Unbundle tango-icon-theme
- Add RR tango-icon-theme


rpmlint -v shutter.spec /home/martin/rpmbuild/SRPMS/shutter-0.98-3.fc34.src.rpm /home/martin/rpmbuild/RPMS/noarch/shutter-0.98-3.fc34.noarch.rpm
shutter.spec: I: checking
shutter.spec: I: checking-url https://github.com/shutter-project/shutter/archive/v0.98.tar.gz#/shutter-0.98.tar.gz (timeout 10 seconds)
shutter.src: I: checking
shutter.src: I: checking-url https://shutter-project.org/ (timeout 10 seconds)
shutter.src: I: checking-url https://github.com/shutter-project/shutter/archive/v0.98.tar.gz#/shutter-0.98.tar.gz (timeout 10 seconds)
shutter.noarch: I: checking
shutter.noarch: I: checking-url https://shutter-project.org/ (timeout 10 seconds)
shutter.noarch: W: cross-directory-hard-link /usr/share/pixmaps/shutter.png /usr/share/icons/hicolor/48x48/apps/shutter.png
shutter.noarch: W: cross-directory-hard-link /usr/share/shutter/resources/icons/drawing_tool/draw-image.svg /usr/share/shutter/resources/icons/Image.svg
shutter.noarch: W: cross-directory-hard-link /usr/share/shutter/resources/icons/drawing_tool/objects/Cursors/Normal.cur /usr/share/shutter/resources/icons/Normal.cur
shutter.noarch: W: dangling-symlink /usr/share/shutter/resources/icons/drawing_tool/objects/Tango /usr/share/icons/Tango/scalable
shutter.noarch: E: invalid-lc-messages-dir /usr/share/locale/ber/LC_MESSAGES/shutter.mo
2 packages and 1 specfiles checked; 1 errors, 4 warnings.

Comment 5 Petr Pisar 2021-08-18 15:34:51 UTC
I'm sorry for the delay. I did not have much free time recently.
This is a rebase, reviewing from the beginning.

URL and Source0 addresses are usable. Ok.
Source0 archive (SHA-512) 
5a3321db635a81f6f67d5789cf374d846f21003a9bd3fd748bb58481d8a5fde450a1c4b5ad4d3edee49804cee6dd8da6ad7b4422eaef96bb333b8b3059cb3e41) is original. Ok.

TODO: Move "%global __provides_exclude_from" just above a description section. This where we usually place the filtering macros.
Summary is Ok.
Description is Ok.

FIX: share/shutter/resources/icons/drawing_tool/cursor files are GPLv2+ according to README.
FIX: List the licenses of all the packaged files into the License section ("License: GPLv3+ and GPLv2+ and GPLv2 and CC-BY-SA and MIT and CC0 and Public Domain").

$ rpmlint shutter.spec ../SRPMS/shutter-0.98-3.fc36.src.rpm ../RPMS/noarch/shutter-0.98-3.fc36.noarch.rpm
============================================================= rpmlint session starts ============================================================
rpmlint: 2.1.0
configuration:
    /usr/lib/python3.10/site-packages/rpmlint/configdefaults.toml
    /etc/xdg/rpmlint/fedora.toml
    /etc/xdg/rpmlint/licenses.toml
    /etc/xdg/rpmlint/scoring.toml
    /etc/xdg/rpmlint/users-groups.toml
    /etc/xdg/rpmlint/warn-on-functions.toml
checks: 31, packages: 3

shutter.noarch: W: dangling-symlink /usr/share/shutter/resources/icons/drawing_tool/objects/Tango /usr/share/icons/Tango/scalable
shutter.noarch: W: cross-directory-hard-link /usr/share/pixmaps/shutter.png /usr/share/icons/hicolor/48x48/apps/shutter.png
shutter.noarch: W: cross-directory-hard-link /usr/share/shutter/resources/icons/drawing_tool/draw-image.svg /usr/share/shutter/resources/icons/Image.svg
shutter.noarch: W: cross-directory-hard-link /usr/share/shutter/resources/icons/drawing_tool/objects/Cursors/Normal.cur /usr/share/shutter/resources/icons/Normal.cur
============================== 2 packages and 1 specfiles checked; 0 errors, 4 warnings, 0 badness; has taken 0.8 s =============================

TODO: I recommend creating symbolic links (ln -s) instead of hard links in the %install section. If a user had the files on different file systems, they would become duplicated.

File permissions and layout are Ok.

$ rpm -q --requires -p ../RPMS/noarch/shutter-0.98-3.fc36.noarch.rpm  | sort -f | uniq -c
      1 /usr/bin/bash
      1 /usr/bin/perl
      1 hicolor-icon-theme
      1 ImageMagick
      1 perl(:MODULE_COMPAT_5.34.0)
      1 perl(:VERSION) >= 5.10.1
      1 perl(base)
      1 perl(Carp::Always)
      1 perl(constant)
      1 perl(Data::Dumper)
      1 perl(diagnostics)
      1 perl(Digest::MD5)
      1 perl(Encode)
      1 perl(Encode::Locale)
      1 perl(Exporter)
      1 perl(File::Basename)
      1 perl(File::Copy)
      1 perl(File::Copy::Recursive)
      1 perl(File::Glob)
      1 perl(File::Spec)
      1 perl(File::stat)
      1 perl(File::Temp)
      1 perl(File::Which)
      1 perl(FindBin)
      1 perl(Getopt::Long)
      1 perl(Glib)
      1 perl(Glib::Object::Introspection)
      1 perl(Glib::Object::Subclass)
      1 perl(Goo::Canvas)
      1 perl(GooCanvas2)
      2 perl(GooCanvas2::CairoTypes)
      1 perl(Gtk3)
      2 perl(Gtk3::ImageView) >= 9
      1 perl(Gtk3::ImageView::Tool::Selector)
      1 perl(HTTP::Request::Common)
      1 perl(HTTP::Status)
      1 perl(Image::ExifTool)
      1 perl(Image::Magick)
      1 perl(IO::File)
      1 perl(JSON::MaybeXS)
      1 perl(lib)
      1 perl(List::Util)
      1 perl(Locale::gettext)
      1 perl(LWP::UserAgent)
      1 perl(MIME::Base64)
      1 perl(Net::DBus)
      1 perl(Net::FTP)
      1 perl(Number::Bytes::Human)
      1 perl(Pango)
      1 perl(Path::Class)
      1 perl(Pod::Usage)
      1 perl(POSIX)
      1 perl(Proc::Killfam)
      1 perl(Proc::Simple)
      1 perl(Readonly)
      1 perl(Shutter::App::AboutDialog)
      1 perl(Shutter::App::Autostart)
      1 perl(Shutter::App::Common)
      1 perl(Shutter::App::Directories)
      1 perl(Shutter::App::GlobalSettings)
      1 perl(Shutter::App::HelperFunctions)
      1 perl(Shutter::App::Menu)
      1 perl(Shutter::App::Notification)
      1 perl(Shutter::App::Optional::Exif)
      1 perl(Shutter::App::Options)
      1 perl(Shutter::App::ShutterNotification)
      1 perl(Shutter::App::SimpleDialogs)
      1 perl(Shutter::App::Toolbar)
      1 perl(Shutter::Geometry::Region)
      1 perl(Shutter::Pixbuf::Border)
      1 perl(Shutter::Pixbuf::Load)
      1 perl(Shutter::Pixbuf::Save)
      1 perl(Shutter::Screenshot::Error)
      1 perl(Shutter::Screenshot::History)
      1 perl(Shutter::Screenshot::ImageViewSelector)
      1 perl(Shutter::Screenshot::Main)
      1 perl(Shutter::Screenshot::SelectorAdvanced)
      1 perl(Shutter::Screenshot::SelectorAuto)
      1 perl(Shutter::Screenshot::Web)
      1 perl(Shutter::Screenshot::Window)
      1 perl(Shutter::Screenshot::WindowName)
      1 perl(Shutter::Screenshot::WindowXid)
      1 perl(Shutter::Screenshot::Workspace)
      1 perl(Shutter::Upload::FTP)
      1 perl(Shutter::Upload::Shared)
      1 perl(Sort::Naturally)
      1 perl(strict)
      1 perl(Time::HiRes)
      1 perl(URI)
      1 perl(URI::Escape)
      1 perl(URI::Split)
      1 perl(utf8)
      1 perl(warnings)
      1 perl(WebService::Dropbox)
      1 perl(WWW::Mechanize)
      1 perl(X11::Protocol::Ext::XFIXES)
      1 perl(XML::Simple)
      1 perl-Pango
      1 rpmlib(CompressedFileNames) <= 3.0.4-1
      1 rpmlib(FileDigests) <= 4.6.0-1
      1 rpmlib(PartialHardlinkSets) <= 4.0.4-1
      1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
      1 rpmlib(PayloadIsZstd) <= 5.4.18-1
      1 tango-icon-theme
TODO: Do not explicitly run-require perl(GooCanvas2::CairoTypes) and perl(Gtk3::ImageView). They are found automatically.
FIX: Do not run-require perl-Pango. It is found as perl(Pango) automatically.

$ rpm -q --provides -p ../RPMS/noarch/shutter-0.98-3.fc36.noarch.rpm  | sort -f | uniq -c 
      1 application()
      1 application(shutter.desktop)
      1 metainfo()
      1 metainfo(shutter.appdata.xml)
      1 mimehandler(image/bmp)
      1 mimehandler(image/gif)
      1 mimehandler(image/jpeg)
      1 mimehandler(image/png)
      1 mimehandler(image/svg+xml)
      1 mimehandler(image/tiff)
      1 mimehandler(image/x-bmp)
      1 mimehandler(image/x-ico)
      1 mimehandler(image/x-pcx)
      1 mimehandler(image/x-png)
      1 mimehandler(image/x-tga)
      1 mimehandler(image/xpm)
      1 perl(Gtk3::IconSize)
      1 perl(Shutter::App::AboutDialog)
      1 perl(Shutter::App::Autostart)
      1 perl(Shutter::App::Common)
      1 perl(Shutter::App::Directories)
      1 perl(Shutter::App::GlobalSettings)
      1 perl(Shutter::App::HelperFunctions)
      1 perl(Shutter::App::Menu)
      1 perl(Shutter::App::Notification)
      1 perl(Shutter::App::Optional::Exif)
      1 perl(Shutter::App::Options)
      1 perl(Shutter::App::ShutterNotification)
      1 perl(Shutter::App::SimpleDialogs)
      1 perl(Shutter::App::Toolbar)
      1 perl(Shutter::Draw::DrawingTool)
      1 perl(Shutter::Geometry::Region)
      1 perl(Shutter::Pixbuf::Border)
      1 perl(Shutter::Pixbuf::Load)
      1 perl(Shutter::Pixbuf::Save)
      1 perl(Shutter::Screenshot::Error)
      1 perl(Shutter::Screenshot::History)
      1 perl(Shutter::Screenshot::ImageViewSelector)
      1 perl(Shutter::Screenshot::Main)
      1 perl(Shutter::Screenshot::SelectorAdvanced)
      1 perl(Shutter::Screenshot::SelectorAuto)
      1 perl(Shutter::Screenshot::Web)
      1 perl(Shutter::Screenshot::Window)
      1 perl(Shutter::Screenshot::WindowName)
      1 perl(Shutter::Screenshot::WindowXid)
      1 perl(Shutter::Screenshot::Workspace)
      1 perl(Shutter::Upload::FTP)
      1 perl(Shutter::Upload::Shared)
      1 shutter = 0.98-3.fc36
FIX: Do not provide perl(Gtk3::IconSize). It's a private redefinition.

$ resolvedeps rawhide ../RPMS/noarch/shutter-0.98-3.fc36.noarch.rpm  
Binary dependencies are resolvable. Ok.

The package builds in Fedora 36 (https://koji.fedoraproject.org/koji/taskinfo?taskID=74083215). Ok.

Otherwise the package is in line with Fedora and Perl packaging guidelines.

Please correct the FIX items, consider fixing TODO items, and provide an updated spec file.
Resolution: NOT approved.

Comment 6 MartinKG 2021-08-19 09:19:47 UTC
Spec URL: https://martinkg.fedorapeople.org/Review/SPECS/shutter.spec
SRPM URL: https://martinkg.fedorapeople.org/Review/SRPMS/shutter-0.98-4.fc35.src.rpm

%changelog
* Thu Aug 19 2021 Martin Gansser <martinkg> - 0.98-4
- Move %%global __provides_exclude_from above the description section
- Add share/shutter/resources/icons/drawing_tool/cursor files are GPLv2+
- List the licenses of all the packaged files into the License section
- Creating symbolic links (ln -s) instead of hard links in the %%install section
- Do not explicitly run-require perl(GooCanvas2::CairoTypes) and perl(Gtk3::ImageView)
  they are found automatically.
- Do not run-require perl-Pango. It is found as perl(Pango) automatically

do not know how to fix this: FIX: Do not provide perl(Gtk3::IconSize). It's a private redefinition.

Comment 7 Petr Pisar 2021-08-19 09:55:07 UTC
TODO: Use plain "perl" instead of %{__perl} macro. First there is only one perl executable in Fedora so no need for a macro, second the macro is undefined in SRPM build root and emits warnings there, third underscored macros is internal to rpmbuild and should be avoided if possible.

$ rpmlint shutter.spec ../SRPMS/shutter-0.98-4.fc36.src.rpm ../RPMS/noarch/shutter-0.98-4.fc36.noarch.rpm 
========================================================== rpmlint session starts =========================================================
rpmlint: 2.1.0
configuration:
    /usr/lib/python3.10/site-packages/rpmlint/configdefaults.toml
    /etc/xdg/rpmlint/fedora.toml
    /etc/xdg/rpmlint/licenses.toml
    /etc/xdg/rpmlint/scoring.toml
    /etc/xdg/rpmlint/users-groups.toml
    /etc/xdg/rpmlint/warn-on-functions.toml
checks: 31, packages: 3

shutter.noarch: W: dangling-symlink /usr/share/shutter/resources/icons/drawing_tool/objects/Tango /usr/share/icons/Tango/scalable
=========================== 2 packages and 1 specfiles checked; 0 errors, 1 warnings, 0 badness; has taken 0.9 s ==========================
rpmlint is Ok.

$ rpm -q --requires -p ../RPMS/noarch/shutter-0.98-4.fc36.noarch.rpm | sort -f | uniq -c
      1 /usr/bin/bash
      1 /usr/bin/perl
      1 hicolor-icon-theme
      1 ImageMagick
      1 perl(:MODULE_COMPAT_5.34.0)
      1 perl(:VERSION) >= 5.10.1
      1 perl(base)
      1 perl(Carp::Always)
      1 perl(constant)
      1 perl(Data::Dumper)
      1 perl(diagnostics)
      1 perl(Digest::MD5)
      1 perl(Encode)
      1 perl(Encode::Locale)
      1 perl(Exporter)
      1 perl(File::Basename)
      1 perl(File::Copy)
      1 perl(File::Copy::Recursive)
      1 perl(File::Glob)
      1 perl(File::Spec)
      1 perl(File::stat)
      1 perl(File::Temp)
      1 perl(File::Which)
      1 perl(FindBin)
      1 perl(Getopt::Long)
      1 perl(Glib)
      1 perl(Glib::Object::Introspection)
      1 perl(Glib::Object::Subclass)
      1 perl(Goo::Canvas)
      1 perl(GooCanvas2)
      1 perl(GooCanvas2::CairoTypes)
      1 perl(Gtk3)
      1 perl(Gtk3::ImageView) >= 9
      1 perl(Gtk3::ImageView::Tool::Selector)
      1 perl(HTTP::Request::Common)
      1 perl(HTTP::Status)
      1 perl(Image::ExifTool)
      1 perl(Image::Magick)
      1 perl(IO::File)
      1 perl(JSON::MaybeXS)
      1 perl(lib)
      1 perl(List::Util)
      1 perl(Locale::gettext)
      1 perl(LWP::UserAgent)
      1 perl(MIME::Base64)
      1 perl(Net::DBus)
      1 perl(Net::FTP)
      1 perl(Number::Bytes::Human)
      1 perl(Pango)
      1 perl(Path::Class)
      1 perl(Pod::Usage)
      1 perl(POSIX)
      1 perl(Proc::Killfam)
      1 perl(Proc::Simple)
      1 perl(Readonly)
      1 perl(Shutter::App::AboutDialog)
      1 perl(Shutter::App::Autostart)
      1 perl(Shutter::App::Common)
      1 perl(Shutter::App::Directories)
      1 perl(Shutter::App::GlobalSettings)
      1 perl(Shutter::App::HelperFunctions)
      1 perl(Shutter::App::Menu)
      1 perl(Shutter::App::Notification)
      1 perl(Shutter::App::Optional::Exif)
      1 perl(Shutter::App::Options)
      1 perl(Shutter::App::ShutterNotification)
      1 perl(Shutter::App::SimpleDialogs)
      1 perl(Shutter::App::Toolbar)
      1 perl(Shutter::Geometry::Region)
      1 perl(Shutter::Pixbuf::Border)
      1 perl(Shutter::Pixbuf::Load)
      1 perl(Shutter::Pixbuf::Save)
      1 perl(Shutter::Screenshot::Error)
      1 perl(Shutter::Screenshot::History)
      1 perl(Shutter::Screenshot::ImageViewSelector)
      1 perl(Shutter::Screenshot::Main)
      1 perl(Shutter::Screenshot::SelectorAdvanced)
      1 perl(Shutter::Screenshot::SelectorAuto)
      1 perl(Shutter::Screenshot::Web)
      1 perl(Shutter::Screenshot::Window)
      1 perl(Shutter::Screenshot::WindowName)
      1 perl(Shutter::Screenshot::WindowXid)
      1 perl(Shutter::Screenshot::Workspace)
      1 perl(Shutter::Upload::FTP)
      1 perl(Shutter::Upload::Shared)
      1 perl(Sort::Naturally)
      1 perl(strict)
      1 perl(Time::HiRes)
      1 perl(URI)
      1 perl(URI::Escape)
      1 perl(URI::Split)
      1 perl(utf8)
      1 perl(warnings)
      1 perl(WebService::Dropbox)
      1 perl(WWW::Mechanize)
      1 perl(X11::Protocol::Ext::XFIXES)
      1 perl(XML::Simple)
      1 rpmlib(CompressedFileNames) <= 3.0.4-1
      1 rpmlib(FileDigests) <= 4.6.0-1
      1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
      1 rpmlib(PayloadIsZstd) <= 5.4.18-1
      1 tango-icon-theme
Binary requires are Ok.

> do not know how to fix this: FIX: Do not provide perl(Gtk3::IconSize). It's a private redefinition.

Add this line under a %global __provides_exclude_from line:

%global __provides_exclude %{?__provides_exclude:%{__provides_exclude}|}^perl\\(Gtk3::IconSize\\)

That appends a regular expression to __provides_exclude macro. This macro is then used by rpmbuild to remove the matching Provides.


$ resolvedeps rawhide ../RPMS/noarch/shutter-0.98-4.fc36.noarch.rpm  
Binary dependencies are resolvable. Ok.

The package builds in F36 (https://koji.fedoraproject.org/koji/taskinfo?taskID=74128360). Ok.

This package is almost perfect. Please filter perl(Gtk3::IconSize), replace the %{__perl} macro, and prove an updated spec file.

Comment 8 MartinKG 2021-08-19 11:55:44 UTC
Spec URL: https://martinkg.fedorapeople.org/Review/SPECS/shutter.spec
SRPM URL: https://martinkg.fedorapeople.org/Review/SRPMS/shutter-0.98-5.fc35.src.rpm

%changelog
* Thu Aug 19 2021 Martin Gansser <martinkg> - 0.98-5
- Use plain "perl" instead of %%{__perl} macro
- Do not provide perl(Gtk3::IconSize)

Comment 9 Petr Pisar 2021-08-19 14:49:16 UTC
$ rpmlint shutter.spec ../SRPMS/shutter-0.98-5.fc36.src.rpm ../RPMS/noarch/shutter-0.98-5.fc36.noarch.rpm 
========================================================== rpmlint session starts =========================================================
rpmlint: 2.1.0
configuration:
    /usr/lib/python3.10/site-packages/rpmlint/configdefaults.toml
    /etc/xdg/rpmlint/fedora.toml
    /etc/xdg/rpmlint/licenses.toml
    /etc/xdg/rpmlint/scoring.toml
    /etc/xdg/rpmlint/users-groups.toml
    /etc/xdg/rpmlint/warn-on-functions.toml
checks: 31, packages: 3

shutter.noarch: W: dangling-symlink /usr/share/shutter/resources/icons/drawing_tool/objects/Tango /usr/share/icons/Tango/scalable
=========================== 2 packages and 1 specfiles checked; 0 errors, 1 warnings, 0 badness; has taken 0.8 s ==========================
rpmlint is Ok.

$ rpm -q --provides -p ../RPMS/noarch/shutter-0.98-5.fc36.noarch.rpm | sort -f | uniq -c
      1 application()
      1 application(shutter.desktop)
      1 metainfo()
      1 metainfo(shutter.appdata.xml)
      1 mimehandler(image/bmp)
      1 mimehandler(image/gif)
      1 mimehandler(image/jpeg)
      1 mimehandler(image/png)
      1 mimehandler(image/svg+xml)
      1 mimehandler(image/tiff)
      1 mimehandler(image/x-bmp)
      1 mimehandler(image/x-ico)
      1 mimehandler(image/x-pcx)
      1 mimehandler(image/x-png)
      1 mimehandler(image/x-tga)
      1 mimehandler(image/xpm)
      1 perl(Shutter::App::AboutDialog)
      1 perl(Shutter::App::Autostart)
      1 perl(Shutter::App::Common)
      1 perl(Shutter::App::Directories)
      1 perl(Shutter::App::GlobalSettings)
      1 perl(Shutter::App::HelperFunctions)
      1 perl(Shutter::App::Menu)
      1 perl(Shutter::App::Notification)
      1 perl(Shutter::App::Optional::Exif)
      1 perl(Shutter::App::Options)
      1 perl(Shutter::App::ShutterNotification)
      1 perl(Shutter::App::SimpleDialogs)
      1 perl(Shutter::App::Toolbar)
      1 perl(Shutter::Draw::DrawingTool)
      1 perl(Shutter::Geometry::Region)
      1 perl(Shutter::Pixbuf::Border)
      1 perl(Shutter::Pixbuf::Load)
      1 perl(Shutter::Pixbuf::Save)
      1 perl(Shutter::Screenshot::Error)
      1 perl(Shutter::Screenshot::History)
      1 perl(Shutter::Screenshot::ImageViewSelector)
      1 perl(Shutter::Screenshot::Main)
      1 perl(Shutter::Screenshot::SelectorAdvanced)
      1 perl(Shutter::Screenshot::SelectorAuto)
      1 perl(Shutter::Screenshot::Web)
      1 perl(Shutter::Screenshot::Window)
      1 perl(Shutter::Screenshot::WindowName)
      1 perl(Shutter::Screenshot::WindowXid)
      1 perl(Shutter::Screenshot::Workspace)
      1 perl(Shutter::Upload::FTP)
      1 perl(Shutter::Upload::Shared)
      1 shutter = 0.98-5.fc36
Binary provides are Ok.

$ resolvedeps rawhide ../RPMS/noarch/shutter-0.98-5.fc36.noarch.rpm 
Binary dependencies are resolvable. Ok.

The package builds in F36 (https://koji.fedoraproject.org/koji/taskinfo?taskID=74141918). Ok.

The package is in line with Fedora and Perl packaging guidelines.
Resolution: Package APPROVED.

Comment 10 MartinKG 2021-08-19 15:43:57 UTC
Many thanks for the professional review support.


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