Spec URL: https://gombosg.fedorapeople.org/antimicrox/antimicroX.spec SRPM URL: https://gombosg.fedorapeople.org/antimicrox/antimicroX-2.25-1.fc32.src.rpm Description: antimicroX is a graphical program used to map keyboard keys and mouse controls to a gamepad. This program is useful for playing PC games using a gamepad that do not have any form of built-in gamepad support. antimicroX is a fork of AntiMicro which was inspired by QJoyPad but has additional features. Fedora Account System Username: gombosg -- Thanks for reviewing! I saw AntiMicro was orphaned, and also it's not maintained. This is a maintained fork of this nice piece of software. Specfile is very loosely based on the original AntiMicro specfile. It contains a file libantilib.so, which is not linked to by other software (more of a design pattern and a future possibility), but is required by the app to run. I decided to package it in a subpackage. Let me know how you view this approach.
Doesn't build on armv7hl. Contacted upstream if this could be fixed or an ExcludeArch is needed. Scratch builds F32 https://koji.fedoraproject.org/koji/taskinfo?taskID=45515901 F33 https://koji.fedoraproject.org/koji/taskinfo?taskID=45515910
Updated to new version and added ARM ExcludeArch. Spec URL: https://gombosg.fedorapeople.org/antimicrox/antimicroX.spec SRPM URL: https://gombosg.fedorapeople.org/antimicrox/antimicroX-3.0-1.fc32.src.rpm Scratch build: https://koji.fedoraproject.org/koji/taskinfo?taskID=45616620
Here are the issues that were picked up by fedora-review, I will need to take a better look at a few other things as well, such as the licensing scheme, but you can work on these for now: 1. Missing BR against the compiler, I guess it's gcc-c++. 2. I think I would have gone with antimicroX, antimicroX-libs and antimicroX-devel, but I also find your separation of libantilib subpackages reasonable. I think the shared library should either be versioned or moved. Is it required in order to run antimicroX, to build the package, or is it just provided in case someone wants to build some other program integrating its functionality? When rpmlint is run on the packages, it complains: antimicroX-libantilib.x86_64: E: invalid-soname /usr/lib64/libantilib.so libantilib.so Depending on how it's supposed to be used, moving it to %{_libdir}/%{name} or %{_libdir}/libantilib/ might be the safest option. Maybe these will help: https://docs.fedoraproject.org/en-US/packaging-guidelines/#_devel_packages https://docs.fedoraproject.org/en-US/packaging-guidelines/#_shared_libraries https://fedoraproject.org/wiki/Common_Rpmlint_issues#invalid-soname 3. Problems with permissions: antimicroX.x86_64: W: spurious-executable-perm /usr/share/doc/antimicroX/Changelog antimicroX.x86_64: W: spurious-executable-perm /usr/share/doc/antimicroX/README.md antimicroX.x86_64: E: script-without-shebang /usr/share/licenses/antimicroX/LICENSE These three should have the executable bit removed. https://docs.fedoraproject.org/en-US/packaging-guidelines/#_file_permissions 4. File and directory ownership. Note: No known owner of /usr/share/antimicroX/translations, /usr/share/antimicroX/images, /usr/share/antimicroX/icons Note: Directories without known owners: /usr/share/antimicroX/images, /usr/share/icons/hicolor/24x24/apps, /usr/share/antimicroX/translations, /usr/share/icons/hicolor/32x32, /usr/share/icons/hicolor/48x48/apps, /usr/share/icons/hicolor/64x64, /usr/share/antimicroX/icons, /usr/share/icons/hicolor/48x48, /usr/share/icons/hicolor, /usr/share/icons/hicolor/16x16, /usr/share/mime, /usr/share/icons/hicolor/24x24, /usr/share/icons/hicolor/32x32/apps, /usr/share/mime/packages, /usr/share/icons/hicolor/64x64/apps, /usr/share/icons/hicolor/16x16/apps For the directories under /usr/share/anitimicroX, I believe that changing this line in your %files section %dir %{_datadir}/%{name} to %{_datadir}/%{name}/ would solve the issue. For the icon files, you can use something like this: %{_datadir}/icons/hicolor/*/apps/%{name}.* 5. There are multiple licenses present, I need to verify if GPLv3+ is enough, or if it should be a mixed license or if the effective license is one of the others. This might take a while. I'll get back to you if I find something else in the meantime.
Super, thanks! I'll work on these. 'Libantilib' is compiled along with the main app, and is not linked to by other software (more of a design pattern and a future possibility to e.g. integrate this functionality into other software like Lutris), and is required by the app to run. I'll rename to antimicroX-libs. I informed upstream about the soname versioning issue. [1] The repo had been forked from a GPLv3+ project [2], and is itself distributed as GPLv3+, so actually having a mixed license would be an issue, and upstream should be informed about it. Are you thinking about the icons? As I see (src/icons/README.txt) those were LGPLv2.1 and LGPLv3, so they are allowed to be recombined under GPLv3. [1] https://github.com/juliagoda/antimicroX/issues/118#issuecomment-643783318 [2] https://github.com/AntiMicro/antimicro
(In reply to Gergely Gombos from comment #4) > The repo had been forked from a GPLv3+ project [2], and is itself > distributed as GPLv3+, so actually having a mixed license would be an issue, > and upstream should be informed about it. > > Are you thinking about the icons? As I see (src/icons/README.txt) those were > LGPLv2.1 and LGPLv3, so they are allowed to be recombined under GPLv3. Yes, I was trying to figure out what the effective license from combining GPLv3 and LGPLv2.1 is, but I cant, I'm only getting a headache. Unless you are confident that GPLv3+ + LGPLv2+ = GPLv3+, the safest option is to use both licenses, e.g. "GPLv3+ and LGPLv2+". I still can't understand why licensecheck has README.md pegged as GPLv3, but that's not important.
Thanks. I am confident, since the project is distributed under GPLv3 license. LGPLv2.1 and LGPLv3 are both listed as GPL compatible [1] by FSF [2], so a mixed license is not needed if the project owner chose a GPLv3 license. The icons README simply states the original license of these files, compliant with the original licenses. [1] https://www.gnu.org/licenses/gpl-faq.html#WhatDoesCompatMean [2] https://www.gnu.org/licenses/license-list.html
Here's a detailed compatibility matrix: https://www.gnu.org/licenses/gpl-faq.html#AllCompatibility It also says that GPLv3 is OK for the project.
(In reply to Gergely Gombos from comment #7) > Here's a detailed compatibility matrix: > https://www.gnu.org/licenses/gpl-faq.html#AllCompatibility > It also says that GPLv3 is OK for the project. Thanks a lot, it turns out that it's the third time I bookmark this page, I should probably give it a better name.
Fixed review issues. Spec URL: https://gombosg.fedorapeople.org/antimicrox/antimicroX.spec SRPM URL: https://gombosg.fedorapeople.org/antimicrox/antimicroX-3.0-1.20200617gitc6d79.fc32.src.rpm I think we shouldn't own these directories: /usr/share/icons/hicolor/24x24/apps, /usr/share/icons/hicolor/32x32, /usr/share/icons/hicolor/48x48/apps, /usr/share/icons/hicolor/64x64, /usr/share/icons/hicolor/48x48, /usr/share/icons/hicolor, /usr/share/icons/hicolor/16x16, /usr/share/mime, /usr/share/icons/hicolor/24x24, /usr/share/icons/hicolor/32x32/apps, /usr/share/mime/packages, /usr/share/icons/hicolor/64x64/apps, /usr/share/icons/hicolor/16x16/apps Because they are owned by some very basic packages e.g. shared-mime-info, filesystem, hicolor-icon-theme. I don't see them being owned by other GUI packages either, but let me know if you think it would be better to own them.
Hi Gergely, I'm at work now, I will check the changes tonight. (In reply to Gergely Gombos from comment #9) > I think we shouldn't own these directories: > /usr/share/icons/hicolor/24x24/apps, > /usr/share/icons/hicolor/32x32, > /usr/share/icons/hicolor/48x48/apps, /usr/share/icons/hicolor/64x64, > /usr/share/icons/hicolor/48x48, > /usr/share/icons/hicolor, /usr/share/icons/hicolor/16x16, > /usr/share/mime, /usr/share/icons/hicolor/24x24, > /usr/share/icons/hicolor/32x32/apps, /usr/share/mime/packages, > /usr/share/icons/hicolor/64x64/apps, > /usr/share/icons/hicolor/16x16/apps > > Because they are owned by some very basic packages e.g. shared-mime-info, > filesystem, hicolor-icon-theme. > I don't see them being owned by other GUI packages either, but let me know > if you think it would be better to own them. We shouldn't own them. If you use something like this %{_datadir}/icons/hicolor/*/apps/%{name}.* you don't own the directories, just the files that antimicroX places in each of them. Adjust "%{name}.*" to your file names.
Thanks! I don't think that the %{_datadir}/icons/hicolor/*/apps/%{name}.* syntax is any different from the current %{_datadir}/icons/hicolor/*/apps/* Because directory ownership is defined by %dir AFAIK. At least, fedora-review generates the same note, too, when I tried your suggestion.
(In reply to Gergely Gombos from comment #11) > Because directory ownership is defined by %dir AFAIK. No, you can also just declare a path. > At least, fedora-review generates the same note, too, when I tried your > suggestion. That's odd, that was taken from one of the packages I've inherited and it was like that when it passed its review (a long time ago). I haven't seen an error in the automated tests for updates either.
My bad, there's a dependency on kde-filesystem. That's _somewhere_ in the packaging guidelines, but I can't find it right now, I'll have to check my bookmarks when I get home.
Got it, you need to add Requires: hicolor-icon-theme
Added it!
Finally made it home, I'm currently running a local build. In the meantime, you can add a Requires: shared-mime-info if you feel that I'm running late, but I don't think there's anything else left to do, you can add it when you make the "official" build.
Three little things left to do before the first build, mentioned in detail in the template text: 1. Requires: shared-mime-info 2. %license in antimicroX-libantilib-devel 3. File a blocking bug for the ExcludeArch Everything else seems fine, package is approved! Nicely done Gergely! 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]: 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]: ldconfig not called in %post and %postun for Fedora 28 and later. [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 successfully compiles and builds into binary rpms on at least one supported primary architecture. Note: Using prebuilt packages [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. [!]: License file installed when any subpackage combination is installed. Since antimicroX-libantilib-devel requires antimicroX-libantilib, you can just add it to the antimicroX-libantilib %files section: %files %{libname} %license LICENSE %{_libdir}/%{libname}.so.1 [!]: Package must own all directories that it creates. Note: Directories without known owners: /usr/share/mime/packages, /usr/share/mime Add "Requires: shared-mime-info" [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. [-]: If the package is a rename of another package, proper Obsoletes and Provides are present. [-]: Requires correct, justified where necessary. [x]: Spec file is legible and written in American English. [-]: Package contains systemd file(s) if in need. [x]: Useful -debuginfo package or justification otherwise. [!]: Package is not known to require an ExcludeArch tag. You need to file a bug once the package is approved and also mark it as blocking https://bugzilla.redhat.com/show_bug.cgi?id=F-ExcludeArch-ARM Once that bug is files, add the bug number to the spec file in a comment next to the ExcludeArch tag. https://docs.fedoraproject.org/en-US/packaging-guidelines/#_architecture_build_failures [x]: Large documentation must go in a -doc subpackage. Large could be size (~1MB) or number of files. Note: Documentation size is 61440 bytes in 2 files. [x]: Package complies to the Packaging Guidelines [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 does not own files or directories owned by other packages. [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]: Reviewer should test that the package builds in mock. [-]: 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). [-]: Fully versioned dependency in subpackages if applicable. Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in antimicroX-libantilib , antimicroX-libantilib-devel [?]: Package functions as described. Don't have a gamepad anymore… [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. [-]: Description and summary sections in the package spec file contains translations for supported Non-English languages, if available. [!]: Package should compile and build into binary rpms on all supported architectures. Same as above. [x]: %check is present and all tests pass. [x]: Packages should try to preserve timestamps of original installed files. [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. Rpmlint ------- Checking: antimicroX-3.0-1.20200617gitc6d79.fc32.x86_64.rpm antimicroX-libantilib-3.0-1.20200617gitc6d79.fc32.x86_64.rpm antimicroX-libantilib-devel-3.0-1.20200617gitc6d79.fc32.x86_64.rpm antimicroX-debuginfo-3.0-1.20200617gitc6d79.fc32.x86_64.rpm antimicroX-debugsource-3.0-1.20200617gitc6d79.fc32.x86_64.rpm antimicroX-3.0-1.20200617gitc6d79.fc32.src.rpm antimicroX.x86_64: W: spelling-error Summary(en_US) gamepad -> game pad, game-pad, gamed antimicroX.x86_64: W: spelling-error %description -l en_US gamepad -> game pad, game-pad, gamed antimicroX-libantilib.x86_64: W: summary-not-capitalized C antimicroX libraries antimicroX-libantilib.x86_64: W: no-documentation antimicroX-libantilib-devel.x86_64: W: no-documentation antimicroX.src: W: spelling-error Summary(en_US) gamepad -> game pad, game-pad, gamed antimicroX.src: W: spelling-error %description -l en_US gamepad -> game pad, game-pad, gamed 6 packages and 0 specfiles checked; 0 errors, 7 warnings. Rpmlint (debuginfo) ------------------- Checking: antimicroX-debuginfo-3.0-1.20200617gitc6d79.fc32.x86_64.rpm antimicroX-libantilib-debuginfo-3.0-1.20200617gitc6d79.fc32.x86_64.rpm 2 packages and 0 specfiles checked; 0 errors, 0 warnings. Rpmlint (installed packages) ---------------------------- warning: Found bdb Packages database while attempting sqlite backend: using bdb backend. warning: Found bdb Packages database while attempting sqlite backend: using bdb backend. antimicroX-debugsource.x86_64: W: invalid-url URL: https://github.com/juliagoda/antimicroX <urlopen error [Errno -2] Name or service not known> warning: Found bdb Packages database while attempting sqlite backend: using bdb backend. antimicroX-libantilib-debuginfo.x86_64: W: invalid-url URL: https://github.com/juliagoda/antimicroX <urlopen error [Errno -2] Name or service not known> warning: Found bdb Packages database while attempting sqlite backend: using bdb backend. antimicroX-libantilib-devel.x86_64: W: invalid-url URL: https://github.com/juliagoda/antimicroX <urlopen error [Errno -2] Name or service not known> antimicroX-libantilib-devel.x86_64: W: no-documentation warning: Found bdb Packages database while attempting sqlite backend: using bdb backend. antimicroX-libantilib.x86_64: W: summary-not-capitalized C antimicroX libraries antimicroX-libantilib.x86_64: W: invalid-url URL: https://github.com/juliagoda/antimicroX <urlopen error [Errno -2] Name or service not known> antimicroX-libantilib.x86_64: W: no-documentation warning: Found bdb Packages database while attempting sqlite backend: using bdb backend. antimicroX.x86_64: W: spelling-error Summary(en_US) gamepad -> game pad, game-pad, gamed antimicroX.x86_64: W: spelling-error %description -l en_US gamepad -> game pad, game-pad, gamed antimicroX.x86_64: W: invalid-url URL: https://github.com/juliagoda/antimicroX <urlopen error [Errno -2] Name or service not known> warning: Found bdb Packages database while attempting sqlite backend: using bdb backend. antimicroX-debuginfo.x86_64: W: invalid-url URL: https://github.com/juliagoda/antimicroX <urlopen error [Errno -2] Name or service not known> 6 packages and 0 specfiles checked; 0 errors, 11 warnings. Source checksums ---------------- https://github.com/juliagoda/antimicroX/archive/c6d79008dfb9fa393eb467ae17201fc693f19f47/antimicroX-c6d79008dfb9fa393eb467ae17201fc693f19f47.tar.gz : CHECKSUM(SHA256) this package : b998046d34b050efc56e77a5e24ea102e690306d139eda92affe580eb27f6df9 CHECKSUM(SHA256) upstream package : b998046d34b050efc56e77a5e24ea102e690306d139eda92affe580eb27f6df9 Requires -------- antimicroX (rpmlib, GLIBC filtered): antimicroX-libantilib(x86-64) hicolor-icon-theme libQt5Core.so.5()(64bit) libQt5Core.so.5(Qt_5)(64bit) libQt5Core.so.5(Qt_5.14)(64bit) libQt5Gui.so.5()(64bit) libQt5Gui.so.5(Qt_5)(64bit) libQt5Network.so.5()(64bit) libQt5Network.so.5(Qt_5)(64bit) libQt5Widgets.so.5()(64bit) libQt5Widgets.so.5(Qt_5)(64bit) libX11.so.6()(64bit) libantilib.so.1()(64bit) libc.so.6()(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libstdc++.so.6()(64bit) libstdc++.so.6(CXXABI_1.3)(64bit) rtld(GNU_HASH) shared-mime-info antimicroX-libantilib (rpmlib, GLIBC filtered): libQt5Concurrent.so.5()(64bit) libQt5Concurrent.so.5(Qt_5)(64bit) libQt5Core.so.5()(64bit) libQt5Core.so.5(Qt_5)(64bit) libQt5Core.so.5(Qt_5.14)(64bit) libQt5Gui.so.5()(64bit) libQt5Gui.so.5(Qt_5)(64bit) libQt5Network.so.5()(64bit) libQt5Network.so.5(Qt_5)(64bit) libQt5Widgets.so.5()(64bit) libQt5Widgets.so.5(Qt_5)(64bit) libQt5X11Extras.so.5()(64bit) libQt5X11Extras.so.5(Qt_5)(64bit) libSDL2-2.0.so.0()(64bit) libX11.so.6()(64bit) libXi.so.6()(64bit) libXtst.so.6()(64bit) libc.so.6()(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libm.so.6()(64bit) libstdc++.so.6()(64bit) libstdc++.so.6(CXXABI_1.3)(64bit) rtld(GNU_HASH) antimicroX-libantilib-devel (rpmlib, GLIBC filtered): antimicroX-libantilib(x86-64) libantilib.so.1()(64bit) antimicroX-debuginfo (rpmlib, GLIBC filtered): antimicroX-debugsource (rpmlib, GLIBC filtered): Provides -------- antimicroX: antimicroX antimicroX(x86-64) application() application(com.github.juliagoda.antimicroX.desktop) metainfo() metainfo(com.github.juliagoda.antimicroX.appdata.xml) mimehandler(application/x-amgp) antimicroX-libantilib: antimicroX-libantilib antimicroX-libantilib(x86-64) libantilib.so.1()(64bit) antimicroX-libantilib-devel: antimicroX-libantilib-devel antimicroX-libantilib-devel(x86-64) antimicroX-debuginfo: antimicroX-debuginfo antimicroX-debuginfo(x86-64) debuginfo(build-id) antimicroX-debugsource: antimicroX-debugsource antimicroX-debugsource(x86-64) Generated by fedora-review 0.7.5 (5fa5b7e) last change: 2020-02-16 Command line :/usr/bin/fedora-review --prebuilt -rn antimicroX-3.0-1.20200617gitc6d79.fc32.src.rpm Buildroot used: fedora-rawhide-x86_64 Active plugins: C/C++, Generic, Shell-api Disabled plugins: Python, fonts, R, SugarActivity, Perl, Java, PHP, Haskell, Ocaml Disabled flags: EPEL6, EPEL7, DISTTAG, BATCH, EXARCH
Will do, thanks for reviewing!
(fedscm-admin): The Pagure repository was created at https://src.fedoraproject.org/rpms/antimicroX
FEDORA-2020-7f022a8b41 has been submitted as an update to Fedora 32. https://bodhi.fedoraproject.org/updates/FEDORA-2020-7f022a8b41
FEDORA-2020-939340c81f has been submitted as an update to Fedora 31. https://bodhi.fedoraproject.org/updates/FEDORA-2020-939340c81f
FEDORA-2020-939340c81f has been pushed to the Fedora 31 testing repository. In short time you'll be able to install the update with the following command: `sudo dnf install --enablerepo=updates-testing --advisory=FEDORA-2020-939340c81f \*` You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2020-939340c81f See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.
FEDORA-2020-7f022a8b41 has been pushed to the Fedora 32 testing repository. In short time you'll be able to install the update with the following command: `sudo dnf install --enablerepo=updates-testing --advisory=FEDORA-2020-7f022a8b41 \*` You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2020-7f022a8b41 See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.
FEDORA-2020-939340c81f has been pushed to the Fedora 31 stable repository. If problem still persists, please make note of it in this bug report.
FEDORA-2020-7f022a8b41 has been pushed to the Fedora 32 stable repository. If problem still persists, please make note of it in this bug report.