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
Koji scratch build: https://koji.fedoraproject.org/koji/taskinfo?taskID=36505476
I'll review it.
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.
> 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.
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.
Thanks for the review!
(fedscm-admin): The Pagure repository was created at https://src.fedoraproject.org/rpms/golang-github-google-renameio