Bug 435431

Summary: Review Request: ocaml-deriving - Extension to OCaml for deriving functions from types
Product: [Fedora] Fedora Reporter: Richard W.M. Jones <rjones>
Component: Package ReviewAssignee: Jason Tibbitts <j>
Status: CLOSED RAWHIDE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: fedora-package-review, notting
Target Milestone: ---Flags: j: fedora-review+
kevin: 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: 2008-05-14 20:34:01 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:

Description Richard W.M. Jones 2008-02-29 10:21:25 UTC
Spec URL: http://www.annexia.org/tmp/ocaml/ocaml-deriving.spec
SRPM URL: http://www.annexia.org/tmp/ocaml/ocaml-deriving-0.1.1a-1.fc9.src.rpm
Description: Extension to OCaml for deriving functions from types

Output of rpmlint:

  ocaml-deriving.i386: E: no-binary
  ocaml-deriving.i386: E: only-non-binary-in-usr-lib

(Can be ignored - see bug 433783).

List of files in the main package:

/usr/bin/deriving
/usr/lib/ocaml/deriving
/usr/lib/ocaml/deriving/META
/usr/lib/ocaml/deriving/bounded.cmi
/usr/lib/ocaml/deriving/deriving.cma
/usr/lib/ocaml/deriving/dump.cmi
/usr/lib/ocaml/deriving/dynmap.cmi
/usr/lib/ocaml/deriving/enum.cmi
/usr/lib/ocaml/deriving/eq.cmi
/usr/lib/ocaml/deriving/functor.cmi
/usr/lib/ocaml/deriving/interned.cmi
/usr/lib/ocaml/deriving/monad.cmi
/usr/lib/ocaml/deriving/pickle.cmi
/usr/lib/ocaml/deriving/show.cmi
/usr/lib/ocaml/deriving/typeable.cmi
/usr/share/doc/ocaml-deriving-0.1.1a
/usr/share/doc/ocaml-deriving-0.1.1a/COPYING

List of files in -devel subpackage:

/usr/lib/ocaml/deriving/bounded.cmx
/usr/lib/ocaml/deriving/bounded.mli
/usr/lib/ocaml/deriving/deriving.a
/usr/lib/ocaml/deriving/deriving.cmxa
/usr/lib/ocaml/deriving/dump.cmx
/usr/lib/ocaml/deriving/dump.mli
/usr/lib/ocaml/deriving/dynmap.cmx
/usr/lib/ocaml/deriving/dynmap.mli
/usr/lib/ocaml/deriving/enum.cmx
/usr/lib/ocaml/deriving/enum.mli
/usr/lib/ocaml/deriving/eq.cmx
/usr/lib/ocaml/deriving/eq.mli
/usr/lib/ocaml/deriving/functor.cmx
/usr/lib/ocaml/deriving/functor.mli
/usr/lib/ocaml/deriving/interned.cmx
/usr/lib/ocaml/deriving/interned.mli
/usr/lib/ocaml/deriving/monad.cmx
/usr/lib/ocaml/deriving/monad.mli
/usr/lib/ocaml/deriving/pickle.cmx
/usr/lib/ocaml/deriving/pickle.mli
/usr/lib/ocaml/deriving/show.cmx
/usr/lib/ocaml/deriving/show.mli
/usr/lib/ocaml/deriving/typeable.cmx
/usr/lib/ocaml/deriving/typeable.mli
/usr/lib/ocaml/deriving/util.mli
/usr/share/doc/ocaml-deriving-devel-0.1.1a
/usr/share/doc/ocaml-deriving-devel-0.1.1a/CHANGES
/usr/share/doc/ocaml-deriving-devel-0.1.1a/COPYING
/usr/share/doc/ocaml-deriving-devel-0.1.1a/README

Requires for main package:

rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(VersionedDependencies) <= 3.0.3-1
/usr/bin/ocamlrun  
ocaml(Array) = aa8e3cd5824f9bb40b93fcd38d0c95b5
ocaml(Big_int) = 992d682669507b99e689b5a2188c0b9a
ocaml(Buffer) = f6cef633ea14963b84b79c4095c63dc3
ocaml(CamlinternalMod) = dc6994f75cfd14f73e718f81aa215803
ocaml(Char) = e98bc9c9e918a84b3c1a5a122d42fac1
ocaml(Format) = 35fe566f7a37d8991a5c822bd1463949
ocaml(Int32) = 711321870c949bd3bbdd092d9bae92e4
ocaml(Int64) = f8f7e2e4c0667ead94596040b12e732d
ocaml(List) = da1ce9168f0408ff26158af757456948
ocaml(Map) = dedde7683d54ae7db1eb97cc868dd047
ocaml(Marshal) = b7e47558bc02738dea90d6bd22a06c7b
ocaml(Nat) = 0ea20dd1cc4533fd519b5542a89feb87
ocaml(Nativeint) = e79cdc4d3575c2ed044955cb7ef49aca
ocaml(Num) = cfa2705c9c6d6f5a56b83f91fc630d2a
ocaml(Obj) = 5cfae708052c692ea39d23ed930fd64d
ocaml(Pervasives) = 8ba3d1faa24d659525c9025f41fd0c57
ocaml(Printf) = 5dbbf45a03b54e6dbfcf39178d0d6341
ocaml(Ratio) = 7067125cce206dd2bbe93918ba7bdfe9
ocaml(Set) = 7da14e671a035f12386ace3890018ef3
ocaml(Stream) = 21a833e12efd34ea0c87d8d9da959809
ocaml(String) = 2c162ab314b2f0a2cfd22d471b2e21ab
ocaml(runtime) = 3.10.1

Provides for main package:

ocaml(Bounded) = 2d00c01a31a0f1d6c7fe150ee578a21e
ocaml(Dump) = 56f763a983d53210785cde82bc8a6a90
ocaml(Dynmap) = 63cadc12a144b0aaad8e4fd3c4bbc828
ocaml(Enum) = b0841de5b5173f6c681b0f60a44acd1f
ocaml(Eq) = 4a7db7be84324b4842d475f90cc5d19b
ocaml(Functor) = b3e3dc0544daee821a5adf29f9a4d127
ocaml(Interned) = 25b1ef1de9e5ff2114bb86c919832f33
ocaml(Monad) = 8abdc2a3027781506c2614dad9cfa0fa
ocaml(Pickle) = 124c2989bfeb792a94dbc96910467982
ocaml(Show) = 0f99373d708ef67254201e1442de451e
ocaml(Typeable) = dc099a13123a6e8423582f0128ca528f
ocaml-deriving = 0.1.1a-1.fc9

Comment 1 Jason Tibbitts 2008-05-11 02:11:39 UTC
License: should be MIT.  The COPYING file says "The MIT License" and indeed our
licensing guidelines agree with that.

I had guessed that this one would have a .cmo file but it doesn't.  So I guess
I'm still pretty confused about that.

The only issue is the license tag, and that's a trivial fix so I'll approve this
and you can fix it when you check in.

* source files match upstream:
   ab9e5403a383d57b3572b21587a23dc2f85980b0a95936ac748ccd2118c4f55e  
   deriving-0.1.1a.tar.gz
* package meets naming and versioning guidelines.
* specfile is properly named, is cleanly written and uses macros consistently.
* summary is OK.
* description is OK.
* dist tag is present.
* build root is OK.

APPROVED
X license field matches the actual license.
* license is open source-compatible.
* license text included in package.
* latest version is being packaged.
* BuildRequires are proper.
* %clean is present.
* package builds in mock (rawhide, x86_64).
* package installs properly.
* rpmlint has acceptable complaints.
* final provides and requires are sane; listed above so no point in repeating 
   them.
* %check is present and all tests pass:
   Tests succeeded!
* owns the directories it creates.
* doesn't own any directories it shouldn't.
* no duplicates in %files (besides COPYING file)
* file permissions are appropriate.
* no scriptlets present.
* code, not content.
* documentation is small, so no -doc subpackage is necessary.
* %docs are not necessary for the proper functioning of the package.
* .cma, .cmi, .so, .so.owner, META files in the main package.
* .a, .cmxa, .cmx and .mli files are in the -devel subpackage.
* .cmo, .o and .ml files not included


Comment 2 Richard W.M. Jones 2008-05-12 10:49:20 UTC
License:

Yes, it's MIT.  Particularly stupid on my part because I even asked upstream to
release a new version (0.1.1a) with the license file included, but then I forgot to
fix my spec file :-(

Lack of *.cmo file:

This is a one-of-a-kind upstream.  Normal syntax extensions are loadable
object files (*.cmo) so they get loaded into the normal OCaml parser at compile
time.  The object files consist of a list of instructions for the parser, like 'add this
keyword', 'delete this parsing rule', 'substitute this other parsing rule'.  This
means that syntax extensions are composable (you can use more than one at
a time).

But for this one, upstream have linked the syntax extension to a standalone
program (/usr/bin/deriving) which one is supposed to use as a preprocessor
(it takes OCaml + deriving syntax and emits basic OCaml).

I've just realised that this is not a smart upstream choice because it prevents
the syntax from being composable with other syntaxes, so you cannot
mix the deriving syntax with any other syntax extension.

Here's a new package:

Spec URL: http://www.annexia.org/tmp/ocaml/ocaml-deriving.spec
SRPM URL: http://www.annexia.org/tmp/ocaml/ocaml-deriving-0.1.1a-3.fc9.src.rpm

* Mon May 10 2008 Richard W.M. Jones <rjones> - 0.1.1a-3
- Fix the License tag (MIT not BSD).

 * Wed Mar  5 2008 Richard W.M. Jones <rjones> - 0.1.1a-2
 - Remove ExcludeArch ppc64.

Koji scratch build:
  http://koji.fedoraproject.org/koji/taskinfo?taskID=604494

Comment 3 Jason Tibbitts 2008-05-14 02:02:20 UTC
Just a reminder; this package was already approved.  The new package is fine.

Comment 4 Richard W.M. Jones 2008-05-14 08:03:34 UTC
So it was, I missed that :-)

Thanks for this and many other reviews.  I know they can be quite tedious at times to do.

CVS request comin' up ...

Comment 5 Richard W.M. Jones 2008-05-14 08:06:01 UTC
New Package CVS Request
=======================
Package Name: ocaml-deriving
Short Description: Extension to OCaml for deriving functions from types
Owners: rjones
Branches: F-8 F-9
InitialCC: rjones
Cvsextras Commits: yes

Comment 6 Kevin Fenzi 2008-05-14 15:44:02 UTC
cvs done.

Comment 7 Richard W.M. Jones 2008-05-14 20:34:01 UTC
Built in F8/F9/devel.

Thanks for everyone's help.