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.
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.
I will review this package and sponsor you.
7. Add Requires: hicolor-icon-theme.
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=78846600
> 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.
> %{_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
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
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
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
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
> 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.
Unblocking sponsor request ticket.
(fedscm-admin): The Pagure repository was created at https://src.fedoraproject.org/rpms/clapper
This is in rawhide, f34 and f35 now.