Bug 2018694

Summary: Review Request: clapper - 0.4.0 - GStreamer-based GNOME media player built using GJS and GTK4
Product: [Fedora] Fedora Reporter: Jonathan S. <js-fedora>
Component: Package ReviewAssignee: Vitaly <vitaly>
Status: CLOSED CURRENTRELEASE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: rawhideCC: package-review, vitaly
Target Milestone: ---Flags: vitaly: fedora-review+
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2021-11-28 23:34:40 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Jonathan S. 2021-10-30 12:52:43 UTC
Spec URL: https://nil.im/clapper.spec
SRPM URL: https://nil.im/clapper-0.4.0-1.f35.src.rpm
Description: GStreamer-based GNOME media player built using GJS and GTK4

A GNOME media player built using GJS with GTK4 toolkit. The media player uses GStreamer as a media backend and renders everything via OpenGL.

Fedora Account System Username: js

Successful Koji build: https://koji.fedoraproject.org/koji/taskinfo?taskID=78067076

This is my third package (others: RHBZ#1998755 RHBZ#1998821) and I need a sponsor. I've been active in pkgsrc previously, which I used on NetBSD and macOS, but have recently migrated my main machine to Fedora. While pkgsrc does work on Fedora, having native packages is nicer, so I want to get into packaging software I am missing for Fedora, since using a system as my main system for me also means contributing.

Comment 1 Vitaly 2021-11-13 15:51:59 UTC
1. Replace %{_datadir}/locale/ca/LC_MESSAGES with %find_lang macro.
2. %{_datadir}/metainfo -> %{_metainfodir}.
3. Add missing %doc.
4. %description should be truncated to <80 symbols per row.
5. %{_libdir}/com.github.rafostar.Clapper/ must be owned too.
6. %files devel - empty devel package can be dropped.

Comment 2 Vitaly 2021-11-13 15:52:52 UTC
I will review this package and sponsor you.

Comment 3 Vitaly 2021-11-13 16:02:14 UTC
7. Add Requires: hicolor-icon-theme.

Comment 4 Jonathan S. 2021-11-14 12:29:38 UTC
Thanks!

Updated spec: https://nil.im/clapper.spec
Updated SRPM: https://nil.im/clapper-0.4.0-1.fc35.src.rpm

Comment 5 Jonathan S. 2021-11-14 12:34:27 UTC
Still successful Koji build: https://koji.fedoraproject.org/koji/taskinfo?taskID=78846600

Comment 6 Vitaly 2021-11-14 13:45:58 UTC
> Requires:      gstreamer1

Should be removed. Already exists in autodeps as libgstreamer-1.0.so.0()(64bit).

> Requires:      gtk4

Should be removed. Already exists in autodeps as libgtk-4.so.1()(64bit).

> Requires:      libadwaita

If it needed, please add %{_isa}:
Requires:      libadwaita%{_isa}

%files
%files -f com.github.rafostar.Clapper.lang

Duplicate specifications. Remove the first one.

> %{_datadir}/icons/hicolor/scalable/apps/com.github.rafostar.Clapper.svg
> %{_datadir}/icons/hicolor/symbolic/apps/com.github.rafostar.Clapper-symbolic.svg

Can be simplified:
%{_datadir}/icons/hicolor/*/apps/*.svg

> %{_bindir}/com.github.rafostar.Clapper
> %{_bindir}/com.github.rafostar.Clapper.Daemon
> %{_bindir}/com.github.rafostar.Clapper.Remote

Can be simplified:
%{_bindir}/com.github.rafostar.Clapper*

> %{_libdir}/com.github.rafostar.Clapper/
> %{_libdir}/com.github.rafostar.Clapper/girepository-1.0/GstClapper-1.0.typelib
> %{_libdir}/com.github.rafostar.Clapper/libgstclapper-1.0.so
> %{_libdir}/com.github.rafostar.Clapper/libgstclapper-1.0.so.0
> %{_libdir}/com.github.rafostar.Clapper/libgstclapper-1.0.so.0.4.0

Should be simplified:
%{_libdir}/com.github.rafostar.Clapper/

> - Use %find_lang macro
> - Add missing %doc

You must escape all macroses in %changelog section, or they will expanded and cause different unforeseen consequences.

Use double %% to escape them: %find_lang -> %%find_lang, %doc -> %%doc or just remove them from changelog.

Comment 7 Vitaly 2021-11-14 13:52:19 UTC
> %{_datadir}/gir-1.0/GstClapper-1.0.gir

Should go to -devel. Sorry.

Use this:

%files -f com.github.rafostar.Clapper.lang
%license COPYING
%doc README.md
%{_bindir}/clapper
%{_bindir}/com.github.rafostar.Clapper*
%{_datadir}/applications/com.github.rafostar.Clapper.desktop
%{_datadir}/com.github.rafostar.Clapper/
%{_datadir}/glib-2.0/schemas/com.github.rafostar.Clapper.gschema.xml
%{_datadir}/icons/hicolor/*/apps/*.svg
%{_datadir}/mime/packages/com.github.rafostar.Clapper.xml
%dir %{_libdir}/com.github.rafostar.Clapper/
%{_libdir}/com.github.rafostar.Clapper/libgstclapper-1.0.so.0*
%{_metainfodir}/com.github.rafostar.Clapper.metainfo.xml

%files devel
%{_libdir}/com.github.rafostar.Clapper/girepository-1.0/GstClapper-1.0.typelib
%{_libdir}/com.github.rafostar.Clapper/libgstclapper-1.0.so
%{_datadir}/gir-1.0/GstClapper-1.0.gir

Comment 8 Vitaly 2021-11-14 13:54:20 UTC
Fixed version:

%files -f com.github.rafostar.Clapper.lang
%license COPYING
%doc README.md
%{_bindir}/clapper
%{_bindir}/com.github.rafostar.Clapper*
%{_datadir}/applications/com.github.rafostar.Clapper.desktop
%{_datadir}/com.github.rafostar.Clapper/
%{_datadir}/glib-2.0/schemas/com.github.rafostar.Clapper.gschema.xml
%{_datadir}/icons/hicolor/*/apps/*.svg
%{_datadir}/mime/packages/com.github.rafostar.Clapper.xml
%dir %{_libdir}/com.github.rafostar.Clapper/
%{_libdir}/com.github.rafostar.Clapper/libgstclapper-1.0.so.0*
%{_metainfodir}/com.github.rafostar.Clapper.metainfo.xml

%files devel
%{_libdir}/com.github.rafostar.Clapper/girepository-1.0/
%{_libdir}/com.github.rafostar.Clapper/libgstclapper-1.0.so
%dir %{_datadir}/gir-1.0/
%{_datadir}/gir-1.0/GstClapper-1.0.gir

Comment 9 Jonathan S. 2021-11-14 16:59:15 UTC
Thanks!

Updated spec: https://nil.im/clapper.spec
Updated SRPM: https://nil.im/clapper-0.4.0-1.fc35.src.rpm
Still successful Koji build: https://koji.fedoraproject.org/koji/taskinfo?taskID=78860054

Comment 10 Vitaly 2021-11-14 17:15:42 UTC
1. Please fix %changelog section:

> * Sun Nov 14 2021 Jonathan Schleifer <js>
> - Spec file improved as per review

> * Sat Oct 30 2021 Jonathan Schleifer <js>
> - Initial release

* Sun Nov 14 2021 Jonathan Schleifer <js> - 0.4.0-1
- Initial release
- Spec file improved as per review

2. Please add %check section after %install:

%check
appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*.xml
desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop

Comment 11 Jonathan S. 2021-11-14 17:24:32 UTC
Thanks!

Updated spec: https://nil.im/clapper.spec
Updated SRPM: https://nil.im/clapper-0.4.0-1.fc35.src.rpm

Comment 12 Vitaly 2021-11-14 17:32:57 UTC
Package Review
==============

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



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

C/C++:
[x]: Provides: bundled(gnulib) in place as required.
[x]: Package does not contain kernel modules.
[x]: Package contains no static executables.
[x]: If your application is a C or C++ application you must list a
     BuildRequires against gcc, gcc-c++ or clang.
[x]: Header files in -devel subpackage, if present.
[x]: Package does not contain any libtool archives (.la)
[x]: Rpath absent or only used for internal libs.
[x]: Development (unversioned) .so files in -devel subpackage, if present.

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.
[x]: License field in the package spec file matches the actual license.
     Note: There is no build directory. Running licensecheck on vanilla
     upstream sources. No licenses found. Please check the source files for
     licenses manually.
[x]: License file installed when any subpackage combination is installed.
[x]: Package must own all directories that it creates.
     Note: Directories without known owners: /usr/share/mime/packages,
     /usr/share/mime
[x]: Package does not own files or directories owned by other packages.
[x]: %build honors applicable compiler flags or justifies otherwise.
[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[x]: Sources contain only permissible code or content.
[x]: Development files must be in a -devel package
[x]: Package uses nothing in %doc for runtime.
[x]: The spec file handles locales properly.
[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.
[x]: 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.
[x]: 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. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 10240 bytes in 1 files.
[x]: Package complies to the Packaging Guidelines
[x]: Package successfully compiles and builds into binary rpms on at least
     one supported primary architecture.
[x]: Package installs properly.
[x]: Rpmlint is run on all rpms the build produces.
     Note: There are rpmlint messages (see attachment).
[x]: If (and only if) the source package includes the text of the
     license(s) in its own file, then that file, containing the text of the
     license(s) for the package is included in %license.
[x]: Package requires other packages for directories it uses.
[x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT
[x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) 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-install or
     desktop-file-validate if there is such a file.
[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.
[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

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

Generic:
[x]: If the source package does not include license text(s) as a separate
     file from upstream, the packager SHOULD query upstream to include it.
[x]: Final provides and requires are sane (see attachments).
[x]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[-]: Sources are verified with gpgverify first in %prep if upstream
     publishes signatures.
     Note: gpgverify is not used.
[x]: Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[x]: Package should compile and build into binary rpms on all supported
     architectures.
[x]: %check is present and all tests pass.
[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 with rm -rf %{buildroot} (or
     $RPM_BUILD_ROOT)
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: Fully versioned dependency in subpackages if applicable.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[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.

===== EXTRA items =====

Generic:
[x]: Rpmlint is run on debuginfo package(s).
     Note: No rpmlint messages.
[x]: Rpmlint is run on all installed packages.
     Note: There are rpmlint messages (see attachment).
[x]: Large data in /usr/share should live in a noarch subpackage if package
     is arched.
[x]: Spec file according to URL is the same as in SRPM.


Rpmlint
-------
Checking: clapper-0.4.0-1.fc36.x86_64.rpm
          clapper-devel-0.4.0-1.fc36.x86_64.rpm
          clapper-debuginfo-0.4.0-1.fc36.x86_64.rpm
          clapper-debugsource-0.4.0-1.fc36.x86_64.rpm
          clapper-0.4.0-1.fc36.src.rpm
clapper.x86_64: E: explicit-lib-dependency libadwaita(x86-64)
clapper.x86_64: W: no-manual-page-for-binary clapper
clapper.x86_64: W: no-manual-page-for-binary com.github.rafostar.Clapper
clapper.x86_64: W: no-manual-page-for-binary com.github.rafostar.Clapper.Daemon
clapper.x86_64: W: no-manual-page-for-binary com.github.rafostar.Clapper.Remote
clapper-devel.x86_64: W: only-non-binary-in-usr-lib
clapper-devel.x86_64: W: no-documentation
5 packages and 0 specfiles checked; 1 errors, 6 warnings.




Rpmlint (debuginfo)
-------------------
Checking: clapper-debuginfo-0.4.0-1.fc36.x86_64.rpm
1 packages and 0 specfiles checked; 0 errors, 0 warnings.





Rpmlint (installed packages)
----------------------------
Cannot parse rpmlint output:


Source checksums
----------------
https://github.com/Rafostar/clapper/archive/0.4.0/clapper-0.4.0.tar.gz :
  CHECKSUM(SHA256) this package     : 4c2d96f714dfe9e09d05523d2a965a496d9cd1874221d4c53802a19f1f844299
  CHECKSUM(SHA256) upstream package : 4c2d96f714dfe9e09d05523d2a965a496d9cd1874221d4c53802a19f1f844299


Requires
--------
clapper (rpmlib, GLIBC filtered):
    /usr/bin/gjs
    gjs
    hicolor-icon-theme
    libGLESv2.so.2()(64bit)
    libadwaita(x86-64)
    libc.so.6()(64bit)
    libgio-2.0.so.0()(64bit)
    libglib-2.0.so.0()(64bit)
    libgobject-2.0.so.0()(64bit)
    libgstaudio-1.0.so.0()(64bit)
    libgstgl-1.0.so.0()(64bit)
    libgstpbutils-1.0.so.0()(64bit)
    libgstreamer-1.0.so.0()(64bit)
    libgsttag-1.0.so.0()(64bit)
    libgstvideo-1.0.so.0()(64bit)
    libgtk-4.so.1()(64bit)
    rtld(GNU_HASH)

clapper-devel (rpmlib, GLIBC filtered):
    clapper(x86-64)
    libgstclapper-1.0.so.0()(64bit)

clapper-debuginfo (rpmlib, GLIBC filtered):

clapper-debugsource (rpmlib, GLIBC filtered):



Provides
--------
clapper:
    application()
    application(com.github.rafostar.Clapper.desktop)
    clapper
    clapper(x86-64)
    libgstclapper-1.0.so.0()(64bit)
    metainfo()
    metainfo(com.github.rafostar.Clapper.metainfo.xml)
    mimehandler(application/claps)
    mimehandler(application/mpeg4-iod)
    mimehandler(application/mpeg4-muxcodetable)
    mimehandler(application/mxf)
    mimehandler(application/ogg)
    mimehandler(application/ram)
    mimehandler(application/sdp)
    mimehandler(application/streamingmedia)
    mimehandler(application/vnd.apple.mpegurl)
    mimehandler(application/vnd.ms-asf)
    mimehandler(application/vnd.rn-realmedia)
    mimehandler(application/vnd.rn-realmedia-vbr)
    mimehandler(application/x-extension-m4a)
    mimehandler(application/x-extension-mp4)
    mimehandler(application/x-flac)
    mimehandler(application/x-flash-video)
    mimehandler(application/x-matroska)
    mimehandler(application/x-ogg)
    mimehandler(application/x-streamingmedia)
    mimehandler(audio/3gpp)
    mimehandler(audio/3gpp2)
    mimehandler(audio/aac)
    mimehandler(audio/ac3)
    mimehandler(audio/amr)
    mimehandler(audio/amr-wb)
    mimehandler(audio/basic)
    mimehandler(audio/dv)
    mimehandler(audio/eac3)
    mimehandler(audio/flac)
    mimehandler(audio/m4a)
    mimehandler(audio/midi)
    mimehandler(audio/mp1)
    mimehandler(audio/mp2)
    mimehandler(audio/mp3)
    mimehandler(audio/mp4)
    mimehandler(audio/mpeg)
    mimehandler(audio/mpegurl)
    mimehandler(audio/mpg)
    mimehandler(audio/ogg)
    mimehandler(audio/opus)
    mimehandler(audio/scpls)
    mimehandler(audio/vnd.dolby.heaac.1)
    mimehandler(audio/vnd.dolby.heaac.2)
    mimehandler(audio/vnd.dolby.mlp)
    mimehandler(audio/vnd.dts)
    mimehandler(audio/vnd.dts.hd)
    mimehandler(audio/vnd.rn-realaudio)
    mimehandler(audio/wav)
    mimehandler(audio/webm)
    mimehandler(audio/x-aac)
    mimehandler(audio/x-aiff)
    mimehandler(audio/x-ape)
    mimehandler(audio/x-flac)
    mimehandler(audio/x-gsm)
    mimehandler(audio/x-it)
    mimehandler(audio/x-m4a)
    mimehandler(audio/x-matroska)
    mimehandler(audio/x-mod)
    mimehandler(audio/x-mp1)
    mimehandler(audio/x-mp2)
    mimehandler(audio/x-mp3)
    mimehandler(audio/x-mpeg)
    mimehandler(audio/x-mpegurl)
    mimehandler(audio/x-mpg)
    mimehandler(audio/x-ms-asf)
    mimehandler(audio/x-ms-wma)
    mimehandler(audio/x-musepack)
    mimehandler(audio/x-pn-aiff)
    mimehandler(audio/x-pn-au)
    mimehandler(audio/x-pn-realaudio)
    mimehandler(audio/x-pn-wav)
    mimehandler(audio/x-real-audio)
    mimehandler(audio/x-realaudio)
    mimehandler(audio/x-s3m)
    mimehandler(audio/x-scpls)
    mimehandler(audio/x-shorten)
    mimehandler(audio/x-speex)
    mimehandler(audio/x-tta)
    mimehandler(audio/x-vorbis)
    mimehandler(audio/x-vorbis+ogg)
    mimehandler(audio/x-wav)
    mimehandler(audio/x-wavpack)
    mimehandler(audio/x-xm)
    mimehandler(video/3gp)
    mimehandler(video/3gpp)
    mimehandler(video/3gpp2)
    mimehandler(video/divx)
    mimehandler(video/dv)
    mimehandler(video/fli)
    mimehandler(video/flv)
    mimehandler(video/mp2t)
    mimehandler(video/mp4)
    mimehandler(video/mp4v-es)
    mimehandler(video/mpeg)
    mimehandler(video/mpeg-system)
    mimehandler(video/msvideo)
    mimehandler(video/ogg)
    mimehandler(video/quicktime)
    mimehandler(video/vnd.mpegurl)
    mimehandler(video/vnd.rn-realvideo)
    mimehandler(video/webm)
    mimehandler(video/x-avi)
    mimehandler(video/x-flc)
    mimehandler(video/x-fli)
    mimehandler(video/x-flv)
    mimehandler(video/x-m4v)
    mimehandler(video/x-matroska)
    mimehandler(video/x-mpeg)
    mimehandler(video/x-mpeg-system)
    mimehandler(video/x-mpeg2)
    mimehandler(video/x-ms-asf)
    mimehandler(video/x-ms-wm)
    mimehandler(video/x-ms-wmv)
    mimehandler(video/x-ms-wmx)
    mimehandler(video/x-msvideo)
    mimehandler(video/x-nsv)
    mimehandler(video/x-ogm+ogg)
    mimehandler(video/x-theora)
    mimehandler(video/x-theora+ogg)
    mimehandler(x-content/audio-cdda)
    mimehandler(x-content/audio-player)
    mimehandler(x-content/video-dvd)
    mimehandler(x-scheme-handler/mms)
    mimehandler(x-scheme-handler/mmsh)
    mimehandler(x-scheme-handler/rtmp)
    mimehandler(x-scheme-handler/rtp)
    mimehandler(x-scheme-handler/rtsp)

clapper-devel:
    clapper-devel
    clapper-devel(x86-64)

clapper-debuginfo:
    clapper-debuginfo
    clapper-debuginfo(x86-64)
    debuginfo(build-id)
    libgstclapper-1.0.so.0.4.0-0.4.0-1.fc36.x86_64.debug()(64bit)

clapper-debugsource:
    clapper-debugsource
    clapper-debugsource(x86-64)



Generated by fedora-review 0.7.6 (b083f91) last change: 2020-11-10
Command line :/usr/bin/fedora-review -b 2018694
Buildroot used: fedora-rawhide-x86_64
Active plugins: C/C++, Shell-api, Generic
Disabled plugins: R, Java, Python, Haskell, Ocaml, SugarActivity, fonts, PHP, Perl
Disabled flags: EPEL6, EPEL7, DISTTAG, BATCH, EXARCH

Comment 13 Vitaly 2021-11-14 17:38:27 UTC
> License:       GPLv3

License:       GPLv3+ and LGPLv2+


LGTM now. Package approved.

Please update license field before importing package to Fedora SCM. I will sponsor you and send getting started instructions shortly.

Comment 14 Vitaly 2021-11-14 17:39:46 UTC
Unblocking sponsor request ticket.

Comment 15 Gwyn Ciesla 2021-11-15 23:01:10 UTC
(fedscm-admin):  The Pagure repository was created at https://src.fedoraproject.org/rpms/clapper

Comment 16 Jonathan S. 2021-11-28 23:34:40 UTC
This is in rawhide, f34 and f35 now.