Bug 1733175 (golang-github-google-renameio) - Review Request: golang-github-google-renameio - Atomically create or replace a file or symbolic link
Summary: Review Request: golang-github-google-renameio - Atomically create or replace ...
Keywords:
Status: CLOSED RAWHIDE
Alias: golang-github-google-renameio
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Björn Persson
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2019-07-25 10:31 UTC by Robert-André Mauchin
Modified: 2019-08-02 22:10 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2019-08-02 22:10:29 UTC
bjorn: fedora-review+


Attachments (Terms of Use)

Description Robert-André Mauchin 2019-07-25 10:31:30 UTC
Spec URL: https://eclipseo.fedorapeople.org/for-review/golang-github-google-renameio.spec
SRPM URL: https://eclipseo.fedorapeople.org/for-review/golang-github-google-renameio-0.1.0-1.fc31.src.rpm

Description:
 Package Renameio provides a way to atomically create or replace a file or symbolic link.

Fedora Account System Username: eclipseo

Comment 1 Robert-André Mauchin 2019-07-25 10:36:01 UTC
Koji scratch build: https://koji.fedoraproject.org/koji/taskinfo?taskID=36505476

Comment 2 Björn Persson 2019-07-27 12:36:08 UTC
I'll review it.

Comment 3 Björn Persson 2019-07-28 20:50:33 UTC
There are three things I want clarified:

Why are CONTRIBUTING.md and README.md duplicated? They are both in the documentation directory and together with the Go files. They're marked as documentation in both places, which means that the library is supposed to work without them, so why do they need to be in the directory with the Go code?

RPMlint complains about a hidden file, .goipath. As I'm not familiar with Go I need to ask: Do things break if that file isn't hidden?

The general Packaging Guidelines say that "header only libraries" must provide "*-static". Is this not done for Go? I can imagine that it might be considered unnecessary if it's well known that all Go libraries are just source code, but the Golang guidelines don't say anything about this.

As a side note, assigning the URL field from a macro and writing the URL in a comment seems a little silly to me. It's very good to have the URL of the upstream site in the spec file, but since the URL is there anyway, why not keep it in the URL field? But this is prescribed by the policy that the FPC has approved, so it's not an issue for the review.

Comment 4 Robert-André Mauchin 2019-08-01 14:09:43 UTC
> Why are CONTRIBUTING.md and README.md duplicated? They are both in the documentation directory and together with the Go files. They're marked as documentation in both places, which means that the library is supposed to work without them, so why do they need to be in the directory with the Go code?

They don't, but the go list command used to detect Go files insist on keeping all *.md files with the code, it's upstream behavior.

> RPMlint complains about a hidden file, .goipath. As I'm not familiar with Go I need to ask: Do things break if that file isn't hidden?

AFAIK it's used to specify import path directory.

> The general Packaging Guidelines say that "header only libraries" must provide "*-static". Is this not done for Go? I can imagine that it might be considered unnecessary if it's well known that all Go libraries are just source code, but the Golang guidelines don't say anything about this.

It's not done for Go.

> As a side note, assigning the URL field from a macro and writing the URL in a comment seems a little silly to me. It's very good to have the URL of the upstream site in the spec file, but since the URL is there anyway, why not keep it in the URL field? But this is prescribed by the policy that the FPC has approved, so it's not an issue for the review.

The URL and the import path might differ, they are not always the same, one points to the forge, the other to the import path.

Comment 5 Björn Persson 2019-08-01 20:12:16 UTC
Package Review
==============

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

===== 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.

     → Apache License 2.0

[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]: License field in the package spec file matches the actual license.
[x]: Package does not own files or directories owned by other packages.

     → /usr/share/gocode/src/github.com and
       /usr/share/gocode/src/github.com/google
       are shared by many Go packages. This is benign.

[-]: %build honors applicable compiler flags or justifies otherwise.

     → It's not compiled, it's a source code library.

[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.

     → The prescribed format does not include a time of day and timezone code,
       but I don't think the policy is meant to forbid those.

[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.

     → Although two documentation files are in a nonstandard place, they are
       not used at runtime.

[x]: Package consistently uses macros (instead of hard-coded directory
     names).
[x]: Package is named according to the Package Naming Guidelines.
[x]: Package does not generate any conflict.
[x]: Package obeys FHS, except libexecdir and /usr/target.
[-]: 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.
[-]: Package contains systemd file(s) if in need.
[x]: Package is not known to require an ExcludeArch tag.
[x]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 10240 bytes in 2 files.

     → That's not large.

[x]: Package complies to the Packaging Guidelines

     → It has documentation files in a nonstandard place and doesn't provide
       golang-github-google-renameio-static. There are plausible reasons for
       putting those requirements aside.

[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.

     golang-github-google-renameio.src: W: no-%build-section

     → That makes sense for a source code library.

     golang-github-google-renameio-devel.noarch: W: hidden-file-or-dir /usr/share/gocode/src/github.com/google/renameio/.goipath

     → It seems that things break if that file isn't hidden.

[x]: Package requires other packages for directories it uses.
[x]: Package must own all directories that it creates.
[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.
[x]: Package must not depend on deprecated() packages.
[x]: 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.

     → I haven't written a test program to test the library with. At least it
       passes its own testsuite.

[x]: 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.

     → No translations are available that I know of.

[x]: %check is present and all tests pass.
[x]: Packages should try to preserve timestamps of original installed
     files.
[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]: Fully versioned dependency in subpackages if applicable.
[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.
[x]: Package should compile and build into binary rpms on all supported
     architectures.
[x]: Spec use %global instead of %define unless justified.
[-]: Sources are verified with gpgverify first in %prep if upstream publishes
     signatures.

     → The release is not signed.

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

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


I'll approve this package, but I think the Golang Packaging Guidelines should be amended to say that Go libraries don't need to provide *-static, that Markdown files in Go code directories is normal, and that a hidden file named .goipath is necessary. When packages in some domain need to deviate from the general Packaging Guidelines, then all such deviations should be explicit in the domain-specific guidelines. Otherwise the general guidelines are in force.

Comment 6 Robert-André Mauchin 2019-08-02 13:24:32 UTC
Thanks for the review!

Comment 7 Gwyn Ciesla 2019-08-02 13:33:18 UTC
(fedscm-admin):  The Pagure repository was created at https://src.fedoraproject.org/rpms/golang-github-google-renameio


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