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.
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
> [ ]: 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.
(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.
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
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.
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.
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.
> 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.
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 '+'.
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
Git done (by process-git-requests).
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
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
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
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
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
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
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
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
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.
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
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
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
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
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
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
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
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
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.
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
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
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.