Spec URL: https://lupinix.fedorapeople.org/indi/indi-sx.spec SRPM URL: https://lupinix.fedorapeople.org/indi/indi-sx-0.9.9-1.20141025svn1784.fc20.src.rpm Description: INDI driver providing support for Starlight Xpress devices Fedora Account System Username: lupinix Koji Scratch build: http://koji.fedoraproject.org/koji/taskinfo?taskID=7940429 Hi, I created a package providing support for astronomical devices made by Starlight Xpress. fedora-review shows no obvious issues. I analyzed the license headers of the source files, the package is GPLv2+. The LGPL copy contained in source tree is used by none of the files. I already informed upstream about this http://sourceforge.net/p/indi/mailman/message/32951616/ Thank you for review in advance! Greetings, Christian
> # Post-Release checkout containing some improvements > Release: 1.%{checkout}%{?dist} You should better use a timestamp additionally for a snapshot release independently of pre/post-release logic. Cause if your checkout changes, you would have to increase the main number also: Release: 1.20142510svn%{checkout}%{?dist} https://fedoraproject.org/wiki/Packaging:NamingGuidelines#Snapshot_packages > # For Fedora we want to put udev rules in %{_udevrulesdir}/ > sed -i 's|/lib/udev|/usr/lib/udev|g' CMakeLists.txt Why don't you use the macro then directly in the sed command line as you already do in %files? Please change that to not confuse with the comment. > %install > make install DESTDIR=%{buildroot} %install %make_install Please comment why you prefer DESTDIR usage. https://fedoraproject.org/wiki/Packaging:Guidelines#Why_the_.25makeinstall_macro_should_not_be_used
Correction: Release: 1.20141025svn%{checkout}%{?dist}
(In reply to Raphael Groner from comment #1) > > # Post-Release checkout containing some improvements > > Release: 1.%{checkout}%{?dist} > You should better use a timestamp additionally for a snapshot release > independently of pre/post-release logic. Cause if your checkout changes, you > would have to increase the main number also: > Release: 1.20142510svn%{checkout}%{?dist} > https://fedoraproject.org/wiki/Packaging:NamingGuidelines#Snapshot_packages > Please have a look at the definition of %{checkout} ;) It contains a timestamp > > > # For Fedora we want to put udev rules in %{_udevrulesdir}/ > > sed -i 's|/lib/udev|/usr/lib/udev|g' CMakeLists.txt > Why don't you use the macro then directly in the sed command line as you > already do in %files? Please change that to not confuse with the comment. > > > > %install > > make install DESTDIR=%{buildroot} > %install > %make_install > Please comment why you prefer DESTDIR usage. > https://fedoraproject.org/wiki/Packaging:Guidelines#Why_the_. > 25makeinstall_macro_should_not_be_used According to your link there is *no* problem with DESTDIR according to the guidlines!
The package does not build for F20: http://koji.fedoraproject.org/koji/taskinfo?taskID=7941115 Though, it builds currently for F21+: http://koji.fedoraproject.org/koji/taskinfo?taskID=7941106 I assume that you don't want to provide your package for F20 then. Please confirm my assumption.
I confirm this, the libindi package in F20 contains 0.9.6 and the api and abi of this version are not compatible with 0.9.9. So package only for F21+, an libindi update is not possible in F20 due to the changes since 0.9.6.
Spec URL: https://lupinix.fedorapeople.org/indi/indi-sx.spec SRPM URL: https://lupinix.fedorapeople.org/indi/indi-sx-0.9.9-2.20141025svn1784.fc20.src.rpm Now using the %{_udevrulesdir} macro consistently.
Taken. Should not show any great issues due to quite similiarity to the other review of indi-cloud thingy.
Package Review ============== Legend: [x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated [ ] = Manual review needed ++ = Remarks ===== MUST items ===== C/C++: [x]: Package does not contain kernel modules. [?]: Package contains no static executables. ++ {*}Suggestion: Clean up CMakeLists.txt for specifical Fedora usage. IMHO one general Makefile (or cmake in our case) for all thinkable platforms is not useful, it includes also stuff for unsupported platforms and could pull in bugs. That should be prevented as best as possible, so remove dead code. Quite similiar logic to bundled libs, maybe compare analogues to guidelines. I'll attach a clean CMakeLists.txt and a modified spec file, please take a look. [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]: 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 %doc. [x]: License field in the package spec file matches the actual license. Note: Checking patched sources after %prep for licenses. Licenses found: "GPL (v2 or later) (with incorrect FSF address)", "MIT/X11 (BSD like)", "Unknown or generated". 1 files have unknown license. Detailed output of licensecheck in /home/build/fedora-review/indi-sx/licensecheck.txt ++ OK, MIT is compatible to GPLv2+ [x]: %build honors applicable compiler flags or justifies otherwise. [?]: Package contains no bundled libraries without FPC exception. ++ see above {*} [x]: Changelog in prescribed format. [?]: Sources contain only permissible code or content. ++ I don't have the time to read the code details, besides am no owner of any INDI devices. [-]: Package contains desktop file if it is a GUI application. [-]: 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. [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. [?]: Package is not known to require an ExcludeArch tag. ++ Original CMakeLists.txt support ARM only for Debian. Please ask upstream about official Fedora/ARM support. [-]: Large documentation must go in a -doc subpackage. Large could be size (~1MB) or number of files. Note: Documentation size is 10240 bytes in 2 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]: Package requires other packages for directories it uses. [x]: Package must own all directories that it creates. [x]: Package does not own files or directories owned by other packages. [x]: All build dependencies are listed in BuildRequires, except for any that are listed in the exceptions section of Packaging Guidelines. [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 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 do not use a name that already exist [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: [?]: Packager, Vendor, PreReq, Copyright tags should not be in spec file Note: Found : Packager: Raphael Groner <projects.rg [AT] smart.ms> See: http://fedoraproject.org/wiki/Packaging:Guidelines#Tags ++ Maybe bug due to my rpmbuild configuration. Let's ignore it. [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. ++ Upstreamed patch is confirmed. {**} [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. ++ See {**} [x]: SourceX tarball generation or download is documented. Note: Package contains tarball without URL, check comments ++ Comments found. [-]: 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. ++ Must be validated again with help from koji. [-]: %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]: Dist tag is present (not strictly required in GL). [x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin. [x]: Uses parallel make %{?_smp_mflags} macro. [x]: SourceX is a working URL. [x]: Spec use %global instead of %define unless justified. ===== EXTRA items ===== Generic: [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: indi-sx-0.9.9-3.20141025svn1784.fc22.x86_64.rpm indi-sx-0.9.9-3.20141025svn1784.fc22.src.rpm indi-sx.x86_64: W: only-non-binary-in-usr-lib ++ Take a loog at bug #794777, bug #483199, bug #436500. All three are CLOSED ERRATA. indi-sx.x86_64: W: no-manual-page-for-binary indi_sx_ao indi-sx.x86_64: W: no-manual-page-for-binary sx_ccd_test indi-sx.x86_64: W: no-manual-page-for-binary indi_sx_wheel indi-sx.x86_64: W: no-manual-page-for-binary indi_sx_ccd indi-sx.src:16: W: macro-in-comment %{revision} indi-sx.src:16: W: macro-in-comment %{driver} indi-sx.src:16: W: macro-in-comment %{name} indi-sx.src:16: W: macro-in-comment %{version} indi-sx.src:16: W: macro-in-comment %{checkout} indi-sx.src:17: W: macro-in-comment %{name} indi-sx.src:17: W: macro-in-comment %{version} indi-sx.src:17: W: macro-in-comment %{checkout} indi-sx.src:17: W: macro-in-comment %{name} indi-sx.src:17: W: macro-in-comment %{version} indi-sx.src:17: W: macro-in-comment %{checkout} indi-sx.src:42: W: macro-in-comment %{_udevrulesdir} indi-sx.src: W: invalid-url Source0: indi-sx-0.9.9.20141025svn1784.tar.xz 2 packages and 0 specfiles checked; 0 errors, 18 warnings. ++ OK Rpmlint (installed packages) ---------------------------- # rpmlint indi-sx indi-sx.x86_64: W: only-non-binary-in-usr-lib indi-sx.x86_64: W: no-manual-page-for-binary indi_sx_ao indi-sx.x86_64: W: no-manual-page-for-binary sx_ccd_test indi-sx.x86_64: W: no-manual-page-for-binary indi_sx_wheel indi-sx.x86_64: W: no-manual-page-for-binary indi_sx_ccd 1 packages and 0 specfiles checked; 0 errors, 5 warnings. # echo 'rpmlint-done:' Requires -------- indi-sx (rpmlib, GLIBC filtered): libc.so.6()(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libgcc_s.so.1(GCC_3.3.1)(64bit) libindidriver.so.0()(64bit) libm.so.6()(64bit) libpthread.so.0()(64bit) libstdc++.so.6()(64bit) libstdc++.so.6(CXXABI_1.3)(64bit) libstdc++.so.6(CXXABI_1.3.8)(64bit) libusb-1.0.so.0()(64bit) rtld(GNU_HASH) udev ++OK Provides -------- indi-sx: indi-sx indi-sx(x86-64) Generated by fedora-review 0.5.2 (63c24cb) last change: 2014-07-14 Command line :/usr/bin/fedora-review -m fedora-rawhide-x86_64 -rn /home/build/rpmbuild/SRPMS/indi-sx-0.9.9-3.20141025svn1784.fc20.src.rpm Buildroot used: fedora-rawhide-x86_64 Active plugins: Generic, Shell-api, C/C++ Disabled plugins: Java, Python, fonts, SugarActivity, Ocaml, Perl, Haskell, R, PHP, Ruby Disabled flags: EXARCH, EPEL5, BATCH, DISTTAG
Created attachment 950710 [details] CMakeLists.txt with fedora specific cleanup I tried to convert it to a patch but without success. Maybe you can do it?
Created attachment 950711 [details] spec with patched cmake
First, thank you for reviewing the package :) Now lets go to the details (In reply to Raphael Groner from comment #8) > Package Review > ============== > > Legend: > [x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated > [ ] = Manual review needed > > ++ = Remarks > > ===== MUST items ===== > > C/C++: > [x]: Package does not contain kernel modules. > [?]: Package contains no static executables. > ++ {*}Suggestion: Clean up CMakeLists.txt for specifical Fedora usage. > IMHO one general Makefile (or cmake in our case) for all thinkable platforms > is not useful, it includes also stuff for unsupported platforms and could > pull > in bugs. That should be prevented as best as possible, so remove dead code. > Quite similiar logic to bundled libs, maybe compare analogues to guidelines. > I'll attach a clean CMakeLists.txt and a modified spec file, please take a > look. I will *not* maintain a CMakeLists.txt specific to Fedora. It is not neccessary here. And cmake means "cross-platform make" ;) I agree with you that some cleanups in this file should be done. But this is not the place and *no* Fedora specific cleanups. I will manage this with upstream in general. > [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]: 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 %doc. > [x]: License field in the package spec file matches the actual license. > Note: Checking patched sources after %prep for licenses. Licenses found: > "GPL (v2 or later) (with incorrect FSF address)", "MIT/X11 (BSD like)", > "Unknown or generated". 1 files have unknown license. Detailed output of > licensecheck in /home/build/fedora-review/indi-sx/licensecheck.txt > ++ OK, MIT is compatible to GPLv2+ > [x]: %build honors applicable compiler flags or justifies otherwise. > [?]: Package contains no bundled libraries without FPC exception. > ++ see above {*} > [x]: Changelog in prescribed format. > [?]: Sources contain only permissible code or content. > ++ I don't have the time to read the code details, besides am no owner of > any INDI devices. > [-]: Package contains desktop file if it is a GUI application. > [-]: 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. > [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. > [?]: Package is not known to require an ExcludeArch tag. > ++ Original CMakeLists.txt support ARM only for Debian. Please ask upstream > about official > Fedora/ARM support. You are wrong. What you mean with Debian ARM only is the CPack stuff. But this doesn't matter anything here. We do not use CPack for packaging here ;) And tell my any reason why this code should only work on Debian as it is compiled from source. > [-]: Large documentation must go in a -doc subpackage. Large could be size > (~1MB) or number of files. > Note: Documentation size is 10240 bytes in 2 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]: Package requires other packages for directories it uses. > [x]: Package must own all directories that it creates. > [x]: Package does not own files or directories owned by other packages. > [x]: All build dependencies are listed in BuildRequires, except for any that > are listed in the exceptions section of Packaging Guidelines. > [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 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 do not use a name that already exist > [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: > [?]: Packager, Vendor, PreReq, Copyright tags should not be in spec file > Note: Found : Packager: Raphael Groner <projects.rg [AT] smart.ms> > See: http://fedoraproject.org/wiki/Packaging:Guidelines#Tags > ++ Maybe bug due to my rpmbuild configuration. Let's ignore it. > [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. > ++ Upstreamed patch is confirmed. {**} > [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. > ++ See {**} > [x]: SourceX tarball generation or download is documented. > Note: Package contains tarball without URL, check comments > ++ Comments found. > [-]: 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. > ++ Must be validated again with help from koji. See Koji scratch build above ;) http://koji.fedoraproject.org/koji/taskinfo?taskID=7940429 Greetings, Christian
Spec URL: https://lupinix.fedorapeople.org/indi/indi-sx.spec SRPM URL: https://lupinix.fedorapeople.org/indi/indi-sx-0.9.9-3.20141025svn1784.fc20.src.rpm Removed the %{checkout} macro from changelog, was a bad idea :(
New Koji build: http://koji.fedoraproject.org/koji/taskinfo?taskID=7942652
> [?]: Sources contain only permissible code or content. > ++ I don't have the time to read the code details, besides am no owner of > any INDI devices. You did not comment on that. Honestly, I do worry about shipping dead code, at least in the SRPM. Consistently thinking, I am talking about the platform specific conditionals and so any code - but as far as I understand now that dead code will in Fedora never be used but still shipped !! - in CMakelists.txt content and also the CPack logic. It may confuse when you look at the code and it is just NOOP over several lines. Please try to sort things out with help from upstream. If upstream wants still to keep going with CPack, the maintainer should really think about also using CPack for packaging what would IIRC bring feature conflicts to rpmbuild. CMake was designed to generate makefiles dynamically. Why do we need that again on the meta level to generate also dynamic CMake configuration, I don't understand, sorry. It should be the job of CMake itself and already to care about platform specific stuff, doesn't it? IMHO it's the job of the packager/maintainer to care about the packaging logic, also CMake from upstream with maybe needed patches from downstream (Fedora). When upstream is too lazy for caring about possible downstream, better ignore them, there you are right but still what then to do with dead and not needed code, just remove it by patch. That's how I understand Fedora policy. As the other points with originally [?] are considered, those are now {x]. Therefore, I think the package is ACCEPT.
Thank you for reviewing the package :)
New Package SCM Request ======================= Package Name: indi-sx Short Description: INDI driver providing support for Starlight Xpress devices Upstream URL: http://indilib.org/ Owners: lupinix Branches: f21 InitialCC:
Git done (by process-git-requests).
indi-sx-0.9.9-3.20141025svn1784.fc21 has been submitted as an update for Fedora 21. https://admin.fedoraproject.org/updates/indi-sx-0.9.9-3.20141025svn1784.fc21
Error: Package: indi-sx-0.9.9-3.20141025svn1784.fc21.x86_64 (/indi-sx-0.9.9-3.20141025svn1784.fc21.x86_64) Requires: libstdc++.so.6(CXXABI_1.3.8)(64bit) You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest Fedora 20. I guess this has to do with the API issue and the known koji build failures for F20.
You're trying to install a f21 package on f21, that's your problem ;) And there is no API "issue", the API changed => I only package for F21+ ;)
indi-sx-0.9.9-3.20141025svn1784.fc21 has been pushed to the Fedora 21 testing repository.
indi-sx-0.9.9-3.20141025svn1784.fc21 has been pushed to the Fedora 21 stable repository.
Package Change Request ====================== Package Name: indi-sx New Branches: f20 Owners: lupinix InitialCC: With new libindi release in f20 this package can be imported in f20 too :)