Review Request: opae - Open Programmable Acceration Engine Spec URL : https://releases.pagure.org/opae/opae.spec SRPM URL : https://releases.pagure.org/opae/opae-1.4.0-1.src.rpm This package is for the making the opae-sdk available on Fedora. It is an application layer controlling FPGA hardware. The main project page is https://01.org/OPAE https://github.com/OPAE/opae-sdk rpmlint on f31 is Thu 20 Feb 2020 06:10:58 PM EST Fedora release 31 (Thirty One) opae-1.4.0-1.src.rpm 1 packages and 0 specfiles checked; 0 errors, 0 warnings. opae-1.4.0-1.x86_64.rpm opae.x86_64: E: explicit-lib-dependency libuuid opae.x86_64: W: dangerous-command-in-%preun rm 1 packages and 0 specfiles checked; 1 errors, 1 warnings. opae-debuginfo-1.4.0-1.x86_64.rpm 1 packages and 0 specfiles checked; 0 errors, 0 warnings. opae-debugsource-1.4.0-1.x86_64.rpm 1 packages and 0 specfiles checked; 0 errors, 0 warnings. opae-devel-1.4.0-1.x86_64.rpm opae-devel.x86_64: W: no-version-dependency-on opae/opae-libs/libopae 1.4.0 opae-devel.x86_64: W: no-documentation 1 packages and 0 specfiles checked; 0 errors, 2 warnings. opae-samples-1.4.0-1.x86_64.rpm opae-samples.x86_64: W: no-documentation opae-samples.x86_64: W: no-manual-page-for-binary hello_fpga 1 packages and 0 specfiles checked; 0 errors, 2 warnings. opae-samples-debuginfo-1.4.0-1.x86_64.rpm 1 packages and 0 specfiles checked; 0 errors, 0 warnings. opae-tools-1.4.0-1.x86_64.rpm opae-tools.x86_64: W: no-documentation opae-tools.x86_64: W: no-manual-page-for-binary fpgaconf opae-tools.x86_64: W: no-manual-page-for-binary fpgad opae-tools.x86_64: W: no-manual-page-for-binary fpgainfo opae-tools.x86_64: W: no-manual-page-for-binary fpgametrics opae-tools.x86_64: W: dangerous-command-in-%post ln 1 packages and 0 specfiles checked; 0 errors, 6 warnings. opae-tools-debuginfo-1.4.0-1.x86_64.rpm 1 packages and 0 specfiles checked; 0 errors, 0 warnings. opae-tools-extra-1.4.0-1.x86_64.rpm opae-tools-extra.x86_64: W: no-documentation opae-tools-extra.x86_64: W: no-manual-page-for-binary bist opae-tools-extra.x86_64: W: no-manual-page-for-binary bist_app opae-tools-extra.x86_64: W: no-manual-page-for-binary bist_app.py opae-tools-extra.x86_64: W: no-manual-page-for-binary bist_common.py opae-tools-extra.x86_64: W: no-manual-page-for-binary bist_def.py opae-tools-extra.x86_64: W: no-manual-page-for-binary bist_dma.py opae-tools-extra.x86_64: W: no-manual-page-for-binary bist_nlb0.py opae-tools-extra.x86_64: W: no-manual-page-for-binary bist_nlb3.py opae-tools-extra.x86_64: W: no-manual-page-for-binary coreidle opae-tools-extra.x86_64: W: no-manual-page-for-binary fpga_dma_vc_test opae-tools-extra.x86_64: W: no-manual-page-for-binary fpgabist opae-tools-extra.x86_64: W: no-manual-page-for-binary hssi_config opae-tools-extra.x86_64: W: no-manual-page-for-binary hssi_loopback opae-tools-extra.x86_64: W: no-manual-page-for-binary mmlink opae-tools-extra.x86_64: W: no-manual-page-for-binary ras opae-tools-extra.x86_64: W: no-manual-page-for-binary userclk 1 packages and 0 specfiles checked; 0 errors, 17 warnings. opae-tools-extra-debuginfo-1.4.0-1.x86_64.rpm 1 packages and 0 specfiles checked; 0 errors, 0 warnings. libuuid is the name of the package/rpm. $ dnf search libuuid Spacewalk plugin has to be run under with the root privileges. Not root, Subscription Management repositories not updated Repository google-chrome is listed more than once in the configuration Last metadata expiration check: 6 days, 21:22:12 ago on Fri 14 Feb 2020 02:45:33 PM PST. ================================================== Name Exactly Matched: libuuid ================================================== libuuid.x86_64 : Universally unique ID library libuuid.i686 : Universally unique ID library libuuid.x86_64 : Universally unique ID library ====================================================== Name Matched: libuuid ====================================================== libuuid-devel.i686 : Universally unique ID libraryck.sh libuuid-devel.x86_64 : Universally unique ID library
>Group: Development/Libraries >Vendor: Intel Corporation >... >Group: Development/Libraries These are not used in Fedora. https://docs.fedoraproject.org/en-US/packaging-guidelines/#_tags_and_sections >Requires: libuuid, json-c, python >BuildRequires: python-devel >BuildRequires: python-sphinx Referring to python in an unversion fashion is a big no-no in Fedora spec files. ;) You should explicitly specify "python3" here. >Source0: https://github.com/OPAE/opae-sdk/releases/download/%{version}-%{release}/%{name}-%{version}-%{release}.tar.gz Do not include %{release} in the source name, as that will cause the source name to change every time you make any changes to the spec. >%package devel >Requires: %{name} This should be a versioned dependency: "%{name}%{?_isa} = %{version}-%{release}". https://docs.fedoraproject.org/en-US/packaging-guidelines/#_requiring_base_package >%files >%defattr(-,root,root,-) Do not use this unless you really need to. https://docs.fedoraproject.org/en-US/packaging-guidelines/#_file_permissions
The spec and srpm have been updated to address these issues. Also removed the %clean section per https://docs.fedoraproject.org/en-US/packaging-guidelines/#_tags_and_sections Needed to change the name on spec to work around release folder conflict with opae.spec. Spec URL : https://releases.pagure.org/opae/opae-1.4.0-2.spec SRPM URL : https://releases.pagure.org/opae/opae-1.4.0-2.src.rpm
Package Review ============== Legend: [x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated [ ] = Manual review needed Issues: ======= - ldconfig not called in %post and %postun for Fedora 28 and later. Note: /sbin/ldconfig called in opae, opae-tools, opae-tools-extra <= you need to add this for the listed packages See: https://fedoraproject.org/wiki/Changes/Removing_ldconfig_scriptlets - Dist tag is not present. <= you need to add a %{?dist} tag to the release tag - Spec file name must match the spec package %{name}, in the format %{name}.spec. <= spec file has to be named opae.spec Note: opae-1.4.0-2.spec should be opae.spec See: https://docs.fedoraproject.org/en-US/packaging- guidelines/#_spec_file_naming - Static libraries in -static or -devel subpackage, providing -devel if <= If you want to ship the .a files, you need to put them in a -static subpackage present. Note: Package has .a files: opae-devel. Does not provide -static: opae- devel. See: https://docs.fedoraproject.org/en-US/packaging- guidelines/#packaging-static-libraries - systemd_post is invoked in %post, systemd_preun in %preun, and <= Probably self explanatory systemd_postun in %postun for Systemd service files. Note: Systemd service file(s) in opae-tools See: https://docs.fedoraproject.org/en-US/packaging- guidelines/Scriptlets/#_scriptlets ===== MUST items ===== C/C++: [x]: Package does not contain kernel modules. [!]: Package contains no static executables. <= see above [!]: Development (unversioned) .so files in -devel subpackage, if present. <= you've got some unversioned .so files in the main package, should be versioned or in the -devel subpackage Note: Unversioned so-files in private %_libdir subdirectory (see attachment). Verify they are not in ld path. [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. 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. [!]: If (and only if) the source package includes the text of the <= Just need to include the LICENSE file in the main package manifest using the %license tag license(s) in its own file, then that file, containing the text of the license(s) for the package is included in %license. [x]: License field in the package spec file matches the actual license. Note: Checking patched sources after %prep for licenses. Licenses found: "Unknown or generated", "BSD 3-clause "New" or "Revised" License", "Expat License BSD 3-clause "New" or "Revised" License", "Expat License", "*No copyright* BSD (unspecified)", "GNU General Public License (v2)". 549 files have unknown license. Detailed output of licensecheck in /home/nhorman/1806017-opae-1.4.0-2/licensecheck.txt [!]: License file installed when any subpackage combination is installed. <= assuming the opae package is required by all subpackages, this will be fixed when you include the license file [!]: If the package is under multiple licenses, the licensing breakdown must be documented in the spec. [!]: Package requires other packages for directories it uses. <= Need to use the %dir tag on the listed directories in the manifest Note: No known owner of /usr/src/opae/samples, /etc/opae, /usr/lib64/opae, /usr/src/opae/cmake/modules, /usr/src/opae/cmake [!]: Package must own all directories that it creates. Note: Directories without known owners: /etc/opae, /usr/src/opae/cmake, /usr/lib/systemd, /usr/src/opae/cmake/modules, /usr/lib/systemd/system, /usr/lib64/opae, /usr/src/opae/samples [!]: %build honors applicable compiler flags or justifies otherwise. <= IIRC, you need to specify the %{_smp_flags} macro when calling %cmake [?]: Package contains no bundled libraries without FPC exception. [x]: Changelog in prescribed format. [x]: Sources contain only permissible code or content. [-]: Package contains desktop file if it is a GUI application. [!]: Development files must be in a -devel package <= this is the same as the unversioned so files above [!]: Package uses nothing in %doc for runtime. [!]: Package consistently uses macros (instead of hard-coded directory <= use %{_unitdir instead of fully qualified paths to service files} 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. [!]: Package is not known to require an ExcludeArch tag. <= I assume opae is x86 only? If so, then you are missing an ExclusiveArch tag [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 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]: %config files are marked noreplace or the reason is justified. [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 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]: No %config files under /usr. [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]: File names are valid UTF-8. [x]: Large documentation must go in a -doc subpackage. Large could be size (~1MB) or number of files. Note: Documentation size is 0 bytes in 0 files. [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). [!]: Fully versioned dependency in subpackages if applicable. <= Self explanatory Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in opae- samples [?]: Package functions as described. [x]: Latest version is packaged. [x]: Package does not include license text files separate from upstream. [x]: Patches link to upstream bugs/comments/lists or are otherwise justified. [-]: Scriptlets must be sane, if used. [-]: 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. [!]: Package should compile and build into binary rpms on all supported <= Build fails on all non-x86 arches (see https://koji.fedoraproject.org/koji/taskinfo?taskID=41943949) architectures. [-]: %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: [!]: Spec file according to URL is the same as in SRPM. <= this is the spec file naming issue from above Note: Spec file as given by url is not the same as in SRPM (see attached diff). See: (this test has no URL) [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: opae-1.4.0-2.x86_64.rpm opae-devel-1.4.0-2.x86_64.rpm opae-tools-1.4.0-2.x86_64.rpm opae-tools-extra-1.4.0-2.x86_64.rpm opae-samples-1.4.0-2.x86_64.rpm opae-debuginfo-1.4.0-2.x86_64.rpm opae-debugsource-1.4.0-2.x86_64.rpm opae-1.4.0-2.src.rpm opae.x86_64: E: explicit-lib-dependency libuuid <= IIRC, you don't need to specify the library as a dependency if the BuildRequires specifies the -devel subpackage as a dependency opae.x86_64: W: dangerous-command-in-%preun rm <= it seems you are adding an empty file here, you shouldn't need to do that, and can save some code in the post and preun scripts opae-devel.x86_64: W: no-documentation <= if there are documentation for all of these, you should include them in the manifest as %doc, otherwise, you can ignore these all opae-tools.x86_64: W: no-documentation opae-tools.x86_64: W: no-manual-page-for-binary fpgaconf opae-tools.x86_64: W: no-manual-page-for-binary fpgad opae-tools.x86_64: W: no-manual-page-for-binary fpgainfo opae-tools.x86_64: W: no-manual-page-for-binary fpgametrics opae-tools.x86_64: W: dangerous-command-in-%post ln opae-tools-extra.x86_64: W: no-documentation opae-tools-extra.x86_64: W: no-manual-page-for-binary bist opae-tools-extra.x86_64: W: no-manual-page-for-binary bist_app opae-tools-extra.x86_64: W: no-manual-page-for-binary bist_app.py opae-tools-extra.x86_64: W: no-manual-page-for-binary bist_common.py opae-tools-extra.x86_64: W: no-manual-page-for-binary bist_def.py opae-tools-extra.x86_64: W: no-manual-page-for-binary bist_dma.py opae-tools-extra.x86_64: W: no-manual-page-for-binary bist_nlb0.py opae-tools-extra.x86_64: W: no-manual-page-for-binary bist_nlb3.py opae-tools-extra.x86_64: W: no-manual-page-for-binary coreidle opae-tools-extra.x86_64: W: no-manual-page-for-binary fpga_dma_vc_test opae-tools-extra.x86_64: W: no-manual-page-for-binary fpgabist opae-tools-extra.x86_64: W: no-manual-page-for-binary hssi_config opae-tools-extra.x86_64: W: no-manual-page-for-binary hssi_loopback opae-tools-extra.x86_64: W: no-manual-page-for-binary mmlink opae-tools-extra.x86_64: W: no-manual-page-for-binary ras opae-tools-extra.x86_64: W: no-manual-page-for-binary userclk opae-samples.x86_64: W: no-documentation opae-samples.x86_64: W: no-manual-page-for-binary hello_fpga 8 packages and 0 specfiles checked; 1 errors, 27 warnings. Rpmlint (debuginfo) ------------------- Checking: opae-debuginfo-1.4.0-2.x86_64.rpm opae-tools-extra-debuginfo-1.4.0-2.x86_64.rpm opae-tools-debuginfo-1.4.0-2.x86_64.rpm opae-samples-debuginfo-1.4.0-2.x86_64.rpm 4 packages and 0 specfiles checked; 0 errors, 0 warnings. Rpmlint (installed packages) ---------------------------- perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LC_CTYPE = "C.UTF-8", LANG = "en_US.UTF-8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LC_CTYPE = "C.UTF-8", LANG = "en_US.UTF-8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). opae-debugsource.x86_64: W: invalid-url URL: https://github.com/OPAE/opae-sdk <urlopen error [Errno -2] Name or service not known> <= this is a known issue with github, can be fixed, or ignored opae-samples-debuginfo.x86_64: W: invalid-url URL: https://github.com/OPAE/opae-sdk <urlopen error [Errno -2] Name or service not known> opae-tools-debuginfo.x86_64: W: invalid-url URL: https://github.com/OPAE/opae-sdk <urlopen error [Errno -2] Name or service not known> opae-debuginfo.x86_64: W: invalid-url URL: https://github.com/OPAE/opae-sdk <urlopen error [Errno -2] Name or service not known> opae-tools-extra.x86_64: W: invalid-url URL: https://github.com/OPAE/opae-sdk <urlopen error [Errno -2] Name or service not known> opae-tools-extra.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libhssi-io.so.1.4.0 /lib64/libopae-c.so.1 opae-tools-extra.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-c++-utils.so.1.4.0 pthread_mutex_clocklock opae-tools-extra.x86_64: W: no-documentation <= as before, include docs, or ignore opae-tools-extra.x86_64: W: no-manual-page-for-binary bist opae-tools-extra.x86_64: W: no-manual-page-for-binary bist_app opae-tools-extra.x86_64: W: no-manual-page-for-binary bist_app.py opae-tools-extra.x86_64: W: no-manual-page-for-binary bist_common.py opae-tools-extra.x86_64: W: no-manual-page-for-binary bist_def.py opae-tools-extra.x86_64: W: no-manual-page-for-binary bist_dma.py opae-tools-extra.x86_64: W: no-manual-page-for-binary bist_nlb0.py opae-tools-extra.x86_64: W: no-manual-page-for-binary bist_nlb3.py opae-tools-extra.x86_64: W: no-manual-page-for-binary coreidle opae-tools-extra.x86_64: W: no-manual-page-for-binary fpga_dma_vc_test opae-tools-extra.x86_64: W: no-manual-page-for-binary fpgabist opae-tools-extra.x86_64: W: no-manual-page-for-binary hssi_config opae-tools-extra.x86_64: W: no-manual-page-for-binary hssi_loopback opae-tools-extra.x86_64: W: no-manual-page-for-binary mmlink opae-tools-extra.x86_64: W: no-manual-page-for-binary ras opae-tools-extra.x86_64: W: no-manual-page-for-binary userclk opae.x86_64: E: explicit-lib-dependency libuuid opae.x86_64: W: invalid-url URL: https://github.com/OPAE/opae-sdk <urlopen error [Errno -2] Name or service not known> opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetSocketID <= What library defines these? You may need an extra requires to fix opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetBBSVersion opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetLocalMemorySize opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetCapabilities opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetNumErrors opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetLocalMemorySize opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetParent opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetNumSlots opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetModel opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetBus opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetFunction opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetModel opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetFunction opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetBBSID opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetBBSID opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetAcceleratorState opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetNumInterrupts opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetDevice opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetObjectID opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetNumSlots opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetNumInterrupts opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetAcceleratorState opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetParent opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetBus opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetSegment opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetObjectType opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetCapabilities opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetDevice opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetDeviceID opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetNumMMIO opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetVendorID opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetBBSVersion opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetObjectID opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetNumErrors opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetVendorID opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetObjectType opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetSegment opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetSocketID opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetNumMMIO opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetDeviceID opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaMapMMIO opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaOpen opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetGUID opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaErrStr opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaGetProperties opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaRegisterEvent opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaGetPropertiesFromHandle opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaCreateEventHandle opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 strcat_s opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaObjectGetSize opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaWriteMMIO32 opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaTokenGetObject opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaDestroyObject opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 snprintf_s_i opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaDestroyEventHandle opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 strncpy_s opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaObjectRead64 opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaWriteMMIO512 opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaReadMMIO32 opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaObjectGetType opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaGetErrorInfo opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaReconfigureSlot opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaGetOSObjectFromEventHandle opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaObjectGetObject opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaObjectRead opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaReset opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaGetOPAECVersionString opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaReleaseBuffer opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaCloneToken opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaDestroyToken opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaHandleGetObject opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaGetIOAddress opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaGetOPAECVersion opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaReadError opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaReadMMIO64 opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaWriteMMIO64 opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaEnumerate opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaGetOPAECBuildString opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaClose opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaObjectGetObjectAt opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaUnregisterEvent opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaDestroyProperties opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPrepareBuffer opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaObjectWrite64 opae.x86_64: W: dangerous-command-in-%preun rm opae-tools-extra-debuginfo.x86_64: W: invalid-url URL: https://github.com/OPAE/opae-sdk <urlopen error [Errno -2] Name or service not known> opae-tools.x86_64: W: invalid-url URL: https://github.com/OPAE/opae-sdk <urlopen error [Errno -2] Name or service not known> opae-tools.x86_64: W: undefined-non-weak-symbol /usr/lib64/libfpgad-api.so.1.4.0 strnlen_s <= is opae defining these somewhere? That seems...odd opae-tools.x86_64: W: undefined-non-weak-symbol /usr/lib64/libfpgad-api.so.1.4.0 strncpy_s opae-tools.x86_64: W: no-documentation opae-tools.x86_64: W: no-manual-page-for-binary fpgaconf opae-tools.x86_64: W: no-manual-page-for-binary fpgad opae-tools.x86_64: W: no-manual-page-for-binary fpgainfo opae-tools.x86_64: W: no-manual-page-for-binary fpgametrics opae-tools.x86_64: W: dangerous-command-in-%post ln opae-devel.x86_64: W: invalid-url URL: https://github.com/OPAE/opae-sdk <urlopen error [Errno -2] Name or service not known> opae-devel.x86_64: W: no-documentation opae-samples.x86_64: W: invalid-url URL: https://github.com/OPAE/opae-sdk <urlopen error [Errno -2] Name or service not known> opae-samples.x86_64: W: no-documentation opae-samples.x86_64: W: no-manual-page-for-binary hello_fpga 10 packages and 0 specfiles checked; 1 errors, 125 warnings. Unversioned so-files -------------------- opae: /usr/lib64/opae/libboard_rc.so <= These all need to be versioned, or moved to the -devel subpackage opae: /usr/lib64/opae/libboard_vc.so opae: /usr/lib64/opae/libmodbmc.so opae: /usr/lib64/opae/libxfpga.so opae-tools: /usr/lib64/opae/libfpgad-vc.so opae-tools: /usr/lib64/opae/libfpgad-xfpga.so Source checksums ---------------- https://github.com/OPAE/opae-sdk/releases/download/1.4.0-1/opae-1.4.0-1.tar.gz : CHECKSUM(SHA256) this package : 43528235b3cda98ba662d6d027663e2d95b9d2b0cd34aa6c13ba874624e1a2b1 CHECKSUM(SHA256) upstream package : 43528235b3cda98ba662d6d027663e2d95b9d2b0cd34aa6c13ba874624e1a2b1 Requires -------- opae (rpmlib, GLIBC filtered): /bin/sh /sbin/ldconfig json-c libc.so.6()(64bit) libdl.so.2()(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libjson-c.so.4()(64bit) libopae-c.so.1()(64bit) libpthread.so.0()(64bit) libstdc++.so.6()(64bit) libstdc++.so.6(CXXABI_1.3)(64bit) libuuid libuuid.so.1()(64bit) libuuid.so.1(UUID_1.0)(64bit) python3 rtld(GNU_HASH) opae-devel (rpmlib, GLIBC filtered): /usr/bin/cmake libbitstream.so.1()(64bit) libbmc.so.1()(64bit) libfpgad-api.so.1()(64bit) libhssi-io.so.1()(64bit) libopae-c++-utils.so.1()(64bit) libopae-c.so.1()(64bit) libopae-cxx-core.so.1()(64bit) libuuid-devel opae(x86-64) opae-tools (rpmlib, GLIBC filtered): /bin/sh /sbin/ldconfig config(opae-tools) libbitstream.so.1()(64bit) libc.so.6()(64bit) libdl.so.2()(64bit) libfpgad-api.so.1()(64bit) libjson-c.so.4()(64bit) libopae-c.so.1()(64bit) libpthread.so.0()(64bit) libuuid.so.1()(64bit) libuuid.so.1(UUID_1.0)(64bit) opae(x86-64) rtld(GNU_HASH) opae-tools-extra (rpmlib, GLIBC filtered): /sbin/ldconfig /usr/bin/python3 libbitstream.so.1()(64bit) libc.so.6()(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libhssi-io.so.1()(64bit) libhwloc.so.15()(64bit) libjson-c.so.4()(64bit) libm.so.6()(64bit) libopae-c++-utils.so.1()(64bit) libopae-c.so.1()(64bit) libopae-cxx-core.so.1()(64bit) libpthread.so.0()(64bit) libstdc++.so.6()(64bit) libstdc++.so.6(CXXABI_1.3)(64bit) libstdc++.so.6(CXXABI_1.3.11)(64bit) libstdc++.so.6(CXXABI_1.3.2)(64bit) libstdc++.so.6(CXXABI_1.3.3)(64bit) libstdc++.so.6(CXXABI_1.3.9)(64bit) libuuid.so.1()(64bit) libuuid.so.1(UUID_1.0)(64bit) opae(x86-64) rtld(GNU_HASH) opae-samples (rpmlib, GLIBC filtered): libc.so.6()(64bit) libopae-c.so.1()(64bit) libpthread.so.0()(64bit) libuuid.so.1()(64bit) libuuid.so.1(UUID_1.0)(64bit) rtld(GNU_HASH) opae-debuginfo (rpmlib, GLIBC filtered): opae-debugsource (rpmlib, GLIBC filtered): Provides -------- opae: libbitstream.so.1()(64bit) libbmc.so.1()(64bit) libboard_rc.so()(64bit) libboard_vc.so()(64bit) libmodbmc.so()(64bit) libopae-c.so.1()(64bit) libopae-cxx-core.so.1()(64bit) libxfpga.so()(64bit) opae opae(x86-64) opae-devel: opae-devel opae-devel(x86-64) opae-tools: config(opae-tools) libfpgad-api.so.1()(64bit) libfpgad-vc.so()(64bit) libfpgad-xfpga.so()(64bit) opae-tools opae-tools(x86-64) opae-tools-extra: libhssi-io.so.1()(64bit) libopae-c++-utils.so.1()(64bit) opae-tools-extra opae-tools-extra(x86-64) opae-samples: opae-samples opae-samples(x86-64) opae-debuginfo: debuginfo(build-id) opae-debuginfo opae-debuginfo(x86-64) opae-debugsource: opae-debugsource opae-debugsource(x86-64) Diff spec file in url and in SRPM <= This suggests you built the srpm with a different spec file than what you posted in the bz. shouldn't do that --------------------------------- --- /home/nhorman/1806017-opae-1.4.0-2/srpm/opae-1.4.0-2.spec 2020-02-26 12:42:00.711600139 -0500 +++ /home/nhorman/1806017-opae-1.4.0-2/srpm-unpacked/opae.spec 2020-02-24 11:53:40.000000000 -0500 @@ -227,4 +227,5 @@ %{_bindir}/hello_fpga + %changelog * Mon Feb 24 2020 Tom Rix <trix> 1.4.0-2 @@ -235,5 +236,4 @@ - Remove vendor tag - Remove group tag -- Remove clean section * Tue Dec 17 2019 Korde Nakul <nakul.korde> 1.4.0-1 Generated by fedora-review 0.7.5 (5fa5b7e) last change: 2020-02-16 Command line :/usr/bin/fedora-review -b 1806017 Buildroot used: fedora-rawhide-x86_64 Active plugins: Shell-api, Generic, C/C++ Disabled plugins: Python, Haskell, PHP, SugarActivity, R, Ocaml, fonts, Java, Perl Disabled flags: EPEL6, EPEL7, DISTTAG, BATCH, EXARCH
Spec URL : https://github.com/trixirt/opae-rpm/blob/opae-1.4.0-3/opae.spec SRPM URL : https://releases.pagure.org/opae/opae-1.4.0-3.fc31.src.rpm I believe address the outstanding issues. The biggest change was consolidating the samples, tools and tools-extra packages into the devel package. The non-versioned *.so are intentional. They have been moved to the devel package libsafestr.a was converted to a shared library. rpmlint for undefined/weak symbols for fpga* are in the libopae-c.so.1.4.0 library *_s are in the libsafestr.so.1.4.0 These libraries are part of the base package. At this time, there is no other documentation / manpages. The license files are now distributed in the the opae datadir ldconfig use removed Use of systemd_* macros for fpga.service
%make_build already includes %{?_smp_mflags}. > [x]: Patches link to upstream bugs/comments/lists or are otherwise > justified. They are not linked or commented.
This all looks pretty good now. The undefined symbols are still bothering me though. It appears as though, when building, you aren't linking to the libraries that implement the fpgaPropertiesSet* functions (I believe libopae-c.so). As such there are no DT_NEEDED entries in the libraries calling these functions to auto-load those dependent libraries. Was that intentional, and if so, can you document why here? Package Review ============== Legend: [x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated [ ] = Manual review needed Issues: ======= - 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. Note: License file COPYING is not marked as %license See: https://docs.fedoraproject.org/en-US/packaging- guidelines/LicensingGuidelines/#_license_text ===== 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 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: "Unknown or generated", "BSD 3-clause "New" or "Revised" License", "Expat License BSD 3-clause "New" or "Revised" License", "Expat License", "*No copyright* BSD (unspecified)", "GNU General Public License (v2)". 549 files have unknown license. Detailed output of licensecheck in /home/nhorman/Downloads/review- opae/licensecheck.txt [x]: License file installed when any subpackage combination is installed. [x]: If the package is under multiple licenses, the licensing breakdown must be documented in the spec. [x]: Package must own all directories that it creates. Note: Directories without known owners: /usr/lib/systemd/system, /usr/lib/systemd [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. [-]: Package contains desktop file if it is a GUI application. [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]: 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 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]: %config files are marked noreplace or the reason is justified. [x]: Macros in Summary, %description expandable at SRPM build time. [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]: No %config files under /usr. [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]: systemd_post is invoked in %post, systemd_preun in %preun, and systemd_postun in %postun for Systemd service files. Note: Systemd service file(s) in opae-devel [x]: File names are valid UTF-8. [x]: Large documentation must go in a -doc subpackage. Large could be size (~1MB) or number of files. Note: Documentation size is 0 bytes in 0 files. [x]: Packages must not store files under /srv, /opt or /usr/local ===== SHOULD items ===== Generic: [-]: 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. [x]: Patches link to upstream bugs/comments/lists or are otherwise justified. [x]: Scriptlets must be sane, if used. [x]: 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. [-]: %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]: Package should compile and build into binary rpms on all supported architectures. [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: opae-1.4.0-3.fc33.x86_64.rpm opae-devel-1.4.0-3.fc33.x86_64.rpm opae-debuginfo-1.4.0-3.fc33.x86_64.rpm opae-debugsource-1.4.0-3.fc33.x86_64.rpm opae-1.4.0-3.fc33.src.rpm opae.x86_64: E: postin-without-ldconfig /usr/lib64/libbitstream.so.1.4.0 <= not sure why this is still triggering, since we're not supposed to call it anymore, I'm ignoring it opae.x86_64: E: postin-without-ldconfig /usr/lib64/libbmc.so.1.4.0 opae.x86_64: E: postin-without-ldconfig /usr/lib64/libfpgad-api.so.1.4.0 opae.x86_64: E: postin-without-ldconfig /usr/lib64/libhssi-io.so.1.4.0 opae.x86_64: E: postin-without-ldconfig /usr/lib64/libopae-c++-utils.so.1.4.0 opae.x86_64: E: postin-without-ldconfig /usr/lib64/libopae-c.so.1.4.0 opae.x86_64: E: postin-without-ldconfig /usr/lib64/libopae-cxx-core.so.1.4.0 opae.x86_64: E: postin-without-ldconfig /usr/lib64/libsafestr.so.1.4.0 opae-devel.x86_64: W: no-documentation opae-devel.x86_64: W: no-manual-page-for-binary bist opae-devel.x86_64: W: no-manual-page-for-binary bist_app opae-devel.x86_64: W: no-manual-page-for-binary bist_app.py opae-devel.x86_64: W: no-manual-page-for-binary bist_common.py opae-devel.x86_64: W: no-manual-page-for-binary bist_def.py opae-devel.x86_64: W: no-manual-page-for-binary bist_dma.py opae-devel.x86_64: W: no-manual-page-for-binary bist_nlb0.py opae-devel.x86_64: W: no-manual-page-for-binary bist_nlb3.py opae-devel.x86_64: W: no-manual-page-for-binary coreidle opae-devel.x86_64: W: no-manual-page-for-binary fpga_dma_vc_test opae-devel.x86_64: W: no-manual-page-for-binary fpgabist opae-devel.x86_64: W: no-manual-page-for-binary fpgaconf opae-devel.x86_64: W: no-manual-page-for-binary fpgad opae-devel.x86_64: W: no-manual-page-for-binary fpgainfo opae-devel.x86_64: W: no-manual-page-for-binary fpgametrics opae-devel.x86_64: W: no-manual-page-for-binary hello_fpga opae-devel.x86_64: W: no-manual-page-for-binary hssi_config opae-devel.x86_64: W: no-manual-page-for-binary hssi_loopback opae-devel.x86_64: W: no-manual-page-for-binary mmlink opae-devel.x86_64: W: no-manual-page-for-binary ras opae-devel.x86_64: W: no-manual-page-for-binary userclk 5 packages and 0 specfiles checked; 8 errors, 22 warnings. Rpmlint (debuginfo) ------------------- Checking: opae-debuginfo-1.4.0-3.fc33.x86_64.rpm opae-devel-debuginfo-1.4.0-3.fc33.x86_64.rpm 2 packages and 0 specfiles checked; 0 errors, 0 warnings. Rpmlint (installed packages) ---------------------------- perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LC_CTYPE = "C.UTF-8", LANG = "en_US.UTF-8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LC_CTYPE = "C.UTF-8", LANG = "en_US.UTF-8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). opae-devel.x86_64: W: invalid-url URL: https://github.com/OPAE/opae-sdk <urlopen error [Errno -2] Name or service not known> opae-devel.x86_64: W: no-documentation opae-devel.x86_64: W: no-manual-page-for-binary bist opae-devel.x86_64: W: no-manual-page-for-binary bist_app opae-devel.x86_64: W: no-manual-page-for-binary bist_app.py opae-devel.x86_64: W: no-manual-page-for-binary bist_common.py opae-devel.x86_64: W: no-manual-page-for-binary bist_def.py opae-devel.x86_64: W: no-manual-page-for-binary bist_dma.py opae-devel.x86_64: W: no-manual-page-for-binary bist_nlb0.py opae-devel.x86_64: W: no-manual-page-for-binary bist_nlb3.py opae-devel.x86_64: W: no-manual-page-for-binary coreidle opae-devel.x86_64: W: no-manual-page-for-binary fpga_dma_vc_test opae-devel.x86_64: W: no-manual-page-for-binary fpgabist opae-devel.x86_64: W: no-manual-page-for-binary fpgaconf opae-devel.x86_64: W: no-manual-page-for-binary fpgad opae-devel.x86_64: W: no-manual-page-for-binary fpgainfo opae-devel.x86_64: W: no-manual-page-for-binary fpgametrics opae-devel.x86_64: W: no-manual-page-for-binary hello_fpga opae-devel.x86_64: W: no-manual-page-for-binary hssi_config opae-devel.x86_64: W: no-manual-page-for-binary hssi_loopback opae-devel.x86_64: W: no-manual-page-for-binary mmlink opae-devel.x86_64: W: no-manual-page-for-binary ras opae-devel.x86_64: W: no-manual-page-for-binary userclk opae-devel-debuginfo.x86_64: W: invalid-url URL: https://github.com/OPAE/opae-sdk <urlopen error [Errno -2] Name or service not known> opae-debuginfo.x86_64: W: invalid-url URL: https://github.com/OPAE/opae-sdk <urlopen error [Errno -2] Name or service not known> opae.x86_64: W: invalid-url URL: https://github.com/OPAE/opae-sdk <urlopen error [Errno -2] Name or service not known> opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libfpgad-api.so.1.4.0 strnlen_s <= these are still bothersome opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libfpgad-api.so.1.4.0 strncpy_s opae.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libhssi-io.so.1.4.0 /lib64/libopae-c.so.1 opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-c++-utils.so.1.4.0 pthread_mutex_clocklock opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetSocketID opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetBBSVersion opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetLocalMemorySize opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetCapabilities opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetNumErrors opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetLocalMemorySize opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetParent opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetNumSlots opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetModel opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetBus opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetFunction opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetModel opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetFunction opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetBBSID opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetBBSID opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetAcceleratorState opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetNumInterrupts opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetDevice opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetObjectID opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetNumSlots opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetNumInterrupts opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetAcceleratorState opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetParent opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetBus opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetSegment opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetObjectType opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetCapabilities opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetDevice opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetDeviceID opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetNumMMIO opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetVendorID opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetBBSVersion opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetObjectID opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetNumErrors opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetVendorID opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetObjectType opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetSegment opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetSocketID opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetNumMMIO opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesGetDeviceID opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaMapMMIO opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaOpen opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPropertiesSetGUID opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaErrStr opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaGetProperties opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaRegisterEvent opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaGetPropertiesFromHandle opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaCreateEventHandle opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 strcat_s opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaObjectGetSize opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaWriteMMIO32 opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaTokenGetObject opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaDestroyObject opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 snprintf_s_i opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaDestroyEventHandle opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 strncpy_s opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaObjectRead64 opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaWriteMMIO512 opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaReadMMIO32 opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaObjectGetType opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaGetErrorInfo opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaReconfigureSlot opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaGetOSObjectFromEventHandle opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaObjectGetObject opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaObjectRead opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaReset opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaGetOPAECVersionString opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaReleaseBuffer opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaCloneToken opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaDestroyToken opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaHandleGetObject opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaGetIOAddress opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaGetOPAECVersion opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaReadError opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaReadMMIO64 opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaWriteMMIO64 opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaEnumerate opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaGetOPAECBuildString opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaClose opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaObjectGetObjectAt opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaUnregisterEvent opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaDestroyProperties opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaPrepareBuffer opae.x86_64: W: undefined-non-weak-symbol /usr/lib64/libopae-cxx-core.so.1.4.0 fpgaObjectWrite64 opae.x86_64: E: postin-without-ldconfig /usr/lib64/libbitstream.so.1.4.0 opae.x86_64: E: postin-without-ldconfig /usr/lib64/libbmc.so.1.4.0 opae.x86_64: E: postin-without-ldconfig /usr/lib64/libfpgad-api.so.1.4.0 opae.x86_64: E: postin-without-ldconfig /usr/lib64/libhssi-io.so.1.4.0 opae.x86_64: E: postin-without-ldconfig /usr/lib64/libopae-c++-utils.so.1.4.0 opae.x86_64: E: postin-without-ldconfig /usr/lib64/libopae-c.so.1.4.0 opae.x86_64: E: postin-without-ldconfig /usr/lib64/libopae-cxx-core.so.1.4.0 opae.x86_64: E: postin-without-ldconfig /usr/lib64/libsafestr.so.1.4.0 opae-debugsource.x86_64: W: invalid-url URL: https://github.com/OPAE/opae-sdk <urlopen error [Errno -2] Name or service not known> 5 packages and 0 specfiles checked; 8 errors, 115 warnings. Source checksums ---------------- https://github.com/OPAE/opae-sdk/releases/download/1.4.0-1/opae-1.4.0-1.tar.gz : CHECKSUM(SHA256) this package : 43528235b3cda98ba662d6d027663e2d95b9d2b0cd34aa6c13ba874624e1a2b1 CHECKSUM(SHA256) upstream package : 43528235b3cda98ba662d6d027663e2d95b9d2b0cd34aa6c13ba874624e1a2b1 Requires -------- opae (rpmlib, GLIBC filtered): /bin/sh libc.so.6()(64bit) libdl.so.2()(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libjson-c.so.4()(64bit) libopae-c++-utils.so.1()(64bit) libopae-c.so.1()(64bit) libopae-cxx-core.so.1()(64bit) libpthread.so.0()(64bit) libsafestr.so.1()(64bit) libstdc++.so.6()(64bit) libstdc++.so.6(CXXABI_1.3)(64bit) libstdc++.so.6(CXXABI_1.3.9)(64bit) libuuid.so.1()(64bit) libuuid.so.1(UUID_1.0)(64bit) rtld(GNU_HASH) opae-devel (rpmlib, GLIBC filtered): /bin/sh /usr/bin/cmake /usr/bin/python3 config(opae-devel) libbitstream.so.1()(64bit) libbmc.so.1()(64bit) libc.so.6()(64bit) libdl.so.2()(64bit) libfpgad-api.so.1()(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libhssi-io.so.1()(64bit) libhwloc.so.15()(64bit) libjson-c.so.4()(64bit) libm.so.6()(64bit) libopae-c++-utils.so.1()(64bit) libopae-c.so.1()(64bit) libopae-cxx-core.so.1()(64bit) libpthread.so.0()(64bit) libsafestr.so.1()(64bit) libstdc++.so.6()(64bit) libstdc++.so.6(CXXABI_1.3)(64bit) libstdc++.so.6(CXXABI_1.3.11)(64bit) libstdc++.so.6(CXXABI_1.3.2)(64bit) libstdc++.so.6(CXXABI_1.3.3)(64bit) libstdc++.so.6(CXXABI_1.3.9)(64bit) libuuid-devel libuuid.so.1()(64bit) libuuid.so.1(UUID_1.0)(64bit) opae(x86-64) rtld(GNU_HASH) opae-debuginfo (rpmlib, GLIBC filtered): opae-debugsource (rpmlib, GLIBC filtered): Provides -------- opae: libbitstream.so.1()(64bit) libbmc.so.1()(64bit) libfpgad-api.so.1()(64bit) libhssi-io.so.1()(64bit) libopae-c++-utils.so.1()(64bit) libopae-c.so.1()(64bit) libopae-cxx-core.so.1()(64bit) libsafestr.so.1()(64bit) opae opae(x86-64) opae-devel: config(opae-devel) libboard_rc.so()(64bit) libboard_vc.so()(64bit) libfpgad-vc.so()(64bit) libfpgad-xfpga.so()(64bit) libmodbmc.so()(64bit) libxfpga.so()(64bit) opae-devel opae-devel(x86-64) opae-debuginfo: debuginfo(build-id) opae-debuginfo opae-debuginfo(x86-64) opae-debugsource: opae-debugsource opae-debugsource(x86-64) Generated by fedora-review 0.7.5 (5fa5b7e) last change: 2020-02-16 Command line :/usr/bin/fedora-review -n opae Buildroot used: fedora-rawhide-x86_64 Active plugins: Shell-api, C/C++, Generic Disabled plugins: Haskell, Ocaml, Perl, R, fonts, Python, PHP, Java, SugarActivity Disabled flags: EPEL6, EPEL7, DISTTAG, BATCH, EXARCH
Spec URL : https://github.com/trixirt/opae-rpm/blob/opae-1.4.0-4/opae.spec SRPM URL : https://releases.pagure.org/opae/opae-1.4.0-4.fc31.src.rpm I believe these resolve the outstanding issues. The undefined symbols issue was resolved by improving the linking problem libraries. https://github.com/trixirt/opae-rpm/commit/01b36d83e89873f0ae42666a3620e0727ca0f038 The issue with _smp_mflags was resolved by removing it. https://github.com/trixirt/opae-rpm/commit/5e8a21b2ddd3fb14eeefabc57c9d87631240e71c On upstreaming changes. In general every git-ish patch 0001-* has been upstreamed. ex/ https://github.com/trixirt/opae-rpm/blob/opae-1.4.0-4/0001-Fix-exec-stack-in-fpga_dma_vc_test.patch maps to https://github.com/OPAE/opae-sdk/pull/1465 some like https://github.com/trixirt/opae-rpm/blob/opae-1.4.0-4/change-safestr-to-shared.patch maps to https://github.com/OPAE/opae-sdk/pull/1476 were not accepted because of fundamental changes in the opae-sdk master branch are on going.
The review looks good now, but I'm confused about the _smp_mflags issue. I understand that your local builds reduce _smp_mflags to the same string, but theres no guarantee of that when doing official builds in fedora. Different buildroots will set those flags to different strings, and many are non-default to the local setup (they enable hardening, etc). That needs to be returned to the spec file, please Other than that though, it looks good. I'm not worried about the out of tree patches. For user space packages, since you are the maintainer currently, its your prerogative to decide whats ok to carry and whats not. If you're ok with those patches, and they're open source licensed, its fine with me. if you can readd the _smp_mflags macro, I'll approve this immediately. Thanks!
Please see the definition of %make_build, and the entry in the Guidelines: https://docs.fedoraproject.org/en-US/packaging-guidelines/#_parallel_make There is no need to add %{?_smp_mflags} to the invocation. Additionally, this: cd _build make DESTDIR=%{buildroot} install can be shortened to: %make_install -C _build Also, you have %license somewhere in the middle of the spec file. It does not belong there, and is just putting random text at the end of your %description. %license is a marker for entries in %files, like %doc or %dir, so the two entries in %files should be changed from %doc to %license.
oh, duh, I'm sorry, I completely missed the fact that you converted to using the %make_build macro. You're right you're absolutely good to go. Approved.
Spec URL : https://github.com/trixirt/opae-rpm/blob/opae-1.4.0-5/opae.spec SRPM URL : https://releases.pagure.org/opae/opae-1.4.0-5.fc31.src.rpm The issues raised in by Elliot in comment 9 are addressed in this release with this commit https://github.com/trixirt/opae-rpm/commit/cf743c6407511578ad7c6781ae24b8abebc68179
(fedscm-admin): The Pagure repository was created at https://src.fedoraproject.org/rpms/opae