Bug 807810

Summary: Review Request: ptpd-phc - Precision Time Protocol daemon
Product: [Fedora] Fedora Reporter: Josh Boyer <jwboyer>
Component: Package ReviewAssignee: Jon Stanley <jstanley>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: jon.kent, jstanley, lemenkov, notting, package-review, rod, tcallawa
Target Milestone: ---Flags: jstanley: fedora-review+
gwync: fedora-cvs+
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: ptpd-phc-2.1.0-0.2.20120921gitecca20.fc18 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2012-12-02 12:01:44 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Josh Boyer 2012-03-28 19:29:27 UTC
Spec URL: http://jwboyer.fedorapeople.org/pub/ptpd-phc.spec
SRPM URL: http://jwboyer.fedorapeople.org/pub/ptpd-phc-2.1.0-0.1.20120328git.fc16.src.rpm
Description:
This is the PTP daemon (PTPd) implementing the Precision Time Protocol (PTP)
version 2 as defined by 'IEEE Std 1588-2008'. PTP provides precise time
coordination of Ethernet LAN connected computers. It was designed primarily
for instrumentation and control systems.

Comment 1 Peter Lemenkov 2012-03-30 11:18:03 UTC
Well, from what info I gathered about PTP so far I'm a bit confused. First I've heard about patent concerns regarding PTP: 

* https://bugzilla.redhat.com/show_bug.cgi?id=556611#c9
* http://standards.ieee.org/about/sasb/patcom/pat1390.html (search for 1588 )

There was another review of the PTPd here:

* https://bugzilla.redhat.com/show_bug.cgi?id=658796

Also I don't fully get the motivation for packaging this fork of the original PTPd daemon. There are some other forms as well at github:

* https://github.com/richardcochran/ptpd-phc (this one)
* https://github.com/pohly/ptpd (another one fork with hardware timestamps)
* https://github.com/audioscience/ptpd2
* https://github.com/astraw/ptpd

Comment 2 Tom "spot" Callaway 2012-03-30 13:04:12 UTC
Blocking FE-Legal, while I check on this.

Comment 3 Jon Kent 2012-03-31 20:37:26 UTC
Hi,

I've tried to package this before and hit the patent issue (it does exist, the ptpd outlines this).

Toying with putting this in via rpmfusion.  You are welcome to take this approach.

Would be useful I think to have a black list of binaries that will not make it into Fedora because of issues like this.

My 2c

Jon

Comment 4 Tom "spot" Callaway 2012-04-03 13:58:45 UTC
I'm lifting the Legal block on this, after consulting with Red Hat Legal. The review can proceed.

Comment 5 Jon Stanley 2012-09-20 19:38:58 UTC
taking review

Comment 6 Jon Stanley 2012-09-20 20:09:41 UTC
A few quick comments.

The comments in the spec file aren't exactly revealing as to how to reproduce *this exact* tarball. In the event that upstream were to actually update this thing (which seems somewhat unlikely given the git history), What I'd get by following your instructions is whatever the latest thing is - not what's in this package. For example from one of my packages:

# Upstream does not provide tarballs.
# To generate:
# git clone git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/trace-cmd.git
# cd trace-cmd
# git archive --prefix=trace-cmd-%%{version}.%%{checkout}/ -o trace-cmd-%%{version}.%%{checkout}.tar.gz %%{git_commit}


Secondly, the standard %{optflags} aren't used. In the same patch where you drop the kernel includes, you could just as easily add $(CFLAGS) to the Makefile and do make CFLAGS=%{optflags}

Thirdly, the debuginfo that is generated is useless - the binary is compiled without -g.

Comment 7 Josh Boyer 2012-09-20 20:47:16 UTC
OK, all good points.

I'll fix this up tomorrow.  Thanks for the comments.

Comment 8 Josh Boyer 2012-09-21 14:30:44 UTC
(In reply to comment #6)
> For example from one of my packages:
> 
> # Upstream does not provide tarballs.
> # To generate:
> # git clone
> git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/trace-cmd.git
> # cd trace-cmd
> # git archive --prefix=trace-cmd-%%{version}.%%{checkout}/ -o
> trace-cmd-%%{version}.%%{checkout}.tar.gz %%{git_commit}

I like it.  Stole it blatantly.

> Secondly, the standard %{optflags} aren't used. In the same patch where you
> drop the kernel includes, you could just as easily add $(CFLAGS) to the
> Makefile and do make CFLAGS=%{optflags}
> 
> Thirdly, the debuginfo that is generated is useless - the binary is compiled
> without -g.

Patch wasn't needed to fix these two.  CFLAGS is already specified in the make file and I can just pass CFLAGS="%{optflags} -DUSE_LINUX_PHC" and it covers both since optflags contains -g.

Updated:

Spec URL: http://jwboyer.fedorapeople.org/pub/ptpd-phc.spec
SRPM URL: http://jwboyer.fedorapeople.org/pub/ptpd-phc-2.1.0-0.1.20120921gitecca20.fc17.src.rpm

Comment 9 Jon Stanley 2012-09-21 16:56:13 UTC
Package Review
==============

Key:
- = N/A
x = Pass
! = Fail
? = Not evaluated



==== C/C++ ====
[x]: MUST Header files in -devel subpackage, if present.
[x]: MUST Package does not contain any libtool archives (.la)
[x]: MUST Package does not contain kernel modules.
[x]: MUST Package contains no static executables.
[x]: MUST Rpath absent or only used for internal libs.


==== Generic ====
[x]: EXTRA Rpmlint is run on all installed packages.
     Note: There are rpmlint messages (see attachment).
[x]: EXTRA Spec file according to URL is the same as in SRPM.
[x]: MUST Package is licensed with an open-source compatible license and meets
     other legal requirements as defined in the legal section of Packaging
     Guidelines.
[x]: MUST Package successfully compiles and builds into binary rpms on at
     least one supported primary architecture.
[x]: MUST %build honors applicable compiler flags or justifies otherwise.
[x]: MUST All build dependencies are listed in BuildRequires, except for any
     that are listed in the exceptions section of Packaging Guidelines.
[x]: MUST Package contains no bundled libraries.
[!]: MUST Changelog in prescribed format.
[x]: MUST Sources contain only permissible code or content.
[!]: MUST Each %files section contains %defattr if rpm < 4.4
     Note: defattr(....) present in %files section. This is OK if packaging
     for EPEL5. Otherwise not needed
[-]: MUST Macros in Summary, %description expandable at SRPM build time.
[-]: MUST Package contains desktop file if it is a GUI application.
[-]: MUST Development files must be in a -devel package
[-]: MUST Package requires other packages for directories it uses.
[-]: MUST Package uses nothing in %doc for runtime.
[x]: MUST Package is not known to require ExcludeArch.
[x]: MUST Permissions on files are set properly.
[x]: MUST Package does not contain duplicates in %files.
[x]: MUST Package complies to the Packaging Guidelines
[x]: MUST Spec file lacks Packager, Vendor, PreReq tags.
[x]: MUST Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
     Note: rm -rf would be needed if support for EPEL5 is required
[-]: MUST Large documentation files are in a -doc subpackage, if required.
[x]: MUST If (and only if) the source package includes the text of the
     license(s) in its own file, then that file, containing the text of the
     license(s) for the package is included in %doc.
[x]: MUST License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses found:
     "BSD (2 clause)" For detailed output of licensecheck see file:
     /home/jstanley/review/ptpd-phc/licensecheck.txt
[x]: MUST Package consistently uses macro is (instead of hard-coded directory
     names).
[x]: MUST Package is named using only allowed ascii characters.
[x]: MUST Package is named according to the Package Naming Guidelines.
[x]: MUST Package does not generate any conflict.
     Note: Package contains no Conflicts: tag(s)
[x]: MUST Package obeys FHS, except libexecdir and /usr/target.
[-]: MUST If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[-]: MUST Package must own all directories that it creates.
[x]: MUST Package does not own files or directories owned by other packages.
[x]: MUST Package installs properly.
[x]: MUST Package is not relocatable.
[x]: MUST Requires correct, justified where necessary.
[!]: MUST Rpmlint is run on all rpms the build produces.
     Note: There are rpmlint messages (see below).
[x]: MUST Sources used to build the package match the upstream source, as
     provided in the spec URL. NOTE: This is a git checkout - see below for       verification
[x]: MUST Spec file is legible and written in American English.
[x]: MUST Spec file name must match the spec package %{name}, in the format
     %{name}.spec.
[!]: MUST Package contains systemd file(s) if in need.
[x]: MUST File names are valid UTF-8.
[x]: MUST Useful -debuginfo package or justification otherwise.
[x]: SHOULD Reviewer should test that the package builds in mock.
[x]: SHOULD Buildroot is not present
     Note: Unless packager wants to package for EPEL5 this is fine
[x]: SHOULD Package has no %clean section with rm -rf %{buildroot} (or
     $RPM_BUILD_ROOT)
     Note: Clean would be needed if support for EPEL5 is required
[-]: SHOULD 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]: SHOULD Dist tag is present.
[x]: SHOULD No file requires outside of /etc, /bin, /sbin, /usr/bin,
     /usr/sbin.
[x]: SHOULD Final provides and requires are sane (rpm -q --provides and rpm -q
     --requires).
[?]: SHOULD Package functions as described.
[x]: SHOULD Latest version is packaged.
[x]: SHOULD Package does not include license text files separate from
     upstream.
[x]: SHOULD Patches link to upstream bugs/comments/lists or are otherwise
    justified.

- The single patch present is for obvious reasons.
[x]: SHOULD SourceX tarball generation or download is documented.
     Note: Package contains tarball without URL, check comments
[x]: SHOULD SourceX / PatchY prefixed with %{name}.
[x]: SHOULD SourceX is a working URL.
[-]: SHOULD Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[?]: SHOULD Package should compile and build into binary rpms on all supported
     architectures.
- Tested on x86_64
[-]: SHOULD %check is present and all tests pass.
No tests upstream
[ ]: SHOULD Packages should try to preserve timestamps of original installed
     files.
[x]: SHOULD Spec use %global instead of %define.

Issues:
[!]: MUST Each %files section contains %defattr if rpm < 4.4
     Note: defattr(....) present in %files section. This is OK if packaging
     for EPEL5. Otherwise not needed
See: http://fedoraproject.org/wiki/Packaging/Guidelines#FilePermissions

The package seems slightly schizophrenic in this regard :). I think that it would be useful on EPEL5, but it's half there and half not. It has a %defattr, but no BuildRoot. Pick one or the other (and I'd suggest the EPEL5 compatible one :D)

[!]: MUST Package contains systemd file(s) if in need.

This is a daemon, and there's no systemd unit packaged for it.

[!]: MUST Changelog in prescribed format.
The changelog lacks versioning info.

Also, fix the rpmlint warnings about the non-standard group (I think it's looking for 'System Environment/Daemons' here.

I noted a lack of documentation or default config as well, though the help output is relatively sane.

Rpmlint
-------
Checking: ptpd-phc-debuginfo-2.1.0-0.1.20120921gitecca20.fc16.x86_64.rpm
          ptpd-phc-2.1.0-0.1.20120921gitecca20.fc16.x86_64.rpm
          ptpd-phc-2.1.0-0.1.20120921gitecca20.fc16.src.rpm
ptpd-phc-debuginfo.x86_64: W: no-version-in-last-changelog
ptpd-phc.x86_64: W: non-standard-group System/Daemon
ptpd-phc.x86_64: W: no-version-in-last-changelog
ptpd-phc.x86_64: W: no-manual-page-for-binary ptpd2
ptpd-phc.src: W: non-standard-group System/Daemon
ptpd-phc.src: W: no-version-in-last-changelog
ptpd-phc.src:26: W: setup-not-quiet
ptpd-phc.src: W: invalid-url Source0: ptpd-phc-2.1.0.20120921gitecca20.tar.gz
3 packages and 0 specfiles checked; 0 errors, 8 warnings.


Rpmlint (installed packages)
----------------------------
# rpmlint ptpd-phc
ptpd-phc.x86_64: I: enchant-dictionary-not-found en_US
ptpd-phc.x86_64: W: non-standard-group System/Daemon
ptpd-phc.x86_64: W: no-version-in-last-changelog
ptpd-phc.x86_64: W: no-manual-page-for-binary ptpd2
1 packages and 0 specfiles checked; 0 errors, 3 warnings.
# echo 'rpmlint-done:'

Requires
--------
ptpd-phc-debuginfo-2.1.0-0.1.20120921gitecca20.fc16.x86_64.rpm (rpmlib, GLIBC filtered):
    

ptpd-phc-2.1.0-0.1.20120921gitecca20.fc16.x86_64.rpm (rpmlib, GLIBC filtered):
    
    libc.so.6()(64bit)  
    libm.so.6()(64bit)  
    librt.so.1()(64bit)  
    rtld(GNU_HASH)  

Provides
--------
ptpd-phc-debuginfo-2.1.0-0.1.20120921gitecca20.fc16.x86_64.rpm:
    
    ptpd-phc-debuginfo = 2.1.0-0.1.20120921gitecca20.fc16
    ptpd-phc-debuginfo(x86-64) = 2.1.0-0.1.20120921gitecca20.fc16

ptpd-phc-2.1.0-0.1.20120921gitecca20.fc16.x86_64.rpm:
    
    ptpd-phc = 2.1.0-0.1.20120921gitecca20.fc16
    ptpd-phc(x86-64) = 2.1.0-0.1.20120921gitecca20.fc16

MD5-sum check
-------------
$ sha256sum ptpd-phc-2.1.0.20120921gitecca20.tar.gz ../../ptpd-phc-upstream/ptpd-phc-2.1.0.20120921gitecca20.tar.gz 
77132a417aaae1030bac09c423e1fdf650a36a7e33671c4eb7aa7de40897bcd3  ptpd-phc-2.1.0.20120921gitecca20.tar.gz
77132a417aaae1030bac09c423e1fdf650a36a7e33671c4eb7aa7de40897bcd3  ../../ptpd-phc-upstream/ptpd-phc-2.1.0.20120921gitecca20.tar.gz


Generated by fedora-review 0.2.2 (9f8c0e5) last change: 2012-08-09
Command line :/usr/bin/fedora-review -n ptpd-phc
External plugins:

Comment 10 Josh Boyer 2012-09-21 17:13:44 UTC
(In reply to comment #9)
> Issues:
> [!]: MUST Each %files section contains %defattr if rpm < 4.4
>      Note: defattr(....) present in %files section. This is OK if packaging
>      for EPEL5. Otherwise not needed
> See: http://fedoraproject.org/wiki/Packaging/Guidelines#FilePermissions
> 
> The package seems slightly schizophrenic in this regard :). I think that it
> would be useful on EPEL5, but it's half there and half not. It has a
> %defattr, but no BuildRoot. Pick one or the other (and I'd suggest the EPEL5
> compatible one :D)

I have no interest in doing anything with EPEL5 at all.  Ever.  If someone wishes to co-maintain this package on that branch then they can fix that up on the branch.

> [!]: MUST Package contains systemd file(s) if in need.
> 
> This is a daemon, and there's no systemd unit packaged for it.

I'll look into this.

> [!]: MUST Changelog in prescribed format.
> The changelog lacks versioning info.

Erm.  Right.

> Also, fix the rpmlint warnings about the non-standard group (I think it's
> looking for 'System Environment/Daemons' here.

OK.

> I noted a lack of documentation or default config as well, though the help
> output is relatively sane.

Yes, well upstream lacks that.

Comment 11 Jon Stanley 2012-09-21 17:22:15 UTC
(In reply to comment #10)

> I have no interest in doing anything with EPEL5 at all.  Ever.  If someone
> wishes to co-maintain this package on that branch then they can fix that up
> on the branch.

Then the %defattr can be removed. I might be the sucker^Wperson interested in maintaining this in EPEL5 :)

> > I noted a lack of documentation or default config as well, though the help
> > output is relatively sane.
> 
> Yes, well upstream lacks that.

Yeah, and that's a fairly sad state of affairs :)

Comment 12 Josh Boyer 2012-09-21 18:01:27 UTC
(In reply to comment #11)
> (In reply to comment #10)
> 
> > I have no interest in doing anything with EPEL5 at all.  Ever.  If someone
> > wishes to co-maintain this package on that branch then they can fix that up
> > on the branch.
> 
> Then the %defattr can be removed. I might be the sucker^Wperson interested
> in maintaining this in EPEL5 :)

Done.

Upon further thinking, I'd check with RHEL before doing anything with this on EPEL[56].  It requires matching kernel functionality which is present in all of Fedora, but wasn't included upstream until the 3.0 kernel or there-abouts.
 
OK, systemd unit file added.  It even appears to work in my brief testing.

rpmlint only warns about the source URL thing.

Updated:

Spec file: http://jwboyer.fedorapeople.org/pub/ptpd-phc.spec
SRPM file: http://jwboyer.fedorapeople.org/pub/ptpd-phc-2.1.0-0.2.20120921gitecca20.fc17.src.rpm

Comment 13 Jon Stanley 2012-09-21 19:19:38 UTC
OK, this package is APPROVED.

One minor nit that you might want to fix in the systemd unit file though - there's no way to configure in there. I would add an EnvironmentFile and use something like /usr/bin/ptpd2 $OPTIONS as the ExecStart.

But the admin can override the unit file if he wants to as well, so I wouldn't think that this would be a blocker, more of a style thing.

Comment 14 Josh Boyer 2012-09-24 12:18:20 UTC
New Package SCM Request
=======================
Package Name: ptpd-phc
Short Description: This is the PTP daemon (PTPd) implementing the Precision Time Protocol (PTP) version 2
Owners: jwboyer
Branches: f17 f18
InitialCC:

Comment 15 Gwyn Ciesla 2012-09-24 12:55:28 UTC
Git done (by process-git-requests).

Jon, please take ownership of review BZs, thanks!

Comment 16 Jon Stanley 2012-09-24 14:33:16 UTC
Oops, forgot to do that. Fixed now.