Bug 1523909 - Review Request: kernel-tools - Assortment of tools for the Linux kernel
Summary: Review Request: kernel-tools - Assortment of tools for the Linux kernel
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Robert-André Mauchin 🐧
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2017-12-09 00:34 UTC by Laura Abbott
Modified: 2018-01-08 20:40 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2018-01-08 20:40:26 UTC
Type: ---
Embargoed:
zebob.m: fedora-review+


Attachments (Terms of Use)

Description Laura Abbott 2017-12-09 00:34:22 UTC
Spec URL: https://labbott.fedorapeople.org/kernel-tools/kernel-tools.spec
SRPM URL: https://labbott.fedorapeople.org/kernel-tools/kernel-tools-4.15.0-0.rc2.git0.1.fc28.src.rpm

Description: This is an extraction of several subpackages from the kernel.spec to a separate repository. I discussed reasons for wanting to do so on the kernel list https://lists.fedoraproject.org/archives/list/kernel@lists.fedoraproject.org/thread/H76G53CCMOJCWFL7LTCV5BXFDOGRFEGI/
You can see the packages as they exist in the kernel.spec , https://src.fedoraproject.org/rpms/kernel/blob/master/f/kernel.spec


Name: kernel-tools
%description -n kernel-tools
This package contains the tools/ directory from the kernel source
and the supporting documentation.

%package -n perf
%description -n perf
This package contains the perf tool, which enables performance monitoring
of the Linux kernel.

%package -n python-perf
%description -n python-perf
The python-perf package contains a module that permits applications
written in the Python programming language to use the interface
to manipulate perf events.

%package -n kernel-tools-libs
%description -n kernel-tools-libs
This package contains the libraries built from the tools/ directory
from the kernel source.

%package -n kernel-tools-libs-devel
%description -n kernel-tools-libs-devel
This package contains the development files for the tools/ directory from
the kernel source.


Fedora Account System Username: labbott

Comment 1 Robert-André Mauchin 🐧 2017-12-09 15:10:47 UTC
I don't know if I am experienced enough to review this complex package, but here a few preliminary remarks:

 - Group: is not used anymore in Fedora. See: https://fedoraproject.org/wiki/Packaging:Guidelines#Tags_and_Sections

 - L103: generally the BuildRoot shouldn't need to be redefined.

 - L117: cpuspeed is obsoleted but there is no corresponding Provides

 - L141: python_sitearch is already defined by default, no need to redefine it.

 - L187: No need for rm -rf $RPM_BUILD_ROOT

 - Multiple times: make %{?_smp_mflags} → %make_build

 - Multiple times: make DESTDIR=%{buildroot} install → %make_install

 - L297-303: %clean is not needed anymore. Remove it:

###
### clean
###

%clean
rm -rf $RPM_BUILD_ROOT

 - L308-312 Since /sbin/ldconfig is the only thing called in %post and %postun, use the -p syntax to avoid spawning a shell:

%post -n kernel-tools-libs -p /sbin/ldconfig
%postun -n kernel-tools-libs -p /sbin/ldconfig

 - In the %files, %defattr(-,root,root) is not needed, it is already the default.

 - The %changelog must contain the version and release.

* Tue Nov 21 2017 Laura Abbott <labbott> - VERSION-RELEASE

  - Add "%license COPYING" in %files for all packages combinations (I believe it's in perf, python-perf, and kernel-tools-libs)

Comment 2 Robert-André Mauchin 🐧 2017-12-09 15:46:48 UTC
I forgot a thing' if you install a systemd service file (%{_unitdir}/cpupower.service), you must run the systemd scripplet as described in: https://fedoraproject.org/wiki/Packaging:Scriptlets#Systemd

Comment 3 Jeremy Cline 2017-12-11 19:52:53 UTC
kvm_stat should be compatible with Python 3 in v4.15[0] so we could bring back the python3 shebang patch[1] from https://bugzilla.redhat.com/show_bug.cgi?id=1456722 and drop that "%define __requires_exclude ^%{_bindir}/python".

I'm happy to deal with that later, but this just made me remember.

[0] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9cc5fbbb8ca2178d94f2eeeb2ce675293a3f8ae2
[1] https://src.fedoraproject.org/rpms/kernel/blob/eb93a3ce59422165822f28eae402ae9b5fd10a34/f/force-python3-in-kvm_stat.patch

Comment 4 Laura Abbott 2017-12-12 20:09:22 UTC
(In reply to Robert-André Mauchin from comment #1)

>  - Group: is not used anymore in Fedora. See:
> https://fedoraproject.org/wiki/Packaging:Guidelines#Tags_and_Sections
> 

Done

>  - L103: generally the BuildRoot shouldn't need to be redefined.
> 

Done. I think this was a holdover from how the real kernel works.

>  - L117: cpuspeed is obsoleted but there is no corresponding Provides
> 

This has been present since 2011. I don't think it makes sense to addit now

>  - L141: python_sitearch is already defined by default, no need to redefine
> it.
> 

Done

>  - L187: No need for rm -rf $RPM_BUILD_ROOT
> 

Done

>  - Multiple times: make %{?_smp_mflags} → %make_build
> 
>  - Multiple times: make DESTDIR=%{buildroot} install → %make_install
> 

Given how there are multiple invocations of make build and make install and not all of them can use the macro, I'd rather be consistent and just not use it at all. It makes the spec file more unreadable. 

>  - L297-303: %clean is not needed anymore. Remove it:
> 
> ###
> ### clean
> ###
> 
> %clean
> rm -rf $RPM_BUILD_ROOT
> 

Done

>  - L308-312 Since /sbin/ldconfig is the only thing called in %post and
> %postun, use the -p syntax to avoid spawning a shell:
> 
> %post -n kernel-tools-libs -p /sbin/ldconfig
> %postun -n kernel-tools-libs -p /sbin/ldconfig
> 

Done

>  - In the %files, %defattr(-,root,root) is not needed, it is already the
> default.
> 

Done

>  - The %changelog must contain the version and release.
> 
> * Tue Nov 21 2017 Laura Abbott <labbott> - VERSION-RELEASE
> 

Done

>   - Add "%license COPYING" in %files for all packages combinations (I
> believe it's in perf, python-perf, and kernel-tools-libs)

Done

Also added the systemd scriplet stuff per the instructions.

Thanks for the review. As you can tell, some of this stuff has gotten crufty. I updated the srpm and spec file at the same location.

@Jeremy Since you have more experience here, I'll let you fix this up later. I agree it's good cleanup to have though.

Comment 5 Robert-André Mauchin 🐧 2017-12-13 15:04:59 UTC
(In reply to Laura Abbott from comment #4)
> (In reply to Robert-André Mauchin from comment #1)
> 
> >  - Group: is not used anymore in Fedora. See:
> > https://fedoraproject.org/wiki/Packaging:Guidelines#Tags_and_Sections
> > 
> 
> Done

You still have Group: fields in the subpackages.


 - You shouldn't use both %{buildroot} and $RPM_BUILD_ROOT. Choose one on another.

 - You should have a dependency to python2-devel or python3-devel, not python-devel.

 - perl-Carp → perl(Carp)

 - perl → perl-interpreter

 - Notice the typo:

%{?systemd_requres}
BuildRequires: systemd

→ %{?systemd_requires}.

 - You should own the following directories:

[!]: Package requires other packages for directories it uses.
     Note: No known owner of /usr/lib64/traceevent, /usr/share/perf-core
[!]: Package must own all directories that it creates.
     Note: Directories without known owners: /usr/lib64/traceevent,
     /usr/share/perf-core,

You should probably fix your %files like this:

%files -n perf
%{_bindir}/perf
%dir %{_libdir}/traceevent
%{_libdir}/traceevent/plugins/
%{_libexecdir}/perf-core/
%{_datadir}/perf-core/

 - Use global instead of %define which is deprecated

 - You're missing the URL: field in the header

 - Plenty of files are marked executable when they shouldn't be:

kernel-tools.x86_64: W: spurious-executable-perm /usr/share/man/man8/turbostat.8.gz
kernel-tools.x86_64: W: spurious-executable-perm /usr/share/man/man8/x86_energy_perf_policy.8.gz
perf.x86_64: E: executable-sourced-script /etc/bash_completion.d/perf 755

    All of these should probably not be marked as executables:

perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/perl/Perf-Trace-Util/lib/Perf/Trace/Context.pm
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/perl/Perf-Trace-Util/lib/Perf/Trace/Core.pm
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/perl/Perf-Trace-Util/lib/Perf/Trace/Util.pm
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/perl/check-perf-trace.pl
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/perl/failed-syscalls.pl
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Core.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/Perf-Trace-Util/lib/Perf/Trace/EventClass.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/Perf-Trace-Util/lib/Perf/Trace/SchedGui.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Util.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/check-perf-trace.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/compaction-times.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/event_analyzing_sample.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/export-to-postgresql.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/export-to-sqlite.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/failed-syscalls-by-pid.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/futex-contention.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/intel-pt-events.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/net_dropmonitor.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/netdev-times.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/sctop.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/stackcollapse.py
perf.x86_64: E: wrong-script-interpreter /usr/libexec/perf-core/scripts/python/stat-cpi.py /usr/bin/env python
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/syscall-counts-by-pid.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/syscall-counts.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/README
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/base-record
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/base-stat
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-C0
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-basic
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-branch-any
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-branch-filter-any
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-branch-filter-any_call
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-branch-filter-any_ret
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-branch-filter-hv
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-branch-filter-ind_call
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-branch-filter-k
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-branch-filter-u
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-count
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-data
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-freq
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-graph-default
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-graph-dwarf
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-graph-fp
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-group
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-group-sampling
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-group1
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-no-buffering
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-no-inherit
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-no-samples
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-period
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-raw
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-stat-C0
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-stat-basic
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-stat-default
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-stat-detailed-1
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-stat-detailed-2
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-stat-detailed-3
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-stat-group
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-stat-group1
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-stat-no-inherit
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/shell/lib/probe.sh
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/shell/lib/probe_vfs_getname.sh
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/shell/probe_vfs_getname.sh
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/shell/record+script_probe_vfs_getname.sh
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/shell/trace+probe_libc_inet_pton.sh
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/shell/trace+probe_vfs_getname.sh
perf.x86_64: E: script-without-shebang /usr/share/perf-core/strace/groups/file

 - These files have an older, incorrect FSF address, patch them with the new one in %prep and report it upstream:

kernel-tools-libs-devel.x86_64: E: incorrect-fsf-address /usr/include/cpufreq.h
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/arch/x86/include/uapi/asm/vmx.h
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/include/linux/rbtree.h
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/include/linux/rbtree_augmented.h
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/lib/rbtree.c
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/arch/x86/util/dwarf-regs.c
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/builtin-probe.c
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/scripts/python/Perf-Trace-Util/Context.c
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/util/dwarf-aux.c
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/util/dwarf-aux.h
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/util/intel-pt-decoder/inat.c
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/util/intel-pt-decoder/inat.h
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/util/intel-pt-decoder/inat_types.h
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/util/intel-pt-decoder/insn.c
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/util/intel-pt-decoder/insn.h
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/util/probe-event.c
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/util/probe-finder.c
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/util/scripting-engines/trace-event-perl.c
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/util/scripting-engines/trace-event-python.c
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/util/trace-event-info.c
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/util/trace-event-parse.c
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/util/trace-event-read.c
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/util/trace-event-scripting.c
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/power/cpupower/lib/cpufreq.h


Full fedora-review report below:

Package Review
==============

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


Issues:
=======
- Package contains BR: python2-devel or python3-devel
  See: http://fedoraproject.org/wiki/Packaging/Guidelines#Exceptions_2
- Package uses either %{buildroot} or $RPM_BUILD_ROOT
  Note: Using both %{buildroot} and $RPM_BUILD_ROOT
  See: http://fedoraproject.org/wiki/Packaging/Guidelines#macros


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

C/C++:
[x]: Package does not contain kernel modules.
[x]: Package contains no static executables.
[x]: Development (unversioned) .so files in -devel subpackage, if present.
     Note: Unversioned so-files in private %_libdir subdirectory (see
     attachment). Verify they are not in ld path.
[x]: ldconfig called in %post and %postun if required.
[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: "BSD (3 clause) GPL (with incorrect FSF address)", "CC0 (v3)
     GPL", "GPL (v2) (with incorrect FSF address)", "*No copyright* CC0",
     "BSD (2 clause) GPL (v2 or later) (with incorrect FSF address)", "*No
     copyright* MIT/X11 (BSD like) GPL (v2)", "ISC GPL (v2 or later)", "BSD
     (unspecified)", "ISC GPL", "ISC", "LGPL (v2.1)", "*No copyright* GPL
     (with incorrect FSF address)", "GPL (v2.0)", "GPL (with incorrect FSF
     address)", "*No copyright* GPL (v2 or later)", "*No copyright* MIT/X11
     (BSD like)", "BSD (unspecified) GPL (v2 or later) (with incorrect FSF
     address)", "*No copyright* GPL (v2 or later) (with incorrect FSF
     address)", "LGPL (v2 or later)", "GPL (v3 or later)", "*No copyright*
     GPL", "*No copyright* BSD (3 clause)", "BSD (unspecified) GPL (v2 or
     later)", "zlib/libpng", "*No copyright* BSD (unspecified) GPL", "*No
     copyright* LGPL (v2)", "MIT/X11 (BSD like) GPL (v2 or later)", "GPL
     (v1)", "BSD (2 clause) GPL (v2 or later)", "GPL (v2 or later) (with
     incorrect FSF address)", "BSD (2 clause)", "BSD (2 clause) GPL", "GPL
     (v1 or later)", "GPL (v3)", "*No copyright* MIT/X11 (BSD like) GPL (v2
     or later)", "NTP (legal disclaimer) GPL (v2)", "GPL", "BSD (3 clause)
     GPL (v2 or later) (with incorrect FSF address)", "GPL (v2 or later)",
     "*No copyright* GPL (v2)", "CC0 GPL (v2)", "BSD (3 clause) GPL",
     "MIT/X11 (BSD like)", "GPL (v1) (with incorrect FSF address)", "Perl
     GPL (v2)", "MPL (v1.1) GPL (v2 or later)", "*No copyright* Public
     domain", "*No copyright* GPL (v2) (with incorrect FSF address)", "NTP
     (legal disclaimer)", "CC0 GPL (v2 or later)", "*No copyright* BSD
     (unspecified)", "BSD (3 clause)", "CC0 (v1) GPL (v2)", "*No copyright*
     CC0 (v1)", "MIT/X11 (BSD like) GPL (v2)", "LGPL (v2)", "BSD (2 clause)
     GPL (v2)", "LGPL", "*No copyright* BSD (unspecified) GPL (v2 or
     later)", "BSD (3 clause) GPL (v2)", "Unknown or generated", "BSD (4
     clause)", "*No copyright* BSD (2 clause)", "NTP", "MPL (v1.1) GPL",
     "*No copyright* LGPL (v2.1 or later)", "CC0", "MPL (v1.1) GPL (v2)",
     "*No copyright* BSD (unspecified) GPL (v2 or later) (with incorrect
     FSF address)", "BSD (unspecified) GPL (v2)", "LGPL (v2.1 or later)",
     "BSD (3 clause) GPL (v2 or later)", "GPL (v2)", "*No copyright*
     MIT/X11 (BSD like) GPL", "*No copyright* GPL (v2.0)", "MIT/X11 (BSD
     like) GPL". 31370 files have unknown license. Detailed output of
     licensecheck in /home/bob/packaging/review/kernel-tools/review-kernel-
     tools/licensecheck.txt
[ ]: License file installed when any subpackage combination is installed.
[-]: Package requires other packages for directories it uses.
     Note: No known owner of /usr/lib64/traceevent, /usr/share/perf-core
[!]: Package must own all directories that it creates.
     Note: Directories without known owners: /usr/lib64/traceevent,
     /usr/share/perf-core, /usr/lib/systemd/system, /usr/lib/systemd
[x]: Package does not own files or directories owned by other packages.
[x]: %build honors applicable compiler flags or justifies otherwise.
[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[x]: Sources contain only permissible code or content.
[-]: 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]: The spec file handles locales properly.
[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.
     Note: Package contains Conflicts: tag(s) needing fix or justification.
[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.
[x]: Package is not known to require an ExcludeArch tag.
[-]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 20480 bytes in 1 files.
[x]: Package complies to the Packaging Guidelines
[x]: Package successfully compiles and builds into binary rpms on at least
     one supported primary architecture.
[x]: Package installs properly.
[x]: Rpmlint is run on all rpms the build produces.
     Note: There are rpmlint messages (see attachment).
[x]: If (and only if) the source package includes the text of the
     license(s) in its own file, then that file, containing the text of the
     license(s) for the package is included in %license.
[x]: Package 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 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

Python:
[x]: Python eggs must not download any dependencies during the build
     process.
[-]: A package which is used by another package via an egg interface should
     provide egg info.
[x]: Package meets the Packaging Guidelines::Python
[x]: Binary eggs must be removed in %prep

===== SHOULD items =====

Generic:
[!]: Uses parallel make %{?_smp_mflags} macro.
[-]: If the source package does not include license text(s) as a separate
     file from upstream, the packager SHOULD query upstream to include it.
[x]: Final provides and requires are sane (see attachments).
[x]: Fully versioned dependency in subpackages if applicable.
     Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in perf ,
     python-perf , kernel-tools-libs , kernel-tools-libs-devel , kernel-
     tools-debuginfo , kernel-tools-debugsource
[?]: 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.
[-]: 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.
[-]: %check is present and all tests pass.
[x]: Packages should try to preserve timestamps of original installed
     files.
[!]: Spec use %global instead of %define unless justified.
     Note: %define requiring justification: %define base_sublevel 14,
     %define stable_update 0, %define stablerev %{stable_update}, %define
     stable_base %{stable_update}, %define rpmversion
     4.%{base_sublevel}.%{stable_update}, %define upstream_sublevel %(echo
     $((%{base_sublevel} + 1))), %define rpmversion
     4.%{upstream_sublevel}.0, %define pkg_release
     %{fedora_build}%{?buildid}%{?dist}, %define rctag .rc%rcrev, %define
     rctag .rc0, %define gittag .git0, %define pkg_release
     0%{?rctag}%{?gittag}.%{fedora_build}%{?buildid}%{?dist}, %define
     kversion 4.%{base_sublevel}, %define KVERREL
     %{version}-%{release}.%{_target_cpu}, %define debuginfodir
     /usr/lib/debug, %define __requires_exclude ^%{_bindir}/python
[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.

===== EXTRA items =====

Generic:
[x]: Rpmlint is run on debuginfo package(s).
     Note: There are rpmlint messages (see attachment).
[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: kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64.rpm
          perf-4.15.0-0.rc2.git0.1.fc28.x86_64.rpm
          python-perf-4.15.0-0.rc2.git0.1.fc28.x86_64.rpm
          kernel-tools-libs-4.15.0-0.rc2.git0.1.fc28.x86_64.rpm
          kernel-tools-libs-devel-4.15.0-0.rc2.git0.1.fc28.x86_64.rpm
          kernel-tools-debuginfo-4.15.0-0.rc2.git0.1.fc28.x86_64.rpm
          kernel-tools-debugsource-4.15.0-0.rc2.git0.1.fc28.x86_64.rpm
          kernel-tools-4.15.0-0.rc2.git0.1.fc28.src.rpm
kernel-tools.x86_64: W: no-url-tag
kernel-tools.x86_64: W: obsolete-not-provided cpuspeed
kernel-tools.x86_64: W: spurious-executable-perm /usr/share/man/man8/turbostat.8.gz
kernel-tools.x86_64: W: spurious-executable-perm /usr/share/man/man8/x86_energy_perf_policy.8.gz
kernel-tools.x86_64: W: no-manual-page-for-binary centrino-decode
kernel-tools.x86_64: W: no-manual-page-for-binary gpio-event-mon
kernel-tools.x86_64: W: no-manual-page-for-binary gpio-hammer
kernel-tools.x86_64: W: no-manual-page-for-binary iio_event_monitor
kernel-tools.x86_64: W: no-manual-page-for-binary iio_generic_buffer
kernel-tools.x86_64: W: no-manual-page-for-binary lsgpio
kernel-tools.x86_64: W: no-manual-page-for-binary lsiio
kernel-tools.x86_64: W: no-manual-page-for-binary powernow-k8-decode
kernel-tools.x86_64: W: no-manual-page-for-binary tmon
kernel-tools.x86_64: W: empty-%postun
perf.x86_64: W: no-url-tag
perf.x86_64: E: executable-sourced-script /etc/bash_completion.d/perf 755
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/perl/Perf-Trace-Util/lib/Perf/Trace/Context.pm
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/perl/Perf-Trace-Util/lib/Perf/Trace/Core.pm
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/perl/Perf-Trace-Util/lib/Perf/Trace/Util.pm
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/perl/check-perf-trace.pl
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/perl/failed-syscalls.pl
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Core.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/Perf-Trace-Util/lib/Perf/Trace/EventClass.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/Perf-Trace-Util/lib/Perf/Trace/SchedGui.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Util.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/check-perf-trace.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/compaction-times.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/event_analyzing_sample.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/export-to-postgresql.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/export-to-sqlite.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/failed-syscalls-by-pid.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/futex-contention.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/intel-pt-events.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/net_dropmonitor.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/netdev-times.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/sctop.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/stackcollapse.py
perf.x86_64: E: wrong-script-interpreter /usr/libexec/perf-core/scripts/python/stat-cpi.py /usr/bin/env python
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/syscall-counts-by-pid.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/scripts/python/syscall-counts.py
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/README
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/base-record
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/base-stat
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-C0
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-basic
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-branch-any
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-branch-filter-any
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-branch-filter-any_call
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-branch-filter-any_ret
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-branch-filter-hv
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-branch-filter-ind_call
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-branch-filter-k
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-branch-filter-u
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-count
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-data
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-freq
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-graph-default
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-graph-dwarf
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-graph-fp
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-group
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-group-sampling
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-group1
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-no-buffering
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-no-inherit
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-no-samples
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-period
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-record-raw
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-stat-C0
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-stat-basic
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-stat-default
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-stat-detailed-1
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-stat-detailed-2
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-stat-detailed-3
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-stat-group
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-stat-group1
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/attr/test-stat-no-inherit
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/shell/lib/probe.sh
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/shell/lib/probe_vfs_getname.sh
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/shell/probe_vfs_getname.sh
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/shell/record+script_probe_vfs_getname.sh
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/shell/trace+probe_libc_inet_pton.sh
perf.x86_64: E: script-without-shebang /usr/libexec/perf-core/tests/shell/trace+probe_vfs_getname.sh
perf.x86_64: E: script-without-shebang /usr/share/perf-core/strace/groups/file
python-perf.x86_64: W: no-url-tag
python-perf.x86_64: W: no-documentation
kernel-tools-libs.x86_64: W: no-url-tag
kernel-tools-libs.x86_64: W: no-documentation
kernel-tools-libs-devel.x86_64: W: no-url-tag
kernel-tools-libs-devel.x86_64: W: only-non-binary-in-usr-lib
kernel-tools-libs-devel.x86_64: W: no-documentation
kernel-tools-libs-devel.x86_64: E: incorrect-fsf-address /usr/include/cpufreq.h
kernel-tools-debuginfo.x86_64: W: no-url-tag
kernel-tools-debugsource.x86_64: W: no-url-tag
kernel-tools-debugsource.x86_64: W: no-documentation
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/arch/x86/include/uapi/asm/vmx.h
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/include/linux/rbtree.h
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/include/linux/rbtree_augmented.h
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/lib/rbtree.c
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/arch/x86/util/dwarf-regs.c
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/builtin-probe.c
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/scripts/python/Perf-Trace-Util/Context.c
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/util/dwarf-aux.c
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/util/dwarf-aux.h
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/util/intel-pt-decoder/inat.c
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/util/intel-pt-decoder/inat.h
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/util/intel-pt-decoder/inat_types.h
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/util/intel-pt-decoder/insn.c
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/util/intel-pt-decoder/insn.h
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/util/probe-event.c
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/util/probe-finder.c
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/util/scripting-engines/trace-event-perl.c
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/util/scripting-engines/trace-event-python.c
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/util/trace-event-info.c
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/util/trace-event-parse.c
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/util/trace-event-read.c
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/perf/util/trace-event-scripting.c
kernel-tools-debugsource.x86_64: E: incorrect-fsf-address /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/power/cpupower/lib/cpufreq.h
kernel-tools.src: W: no-url-tag
kernel-tools.src:61: E: hardcoded-library-path in /usr/lib/debug
kernel-tools.src:156: W: unversioned-explicit-provides kernel-tools-devel
kernel-tools.src: W: invalid-url Source10: perf-man-4.14.tar.gz
8 packages and 0 specfiles checked; 93 errors, 28 warnings.

Comment 6 Laura Abbott 2017-12-15 18:57:34 UTC
(In reply to Robert-André Mauchin from comment #5)
> (In reply to Laura Abbott from comment #4)
> > (In reply to Robert-André Mauchin from comment #1)
> > 
> > >  - Group: is not used anymore in Fedora. See:
> > > https://fedoraproject.org/wiki/Packaging:Guidelines#Tags_and_Sections
> > > 
> > 
> > Done
> 
> You still have Group: fields in the subpackages.
> 

Done

> 
>  - You shouldn't use both %{buildroot} and $RPM_BUILD_ROOT. Choose one on
> another.
> 

Done, used the standard %{buildroot} macro

>  - You should have a dependency to python2-devel or python3-devel, not
> python-devel.
> 

Done

>  - perl-Carp → perl(Carp)
> 

Done

>  - perl → perl-interpreter
> 

Done

>  - Notice the typo:
> 
> %{?systemd_requres}
> BuildRequires: systemd
> 
> → %{?systemd_requires}.
> 

Done

>  - You should own the following directories:
> 
> [!]: Package requires other packages for directories it uses.
>      Note: No known owner of /usr/lib64/traceevent, /usr/share/perf-core
> [!]: Package must own all directories that it creates.
>      Note: Directories without known owners: /usr/lib64/traceevent,
>      /usr/share/perf-core,
> 
> You should probably fix your %files like this:
> 
> %files -n perf
> %{_bindir}/perf
> %dir %{_libdir}/traceevent
> %{_libdir}/traceevent/plugins/
> %{_libexecdir}/perf-core/
> %{_datadir}/perf-core/
> 

Done

>  - Use global instead of %define which is deprecated
> 

Done (mostly a holdover from the kernel which needs to be fixed up)

>  - You're missing the URL: field in the header
> 

Done

>  - Plenty of files are marked executable when they shouldn't be:
> 
> kernel-tools.x86_64: W: spurious-executable-perm
> /usr/share/man/man8/turbostat.8.gz
> kernel-tools.x86_64: W: spurious-executable-perm
> /usr/share/man/man8/x86_energy_perf_policy.8.gz
> perf.x86_64: E: executable-sourced-script /etc/bash_completion.d/perf 755
> 
>     All of these should probably not be marked as executables:
> 
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/perl/Perf-Trace-Util/lib/Perf/Trace/Context.pm
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/perl/Perf-Trace-Util/lib/Perf/Trace/Core.pm
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/perl/Perf-Trace-Util/lib/Perf/Trace/Util.pm
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/perl/check-perf-trace.pl
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/perl/failed-syscalls.pl
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Core.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/Perf-Trace-Util/lib/Perf/Trace/
> EventClass.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/Perf-Trace-Util/lib/Perf/Trace/
> SchedGui.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Util.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/check-perf-trace.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/compaction-times.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/event_analyzing_sample.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/export-to-postgresql.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/export-to-sqlite.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/failed-syscalls-by-pid.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/futex-contention.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/intel-pt-events.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/net_dropmonitor.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/netdev-times.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/sctop.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/stackcollapse.py
> perf.x86_64: E: wrong-script-interpreter
> /usr/libexec/perf-core/scripts/python/stat-cpi.py /usr/bin/env python
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/syscall-counts-by-pid.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/syscall-counts.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/README
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/base-record
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/base-stat
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-C0
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-basic
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-branch-any
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-branch-filter-any
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-branch-filter-any_call
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-branch-filter-any_ret
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-branch-filter-hv
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-branch-filter-ind_call
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-branch-filter-k
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-branch-filter-u
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-count
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-data
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-freq
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-graph-default
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-graph-dwarf
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-graph-fp
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-group
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-group-sampling
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-group1
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-no-buffering
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-no-inherit
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-no-samples
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-period
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-raw
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-stat-C0
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-stat-basic
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-stat-default
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-stat-detailed-1
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-stat-detailed-2
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-stat-detailed-3
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-stat-group
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-stat-group1
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-stat-no-inherit
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/shell/lib/probe.sh
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/shell/lib/probe_vfs_getname.sh
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/shell/probe_vfs_getname.sh
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/shell/record+script_probe_vfs_getname.sh
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/shell/trace+probe_libc_inet_pton.sh
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/shell/trace+probe_vfs_getname.sh
> perf.x86_64: E: script-without-shebang
> /usr/share/perf-core/strace/groups/file
> 

Most of these are problems with the package itself. I'd rather fix those up later.

>  - These files have an older, incorrect FSF address, patch them with the new
> one in %prep and report it upstream:
> 
> kernel-tools-libs-devel.x86_64: E: incorrect-fsf-address
> /usr/include/cpufreq.h
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> arch/x86/include/uapi/asm/vmx.h
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> include/linux/rbtree.h
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> include/linux/rbtree_augmented.h
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> lib/rbtree.c
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/arch/x86/util/dwarf-regs.c
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/builtin-probe.c
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/scripts/python/Perf-Trace-Util/Context.c
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/util/dwarf-aux.c
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/util/dwarf-aux.h
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/util/intel-pt-decoder/inat.c
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/util/intel-pt-decoder/inat.h
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/util/intel-pt-decoder/inat_types.h
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/util/intel-pt-decoder/insn.c
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/util/intel-pt-decoder/insn.h
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/util/probe-event.c
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/util/probe-finder.c
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/util/scripting-engines/trace-event-perl.c
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/util/scripting-engines/trace-event-python.c
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/util/trace-event-info.c
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/util/trace-event-parse.c
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/util/trace-event-read.c
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/util/trace-event-scripting.c
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> power/cpupower/lib/cpufreq.h
> 

Done, patches put in the package and pending upstream

> 
> Full fedora-review report below:
> 
> Package Review
> ==============
> 
> Legend:
> [x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated
> [ ] = Manual review needed
> 
> 
> Issues:
> =======
> - Package contains BR: python2-devel or python3-devel
>   See: http://fedoraproject.org/wiki/Packaging/Guidelines#Exceptions_2
> - Package uses either %{buildroot} or $RPM_BUILD_ROOT
>   Note: Using both %{buildroot} and $RPM_BUILD_ROOT
>   See: http://fedoraproject.org/wiki/Packaging/Guidelines#macros
> 
> 
> ===== MUST items =====
> 
> C/C++:
> [x]: Package does not contain kernel modules.
> [x]: Package contains no static executables.
> [x]: Development (unversioned) .so files in -devel subpackage, if present.
>      Note: Unversioned so-files in private %_libdir subdirectory (see
>      attachment). Verify they are not in ld path.
> [x]: ldconfig called in %post and %postun if required.
> [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: "BSD (3 clause) GPL (with incorrect FSF address)", "CC0 (v3)
>      GPL", "GPL (v2) (with incorrect FSF address)", "*No copyright* CC0",
>      "BSD (2 clause) GPL (v2 or later) (with incorrect FSF address)", "*No
>      copyright* MIT/X11 (BSD like) GPL (v2)", "ISC GPL (v2 or later)", "BSD
>      (unspecified)", "ISC GPL", "ISC", "LGPL (v2.1)", "*No copyright* GPL
>      (with incorrect FSF address)", "GPL (v2.0)", "GPL (with incorrect FSF
>      address)", "*No copyright* GPL (v2 or later)", "*No copyright* MIT/X11
>      (BSD like)", "BSD (unspecified) GPL (v2 or later) (with incorrect FSF
>      address)", "*No copyright* GPL (v2 or later) (with incorrect FSF
>      address)", "LGPL (v2 or later)", "GPL (v3 or later)", "*No copyright*
>      GPL", "*No copyright* BSD (3 clause)", "BSD (unspecified) GPL (v2 or
>      later)", "zlib/libpng", "*No copyright* BSD (unspecified) GPL", "*No
>      copyright* LGPL (v2)", "MIT/X11 (BSD like) GPL (v2 or later)", "GPL
>      (v1)", "BSD (2 clause) GPL (v2 or later)", "GPL (v2 or later) (with
>      incorrect FSF address)", "BSD (2 clause)", "BSD (2 clause) GPL", "GPL
>      (v1 or later)", "GPL (v3)", "*No copyright* MIT/X11 (BSD like) GPL (v2
>      or later)", "NTP (legal disclaimer) GPL (v2)", "GPL", "BSD (3 clause)
>      GPL (v2 or later) (with incorrect FSF address)", "GPL (v2 or later)",
>      "*No copyright* GPL (v2)", "CC0 GPL (v2)", "BSD (3 clause) GPL",
>      "MIT/X11 (BSD like)", "GPL (v1) (with incorrect FSF address)", "Perl
>      GPL (v2)", "MPL (v1.1) GPL (v2 or later)", "*No copyright* Public
>      domain", "*No copyright* GPL (v2) (with incorrect FSF address)", "NTP
>      (legal disclaimer)", "CC0 GPL (v2 or later)", "*No copyright* BSD
>      (unspecified)", "BSD (3 clause)", "CC0 (v1) GPL (v2)", "*No copyright*
>      CC0 (v1)", "MIT/X11 (BSD like) GPL (v2)", "LGPL (v2)", "BSD (2 clause)
>      GPL (v2)", "LGPL", "*No copyright* BSD (unspecified) GPL (v2 or
>      later)", "BSD (3 clause) GPL (v2)", "Unknown or generated", "BSD (4
>      clause)", "*No copyright* BSD (2 clause)", "NTP", "MPL (v1.1) GPL",
>      "*No copyright* LGPL (v2.1 or later)", "CC0", "MPL (v1.1) GPL (v2)",
>      "*No copyright* BSD (unspecified) GPL (v2 or later) (with incorrect
>      FSF address)", "BSD (unspecified) GPL (v2)", "LGPL (v2.1 or later)",
>      "BSD (3 clause) GPL (v2 or later)", "GPL (v2)", "*No copyright*
>      MIT/X11 (BSD like) GPL", "*No copyright* GPL (v2.0)", "MIT/X11 (BSD
>      like) GPL". 31370 files have unknown license. Detailed output of
>      licensecheck in /home/bob/packaging/review/kernel-tools/review-kernel-
>      tools/licensecheck.txt
> [ ]: License file installed when any subpackage combination is installed.
> [-]: Package requires other packages for directories it uses.
>      Note: No known owner of /usr/lib64/traceevent, /usr/share/perf-core
> [!]: Package must own all directories that it creates.
>      Note: Directories without known owners: /usr/lib64/traceevent,

Fixed

>      /usr/share/perf-core, /usr/lib/systemd/system, /usr/lib/systemd
> [x]: Package does not own files or directories owned by other packages.
> [x]: %build honors applicable compiler flags or justifies otherwise.
> [x]: Package contains no bundled libraries without FPC exception.
> [x]: Changelog in prescribed format.
> [x]: Sources contain only permissible code or content.
> [-]: 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]: The spec file handles locales properly.
> [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.
>      Note: Package contains Conflicts: tag(s) needing fix or justification.
> [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.
> [x]: Package is not known to require an ExcludeArch tag.
> [-]: Large documentation must go in a -doc subpackage. Large could be size
>      (~1MB) or number of files.
>      Note: Documentation size is 20480 bytes in 1 files.
> [x]: Package complies to the Packaging Guidelines
> [x]: Package successfully compiles and builds into binary rpms on at least
>      one supported primary architecture.
> [x]: Package installs properly.
> [x]: Rpmlint is run on all rpms the build produces.
>      Note: There are rpmlint messages (see attachment).
> [x]: If (and only if) the source package includes the text of the
>      license(s) in its own file, then that file, containing the text of the
>      license(s) for the package is included in %license.
> [x]: Package 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 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
> 
> Python:
> [x]: Python eggs must not download any dependencies during the build
>      process.
> [-]: A package which is used by another package via an egg interface should
>      provide egg info.
> [x]: Package meets the Packaging Guidelines::Python
> [x]: Binary eggs must be removed in %prep
> 
> ===== SHOULD items =====
> 
> Generic:
> [!]: Uses parallel make %{?_smp_mflags} macro.

I'm not sure why this was a failure?

> [-]: If the source package does not include license text(s) as a separate
>      file from upstream, the packager SHOULD query upstream to include it.
> [x]: Final provides and requires are sane (see attachments).
> [x]: Fully versioned dependency in subpackages if applicable.
>      Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in perf ,
>      python-perf , kernel-tools-libs , kernel-tools-libs-devel , kernel-
>      tools-debuginfo , kernel-tools-debugsource
> [?]: 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.
> [-]: 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.
> [-]: %check is present and all tests pass.
> [x]: Packages should try to preserve timestamps of original installed
>      files.
> [!]: Spec use %global instead of %define unless justified.
>      Note: %define requiring justification: %define base_sublevel 14,
>      %define stable_update 0, %define stablerev %{stable_update}, %define
>      stable_base %{stable_update}, %define rpmversion
>      4.%{base_sublevel}.%{stable_update}, %define upstream_sublevel %(echo
>      $((%{base_sublevel} + 1))), %define rpmversion
>      4.%{upstream_sublevel}.0, %define pkg_release
>      %{fedora_build}%{?buildid}%{?dist}, %define rctag .rc%rcrev, %define
>      rctag .rc0, %define gittag .git0, %define pkg_release
>      0%{?rctag}%{?gittag}.%{fedora_build}%{?buildid}%{?dist}, %define
>      kversion 4.%{base_sublevel}, %define KVERREL
>      %{version}-%{release}.%{_target_cpu}, %define debuginfodir
>      /usr/lib/debug, %define __requires_exclude ^%{_bindir}/python

Fixed

> [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.
> 
> ===== EXTRA items =====
> 
> Generic:
> [x]: Rpmlint is run on debuginfo package(s).
>      Note: There are rpmlint messages (see attachment).
> [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: kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64.rpm
>           perf-4.15.0-0.rc2.git0.1.fc28.x86_64.rpm
>           python-perf-4.15.0-0.rc2.git0.1.fc28.x86_64.rpm
>           kernel-tools-libs-4.15.0-0.rc2.git0.1.fc28.x86_64.rpm
>           kernel-tools-libs-devel-4.15.0-0.rc2.git0.1.fc28.x86_64.rpm
>           kernel-tools-debuginfo-4.15.0-0.rc2.git0.1.fc28.x86_64.rpm
>           kernel-tools-debugsource-4.15.0-0.rc2.git0.1.fc28.x86_64.rpm
>           kernel-tools-4.15.0-0.rc2.git0.1.fc28.src.rpm
> kernel-tools.x86_64: W: no-url-tag
> kernel-tools.x86_64: W: obsolete-not-provided cpuspeed
> kernel-tools.x86_64: W: spurious-executable-perm
> /usr/share/man/man8/turbostat.8.gz
> kernel-tools.x86_64: W: spurious-executable-perm
> /usr/share/man/man8/x86_energy_perf_policy.8.gz
> kernel-tools.x86_64: W: no-manual-page-for-binary centrino-decode
> kernel-tools.x86_64: W: no-manual-page-for-binary gpio-event-mon
> kernel-tools.x86_64: W: no-manual-page-for-binary gpio-hammer
> kernel-tools.x86_64: W: no-manual-page-for-binary iio_event_monitor
> kernel-tools.x86_64: W: no-manual-page-for-binary iio_generic_buffer
> kernel-tools.x86_64: W: no-manual-page-for-binary lsgpio
> kernel-tools.x86_64: W: no-manual-page-for-binary lsiio
> kernel-tools.x86_64: W: no-manual-page-for-binary powernow-k8-decode
> kernel-tools.x86_64: W: no-manual-page-for-binary tmon
> kernel-tools.x86_64: W: empty-%postun
> perf.x86_64: W: no-url-tag
> perf.x86_64: E: executable-sourced-script /etc/bash_completion.d/perf 755
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/perl/Perf-Trace-Util/lib/Perf/Trace/Context.pm
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/perl/Perf-Trace-Util/lib/Perf/Trace/Core.pm
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/perl/Perf-Trace-Util/lib/Perf/Trace/Util.pm
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/perl/check-perf-trace.pl
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/perl/failed-syscalls.pl
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Core.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/Perf-Trace-Util/lib/Perf/Trace/
> EventClass.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/Perf-Trace-Util/lib/Perf/Trace/
> SchedGui.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Util.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/check-perf-trace.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/compaction-times.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/event_analyzing_sample.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/export-to-postgresql.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/export-to-sqlite.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/failed-syscalls-by-pid.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/futex-contention.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/intel-pt-events.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/net_dropmonitor.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/netdev-times.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/sctop.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/stackcollapse.py
> perf.x86_64: E: wrong-script-interpreter
> /usr/libexec/perf-core/scripts/python/stat-cpi.py /usr/bin/env python
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/syscall-counts-by-pid.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/scripts/python/syscall-counts.py
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/README
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/base-record
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/base-stat
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-C0
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-basic
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-branch-any
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-branch-filter-any
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-branch-filter-any_call
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-branch-filter-any_ret
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-branch-filter-hv
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-branch-filter-ind_call
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-branch-filter-k
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-branch-filter-u
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-count
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-data
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-freq
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-graph-default
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-graph-dwarf
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-graph-fp
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-group
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-group-sampling
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-group1
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-no-buffering
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-no-inherit
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-no-samples
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-period
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-record-raw
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-stat-C0
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-stat-basic
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-stat-default
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-stat-detailed-1
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-stat-detailed-2
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-stat-detailed-3
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-stat-group
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-stat-group1
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/attr/test-stat-no-inherit
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/shell/lib/probe.sh
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/shell/lib/probe_vfs_getname.sh
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/shell/probe_vfs_getname.sh
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/shell/record+script_probe_vfs_getname.sh
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/shell/trace+probe_libc_inet_pton.sh
> perf.x86_64: E: script-without-shebang
> /usr/libexec/perf-core/tests/shell/trace+probe_vfs_getname.sh
> perf.x86_64: E: script-without-shebang
> /usr/share/perf-core/strace/groups/file
> python-perf.x86_64: W: no-url-tag
> python-perf.x86_64: W: no-documentation
> kernel-tools-libs.x86_64: W: no-url-tag
> kernel-tools-libs.x86_64: W: no-documentation
> kernel-tools-libs-devel.x86_64: W: no-url-tag
> kernel-tools-libs-devel.x86_64: W: only-non-binary-in-usr-lib
> kernel-tools-libs-devel.x86_64: W: no-documentation
> kernel-tools-libs-devel.x86_64: E: incorrect-fsf-address
> /usr/include/cpufreq.h
> kernel-tools-debuginfo.x86_64: W: no-url-tag
> kernel-tools-debugsource.x86_64: W: no-url-tag
> kernel-tools-debugsource.x86_64: W: no-documentation
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> arch/x86/include/uapi/asm/vmx.h
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> include/linux/rbtree.h
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> include/linux/rbtree_augmented.h
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> lib/rbtree.c
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/arch/x86/util/dwarf-regs.c
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/builtin-probe.c
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/scripts/python/Perf-Trace-Util/Context.c
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/util/dwarf-aux.c
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/util/dwarf-aux.h
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/util/intel-pt-decoder/inat.c
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/util/intel-pt-decoder/inat.h
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/util/intel-pt-decoder/inat_types.h
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/util/intel-pt-decoder/insn.c
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/util/intel-pt-decoder/insn.h
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/util/probe-event.c
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/util/probe-finder.c
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/util/scripting-engines/trace-event-perl.c
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/util/scripting-engines/trace-event-python.c
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/util/trace-event-info.c
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/util/trace-event-parse.c
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/util/trace-event-read.c
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> perf/util/trace-event-scripting.c
> kernel-tools-debugsource.x86_64: E: incorrect-fsf-address
> /usr/src/debug/kernel-tools-4.15.0-0.rc2.git0.1.fc28.x86_64/linux-4.14/tools/
> power/cpupower/lib/cpufreq.h
> kernel-tools.src: W: no-url-tag
> kernel-tools.src:61: E: hardcoded-library-path in /usr/lib/debug
> kernel-tools.src:156: W: unversioned-explicit-provides kernel-tools-devel
> kernel-tools.src: W: invalid-url Source10: perf-man-4.14.tar.gz
> 8 packages and 0 specfiles checked; 93 errors, 28 warnings.

spec and srpm updated

Comment 7 Robert-André Mauchin 🐧 2017-12-15 20:52:51 UTC
>> Generic:
>> [!]: Uses parallel make %{?_smp_mflags} macro.
>
>I'm not sure why this was a failure?

Because it detects "make" without %{?_smp_mflags} (or %make_build), which it the recommended method unless parallel make makes the build fail.

> Most of these are problems with the package itself. I'd rather fix those up later.

At least fix the man pages and bash completion file:

> kernel-tools.x86_64: W: spurious-executable-perm
> /usr/share/man/man8/turbostat.8.gz
> kernel-tools.x86_64: W: spurious-executable-perm
> /usr/share/man/man8/x86_energy_perf_policy.8.gz
> perf.x86_64: E: executable-sourced-script /etc/bash_completion.d/perf 755

Here's a simple patch to fix it:

diff -up linux-4.14/tools/perf/Makefile.perf.fix_executable_perm linux-4.14/tools/perf/Makefile.perf
--- linux-4.14/tools/perf/Makefile.perf.fix_executable_perm	2017-11-12 19:46:13.000000000 +0100
+++ linux-4.14/tools/perf/Makefile.perf	2017-12-15 21:52:16.638189892 +0100
@@ -765,7 +765,7 @@ ifndef NO_LIBPYTHON
 endif
 	$(call QUIET_INSTALL, perf_completion-script) \
 		$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(sysconfdir_SQ)/bash_completion.d'; \
-		$(INSTALL) perf-completion.sh '$(DESTDIR_SQ)$(sysconfdir_SQ)/bash_completion.d/perf'
+		$(INSTALL) -m 644 perf-completion.sh '$(DESTDIR_SQ)$(sysconfdir_SQ)/bash_completion.d/perf'
 	$(call QUIET_INSTALL, perf-tip) \
 		$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(tip_instdir_SQ)'; \
 		$(INSTALL) Documentation/tips.txt -t '$(DESTDIR_SQ)$(tip_instdir_SQ)'
diff -up linux-4.14/tools/power/x86/turbostat/Makefile.fix_executable_perm linux-4.14/tools/power/x86/turbostat/Makefile
--- linux-4.14/tools/power/x86/turbostat/Makefile.fix_executable_perm	2017-11-12 19:46:13.000000000 +0100
+++ linux-4.14/tools/power/x86/turbostat/Makefile	2017-12-15 20:47:32.123941300 +0100
@@ -25,4 +25,4 @@ install : turbostat
 	install -d  $(DESTDIR)$(PREFIX)/bin
 	install $(BUILD_OUTPUT)/turbostat $(DESTDIR)$(PREFIX)/bin/turbostat
 	install -d  $(DESTDIR)$(PREFIX)/share/man/man8
-	install turbostat.8 $(DESTDIR)$(PREFIX)/share/man/man8
+	install -m 644 turbostat.8 $(DESTDIR)$(PREFIX)/share/man/man8
diff -up linux-4.14/tools/power/x86/x86_energy_perf_policy/Makefile.fix_executable_perm linux-4.14/tools/power/x86/x86_energy_perf_policy/Makefile
--- linux-4.14/tools/power/x86/x86_energy_perf_policy/Makefile.fix_executable_perm	2017-11-12 19:46:13.000000000 +0100
+++ linux-4.14/tools/power/x86/x86_energy_perf_policy/Makefile	2017-12-15 20:48:10.671831448 +0100
@@ -24,5 +24,5 @@ install : x86_energy_perf_policy
 	install -d  $(DESTDIR)$(PREFIX)/bin
 	install $(BUILD_OUTPUT)/x86_energy_perf_policy $(DESTDIR)$(PREFIX)/bin/x86_energy_perf_policy
 	install -d  $(DESTDIR)$(PREFIX)/share/man/man8
-	install x86_energy_perf_policy.8 $(DESTDIR)$(PREFIX)/share/man/man8
+	install -m 644 x86_energy_perf_policy.8 $(DESTDIR)$(PREFIX)/share/man/man8

Comment 8 Laura Abbott 2017-12-19 22:45:29 UTC
Okay, I fixed up the executable perms and reuploaded the spec and srpm.

Comment 9 Robert-André Mauchin 🐧 2017-12-19 22:52:44 UTC
Seems good to me, package approved.

Thanks for all your work on the kernel.

Comment 10 Gwyn Ciesla 2018-01-03 12:26:16 UTC
(fedrepo-req-admin):  The Pagure repository was created at https://src.fedoraproject.org/rpms/kernel-tools

Comment 11 Laura Abbott 2018-01-08 20:40:26 UTC
Built successfully this morning


Note You need to log in before you can comment on or make changes to this bug.