Bug 968953

Summary: Review Request: nodejs-sha - Check and get file hashes
Product: [Fedora] Fedora Reporter: T.C. Hollingsworth <tchollingsworth>
Component: Package ReviewAssignee: Nobody's working on this, feel free to take it <nobody>
Status: CLOSED RAWHIDE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: notting, package-review
Target Milestone: ---Flags: jamielinux: fedora-review+
gwync: fedora-cvs+
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-06-13 20:34:06 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:
Bug Depends On:    
Bug Blocks: 956806, 968919    

Description T.C. Hollingsworth 2013-05-30 10:54:35 UTC
Spec: http://patches.fedorapeople.org/npm/nodejs-sha.spec
SRPM: http://patches.fedorapeople.org/npm/nodejs-sha-1.0.1-1.fc19.src.rpm
Koji: http://koji.fedoraproject.org/koji/taskinfo?taskID=5441239
FAS:  patches
Description:
Check and get file hashes using MD5, SHA1, or any other algorithm supported by
OpenSSL.

Comment 1 Jamie Nguyen 2013-05-30 11:13:28 UTC
Package Review
==============

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


Issues:
=======

[?]: %check is present and all tests pass.


Tests seem to work for me:

DEBUG: + mocha --bail -R spec
DEBUG:   get
DEBUG:     (filename, callback(err, hash))
DEBUG:       with a non-existant file
        ✓ results in an error 
DEBUG:       with a file
        ✓ results in the `sha1` hash of the file 
DEBUG:     (filename, {algorithm: "md5"}, callback(err, hash))
DEBUG:       with a non-existant file
        ✓ results in an error 
DEBUG:       with a file
        ✓ results in the `md5` hash of the file 
DEBUG:   check
DEBUG:     (filename, expected, callback(err, hash))
DEBUG:       with a non-existant file
        ✓ results in an error 
DEBUG:       with the correct hash
        ✓ results in a `null` error 
DEBUG:       with the wrong hash
        ✓ results in an error 
DEBUG:     (filename, expected, {algorithm: "md5"}, callback(err, hash))
DEBUG:       with a non-existant file
        ✓ results in an error 
DEBUG:       with the correct hash
        ✓ results in a `null` error 
DEBUG:       with the wrong hash
        ✓ results in an error 
DEBUG:   10 tests complete (23 ms)
DEBUG: + exit 0



===== 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.
[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[-]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
     Note: rm -rf %{buildroot} present but not required
[x]: Sources contain only permissible code or content.
[x]: Each %files section contains %defattr if rpm < 4.4
     Note: %defattr present but not needed
[-]: Package contains desktop file if it is a GUI application.
[-]: Development files must be in a -devel package
[x]: Package requires other packages for directories it uses.
[x]: Package uses nothing in %doc for runtime.
[x]: Package is not known to require ExcludeArch.
[x]: Package complies to the Packaging Guidelines
[x]: License field in the package spec file matches the actual license.
     Note: There is no build directory. Running licensecheck on vanilla
     upstream sources. No licenses found. Please check the source files for
     licenses manually.
[x]: Package consistently uses macro is (instead of hard-coded directory
     names).
[-]: If the package is under multiple licenses, the licensing breakdown must
     be documented in the spec.
[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]: Package must own all directories that it creates.
[x]: Package does not own files or directories owned by other packages.
[x]: Requires correct, justified where necessary.
[x]: Spec file is legible and written in American English.
[-]: Package contains systemd file(s) if in need.
[-]: Large documentation must go in a -doc subpackage.
     Note: Documentation size is 10240 bytes in 2 files.
[x]: All build dependencies are listed in BuildRequires, except for any that
     are listed in the exceptions section of Packaging Guidelines.
[x]: Macros in Summary, %description expandable at SRPM build time.
[x]: Package does not contain duplicates in %files.
[x]: Permissions on files are set properly.
[x]: Fully versioned dependency in subpackages, if present.
[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 %doc.
[x]: Package use %makeinstall only when make install' ' DESTDIR=... doesn't
     work.
[x]: Package is named using only allowed ASCII characters.
[x]: Package do not use a name that already exist
[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
[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: There are rpmlint messages (see attachment).

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

Generic:
[-]: Buildroot is not present
     Note: Buildroot: present but not needed
[-]: Package has no %clean section with rm -rf %{buildroot} (or
     $RPM_BUILD_ROOT)
     Note: %clean present but not required
[-]: 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.
[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.
[x]: Package should compile and build into binary rpms on all supported
     architectures.
[?]: %check is present and all tests pass.
[x]: Packages should try to preserve timestamps of original installed files.
[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]: Dist tag is present.
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: SourceX tarball generation or download is documented.
[x]: SourceX is a working URL.
[x]: Spec use %global instead of %define.

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

Generic:
[x]: Large data in /usr/share should live in a noarch subpackage if package is
     arched.
[x]: Rpmlint is run on all installed packages.
     Note: There are rpmlint messages (see attachment).


Rpmlint
-------
Checking: nodejs-sha-1.0.1-1.fc19.noarch.rpm
nodejs-sha.noarch: W: only-non-binary-in-usr-lib
nodejs-sha.noarch: W: dangling-symlink /usr/lib/node_modules/sha/node_modules/graceful-fs /usr/lib/node_modules/graceful-fs
1 packages and 0 specfiles checked; 0 errors, 2 warnings.




Rpmlint (installed packages)
----------------------------
# rpmlint nodejs-sha
nodejs-sha.noarch: W: only-non-binary-in-usr-lib
nodejs-sha.noarch: W: dangling-symlink /usr/lib/node_modules/sha/node_modules/graceful-fs /usr/lib/node_modules/graceful-fs
1 packages and 0 specfiles checked; 0 errors, 2 warnings.
# echo 'rpmlint-done:'



Requires
--------
nodejs-sha (rpmlib, GLIBC filtered):
    nodejs(engine)
    npm(graceful-fs)



Provides
--------
nodejs-sha:
    nodejs-sha
    npm(sha)



Source checksums
----------------
http://registry.npmjs.org/sha/-/sha-1.0.1.tgz :
  CHECKSUM(SHA256) this package     : b540d2ae52395b7c22c8ad1fa4e0cf430ccab917847ddea5308fa833cf85c5fb
  CHECKSUM(SHA256) upstream package : b540d2ae52395b7c22c8ad1fa4e0cf430ccab917847ddea5308fa833cf85c5fb
https://raw.github.com/ForbesLindesay/sha/master/LICENSE :
  CHECKSUM(SHA256) this package     : 9d272c9014eff052e439dd498fc937b5ed2d3d687c4e5d768d5c288e7279e8d5
  CHECKSUM(SHA256) upstream package : 9d272c9014eff052e439dd498fc937b5ed2d3d687c4e5d768d5c288e7279e8d5


Generated by fedora-review 0.4.1 (b2e211f) last change: 2013-04-29
Buildroot used: fedora-19-x86_64
Command line :/bin/fedora-review -r -n nodejs-sha-1.0.1-1.fc19.src.rpm

Comment 2 Jamie Nguyen 2013-05-30 11:16:02 UTC
Assuming you include the tests, package approved!

Comment 3 T.C. Hollingsworth 2013-05-30 11:18:02 UTC
Hmm, here they do this:
+ mocha -R list

fs.js:684
  return binding.stat(pathModule._makeLong(path));
                 ^
Error: ENOENT, no such file or directory 'test.js'
    at Object.fs.statSync (fs.js:684:18)
    at lookupFiles (/usr/lib/node_modules/mocha/bin/_mocha:390:17)
    at spinner (/usr/lib/node_modules/mocha/bin/_mocha:268:24)
    at Array.forEach (native)
    at Object.<anonymous> (/usr/lib/node_modules/mocha/bin/_mocha:267:6)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:901:3
error: Bad exit status from /var/tmp/rpm-tmp.ml1GSK (%check)


RPM build errors:
    Bad exit status from /var/tmp/rpm-tmp.ml1GSK (%check)

I'll try a scratch build with them enabled and if it works in koji I'll leave them on...

Comment 4 Jamie Nguyen 2013-05-30 11:22:06 UTC
Oh, you have to download the tests folder separately. Seems to be a rising trend to stop shipping the tests in the npm tarball. I have to do that for most of TJ Holowaychuk's modules (eg, express, connect etc.).

Comment 5 T.C. Hollingsworth 2013-05-30 11:26:11 UTC
Oh, wonderful.  Thanks for catching that.

I'm going to write the nodejs list soon and ask module maintainers to stop this nonsense...

Comment 6 T.C. Hollingsworth 2013-05-30 11:49:41 UTC
Spec: http://patches.fedorapeople.org/npm/nodejs-sha.spec
SRPM: http://patches.fedorapeople.org/npm/nodejs-sha-1.0.1-2.fc19.src.rpm

* Thu May 30 2013 T.C. Hollingsworth <tchollingsworth> - 1.0.1-2
- use github tarball instead so we get tests and LICENSE file

Comment 7 T.C. Hollingsworth 2013-05-30 11:51:57 UTC
New Package SCM Request
=======================
Package Name: nodejs-sha
Short Description: Check and get file hashes
Owners: patches jamielinux
Branches: f19 f18 el6
InitialCC:

Comment 8 Gwyn Ciesla 2013-05-30 12:36:56 UTC
Git done (by process-git-requests).

Comment 9 T.C. Hollingsworth 2013-06-13 20:34:06 UTC
Built for Rawhide:
https://koji.fedoraproject.org/koji/buildinfo?buildID=424109