This service will be undergoing maintenance at 00:00 UTC, 2017-10-23 It is expected to last about 30 minutes
Bug 1255370 - Review Request: golang-github-opencontainers-specs - Open Container Specifications
Review Request: golang-github-opencontainers-specs - Open Container Specifica...
Status: CLOSED ERRATA
Product: Fedora
Classification: Fedora
Component: Package Review (Show other bugs)
rawhide
All Linux
medium Severity medium
: ---
: ---
Assigned To: Nalin Dahyabhai
Fedora Extras Quality Assurance
: Reopened
Depends On:
Blocks: 1255179
  Show dependency treegraph
 
Reported: 2015-08-20 07:49 EDT by Jan Chaloupka
Modified: 2016-04-02 16:33 EDT (History)
3 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2016-04-02 16:33:58 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---
nalin: fedora‑review+
limburgher: fedora‑cvs+


Attachments (Terms of Use)

  None (edit)
Description Jan Chaloupka 2015-08-20 07:49:19 EDT
Spec URL: https://jchaloup.fedorapeople.org/reviews/golang-github-opencontainers-specs/golang-github-opencontainers-specs.spec

SRPM URL: https://jchaloup.fedorapeople.org/reviews/golang-github-opencontainers-specs/golang-github-opencontainers-specs-0-0.1.git0c505a5.fc20.src.rpm

Description: Open Container Specifications

Fedora Account System Username: jchaloup

Koji: http://koji.fedoraproject.org/koji/taskinfo?taskID=10764334

$ rpmlint golang-github-opencontainers-specs-0-0.1.git0c505a5.fc20.src.rpm golang-github-opencontainers-specs-devel-0-0.1.git0c505a5.fc20.noarch.rpm
2 packages and 0 specfiles checked; 0 errors, 0 warnings.
Comment 1 Nalin Dahyabhai 2015-08-25 17:14:20 EDT
Taking this one, since it's a build dependency of another one that I'm reviewing.

Looks pretty good to me. Here's the checklist from fedora-review, with a few items that I'd like to know more about (search for "[ ]" and "[!]"):

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

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

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

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.
 ASL 2.0 is among the Good licenses on Fedora's license list.
[X]: License field in the package spec file matches the actual license.
 No patches are applied, and the bundled license text is that of ASL 2.0, which is in line with the opencontainers charter.
[X]: Package must own all directories that it creates.
 rpmlint complained about /usr/share/gocode{,src{,github.com}}, all of which are owned by "golang".
[X]: %build honors applicable compiler flags or justifies otherwise.
 %build is empty; package exists only to be used when building others.
[X]: Package contains no bundled libraries without FPC exception.
 Package contains no bundled libraries.
[ ]: Changelog in prescribed format.
 It's customary to use a person's full name where the changelog currently lists a Fedora account name.  It's not a blocker, but my guess is it's an oversight.
[X]: Sources contain only permissible code or content.
[-]: Package contains desktop file if it is a GUI application.
[X]: Development files must be in a -devel package
[X]: Package uses nothing in %doc for runtime.
[X]: Package consistently uses macros (instead of hard-coded directory
     names).
[X]: Package is named according to the Package Naming Guidelines.
 Complies with the draft at https://fedoraproject.org/wiki/PackagingDrafts/Go as of this writing.  There's no date in the release field, so the Y in 0.Y.gitshortcommit.disttag will need to be manually incremented to keep the sorting order correct.
[X]: Package does not generate any conflict.
[X]: Package obeys FHS, except libexecdir and /usr/target.
[-]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[-]: Requires correct, justified where necessary.
 Package has no requirements.
[X]: Spec file is legible and written in American English.
[-]: Package contains systemd file(s) if in need.
[-]: 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 40960 bytes in 6 files.
[ ]: Package complies to the Packaging Guidelines
 The package description should be more than just a copy of the summary.
 Go packaging draft suggests that "noarch" should also be in the ExclusiveArch list.
[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: No rpmlint messages.
[x]: If (and only if) the source package includes the text of the
     license(s) in its own file, then that file, containing the text of the
     license(s) for the package is included in %license.
[x]: Package requires other packages for directories it uses.
 Package requires golang.
[x]: Package does not own files or directories owned by other packages.
[x]: All build dependencies are listed in BuildRequires, except for any
     that are listed in the exceptions section of Packaging Guidelines.
[x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT
[x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
[x]: Macros in Summary, %description expandable at SRPM build time.
[x]: Dist tag is present.
[x]: Package does not contain duplicates in %files.
[x]: Permissions on files are set properly.
[-]: Package use %makeinstall only when make install DESTDIR=... doesn't
     work.
[x]: Package is named using only allowed ASCII characters.
[x]: Package does not use a name that already exists.
[x]: Package is not relocatable.
[x]: Sources used to build the package match the upstream source, as
     provided in the spec URL.
[x]: Spec file name must match the spec package %{name}, in the format
     %{name}.spec.
[x]: File names are valid UTF-8.
[x]: Packages must not store files under /srv, /opt or /usr/local

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

Generic:
[-]: 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).
[-]: Package functions as described.
[!]: Latest version is packaged.
[X]: Package does not include license text files separate from upstream.
[-]: Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[-]: %check is present and all tests pass.
[X]: Packages should try to preserve timestamps of original installed
     files.
[ ]: Spec use %global instead of %define unless justified.
 Why is copying() not global?
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: Sources can be downloaded from URI in Source: tag
[x]: Reviewer should test that the package builds in mock.
[x]: Buildroot is not present
[x]: Package has no %clean section with rm -rf %{buildroot} (or
     $RPM_BUILD_ROOT)
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: SourceX is a working URL.
[x]: Package should compile and build into binary rpms on all supported
     architectures.

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

Generic:
[x]: Rpmlint is run on all installed packages.
     Note: No rpmlint messages.
[x]: Spec file according to URL is the same as in SRPM.


Rpmlint
-------
Checking: golang-github-opencontainers-specs-devel-0-0.1.git0c505a5.fc24.noarch.rpm
          golang-github-opencontainers-specs-0-0.1.git0c505a5.fc24.src.rpm
2 packages and 0 specfiles checked; 0 errors, 0 warnings.




Rpmlint (installed packages)
----------------------------
sh: /usr/bin/python: No such file or directory
1 packages and 0 specfiles checked; 0 errors, 0 warnings.



Requires
--------
golang-github-opencontainers-specs-devel (rpmlib, GLIBC filtered):



Provides
--------
golang-github-opencontainers-specs-devel:
    golang(github.com/opencontainers/specs)
    golang-github-opencontainers-specs-devel



Source checksums
----------------
https://github.com/opencontainers/specs/archive/0c505a55d8e9a6427b97adcee02f40c29e621300/specs-0c505a5.tar.gz :
  CHECKSUM(SHA256) this package     : 0aaaacec4e22752dffcfb13f5de234c35b0ffc203db4bb09198a2435c6b69fc0
  CHECKSUM(SHA256) upstream package : 0aaaacec4e22752dffcfb13f5de234c35b0ffc203db4bb09198a2435c6b69fc0


Generated by fedora-review 0.6.0 (3c5c9d7) last change: 2015-05-20
Command line :/usr/bin/fedora-review -n golang-github-opencontainers-specs
Buildroot used: fedora-rawhide-x86_64
Active plugins: Generic, Shell-api
Disabled plugins: Java, C/C++, Python, fonts, SugarActivity, Ocaml, Perl, Haskell, R, PHP, Ruby
Disabled flags: EXARCH, DISTTAG, EPEL5, BATCH, EPEL6
Comment 2 Jan Chaloupka 2015-08-27 09:40:37 EDT
> [ ]: Changelog in prescribed format.
> It's customary to use a person's full name where the changelog currently lists
> a Fedora account name.  It's not a blocker, but my guess is it's an oversight.

Right, it is my local settings. This is in every changelog message I generate so... Correct email is sufficient.

> [ ]: Package complies to the Packaging Guidelines
> The package description should be more than just a copy of the summary.

Sometimes it is impossible. Besides, all golang packages are for building only. They are not supposed to be for devel and installation on user local machine. So for buildtime dependencies this is sufficient.

> Go packaging draft suggests that "noarch" should also be in the
> ExclusiveArch list.

It is meant for installation only. As devel subpackage are always no arch, no need for that. ExclusiveArch is used for projects/packages that build from source codes. This is relevant only for el6. This case is covered by:
%if 0%{?go_arches:1}
ExclusiveArch:  %{go_arches}
%else
ExclusiveArch:  %{ix86} x86_64 %{arm}
%endif

> [!]: Latest version is packaged.

The latest version is not always the right candidate. runc uses this commit. The newer can have problems with backward compatibility. Once the newer version is required, the package gets updated.

> [ ]: Spec use %global instead of %define unless justified.
> Why is copying() not global?

It is a parametric macro. So you can not expand it at the time of definition. %global is expanded right away. Which would result in empty %license.
Comment 3 Nalin Dahyabhai 2015-09-03 10:24:21 EDT
(In reply to Jan Chaloupka from comment #2)
> > [ ]: Changelog in prescribed format.
> > It's customary to use a person's full name where the changelog currently lists
> > a Fedora account name.  It's not a blocker, but my guess is it's an oversight.
> 
> Right, it is my local settings. This is in every changelog message I
> generate so... Correct email is sufficient.

Looks like this is addressed in the review in bug #1255179.

> > [ ]: Package complies to the Packaging Guidelines
> > The package description should be more than just a copy of the summary.
> 
> Sometimes it is impossible. Besides, all golang packages are for building
> only. They are not supposed to be for devel and installation on user local
> machine. So for buildtime dependencies this is sufficient.

You're not suggesting that it's impossible for this package?

> > Go packaging draft suggests that "noarch" should also be in the
> > ExclusiveArch list.
> 
> It is meant for installation only. As devel subpackage are always no arch,
> no need for that. ExclusiveArch is used for projects/packages that build
> from source codes. This is relevant only for el6. This case is covered by:
> %if 0%{?go_arches:1}
> ExclusiveArch:  %{go_arches}
> %else
> ExclusiveArch:  %{ix86} x86_64 %{arm}
> %endif

I couldn't understand what you're saying here.

> > [!]: Latest version is packaged.
> 
> The latest version is not always the right candidate. runc uses this commit.
> The newer can have problems with backward compatibility. Once the newer
> version is required, the package gets updated.

This information is not present in either .spec file.  How would someone who's new to co-maintaining one package or another know that upgrades to the two need to be coordinated?

> > [ ]: Spec use %global instead of %define unless justified.
> > Why is copying() not global?
> 
> It is a parametric macro. So you can not expand it at the time of
> definition. %global is expanded right away. Which would result in empty
> %license.

Are you sure that's necessary here?  When I try changing it, the files show up in the right place with the right file flags in the binary packages.
Comment 4 Jan Chaloupka 2015-09-14 16:45:31 EDT
Updated:
- changelog maintainer name (full name)
- package description create from "The 5 principles of Standard Containers" paragraph
- ExclusiveArch and BuildRequires updated (the same way as for runc)
- %license macro introduced, %copying removed (the same way as for runc)

> > > [!]: Latest version is packaged.
> > 
> > The latest version is not always the right candidate. runc uses this commit.
> > The newer can have problems with backward compatibility. Once the newer
> > version is required, the package gets updated.
> 
> This information is not present in either .spec file.  How would someone who's
> new to co-maintaining one package or another know that upgrades to the two
> need to be coordinated?

This is driven by runc package and content of Godeps/Godeps.json file. It contains a list of dependencies with corresponding commits. (Co)-Maintainer of https://github.com/opencontainers/specs will not be aware of this unless he coordinates with runc (co)-maintainer.

Spec URL: https://jchaloup.fedorapeople.org/reviews/golang-github-opencontainers-specs/golang-github-opencontainers-specs.spec

SRPM URL: https://jchaloup.fedorapeople.org/reviews/golang-github-opencontainers-specs/golang-github-opencontainers-specs-0-0.1.git0c505a5.fc20.src.rpm
Comment 5 Nalin Dahyabhai 2015-09-17 14:54:12 EDT
Is there a reason for the logic for cases where %{with_bundled}/%{with_debug}/%{with_check}/%{with_unit_test} might be different to be kept for this .spec file?  Removing them makes the .spec file shorter.
Comment 6 Jan Chaloupka 2015-09-17 17:59:43 EDT
Colin Walters builds some packages on rhel7. RHEL7 has no support for debugging so at least with_debug must be set to 0. At the same time there are no devel/unit-test subpackage, so with_devel is set to 0. On the other hand everything on RHEL is built from bundled deps, so with_bundled is set to 1.

I could redefine the logic and test if a given macro is defined instead of testing for 1. I.e.:

%if 0%{?fedora} || 0%{?rhel} == 6
%global with_devel 1
%global with_debug 1
%endif

and

%if 0%{?with_devel:1}
%if 0%{?with_bundled:1}
%if 0%{?with_unit_test:1}
%if 0%{?with_debug:1}

This will remove some lines. In most cases it will be like:

%if 0%{?fedora} || 0%{?rhel} == 6
%global with_devel 1
%global with_debug 1
%global with_check 1
%global with_unit_test 1
%else
%global with_bundled 1
%endif

However, don't see any improvement. The aim is to make spec file usable for Fedora and RHEL7 at the same time. So you just copy what is in Fedora into RHEL a keep both spec file in sync as much as possible.

The macros adds more control to a packager and mark parts of a code as devel, unit-test and so on. So it is easier to understand what each part of a spec file is used for.
Comment 7 Nalin Dahyabhai 2015-09-18 13:43:05 EDT
I mean, why are we conditionalizing using macros that only ever get assigned one value in this package?  Having logic that is only going to be invoked when %{with_unit_test} is set to 1, in this package that only ever sets it to 0, doesn't appear to provide a benefit.
Comment 8 Jan Chaloupka 2015-09-18 15:28:46 EDT
> Is there a reason for the logic for cases where %{with_bundled}/%{with_debug}
> /%{with_check}/%{with_unit_test} might be different to be kept for this .spec
> file?  Removing them makes the .spec file shorter.

So you mean removing whole code wrapped with %{with_*} macros?

> I mean, why are we conditionalizing using macros that only ever get assigned
> one value in this package?

There are no tests at the moment. Once they are there, it will get set to 1. So yes, I could remove the code for unit-test, check and bundled. I keep the code cause it can change over time. And it is faster and easier to set those macro to 1 than copying it from other spec. Besides, some else can update the package, write his own unit-test subpackage/check which does not cover every directory or file.
Comment 9 Nalin Dahyabhai 2015-09-18 15:34:22 EDT
Okay, if tests are coming, then having the scaffolding in place for running them makes sense to me.  Setting 'fedora-review' flag (which, whoops, I realize I never set to '?') to '+'.
Comment 10 Jan Chaloupka 2015-09-18 15:37:10 EDT
New Package SCM Request
=======================
Package Name: golang-github-opencontainers-specs
Short Description: Open Container Specifications
Upstream URL: https://github.com/opencontainers/specs
Owners: fpokorny jchaloup
Branches: f23 f22 f21 el6 epel7
InitialCC: golang-sig
Comment 11 Gwyn Ciesla 2015-09-19 08:34:54 EDT
Git done (by process-git-requests).
Comment 12 Fedora Update System 2015-09-19 14:38:52 EDT
golang-github-opencontainers-specs-0-0.1.git0c505a5.el6 has been submitted as an update to Fedora EPEL 6. https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2015-8149
Comment 13 Fedora Update System 2015-09-19 14:40:46 EDT
golang-github-opencontainers-specs-0-0.1.git0c505a5.fc21 has been submitted as an update to Fedora 21. https://bodhi.fedoraproject.org/updates/FEDORA-2015-16213
Comment 14 Fedora Update System 2015-09-19 14:41:58 EDT
golang-github-opencontainers-specs-0-0.1.git0c505a5.fc22 has been submitted as an update to Fedora 22. https://bodhi.fedoraproject.org/updates/FEDORA-2015-16214
Comment 15 Fedora Update System 2015-09-19 14:43:57 EDT
golang-github-opencontainers-specs-0-0.1.git0c505a5.fc23 has been submitted as an update to Fedora 23. https://bodhi.fedoraproject.org/updates/FEDORA-2015-16215
Comment 16 Fedora Update System 2015-09-20 12:50:00 EDT
golang-github-opencontainers-specs-0-0.1.git0c505a5.fc22 has been pushed to the Fedora 22 testing repository. If problems still persist, please make note of it in this bug report.
If you want to test the update, you can install it with
$ su -c 'dnf --enablerepo=updates-testing update golang-github-opencontainers-specs'
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2015-16214
Comment 17 Fedora Update System 2015-09-20 12:51:59 EDT
golang-github-opencontainers-specs-0-0.1.git0c505a5.fc21 has been pushed to the Fedora 21 testing repository. If problems still persist, please make note of it in this bug report.
If you want to test the update, you can install it with
$ su -c 'dnf --enablerepo=updates-testing update golang-github-opencontainers-specs'
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2015-16213
Comment 18 Fedora Update System 2015-09-20 13:20:32 EDT
golang-github-opencontainers-specs-0-0.1.git0c505a5.fc23 has been pushed to the Fedora 23 testing repository. If problems still persist, please make note of it in this bug report.
If you want to test the update, you can install it with
$ su -c 'dnf --enablerepo=updates-testing update golang-github-opencontainers-specs'
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2015-16215
Comment 19 Fedora Update System 2015-09-20 22:47:40 EDT
golang-github-opencontainers-specs-0-0.1.git0c505a5.el6 has been pushed to the Fedora EPEL 6 testing repository. If problems still persist, please make note of it in this bug report.
If you want to test the update, you can install it with
$ su -c 'dnf --enablerepo=updates-testing update golang-github-opencontainers-specs'
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2015-8149
Comment 20 Fedora Update System 2015-10-03 13:54:44 EDT
golang-github-opencontainers-specs-0-0.1.git0c505a5.fc23 has been pushed to the Fedora 23 stable repository. If problems still persist, please make note of it in this bug report.
Comment 21 Fedora Update System 2015-11-27 07:48:18 EST
golang-github-opencontainers-specs-0-0.2.gitcf8dd12.fc22 has been submitted as an update to Fedora 22. https://bodhi.fedoraproject.org/updates/FEDORA-2015-6ab7878820
Comment 22 Fedora Update System 2015-11-27 07:48:19 EST
golang-github-opencontainers-specs-0-0.2.gitcf8dd12.el6 has been submitted as an update to Fedora EPEL 6. https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2015-3afe2f9c86
Comment 23 Fedora Update System 2015-11-27 17:20:56 EST
golang-github-opencontainers-specs-0-0.2.gitcf8dd12.fc22 has been pushed to the Fedora 22 testing repository. If problems still persist, please make note of it in this bug report.
If you want to test the update, you can install it with
$ su -c 'dnf --enablerepo=updates-testing update golang-github-opencontainers-specs'
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2015-6ab7878820
Comment 24 Fedora Update System 2015-11-27 19:21:27 EST
golang-github-opencontainers-specs-0-0.2.gitcf8dd12.el6 has been pushed to the Fedora EPEL 6 testing repository. If problems still persist, please make note of it in this bug report.
If you want to test the update, you can install it with
$ su -c 'yum --enablerepo=epel-testing update golang-github-opencontainers-specs'
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2015-3afe2f9c86
Comment 25 Fedora Update System 2016-03-02 15:54:44 EST
golang-github-opencontainers-specs-0.2.0-0.1.git25cbfc4.el6 has been submitted as an update to Fedora EPEL 6. https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2016-ac04a97e7c
Comment 26 Fedora Update System 2016-03-02 15:54:45 EST
golang-github-opencontainers-specs-0.2.0-0.1.git25cbfc4.fc22 has been submitted as an update to Fedora 22. https://bodhi.fedoraproject.org/updates/FEDORA-2016-f7439fb4f2
Comment 27 Fedora Update System 2016-03-03 15:51:28 EST
golang-github-opencontainers-specs-0.2.0-0.1.git25cbfc4.el6 has been pushed to the Fedora EPEL 6 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2016-ac04a97e7c
Comment 28 Fedora Update System 2016-03-03 16:55:18 EST
golang-github-opencontainers-specs-0.2.0-0.1.git25cbfc4.fc22 has been pushed to the Fedora 22 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2016-f7439fb4f2
Comment 29 Fedora Update System 2016-03-13 05:51:14 EDT
golang-github-opencontainers-specs-0.2.0-0.1.git25cbfc4.fc22 has been pushed to the Fedora 22 stable repository. If problems still persist, please make note of it in this bug report.
Comment 30 Fedora Update System 2016-03-16 08:20:53 EDT
golang-github-opencontainers-specs-0.4.0-0.1.git3ce138b.el6 has been submitted as an update to Fedora EPEL 6. https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2016-1001021a29
Comment 31 Fedora Update System 2016-03-18 18:49:25 EDT
golang-github-opencontainers-specs-0.4.0-0.1.git3ce138b.el6 has been pushed to the Fedora EPEL 6 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2016-1001021a29
Comment 32 Fedora Update System 2016-04-02 16:33:54 EDT
golang-github-opencontainers-specs-0.4.0-0.1.git3ce138b.el6 has been pushed to the Fedora EPEL 6 stable repository. If problems still persist, please make note of it in this bug report.

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