Spec URL: http://www.annexia.org/tmp/ocaml/ocaml-pa-monad.spec
SRPM URL: http://www.annexia.org/tmp/ocaml/ocaml-pa-monad-1.2.0-1.fc9.src.rpm
Description: OCaml syntax extension for monads
This one is not particularly rpmlint clean, but all the errors
and warnings are not bugs in the package itself:
$ rpmlint /home/rjones/rpmbuild/SRPMS/ocaml-pa-monad-1.2.0-1.fc9.src.rpm
ocaml-pa-monad.src: W: invalid-license LGPLv2+ with exceptions
$ rpmlint /home/rjones/rpmbuild/RPMS/i386/ocaml-pa-monad-1.2.0-1.fc9.i386.rpm
ocaml-pa-monad.i386: W: invalid-license LGPLv2+ with exceptions
See bug 434690.
ocaml-pa-monad.i386: E: no-binary
ocaml-pa-monad.i386: E: only-non-binary-in-usr-lib
See bug 433783.
I'm going to try and work through these ocaml reviews since they seem mostly
clean, but I noticed that while you have submitted a whole pile of packages for
review I don't seem to be able to find any packages which you have reviewed. At
least, a search for all tickets assigned to you with "review request" in the
summary didn't turn anything up.
The queue of review requests is growing quickly and these recent ocaml packages
are a large portion of that growth. Could you help us out by reviewing a few
other packages? We're not asking for one review per submitted package (although
that would certainly solve our problems with the review queue size) but anything
you can do to help would be greatly appreciated.
The guidelines don't say much about whether the underscore in the module name
needs to be changed to a hyphen. I don't have a particular issue with your
naming, and Debian doesn't seem to have this packaged yet so this is sort of
blazing new territory. Still, did you give the matter any thought?
I'm not seeing the LGPL exception in the package. I suppose it must be there
for the package to be useful at all, but I'm not seeing an actual statement of
There are several test programs; is it possible to run them at build time?
I'm certain that the .cmo file is appropriate here, so that's good. It's kind
of obvious when there are no other object files in the package.
* source files match upstream:
? 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.
? 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:
ocaml(Pa_monad) = 0772e3866372127d528565bcf7904b7b
ocaml-pa-monad = 1.2.0-1.fc9
ocaml(Arg) = 03e86a4154064ea900dc32c05f53e364
ocaml(Array) = aa8e3cd5824f9bb40b93fcd38d0c95b5
ocaml(Buffer) = f6cef633ea14963b84b79c4095c63dc3
ocaml(Camlp4) = 1e46a133b8062d1571640f7fa36f32c4
ocaml(Camlp4_config) = cb716b4361f43326c6ad695c7a1bb5c0
ocaml(Camlp4_import) = 0134ca95282ef6821081c0c11802cea0
ocaml(Char) = e98bc9c9e918a84b3c1a5a122d42fac1
ocaml(Filename) = 633a1e7f590ff5e95124293dbef3b476
ocaml(Format) = 35fe566f7a37d8991a5c822bd1463949
ocaml(Hashtbl) = 083f2c94b44ff4e0b3220aaea6a783b4
ocaml(Int32) = 711321870c949bd3bbdd092d9bae92e4
ocaml(Int64) = f8f7e2e4c0667ead94596040b12e732d
ocaml(Lexing) = b1793496643444d3762dd42bebe2cfe3
ocaml(List) = da1ce9168f0408ff26158af757456948
ocaml(Nativeint) = e79cdc4d3575c2ed044955cb7ef49aca
ocaml(Obj) = 5cfae708052c692ea39d23ed930fd64d
ocaml(Parsing) = 62cca107e4e88af303516459a87c3e9a
ocaml(Pervasives) = 8ba3d1faa24d659525c9025f41fd0c57
ocaml(Printf) = 5dbbf45a03b54e6dbfcf39178d0d6341
ocaml(Queue) = caa3a209bfc63d23a30f573541a88fec
ocaml(Set) = 7da14e671a035f12386ace3890018ef3
ocaml(Stream) = 21a833e12efd34ea0c87d8d9da959809
ocaml(String) = 2c162ab314b2f0a2cfd22d471b2e21ab
ocaml(Sys) = 0da495f5a80f31899139359805318f28
ocaml(runtime) = 3.10.1
X %check is not present, but test code seems to be available.
* owns the directories it creates.
* doesn't own any directories it shouldn't.
* no duplicates in %files.
* file permissions are appropriate.
* no scriptlets present.
* code, not content.
* most of the package is documentation, but it's still only a few K so there's
no point in splitting it.
* %docs are not necessary for the proper functioning of the package.
I admit I didn't give it any thought. I just checked the Fedora naming guidelines and
it seems like we could use pa_monad (since the upstream tarball is named that way),
but for such a tiny package is it worth having a slightly different naming convention
from all the other OCaml packages I wonder?
Yes, you're right that this package doesn't have the OCaml linking exception.
Spec URL: http://www.annexia.org/tmp/ocaml/ocaml-pa-monad.spec
SRPM URL: http://www.annexia.org/tmp/ocaml/ocaml-pa-monad-1.2.0-3.fc9.src.rpm
* Mon May 10 2008 Richard W.M. Jones <firstname.lastname@example.org> - 1.2.0-3
- Added a check section.
- License doesn't include OCaml exception, just LGPLv2+.
* Wed Mar 5 2008 Richard W.M. Jones <email@example.com> - 1.2.0-2
- Remove ExcludeArch ppc64.
Here's a Koji scratch build:
I don't really care one way or the other about the naming; I agree that an
all-dash scheme looks cleaner but if other distros choose the other method then
there could be some confusion. If that happens, a simple solution would be for
this package to provide ocaml-pa_monad.
Does the lack of the linking exception cause any problem for actually using this
package? I don't know if syntax extensions actually get linked into the object
I'd say this package is fine and I'd approve it, but I'd like to be clear on the
license issue first.
Naming: Neither GODI nor Debian have packaged this one, so I think
we can just leave it as it is for now.
In fact the linking exception, or lack of it, makes little difference to OCaml.
What it does is allows you to get out of part of section 6 of LGPLv2.
Section 6 as a whole allows proprietary software authors to use LGPL'd libraries,
but requires them to provide their program as linkable objects "so that the user
can modify the Library and then relink to produce a modified executable
containing the modified Library".
The ability to relink makes no sense in OCaml programs because the type system
would prevent any conceivable library modification, so proprietary
software authors are exempt from the provision to provide linkable objects
by the linking exception.
So note: (a) It only applies to proprietary software authors, (b) it is an extra
permission, making the license more permissive than LGPL.
If an OCaml library came without the linking exception, all this would mean
is that proprietary software authors would have to provide useless linkable
objects with their binaries.
Syntax extensions are in any case only used at compile time (they get linked
into the compiler) so they don't appear in the output binary. (Although most
syntax extensions also come with a runtime library).
That all makes sense to me. I've never really been clear on how the LGPL works
at all in an environment where you have to link statically, and honestly I'm
still not, but it seems obvious that there's no problem for Fedora here.
New Package CVS Request
Package Name: ocaml-pa-monad
Short Description: OCaml syntax extension for monads
Branches: F-8 F-9
Cvsextras Commits: yes
Built in F8/F9/devel.
Thanks for everyone's help.