Bug 253564

Summary: Review Request: ocaml-camomile - Unicode library for OCaml
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-03-20 20:41:40 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: 434560    

Description Richard W.M. Jones 2007-08-20 16:44:37 UTC
Spec URL: http://annexia.org/tmp/ocaml/ocaml-camomile.spec
SRPM URL: http://annexia.org/tmp/ocaml/ocaml-camomile-0.7.1-1.fc8.src.rpm
Description: Camomile is the main Unicode library for OCaml.

Comment 1 Jason Tibbitts 2008-01-27 05:15:52 UTC
This fails to build for me:

checking for ocamlweb... true
checking for camlp4o... no
configure: error: Cannot find camlp4o.
error: Bad exit status from /var/tmp/rpm-tmp.8935 (%prep)

I guessed that ocaml-camlp4-devel was needed, and indeed things build if I add
it as a build dependency.  Of the built packages, rpmlint says:
  ocaml-camomile.x86_64: E: only-non-binary-in-usr-lib
which doesn't make a whole lot of sense to me, because the .cma and .cmi files
are most certainly non-binary.  So I guess this should be ignored.

  ocaml-camomile.src:54: E: configure-without-libdir-spec
This is bogus as well; the script may be called "configure" but it's not
autoconf-generated. 

Any reason why you have to strip the .opt manually?  I'm afraid I don't know
enough about ocaml to understand why you'd need to do this.

The licensing situation seems to be complicated.  The bulk of the package
seems to be LGPLv2+ but the locale files are under a license which is unknown
because the locales/license.html file given in the README file doesn't seem to
exist.  Some of the data comes from glibc, and what seems to be the rest of it
comes from Unicode.  I'm not really sure about the Unicode license; it allows
redistribution and incorporation of the data, but I don't see anything about
modification and I don't know if that's an issue.

Thus I must regretfully block FE-Legal yet again.

I do think that as many of those license statements as possible should be
included in the final packages.

I don't quite understand the two files installed to /usr/bin.  They seem to
run if I call them, but should they really have a .opt suffix?  I'm not sure
it's a good idea to have executables present or not depending on whether the
optimizing compiler happens to be available at build time.

The same README file is present in all three packages.

* source files match upstream:
   9103ff245ab8265e5bdbb2cfa1028ab5ea06b660bf59ecb4c3fd6ae4ad523e9f  
   camomile-0.7.1.tar.bz2
* package meets naming and versioning guidelines.
* specfile is properly named, is cleanly written and uses macros consistently.
* specfile 
* summaries are OK.
* descriptions are OK.
* dist tag is present.
* build root is OK.
? license field does not seem to match the actual license, but I can't figure it 
   all out.
* latest version is being packaged.
X BuildRequires missing ocaml-camlp4-devel.
* %clean is present.
* package builds in mock (x86_64, rawhide) once I add the missing dependency.
* package installs properly
* rpmlint has no valid complaints.
* final provides and requires are sane:
  ocaml-camomile-0.7.1-1.fc9.x86_64.rpm
   ocaml(CamomileLibrary) = 8f3f3eeaf2fa96b98efcf8df2d20efbb
   ocaml-camomile = 0.7.1-1.fc9
  =
   ocaml(Array) = aa8e3cd5824f9bb40b93fcd38d0c95b5
   ocaml(Bigarray) = e881a834bafaaa24bc612d94119cc0f5
   ocaml(Buffer) = f6cef633ea14963b84b79c4095c63dc3
   ocaml(CamlinternalOO) = 6d0d5b328d6db88f403ca4393b4abd38
   ocaml(Char) = e98bc9c9e918a84b3c1a5a122d42fac1
   ocaml(Complex) = bb333e8e4cda78107ccf27048ca40492
   ocaml(Filename) = 633a1e7f590ff5e95124293dbef3b476
   ocaml(Format) = 35fe566f7a37d8991a5c822bd1463949
   ocaml(Hashtbl) = 083f2c94b44ff4e0b3220aaea6a783b4
   ocaml(Int32) = 711321870c949bd3bbdd092d9bae92e4
   ocaml(Lazy) = 8a4b5e7f0bdc6316df9264fd73cde981
   ocaml(Lexing) = b1793496643444d3762dd42bebe2cfe3
   ocaml(List) = da1ce9168f0408ff26158af757456948
   ocaml(Obj) = 5cfae708052c692ea39d23ed930fd64d
   ocaml(Parsing) = 62cca107e4e88af303516459a87c3e9a
   ocaml(Pervasives) = 8ba3d1faa24d659525c9025f41fd0c57
   ocaml(Printf) = 5dbbf45a03b54e6dbfcf39178d0d6341
   ocaml(Queue) = caa3a209bfc63d23a30f573541a88fec
   ocaml(Stream) = 21a833e12efd34ea0c87d8d9da959809
   ocaml(String) = 2c162ab314b2f0a2cfd22d471b2e21ab
   ocaml(Sys) = 0da495f5a80f31899139359805318f28
   ocaml(Unix) = 9a46a8db115947409e54686ada118599
   ocaml(Weak) = 6d509339939dea165d9dfd44d8a6a035
   ocaml(runtime) = 3.10.0

  ocaml-camomile-data-0.7.1-1.fc9.x86_64.rpm
   ocaml-camomile-data = 0.7.1-1.fc9
  =
   ocaml-camomile = 0.7.1-1.fc9

  ocaml-camomile-devel-0.7.1-1.fc9.x86_64.rpm
   ocaml-camomile-devel = 0.7.1-1.fc9
  =
   ocaml-camomile = 0.7.1-1.fc9

* %check is not present; no test suite upstream.
* no shared libraries are added to the regular linker search paths.
* 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.
* documentation is small, so no -doc subpackage is necessary.
* %docs are not necessary for the proper functioning of the package.


Comment 2 Richard W.M. Jones 2008-02-12 11:58:03 UTC
Yes, that seems to be a missing camlp4 dep.  Added (see below).

*.opt are stripped manually because they are built with symbols by the
OCaml compiler (which isn't gcc so behaves differently from however gcc
works -- does gcc automatically strip binaries?).

Debian ship the data in a package called libcamomile-ocaml-data
(http://packages.debian.org/etch-m68k/libcamomile-ocaml-dev) which is
free and under LGPL 2.1.

*.opt is a standard extension for native code OCaml binaries.  Sometimes
they are renamed as just foo, sometimes left as foo.opt.  I've renamed
them now.

Here's my updated package:

Spec URL: http://annexia.org/tmp/ocaml/ocaml-camomile.spec
SRPM URL: http://annexia.org/tmp/ocaml/ocaml-camomile-0.7.2-1.fc8.src.rpm
Description: Camomile is the main Unicode library for OCaml.

* Tue Feb 12 2008 Richard W.M. Jones <rjones> - 0.7.1-2
- Added BR ocaml-camlp4-devel.
- Rename /usr/bin/*.opt as /usr/bin.


Comment 3 Richard W.M. Jones 2008-02-12 11:58:39 UTC
Try that again ...

Spec URL: http://annexia.org/tmp/ocaml/ocaml-camomile.spec
SRPM URL: http://annexia.org/tmp/ocaml/ocaml-camomile-0.7.1-2.fc8.src.rpm


Comment 4 Jason Tibbitts 2008-02-13 18:22:06 UTC
I had typed up a nice long comment but for some reason I don't see it here.

GCC doesn't strip binaries.  Normally rpmbuild will do so when it creates the
debuginfo package, but it seems that it either doesn't know it needs to do this
for ocaml-produced files or doesn't know how to.  I commented out the stripping
and the unstripped binaries make it to the final package so I guess that you
have no choice.  Could you open a ticket against rpm for this?

Debian seems to be less strict than we are regarding licensing issues these
days, so simply saying that they have a package listed with a certain license is
not really sufficient.  If you have a pointer to any discussion they may have
had on this matter, that would be useful to whoever happens to read FE-Legal
tickets.

I still think it's odd that this package may produce executables, or not,
depending on some specifics of the ocaml implementation, but i guess that's not
a blockeer.

Otherwise I think this package is OK, although of course I cannot approve it
until the legal folks chime in.  

Comment 5 Richard W.M. Jones 2008-03-10 15:46:05 UTC
I opened up a discussion of the legal/licensing issues here:

https://www.redhat.com/archives/fedora-legal-list/2008-March/thread.html#00002

Comment 6 Richard W.M. Jones 2008-03-17 12:59:00 UTC
Spot came up with the definitive reply here:

https://www.redhat.com/archives/fedora-legal-list/2008-March/msg00005.html

I'm going to prepare a new package shortly with the right license and
an explanation.

Comment 7 Richard W.M. Jones 2008-03-17 13:43:34 UTC
Spec URL: http://annexia.org/tmp/ocaml/ocaml-camomile.spec
SRPM URL: http://annexia.org/tmp/ocaml/ocaml-camomile-0.7.1-5.fc9.src.rpm

* Mon Mar 17 2008 Richard W.M. Jones <rjones> - 0.7.1-5
- Definitive license.
- Move ./configure into the build section.
- Remove a superfluous comment in the install section.
- Fix rpmlint error 'configure-without-libdir-spec'.
- Scratch build in Koji.

* Wed Mar  5 2008 Richard W.M. Jones <rjones> - 0.7.1-4
- License is LGPLv2+ (no OCaml exception).

* Wed Mar  5 2008 Richard W.M. Jones <rjones> - 0.7.1-3
- Remove ExcludeArch ppc64.

Koji build is failing at the moment on ppc64, apparently because
it just runs out of memory.  I built it on the other archs fine using:

  koji build --scratch --arch-override='i386 x86_64 ppc' dist-f9 \
    ocaml-camomile-0.7.1-5.fc9.src.rpm

which gives this result:

  http://koji.fedoraproject.org/koji/taskinfo?taskID=519400

rpmlint is clean except for this which can be ignored:

ocaml-camomile.x86_64: E: only-non-binary-in-usr-lib

Comment 8 Richard W.M. Jones 2008-03-17 22:32:09 UTC
There's some apparently upstream bug which is causing these random
fatal errors on 64 bit platforms.  I've asked the author if he can have a look.

  $ tools/parse_allkeys.opt database < unidata/tr10/allkeys.txt 
  Fatal error: out of memory.



Comment 9 Jason Tibbitts 2008-03-19 23:11:31 UTC
Well, I have no problem building this on a 64 bit platform.  My builder has 16GB
of RAM and 32GB of swap, but I don't see any processes during the build that
grow more than a few tens of megabytes.  I guess it's possible that something
allocates more VM than is available on the PPC builder, or that this problem is
ppc64-specific.

In any case, I believe the package is acceptable to the point where I can
approve it but of course you can't actually build it until this gets fixed, or
you decide to do the excludearch thing.

APPROVED

Comment 10 Richard W.M. Jones 2008-03-20 09:21:16 UTC
New Package CVS Request
=======================
Package Name: ocaml-camomile
Short Description: Unicode library for OCaml
Owners: rjones
Branches: F-8 EL-5
InitialCC: rjones
Cvsextras Commits: yes

Comment 11 Kevin Fenzi 2008-03-20 16:07:56 UTC
cvs done.

Comment 12 Richard W.M. Jones 2008-03-20 20:41:40 UTC
Thanks -- import done, build commencing.