Bug 4892

Summary: Review request: retroarch - Reference frontend for the libretro API
Product: Package Reviews Reporter: David Demelier <markand>
Component: Review RequestAssignee: RPM Fusion Package Review <rpmfusion-package-review>
Status: RESOLVED WONTFIX    
Severity: enhancement CC: leigh123linux, musuruan, rpmfusion-package-review, vitaly
Priority: P1 Flags: vitaly: fedora-review?
Version: Current   
Hardware: x86_64   
OS: GNU/Linux   
namespace: free

Description David Demelier 2018-05-04 15:09:02 CEST
Hi,

This is my first RPM Fusion package.

RetroArch is not eligible for inclusion in Fedora because:

  1. It depends on ffmpeg,
  2. It has a lot of assets / libretro cores that are open source but in a non-commercial clause,
  3. Some libretro core also depend on ffmpeg.

What is RetroArch?

RetroArch is the reference frontend for the libretro API. Popular examples
of implementations for this API includes videogame system emulators and
game engines, but also more generalized 3D programs. These programs are
instantiated as dynamic libraries. We refer to these as "libretro cores".

$ rpmlint retroarch.spec
SPECS/retroarch.spec:74: W: configure-without-libdir-spec
SPECS/retroarch.spec:141: W: macro-in-%changelog %{_libdir}
SPECS/retroarch.spec:142: W: macro-in-%changelog %{_datadir}
SPECS/retroarch.spec:143: W: macro-in-%changelog %{_datadir}
0 packages and 1 specfiles checked; 0 errors, 4 warnings.

The home made configure file do not require installation of any library, other warnings are a bit useless to me.

$ rpmlint retroarch-1.7.2-1.fc28.x86_64.rpm
retroarch.x86_64: E: explicit-lib-dependency alsa-lib
retroarch.x86_64: E: explicit-lib-dependency bzip2-libs
retroarch.x86_64: E: explicit-lib-dependency libX11
retroarch.x86_64: E: explicit-lib-dependency libXau
retroarch.x86_64: E: explicit-lib-dependency libXext
retroarch.x86_64: E: explicit-lib-dependency libXxf86vm
retroarch.x86_64: E: explicit-lib-dependency libglvnd-egl
retroarch.x86_64: E: explicit-lib-dependency libglvnd-glx
retroarch.x86_64: E: explicit-lib-dependency libpng
retroarch.x86_64: E: explicit-lib-dependency libv4l
retroarch.x86_64: E: explicit-lib-dependency libxcb
retroarch.x86_64: E: explicit-lib-dependency pulseaudio-libs
retroarch.x86_64: E: explicit-lib-dependency systemd-libs
retroarch.x86_64: E: explicit-lib-dependency zlib
retroarch.x86_64: W: spelling-error Summary(en_US) frontend -> fronted, front end, front-end
retroarch.x86_64: W: spelling-error Summary(en_US) libretro -> libretto, lib retro, lib-retro
retroarch.x86_64: W: spelling-error %description -l en_US frontend -> fronted, front end, front-end
retroarch.x86_64: W: spelling-error %description -l en_US libretro -> libretto, lib retro, lib-retro
retroarch.x86_64: W: spelling-error %description -l en_US videogame -> video game, video-game, ideogram
retroarch.x86_64: W: no-version-in-last-changelog
retroarch.x86_64: W: non-conffile-in-etc /etc/retroarch.cfg
1 packages and 0 specfiles checked; 14 errors, 7 warnings.

I can't understand the problem with dependencies.

SPEC: http://markand.fr/static/rpms/retroarch.spec
SRPM: http://markand.fr/static/rpms/retroarch-1.7.2-1.fc28.src.rpm

I don't have a sponsor yet.
Comment 1 leigh scott 2018-05-09 10:12:33 CEST
Remove all the requires as rpm autorequires does it


Requires:       SDL2
Requires:       alsa-lib
Requires:       bzip2-libs
Requires:       ffmpeg
Requires:       freetype
Requires:       libX11
Requires:       libXau
Requires:       libXext
Requires:       libXxf86vm
Requires:       libglvnd-egl
Requires:       libglvnd-glx
Requires:       libpng
Requires:       libv4l
Requires:       libxcb
Requires:       mesa-libGL
Requires:       mesa-libgbm
Requires:       mesa-libwayland-egl
Requires:       pulseaudio-libs
Requires:       systemd-libs
Requires:       zlib


It will fix these rpmlint errors which are 'must fix'

retroarch.x86_64: E: explicit-lib-dependency alsa-lib
retroarch.x86_64: E: explicit-lib-dependency bzip2-libs
retroarch.x86_64: E: explicit-lib-dependency libX11
retroarch.x86_64: E: explicit-lib-dependency libXau
retroarch.x86_64: E: explicit-lib-dependency libXext
retroarch.x86_64: E: explicit-lib-dependency libXxf86vm
retroarch.x86_64: E: explicit-lib-dependency libglvnd-egl
retroarch.x86_64: E: explicit-lib-dependency libglvnd-glx
retroarch.x86_64: E: explicit-lib-dependency libpng
retroarch.x86_64: E: explicit-lib-dependency libv4l
retroarch.x86_64: E: explicit-lib-dependency libxcb
retroarch.x86_64: E: explicit-lib-dependency pulseaudio-libs
retroarch.x86_64: E: explicit-lib-dependency systemd-libs
retroarch.x86_64: E: explicit-lib-dependency zlib


Remove the extension from the man files

from

%{_mandir}/man6/retroarch-cg2glsl.6.gz
%{_mandir}/man6/retroarch.6.gz

to

%{_mandir}/man6/retroarch-cg2glsl.6.*
%{_mandir}/man6/retroarch.6.*



Package contains a desktop file which must be validated


%{_datadir}/applications/retroarch.desktop


see https://fedoraproject.org/wiki/Packaging:Guidelines#Desktop_files


These files aren't installed properly

change

%{_docdir}/retroarch/COPYING
%{_docdir}/retroarch/README.md


to

%doc README.md
%license COPYING


You have also missed requires on the sub-packages, shouldn't they require retroarch.
Currently %{_libdir}/retroarch/ is unowned, the main package should provide and own the directory


%files
%doc README.md
%license COPYING
%dir %{_libdir}/retroarch/
%{_bindir}/retroarch
%{_bindir}/retroarch-cg2glsl
%{_datadir}/applications/retroarch.desktop
%{_datadir}/pixmaps/retroarch.svg
%{_docdir}/retroarch/COPYING
%{_docdir}/retroarch/README.md
%{_mandir}/man6/retroarch-cg2glsl.6.*
%{_mandir}/man6/retroarch.6.*
%{_sysconfdir}/retroarch.cfg



%package filters-audio
Summary: Reference frontend for the libretro API (audio filters)
Requires: %{name}%{?_isa} = %{version}-%{release}

%description filters-audio
Additional audio filters.

%package filters-video
Summary: Reference frontend for the libretro API (video filters)
Requires: %{name}%{?_isa} = %{version}-%{release}

%description filters-video
Additional video filters.
Comment 2 leigh scott 2018-05-09 10:16:53 CEST
Also changelog must be in correct format

%changelog
* Fri May 04 2018 David Demelier <markand@malikanai.fr> - 1.7.2-1
- Separate filters from main package.
Comment 3 David Demelier 2018-05-09 11:02:53 CEST
Thank for the review, I think I have covered many of the comments.

Here's the v2:

SPEC: http://markand.fr/static/rpms/v2/retroarch.spec
SRPM: http://markand.fr/static/rpms/v2/retroarch-1.7.2-1.fc28.src.rpm

Regards.
Comment 4 leigh scott 2018-05-09 11:11:49 CEST
(In reply to David Demelier from comment #3)
> Thank for the review, I think I have covered many of the comments.
> 
> Here's the v2:
> 
> SPEC: http://markand.fr/static/rpms/v2/retroarch.spec
> SRPM: http://markand.fr/static/rpms/v2/retroarch-1.7.2-1.fc28.src.rpm
> 
> Regards.

I missed these in files, please remove

%{_docdir}/retroarch/COPYING
%{_docdir}/retroarch/README.md
Comment 5 Andrea Musuruane 2018-05-09 11:13:31 CEST
(In reply to leigh scott from comment #1)
> Remove the extension from the man files
> 
> from
> 
> %{_mandir}/man6/retroarch-cg2glsl.6.gz
> %{_mandir}/man6/retroarch.6.gz
> 
> to
> 
> %{_mandir}/man6/retroarch-cg2glsl.6.*
> %{_mandir}/man6/retroarch.6.*

This is not correct. The correct syntax is "%{_mandir}/man6/manpage.6*":
https://fedoraproject.org/wiki/Packaging:Guidelines#Manpages

Thus man pages could be installed uncompressed or compressed with any compression method RPM will like.
Comment 6 David Demelier 2018-05-09 11:24:34 CEST
(In reply to leigh scott from comment #4)
> (In reply to David Demelier from comment #3)
> > Thank for the review, I think I have covered many of the comments.
> > 
> > Here's the v2:
> > 
> > SPEC: http://markand.fr/static/rpms/v2/retroarch.spec
> > SRPM: http://markand.fr/static/rpms/v2/retroarch-1.7.2-1.fc28.src.rpm
> > 
> > Regards.
> 
> I missed these in files, please remove
> 
> %{_docdir}/retroarch/COPYING
> %{_docdir}/retroarch/README.md

If I remove those, I get rpmbuild telling that the files are installed but not listed:

error: Installed (but unpackaged) file(s) found:
   /usr/share/doc/retroarch/COPYING

Should I keep them or remove them at %install step?
Comment 7 leigh scott 2018-05-22 09:56:57 CEST
(In reply to David Demelier from comment #6)
> (In reply to leigh scott from comment #4)
> > (In reply to David Demelier from comment #3)
> > > Thank for the review, I think I have covered many of the comments.
> > > 
> > > Here's the v2:
> > > 
> > > SPEC: http://markand.fr/static/rpms/v2/retroarch.spec
> > > SRPM: http://markand.fr/static/rpms/v2/retroarch-1.7.2-1.fc28.src.rpm
> > > 
> > > Regards.
> > 
> > I missed these in files, please remove
> > 
> > %{_docdir}/retroarch/COPYING
> > %{_docdir}/retroarch/README.md
> 
> If I remove those, I get rpmbuild telling that the files are installed but
> not listed:
> 
> error: Installed (but unpackaged) file(s) found:
>    /usr/share/doc/retroarch/COPYING
> 
> Should I keep them or remove them at %install step?

Yes delete it and let %doc install it instead


    %{buildroot}%{_sysconfdir}/retroarch.cfg


# Don't install COPYING as doc should do it
rm %{buildroot}%{_docdir}/retroarch/COPYING

%files
%doc README.md
%license COPYING
%dir %{_libdir}/retroarch/
%{_bindir}/retroarch
%{_bindir}/retroarch-cg2glsl
%{_datadir}/applications/retroarch.desktop
%{_datadir}/pixmaps/retroarch.svg
%{_mandir}/man6/retroarch-cg2glsl.6.*
%{_mandir}/man6/retroarch.6.*
%{_sysconfdir}/retroarch.cfg
Comment 9 Vitaly 2018-07-18 14:37:30 CEST
Remove this rows:

%set_build_flags
./configure             \
    --prefix=/usr       \
    --disable-cg        \
    --disable-jack      \
    --disable-sdl       \
    --enable-ffmpeg

Use this:
%configure --disable-cg        \
    --disable-jack      \
    --disable-sdl       \
    --enable-ffmpeg

This row %dir %{_libdir}/retroarch/ should be replaced with
%{_libdir}/retroarch

All retroarch names can be replaced to %{name} macro.
Comment 10 David Demelier 2018-07-19 12:25:08 CEST
No, you can't use %configure because it's a custom script and it does not understand all parameters from the macro:

+ ./configure --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --program-prefix= --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --prefix=/usr --disable-cg --disable-jack --disable-sdl --enable-ffmpeg
Checking operating system ... Linux 
Unknown option --program-prefix=

That's why there was %set_build_flags
Comment 12 Vitaly 2018-07-19 16:23:54 CEST
Package Review
==============

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

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

C/C++:
[x]: Package does not contain kernel modules.
[x]: Package contains no static executables.
[x]: Development (unversioned) .so files in -devel subpackage, if present.
     Note: Unversioned so-files in private %_libdir subdirectory (see
     attachment). Verify they are not in ld path.
[x]: Package does not contain any libtool archives (.la)
[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.
[x]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses
     found: "GPL", "BSD (3 clause)", "LGPL (v2.1)", "ISC", "*No copyright*
     MIT/X11 (BSD like)", "*No copyright* Apache (v2.0)", "GFDL GPL", "LGPL
     (v2 or later)", "GPL (v3 or later)", "zlib/libpng", "GPL (v2 or later)
     (with incorrect FSF address)", "BSD (2 clause)", "Apache (v2.0)", "GPL
     (v2 or later)", "*No copyright* GPL (v2)", "MIT/X11 (BSD like)", "BSD
     (3 clause) GPL (v3 or later)", "*No copyright* LGPL", "GPL (v3 or
     later) (with incorrect FSF address)", "NTP (legal disclaimer)", "BSD
     (unspecified)", "*No copyright* Public domain", "Unknown or
     generated", "*No copyright* GPL (v3 or later)", "LGPL (v2.1 or
     later)", "GPL (v2)". 3731 files have unknown license. Detailed output
     of licensecheck in /home/vitaly/review-retroarch/licensecheck.txt
[x]: License file installed when any subpackage combination is installed.
[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]: 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 20480 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 must own all directories that it creates.
[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 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]: Fully versioned dependency in subpackages if applicable.
[x]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[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]: 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: retroarch-1.7.2-1.fc28.x86_64.rpm
          retroarch-filters-audio-1.7.2-1.fc28.x86_64.rpm
          retroarch-filters-video-1.7.2-1.fc28.x86_64.rpm
          retroarch-debuginfo-1.7.2-1.fc28.x86_64.rpm
          retroarch-debugsource-1.7.2-1.fc28.x86_64.rpm
          retroarch-1.7.2-1.fc28.src.rpm
retroarch.x86_64: W: spelling-error Summary(en_US) frontend -> fronted, front end, front-end
retroarch.x86_64: W: spelling-error Summary(en_US) libretro -> libretto, lib retro, lib-retro
retroarch.x86_64: W: spelling-error %description -l en_US frontend -> fronted, front end, front-end
retroarch.x86_64: W: spelling-error %description -l en_US libretro -> libretto, lib retro, lib-retro
retroarch.x86_64: W: spelling-error %description -l en_US videogame -> video game, video-game, ideogram
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/chorus.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/crystalizer.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/echo.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/eq.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/iir.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/panning.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/phaser.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/reverb.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/tremolo.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/vibrato.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/wahwah.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/2xbr.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/2xsai.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/blargg_ntsc_snes.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/darken.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/epx.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/lq2x.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/phosphor2x.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/scale2x.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/super2xsai.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/supereagle.so
retroarch.x86_64: W: non-conffile-in-etc /etc/retroarch.cfg
retroarch-filters-audio.x86_64: W: spelling-error Summary(en_US) frontend -> fronted, front end, front-end
retroarch-filters-audio.x86_64: W: spelling-error Summary(en_US) libretro -> libretto, lib retro, lib-retro
retroarch-filters-audio.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/chorus.so
retroarch-filters-audio.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/crystalizer.so
retroarch-filters-audio.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/echo.so
retroarch-filters-audio.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/eq.so
retroarch-filters-audio.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/iir.so
retroarch-filters-audio.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/panning.so
retroarch-filters-audio.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/phaser.so
retroarch-filters-audio.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/reverb.so
retroarch-filters-audio.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/tremolo.so
retroarch-filters-audio.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/vibrato.so
retroarch-filters-audio.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/wahwah.so
retroarch-filters-audio.x86_64: W: no-documentation
retroarch-filters-video.x86_64: W: spelling-error Summary(en_US) frontend -> fronted, front end, front-end
retroarch-filters-video.x86_64: W: spelling-error Summary(en_US) libretro -> libretto, lib retro, lib-retro
retroarch-filters-video.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/2xbr.so
retroarch-filters-video.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/2xsai.so
retroarch-filters-video.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/blargg_ntsc_snes.so
retroarch-filters-video.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/darken.so
retroarch-filters-video.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/epx.so
retroarch-filters-video.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/lq2x.so
retroarch-filters-video.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/phosphor2x.so
retroarch-filters-video.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/scale2x.so
retroarch-filters-video.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/super2xsai.so
retroarch-filters-video.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/supereagle.so
retroarch-filters-video.x86_64: W: no-documentation
retroarch.src: W: spelling-error Summary(en_US) frontend -> fronted, front end, front-end
retroarch.src: W: spelling-error Summary(en_US) libretro -> libretto, lib retro, lib-retro
retroarch.src: W: spelling-error %description -l en_US frontend -> fronted, front end, front-end
retroarch.src: W: spelling-error %description -l en_US libretro -> libretto, lib retro, lib-retro
retroarch.src: W: spelling-error %description -l en_US videogame -> video game, video-game, ideogram
retroarch.src:59: W: configure-without-libdir-spec
6 packages and 0 specfiles checked; 0 errors, 60 warnings.




Rpmlint (debuginfo)
-------------------
Checking: retroarch-debuginfo-1.7.2-1.fc28.x86_64.rpm
1 packages and 0 specfiles checked; 0 errors, 0 warnings.





Rpmlint (installed packages)
----------------------------
sh: /usr/bin/python: No such file or directory
retroarch-filters-audio.x86_64: W: spelling-error Summary(en_US) frontend -> fronted, front end, front-end
retroarch-filters-audio.x86_64: W: spelling-error Summary(en_US) libretro -> libretto, lib retro, lib-retro
retroarch-filters-audio.x86_64: W: invalid-url URL: http://www.libretro.com <urlopen error [Errno -2] Name or service not known>
retroarch-filters-audio.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/chorus.so
retroarch-filters-audio.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/crystalizer.so
retroarch-filters-audio.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/echo.so
retroarch-filters-audio.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/eq.so
retroarch-filters-audio.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/iir.so
retroarch-filters-audio.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/panning.so
retroarch-filters-audio.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/phaser.so
retroarch-filters-audio.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/reverb.so
retroarch-filters-audio.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/tremolo.so
retroarch-filters-audio.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/vibrato.so
retroarch-filters-audio.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/wahwah.so
retroarch-filters-audio.x86_64: W: no-documentation
retroarch.x86_64: W: spelling-error Summary(en_US) frontend -> fronted, front end, front-end
retroarch.x86_64: W: spelling-error Summary(en_US) libretro -> libretto, lib retro, lib-retro
retroarch.x86_64: W: spelling-error %description -l en_US frontend -> fronted, front end, front-end
retroarch.x86_64: W: spelling-error %description -l en_US libretro -> libretto, lib retro, lib-retro
retroarch.x86_64: W: spelling-error %description -l en_US videogame -> video game, video-game, ideogram
retroarch.x86_64: W: invalid-url URL: http://www.libretro.com <urlopen error [Errno -2] Name or service not known>
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/chorus.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/crystalizer.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/echo.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/eq.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/iir.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/panning.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/phaser.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/reverb.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/tremolo.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/vibrato.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/audio/wahwah.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/2xbr.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/2xsai.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/blargg_ntsc_snes.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/darken.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/epx.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/lq2x.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/phosphor2x.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/scale2x.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/super2xsai.so
retroarch.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/supereagle.so
retroarch.x86_64: W: non-conffile-in-etc /etc/retroarch.cfg
retroarch-debugsource.x86_64: W: invalid-url URL: http://www.libretro.com <urlopen error [Errno -2] Name or service not known>
retroarch-debuginfo.x86_64: W: invalid-url URL: http://www.libretro.com <urlopen error [Errno -2] Name or service not known>
retroarch-filters-video.x86_64: W: spelling-error Summary(en_US) frontend -> fronted, front end, front-end
retroarch-filters-video.x86_64: W: spelling-error Summary(en_US) libretro -> libretto, lib retro, lib-retro
retroarch-filters-video.x86_64: W: invalid-url URL: http://www.libretro.com <urlopen error [Errno -2] Name or service not known>
retroarch-filters-video.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/2xbr.so
retroarch-filters-video.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/2xsai.so
retroarch-filters-video.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/blargg_ntsc_snes.so
retroarch-filters-video.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/darken.so
retroarch-filters-video.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/epx.so
retroarch-filters-video.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/lq2x.so
retroarch-filters-video.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/phosphor2x.so
retroarch-filters-video.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/scale2x.so
retroarch-filters-video.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/super2xsai.so
retroarch-filters-video.x86_64: W: unstripped-binary-or-object /usr/lib64/retroarch/filters/video/supereagle.so
retroarch-filters-video.x86_64: W: no-documentation
5 packages and 0 specfiles checked; 0 errors, 59 warnings.



Requires
--------
retroarch-filters-audio (rpmlib, GLIBC filtered):
    retroarch(x86-64)

retroarch (rpmlib, GLIBC filtered):
    /usr/bin/python3
    libEGL.so.1()(64bit)
    libGL.so.1()(64bit)
    libSDL2-2.0.so.0()(64bit)
    libX11-xcb.so.1()(64bit)
    libX11.so.6()(64bit)
    libXext.so.6()(64bit)
    libXxf86vm.so.1()(64bit)
    libasound.so.2()(64bit)
    libasound.so.2(ALSA_0.9)(64bit)
    libasound.so.2(ALSA_0.9.0rc4)(64bit)
    libavcodec.so.58()(64bit)
    libavcodec.so.58(LIBAVCODEC_58)(64bit)
    libavformat.so.58()(64bit)
    libavformat.so.58(LIBAVFORMAT_58)(64bit)
    libavutil.so.56()(64bit)
    libavutil.so.56(LIBAVUTIL_56)(64bit)
    libc.so.6()(64bit)
    libdl.so.2()(64bit)
    libdrm.so.2()(64bit)
    libfreetype.so.6()(64bit)
    libgbm.so.1()(64bit)
    libgcc_s.so.1()(64bit)
    libm.so.6()(64bit)
    libmvec.so.1()(64bit)
    libpthread.so.0()(64bit)
    libpulse.so.0()(64bit)
    libpulse.so.0(PULSE_0)(64bit)
    librt.so.1()(64bit)
    libstdc++.so.6()(64bit)
    libswresample.so.3()(64bit)
    libswresample.so.3(LIBSWRESAMPLE_3)(64bit)
    libswscale.so.5()(64bit)
    libswscale.so.5(LIBSWSCALE_5)(64bit)
    libudev.so.1()(64bit)
    libudev.so.1(LIBUDEV_183)(64bit)
    libwayland-client.so.0()(64bit)
    libwayland-cursor.so.0()(64bit)
    libwayland-egl.so.1()(64bit)
    libxcb.so.1()(64bit)
    libz.so.1()(64bit)
    rtld(GNU_HASH)

retroarch-debugsource (rpmlib, GLIBC filtered):

retroarch-debuginfo (rpmlib, GLIBC filtered):

retroarch-filters-video (rpmlib, GLIBC filtered):
    retroarch(x86-64)



Provides
--------
retroarch-filters-audio:
    retroarch-filters-audio
    retroarch-filters-audio(x86-64)

retroarch:
    application()
    application(retroarch.desktop)
    retroarch
    retroarch(x86-64)

retroarch-debugsource:
    retroarch-debugsource
    retroarch-debugsource(x86-64)

retroarch-debuginfo:
    debuginfo(build-id)
    retroarch-debuginfo
    retroarch-debuginfo(x86-64)

retroarch-filters-video:
    retroarch-filters-video
    retroarch-filters-video(x86-64)



Unversioned so-files
--------------------
retroarch: /usr/lib64/retroarch/filters/audio/chorus.so
retroarch: /usr/lib64/retroarch/filters/audio/crystalizer.so
retroarch: /usr/lib64/retroarch/filters/audio/echo.so
retroarch: /usr/lib64/retroarch/filters/audio/eq.so
retroarch: /usr/lib64/retroarch/filters/audio/iir.so
retroarch: /usr/lib64/retroarch/filters/audio/panning.so
retroarch: /usr/lib64/retroarch/filters/audio/phaser.so
retroarch: /usr/lib64/retroarch/filters/audio/reverb.so
retroarch: /usr/lib64/retroarch/filters/audio/tremolo.so
retroarch: /usr/lib64/retroarch/filters/audio/vibrato.so
retroarch: /usr/lib64/retroarch/filters/audio/wahwah.so
retroarch: /usr/lib64/retroarch/filters/video/2xbr.so
retroarch: /usr/lib64/retroarch/filters/video/2xsai.so
retroarch: /usr/lib64/retroarch/filters/video/blargg_ntsc_snes.so
retroarch: /usr/lib64/retroarch/filters/video/darken.so
retroarch: /usr/lib64/retroarch/filters/video/epx.so
retroarch: /usr/lib64/retroarch/filters/video/lq2x.so
retroarch: /usr/lib64/retroarch/filters/video/phosphor2x.so
retroarch: /usr/lib64/retroarch/filters/video/scale2x.so
retroarch: /usr/lib64/retroarch/filters/video/super2xsai.so
retroarch: /usr/lib64/retroarch/filters/video/supereagle.so
retroarch-filters-audio: /usr/lib64/retroarch/filters/audio/chorus.so
retroarch-filters-audio: /usr/lib64/retroarch/filters/audio/crystalizer.so
retroarch-filters-audio: /usr/lib64/retroarch/filters/audio/echo.so
retroarch-filters-audio: /usr/lib64/retroarch/filters/audio/eq.so
retroarch-filters-audio: /usr/lib64/retroarch/filters/audio/iir.so
retroarch-filters-audio: /usr/lib64/retroarch/filters/audio/panning.so
retroarch-filters-audio: /usr/lib64/retroarch/filters/audio/phaser.so
retroarch-filters-audio: /usr/lib64/retroarch/filters/audio/reverb.so
retroarch-filters-audio: /usr/lib64/retroarch/filters/audio/tremolo.so
retroarch-filters-audio: /usr/lib64/retroarch/filters/audio/vibrato.so
retroarch-filters-audio: /usr/lib64/retroarch/filters/audio/wahwah.so
retroarch-filters-video: /usr/lib64/retroarch/filters/video/2xbr.so
retroarch-filters-video: /usr/lib64/retroarch/filters/video/2xsai.so
retroarch-filters-video: /usr/lib64/retroarch/filters/video/blargg_ntsc_snes.so
retroarch-filters-video: /usr/lib64/retroarch/filters/video/darken.so
retroarch-filters-video: /usr/lib64/retroarch/filters/video/epx.so
retroarch-filters-video: /usr/lib64/retroarch/filters/video/lq2x.so
retroarch-filters-video: /usr/lib64/retroarch/filters/video/phosphor2x.so
retroarch-filters-video: /usr/lib64/retroarch/filters/video/scale2x.so
retroarch-filters-video: /usr/lib64/retroarch/filters/video/super2xsai.so
retroarch-filters-video: /usr/lib64/retroarch/filters/video/supereagle.so

Source checksums
----------------
http://github.com/libretro/retroarch/archive/v1.7.2/retroarch-1.7.2.tar.gz :
  CHECKSUM(SHA256) this package     : d330a267f4f1ec3265a97d7f6b8edf8dbe1938ab22c8795bbbddc040f2542ef9
  CHECKSUM(SHA256) upstream package : d330a267f4f1ec3265a97d7f6b8edf8dbe1938ab22c8795bbbddc040f2542ef9


Generated by fedora-review 0.6.1 (f03e4e7) last change: 2016-05-02
Command line :/usr/bin/fedora-review -u https://bugzilla.rpmfusion.org/show_bug.cgi?id=4892
Buildroot used: fedora-28-x86_64
Active plugins: Generic, Shell-api, C/C++
Disabled plugins: Java, Python, fonts, SugarActivity, Ocaml, Perl, Haskell, R, PHP
Disabled flags: EXARCH, DISTTAG, EPEL5, BATCH, EPEL6
Comment 13 Vitaly 2018-07-19 16:28:29 CEST
1. You must fix license tag. Correct license for main project is GPLv3+. Also you must add all other licenses used in project (see main review automatic check results).

2. All shared libraries from retroarch-filters-video and retroarch-filters-audio subpackages must be installed with chmod 0755, not 0644. Then rpmbuild will strip debuginfo from them and rpmlint will show no warnings.
Comment 14 David Demelier 2018-08-25 08:48:39 CEST
1. For license, I've added GPLv3+. However the automatic result list is very long and probably contains external stuff not written by RetroArch authors. Why should we add this? Every software has third party code and if we should add all these licenses we will have very big lists everytime. I've checked several others distributions packages, all only keep GPLv3+ as their license. The RetroArch COPYING also only list GPLv3.

2. Fixed.

So if you're okay with 1, here's a v5:

SPEC: http://markand.fr/static/rpms/v5/retroarch.spec
SRPM: http://markand.fr/static/rpms/v5/retroarch-1.7.2-1.fc28.src.rpm
Comment 15 Vitaly 2018-08-25 11:30:55 CEST
> Why should we add this?

On Fedora License tag must contains names of all licenses used in project.

> Every software has third party code and if we should add all these licenses we will have very big lists everytime.

It's fine.

> I've checked several others distributions packages, all only keep GPLv3+ as their license.

Please read this: https://fedoraproject.org/wiki/Packaging:LicensingGuidelines

> So if you're okay with 1, here's a v5:

Cannot download due to 404 error. Please fix.
Comment 16 David Demelier 2018-08-25 18:16:13 CEST
I've asked upstream, they maintain that pure RetroArch code is only GPLv3+ as some folks pointed out on #retroarch IRC channel:

14:59 < orbea> https://github.com/libretro/RetroArch/blob/master/COPYING
14:59 < retrobot> Title: RetroArch/COPYING at master · libretro/RetroArch · GitHub
15:00 < orbea> the cores may have different licenses, but I think RA is just gplv3

I check with them for the licenses that your tool has shown.

Sorry for broken links, it's fixed now.
Comment 17 Andrea Musuruane 2018-08-25 18:31:39 CEST
(In reply to Vitaly Zaitsev from comment #15)
> > I've checked several others distributions packages, all only keep GPLv3+ as their license.
> 
> Please read this:
> https://fedoraproject.org/wiki/Packaging:LicensingGuidelines

"The License: field refers to the licenses of the contents of the binary rpm"

It is not a list of licenses found in the source files.

Therefore if the resulting binary is the combination of different (and mixable) licensed source files, only the resulting license must be stated in the License field. E.g. BSD and GPLv2+ and GPLv3 = GPLv3.
Comment 18 Vitaly 2018-08-25 18:33:56 CEST
> I've asked upstream, they maintain that pure RetroArch code is only GPLv3+ as some folks pointed out on #retroarch IRC channel

Please read licensing guidelines. You **must** specify all licenses used in project (including all bundled third-party code).
Comment 19 Andrea Musuruane 2018-08-25 18:38:56 CEST
(In reply to Vitaly Zaitsev from comment #18)
> Please read licensing guidelines. You **must** specify all licenses used in
> project (including all bundled third-party code).

No, you are wrong. Please read them again:

https://fedoraproject.org/wiki/Packaging:LicensingGuidelines#License:_field

"The License: field refers to the licenses of the contents of the ***binary rpm***. When in doubt, ask.

If a source package generates multiple binary packages, the License: field may differ between them if necessary. This implies that a single spec may have multiple per-subpackage License: tags. Each of those License: tags must comply with all applicable guidelines. "
Comment 20 Vitaly 2018-08-25 18:41:30 CEST
> The License: field refers to the licenses of the contents of the ***binary rpm***. When in doubt, ask

All third-party code are part of binary in RPM, so you must include them into License tag.

Sorry, but I will not approve this package until all licensing issues will be resolved.
Comment 21 Nicolas Chauvet 2018-09-21 16:44:31 CEST
Can we try to find a compromise on the license issue with this package ?
BTW is the retroarch code itslef GPLv3 (only) or GPLv3+ ?
 
Seems what's unclear in the fedora guideline about this is about the bundling situation. For example, you cannot assume the license of ffmpeg to affect retroarch license tag because ffmpeg can be compiled from LGPLv2+ to GPLv3+. in RPM Fusion, we compile ffmpeg with GPLv3+ and it has to be compatible with downstream users. Which is fine if the retroarch package is tagged with GPLv3.

But if any downstream ffmpeg users use any "BSD with advertising" code which is GPL incompatible along with LGPLv2+, both version need to be mentioned in the package license tag to reflect that.

Can we just copy any license from the retroarch archive and tag every kind of license once on the retroarch license tag ? Does everyone agrees on that ?
Comment 22 David Demelier 2018-09-22 12:01:15 CEST
Do we also need to add LGPL license since retroarch links to glibc? I don't understand because whatever RetroArch incorporate third party code is similar that linking to it. When an application links to libSDL we don't add zlib to the license field IIRC.
Comment 23 Vitaly 2018-09-22 18:28:43 CEST
> Do we also need to add LGPL license since retroarch links to glibc?

No, because application linked dynamically with glibc, libstdc++, etc.

You need to specify only licenses of bundled libraries or resources.

> When an application links to libSDL we don't add zlib

**Dynamically** links. Static linkage is strongly forbidden in Fedora.
Comment 24 David Demelier 2018-09-22 18:33:09 CEST
Okay, I'll update the license tag once I return from vacations. Thanks for this clarification.
Comment 25 Nicolas Chauvet 2018-10-19 16:01:40 CEST
(In reply to David Demelier from comment #24)
> Okay, I'll update the license tag once I return from vacations. Thanks for
> this clarification.

Hi, any update on this ?
Comment 26 David Demelier 2018-10-19 16:03:44 CEST
Hi, sorry I had been extremely busy these days. I'll try to complete this weekend.
Comment 27 Vitaly 2018-11-05 15:24:41 CET
Any progress?
Comment 28 David Demelier 2018-11-06 09:15:16 CET
Hello,

I'm very sorry but I'm considering leaving fedora. Even if we push that package, I won't be able to maintain it afterwards. Let's close it?
Comment 29 Nicolas Chauvet 2018-11-06 11:11:36 CET
(In reply to David Demelier from comment #28)
...
> I'm very sorry but I'm considering leaving fedora. Even if we push that
> package, I won't be able to maintain it afterwards. Let's close it?
Sorry to hear that. I hope nothing in our side is the cause of the decision.
Thx for your notice tough.

I hope someone can take-over your work. There is a need to submit a new review request.
Comment 30 David Demelier 2018-11-06 12:26:54 CET
> Sorry to hear that. I hope nothing in our side is the cause of the decision.
Thx for your notice tough.

No don't worry, RPM Fusion is definitely the first thing I enable once I get a CentOS/Fedora install :)