| Summary: | Review Request: ibacm - InfiniBand Communication Manager Assistant | ||
|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | Honggang LI <honli> |
| Component: | Package Review | Assignee: | Michal Schmidt <mschmidt> |
| Status: | CLOSED ERRATA | QA Contact: | Fedora Extras Quality Assurance <extras-qa> |
| Severity: | medium | Docs Contact: | |
| Priority: | medium | ||
| Version: | rawhide | CC: | jshortt, mschmidt, nhorman, package-review |
| Target Milestone: | --- | Flags: | mschmidt:
fedora-review+
|
| Target Release: | --- | ||
| Hardware: | All | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | Bug Fix | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2016-04-13 21:35:27 UTC | Type: | --- |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Bug Depends On: | |||
| Bug Blocks: | 1312131 | ||
|
Description
Honggang LI
2016-03-29 23:53:47 UTC
> %global _hardened_build 1 This is actually the default setting since Fedora 23: https://fedoraproject.org/wiki/Changes/Harden_All_Packages I see the Packaging Guidelines don't mention that fact, but anyway, it's certainly OK to keep it in the spec file as well. > # libibacmp.so is a plugin for the ibacm daemon, not a public library. > # Do not advertise it in RPM metadata: > %global _privatelibs libibacmp[.]so.* > %global __provides_exclude ^(%{_privatelibs})$ > %global __requires_exclude ^(%{_privatelibs})$ I see this matches the style described in "Filtering provides and requires after scanning" in https://fedoraproject.org/wiki/Packaging:AutoProvidesAndRequiresFiltering. I would just suggest moving these lines down, right before the %description, to satisfy the recommendation in "Location of macro invocation" on the page. > Name: ibacm > Version: 1.2.0 > Release: 1%{?dist} > Summary: InfiniBand Communication Manager Assistant > Group: System Environment/Daemons The Group: tag is unnecessary. > License: GPLv2 or BSD > Url: http://www.openfabrics.org/ > Source: http://downloads.openfabrics.org/downloads/rdmacm/%{name}-%{version}.tar.gz > Source1: ibacm.service It would be nice to have a systemd unit file in upstream. /me looks inside ibacm.service and src/acm.c ... I can see the daemonization is implemented carelessly. In such a case Type=forking does not buy us anything. We may as well use Type=simple and ExecStart=/usr/bin/ibacm -P WantedBy=network.target is unusual and likely wrong. I'll look into improving this later myself (will file a BZ to myself once we have the component created). This is not a problem for the review. > Patch0001: 0001-Coverity-and-compile-warning-fixes.patch It would be nice to get rid of the patch by getting the changes to upstream. I may as well do this when I'm sending the systemd-related changes. Not a problem for the review. > BuildRequires: libibverbs-devel >= 1.2.0 > BuildRequires: libibumad-devel >= 1.3.10.2 > BuildRequires: systemd Should also add "BuildRequires: gcc" according to https://fedoraproject.org/wiki/Packaging:C_and_C%2B%2B#BuildRequires_and_Requires > Requires(post): systemd > Requires(preun): systemd > Requires(postun): systemd These 3 lines can be expressed by: %{?systemd_requires} as suggested in https://fedoraproject.org/wiki/Packaging:Scriptlets#Systemd > [...] > %build > # ./autogen.sh > %configure CFLAGS="$CXXFLAGS -fno-strict-aliasing" LIBS=-lpthread Setting CFLAGS from CXXFLAGS is surely suspicious. A more customary way to add to CFLAGS is: CFLAGS="%{optflags} -fno-strict-aliasing" %configure I don't know why the setting of LIBS is needed. Maybe it really isn't? (In reply to Michal Schmidt from comment #2) > > %global _hardened_build 1 > > This is actually the default setting since Fedora 23: > https://fedoraproject.org/wiki/Changes/Harden_All_Packages > I see the Packaging Guidelines don't mention that fact, but anyway, > it's certainly OK to keep it in the spec file as well. > Remove it. > > # libibacmp.so is a plugin for the ibacm daemon, not a public library. > > # Do not advertise it in RPM metadata: > > %global _privatelibs libibacmp[.]so.* > > %global __provides_exclude ^(%{_privatelibs})$ > > %global __requires_exclude ^(%{_privatelibs})$ > > I see this matches the style described in "Filtering provides and requires > after scanning" in > https://fedoraproject.org/wiki/Packaging:AutoProvidesAndRequiresFiltering. > I would just suggest moving these lines down, right before the %description, > to satisfy the recommendation in "Location of macro invocation" on the page. > Moved to just before '%description'. > > Name: ibacm > > Version: 1.2.0 > > Release: 1%{?dist} > > Summary: InfiniBand Communication Manager Assistant > > Group: System Environment/Daemons > > The Group: tag is unnecessary. Removed it. > > License: GPLv2 or BSD > > Url: http://www.openfabrics.org/ > > Source: http://downloads.openfabrics.org/downloads/rdmacm/%{name}-%{version}.tar.gz > > Source1: ibacm.service > > It would be nice to have a systemd unit file in upstream. > /me looks inside ibacm.service and src/acm.c ... I can see the daemonization > is implemented carelessly. In such a case Type=forking does not buy us > anything. We may as well use Type=simple and ExecStart=/usr/bin/ibacm -P > WantedBy=network.target is unusual and likely wrong. > I'll look into improving this later myself (will file a BZ to myself once we > have the component created). > This is not a problem for the review. > > > Patch0001: 0001-Coverity-and-compile-warning-fixes.patch > > It would be nice to get rid of the patch by getting the changes to upstream. > I may as well do this when I'm sending the systemd-related changes. > Not a problem for the review. > > > BuildRequires: libibverbs-devel >= 1.2.0 > > BuildRequires: libibumad-devel >= 1.3.10.2 > > BuildRequires: systemd > > Should also add "BuildRequires: gcc" according to > https://fedoraproject.org/wiki/Packaging: > C_and_C%2B%2B#BuildRequires_and_Requires > Added 'BuildRequires: gcc'. > > Requires(post): systemd > > Requires(preun): systemd > > Requires(postun): systemd > > These 3 lines can be expressed by: > %{?systemd_requires} > as suggested in https://fedoraproject.org/wiki/Packaging:Scriptlets#Systemd > Replaced it as required. > > [...] > > %build > > # ./autogen.sh > > %configure CFLAGS="$CXXFLAGS -fno-strict-aliasing" LIBS=-lpthread > Removed 'LIBS=-lpthread', and confirmed ibacm had been linked against pthread as expected. ldd usr/bin/ib_acme linux-vdso.so.1 (0x00007ffc2f907000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f1f6017a000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f1f5ff76000) libibumad.so.3 => not found libibverbs.so.1 => not found libc.so.6 => /lib64/libc.so.6 (0x00007f1f5fba7000) /lib64/ld-linux-x86-64.so.2 (0x000055c674a7b000) ldd usr/sbin/ibacm linux-vdso.so.1 (0x00007ffc5d7f8000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f17dc092000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f17dbe8e000) libibumad.so.3 => not found libibverbs.so.1 => not found libc.so.6 => /lib64/libc.so.6 (0x00007f17dbabf000) /lib64/ld-linux-x86-64.so.2 (0x0000556510936000) > Setting CFLAGS from CXXFLAGS is surely suspicious. > A more customary way to add to CFLAGS is: > > CFLAGS="%{optflags} -fno-strict-aliasing" > %configure > Replaced it. > I don't know why the setting of LIBS is needed. Maybe it really isn't? It is unnecessary. Removed it. http://people.redhat.com/honli/.4086432554aa23141c867df686b977fd/ibacm.spec http://people.redhat.com/honli/.4086432554aa23141c867df686b977fd/review.txt http://people.redhat.com/honli/.4086432554aa23141c867df686b977fd/ibacm-1.2.0-2.fc25.src.rpm https://koji.fedoraproject.org/koji/taskinfo?taskID=13523549 Package Review
==============
Legend:
[x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated
Issues:
=======
[!]: Package must own all directories that it creates.
Note: Directories without known owners: /usr/include/infiniband,
/etc/rdma
[!]: Fully versioned dependency in subpackages if applicable.
Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in ibacm-
devel
===== MUST items =====
C/C++:
[x]: Package does not contain kernel modules.
[x]: Package contains no static executables.
[x]: Development (unversioned) .so files in -devel subpackage, if present.
Note: Unversioned so-files in private %_libdir subdirectory (see
attachment). Verify they are not in ld path.
/usr/lib64/ibacm/libibacmp.so is an ibacm plugin, not in ld path => OK.
[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.
[x]: License field in the package spec file matches the actual license.
Note: Checking patched sources after %prep for licenses. Licenses
found: "MIT/X11 (BSD like)", "BSD (2 clause)", "Unknown or generated".
22 files have unknown license. Detailed output of licensecheck in
/home/michich/1322168-ibacm/licensecheck.txt
It's the BSD license, only with unusual formatting that confused the review
tool.
The toplevel COPYING file says the recipient can choose BSD or GPLv2,
but the notices in source files specify only the BSD license.
I think it's no problem, because the BSD license is GPLv2-compatible anyway,
but we should ask upstream to make the notices consistent, or to drop
the explicit GPLv2 option (which, due to the inherent license compatibility
does not matter much.).
[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.
[!]: Package must own all directories that it creates.
Note: Directories without known owners: /usr/include/infiniband,
/etc/rdma
/usr/include/infiniband is already owned by multiple packages,
so ibacm can just own it too.
/etc/rdma is owned by the rdma package. ibacm should either co-own
the directory or have "Requires: rdma".
[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]: 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]: 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]: 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]: %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 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]: File names are valid UTF-8.
[x]: Packages must not store files under /srv, /opt or /usr/local
===== SHOULD items =====
Generic:
[x]: If the source package does not include license text(s) as a separate
file from upstream, the packager SHOULD query upstream to include it.
[x]: Final provides and requires are sane (see attachments).
[!]: Fully versioned dependency in subpackages if applicable.
Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in ibacm-
devel , ibacm-debuginfo
ibacm-devel should use an arch-specific dependency (add %{?_isa})
[?]: 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.
I will take care of 0001-Coverity-and-compile-warning-fixes.patch.
[-]: Description and summary sections in the package spec file contains
translations for supported Non-English languages, if available.
[x]: Package should compile and build into binary rpms on all supported
architectures.
[-]: %check is present and all tests pass.
[!]: Packages should try to preserve timestamps of original installed
files.
Could call 'install' with '-p' in the spec to preserve the timestamp of
ibacm.service. ibacm_opts.cfg is generated at build time.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: Sources can be downloaded from URI in Source: tag
[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]: 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: Mock build failed
See: http://fedoraproject.org/wiki/Packaging/Guidelines#rpmlint
No, it really didn't fail to build.
[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: ibacm-1.2.0-2.fc25.x86_64.rpm
ibacm-devel-1.2.0-2.fc25.x86_64.rpm
ibacm-debuginfo-1.2.0-2.fc25.x86_64.rpm
ibacm-1.2.0-2.fc25.src.rpm
ibacm.x86_64: W: spelling-error %description -l en_US lookups -> lookup, lockups, hookups
ibacm.x86_64: W: spelling-error %description -l en_US librdmacm -> Librium
ibacm.x86_64: W: devel-file-in-non-devel-package /usr/lib64/ibacm/libibacmp.so
ibacm-devel.x86_64: W: spelling-error %description -l en_US librdmacm -> Librium
ibacm-devel.x86_64: W: no-documentation
ibacm.src: W: spelling-error %description -l en_US lookups -> lookup, lockups, hookups
ibacm.src: W: spelling-error %description -l en_US librdmacm -> Librium
4 packages and 0 specfiles checked; 0 errors, 7 warnings.
Requires
--------
ibacm-devel (rpmlib, GLIBC filtered):
ibacm
ibacm-debuginfo (rpmlib, GLIBC filtered):
ibacm (rpmlib, GLIBC filtered):
/bin/sh
config(ibacm)
ld-linux-x86-64.so.2()(64bit)
libc.so.6()(64bit)
libdl.so.2()(64bit)
libibumad.so.3()(64bit)
libibumad.so.3(IBUMAD_1.0)(64bit)
libibverbs.so.1()(64bit)
libibverbs.so.1(IBVERBS_1.0)(64bit)
libibverbs.so.1(IBVERBS_1.1)(64bit)
libpthread.so.0()(64bit)
rtld(GNU_HASH)
systemd
Provides
--------
ibacm-devel:
ibacm-devel
ibacm-devel(x86-64)
ibacm-debuginfo:
ibacm-debuginfo
ibacm-debuginfo(x86-64)
ibacm:
config(ibacm)
ibacm
ibacm(x86-64)
Unversioned so-files
--------------------
ibacm: /usr/lib64/ibacm/libibacmp.so
Source checksums
----------------
http://downloads.openfabrics.org/downloads/rdmacm/ibacm-1.2.0.tar.gz :
CHECKSUM(SHA256) this package : 7b57952d33580d014d68e7029b81de300fcce790aca042fac7cc3f23d512f286
CHECKSUM(SHA256) upstream package : 7b57952d33580d014d68e7029b81de300fcce790aca042fac7cc3f23d512f286
Generated by fedora-review 0.6.0 (3c5c9d7) last change: 2015-05-20
Command line :/usr/bin/fedora-review -b 1322168
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, DISTTAG, EPEL5, BATCH, EPEL6
(In reply to Michal Schmidt from comment #5) > [!]: Package must own all directories that it creates. > Note: Directories without known owners: /usr/include/infiniband, > /etc/rdma Own all directories that it creates. > [!]: Fully versioned dependency in subpackages if applicable. > Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in ibacm- > devel > -Requires: %{name} = %{version}-%{release} +Requires: %{name}%{?_isa} = %{version}-%{release} > [!]: Package must own all directories that it creates. > Note: Directories without known owners: /usr/include/infiniband, > /etc/rdma > /usr/include/infiniband is already owned by multiple packages, > so ibacm can just own it too. > /etc/rdma is owned by the rdma package. ibacm should either co-own > the directory or have "Requires: rdma". ibacm dose not need te rdma package to be present to function properly, so co-owning directory "/etc/rdma". > [!]: Fully versioned dependency in subpackages if applicable. > Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in ibacm- > devel , ibacm-debuginfo > ibacm-devel should use an arch-specific dependency (add %{?_isa}) Fixed. > [!]: Packages should try to preserve timestamps of original installed > files. > Could call 'install' with '-p' in the spec to preserve the timestamp of > ibacm.service. ibacm_opts.cfg is generated at build time. -install -D -m 644 ibacm_opts.cfg %{buildroot}%{_sysconfdir}/rdma/ibacm_opts.cfg -install -D -m 644 %{SOURCE1} %{buildroot}%{_unitdir}/ibacm.service +install -D -p -m 644 ibacm_opts.cfg %{buildroot}%{_sysconfdir}/rdma/ibacm_opts.cfg +install -D -p -m 644 %{SOURCE1} %{buildroot}%{_unitdir}/ibacm.service diff -u ibacm.spec.old ibacm.spec
--- ibacm.spec.old 2016-04-05 03:38:44.606740117 -0400
+++ ibacm.spec 2016-04-05 03:49:53.128820748 -0400
@@ -1,6 +1,6 @@
Name: ibacm
Version: 1.2.0
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: InfiniBand Communication Manager Assistant
License: GPLv2 or BSD
Url: http://www.openfabrics.org/
@@ -31,7 +31,7 @@
%package devel
Summary: Headers file needed when building apps to talk directly to ibacm
-Requires: %{name} = %{version}-%{release}
+Requires: %{name}%{?_isa} = %{version}-%{release}
%description devel
Most applications do not need to know how to talk directly to the ibacm
@@ -64,8 +64,8 @@
make DESTDIR=%{buildroot} install
rm -fr %{buildroot}%{_sysconfdir}/init.d
find %{buildroot} -name '*.la' -delete
-install -D -m 644 ibacm_opts.cfg %{buildroot}%{_sysconfdir}/rdma/ibacm_opts.cfg
-install -D -m 644 %{SOURCE1} %{buildroot}%{_unitdir}/ibacm.service
+install -D -p -m 644 ibacm_opts.cfg %{buildroot}%{_sysconfdir}/rdma/ibacm_opts.cfg
+install -D -p -m 644 %{SOURCE1} %{buildroot}%{_unitdir}/ibacm.service
%post
%systemd_post ibacm.service
@@ -81,6 +81,7 @@
%license COPYING
%{_bindir}/ib_acme
%{_sbindir}/ibacm
+%dir %{_sysconfdir}/rdma
%config(noreplace)%{_sysconfdir}/rdma/ibacm_opts.cfg
%{_mandir}/man1/*
%{_mandir}/man7/*
@@ -88,10 +89,16 @@
%{_libdir}/ibacm
%files devel
+%dir %{_includedir}/infiniband
%{_includedir}/infiniband/acm.h
%{_includedir}/infiniband/acm_prov.h
%changelog
+* Tue Apr 5 2016 Honggang Li <honli> - 1.2.0-3
+- Requiring arch-specific base package.
+- Preserve the timestamp of bacm_opts.cfg and ibacm.service.
+- Own all directories that it creates.
+
* Fri Apr 1 2016 Honggang Li <honli> - 1.2.0-2
- Improve the spec file based on Fedora review
http://people.redhat.com/honli/.4086432554aa23141c867df686b977fd/ibacm.spec http://people.redhat.com/honli/.4086432554aa23141c867df686b977fd/ibacm-1.2.0-3.fc25.src.rpm > > ibacm_opts.cfg is generated at build time.
By that remark I meant that it's not necessary to try to preserve
the timestamp for this file. But it does no harm, so OK.
The package is approved.
Package request has been approved: https://admin.fedoraproject.org/pkgdb/package/rpms/ibacm ibacm-1.2.0-3.fc23/24/25 had been built. https://koji.fedoraproject.org/koji/buildinfo?buildID=751457 https://koji.fedoraproject.org/koji/buildinfo?buildID=751456 https://koji.fedoraproject.org/koji/buildinfo?buildID=751257 ibacm-1.2.0-3.fc23 has been submitted as an update to Fedora 23. https://bodhi.fedoraproject.org/updates/FEDORA-2016-256afff9e8 ibacm-1.2.0-3.fc24 has been submitted as an update to Fedora 24. https://bodhi.fedoraproject.org/updates/FEDORA-2016-a5f422b859 ibacm-1.2.0-3.fc24 has been pushed to the Fedora 24 testing repository. If problems still persist, please make note of it in this bug report. See https://fedoraproject.org/wiki/QA:Updates_Testing for instructions on how to install test updates. You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2016-a5f422b859 ibacm-1.2.0-3.fc23 has been pushed to the Fedora 23 testing repository. If problems still persist, please make note of it in this bug report. See https://fedoraproject.org/wiki/QA:Updates_Testing for instructions on how to install test updates. You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2016-256afff9e8 ibacm-1.2.0-3.fc24 has been pushed to the Fedora 24 stable repository. If problems still persist, please make note of it in this bug report. ibacm-1.2.0-3.fc23 has been pushed to the Fedora 23 stable repository. If problems still persist, please make note of it in this bug report. |