Bug 434630 - Review Request: ocaml-perl4caml - OCaml library for calling Perl libraries and code
Review Request: ocaml-perl4caml - OCaml library for calling Perl libraries an...
Status: CLOSED RAWHIDE
Product: Fedora
Classification: Fedora
Component: Package Review (Show other bugs)
rawhide
All Linux
medium Severity medium
: ---
: ---
Assigned To: Jason Tibbitts
Fedora Extras Quality Assurance
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2008-02-23 11:17 EST by Richard W.M. Jones
Modified: 2008-03-04 04:19 EST (History)
2 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2008-03-04 04:19:57 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---
tibbs: fedora‑review+
kevin: fedora‑cvs+


Attachments (Terms of Use)

  None (edit)
Description Richard W.M. Jones 2008-02-23 11:17:42 EST
Spec URL: http://www.annexia.org/tmp/ocaml/ocaml-perl4caml.spec
SRPM URL: http://www.annexia.org/tmp/ocaml/ocaml-perl4caml-0.9.4-1.fc9.src.rpm
Description: OCaml library for calling Perl libraries and code
Perl4caml allows you to use Perl code within Objective CAML (OCaml),
thus neatly side-stepping the (old) problem with OCaml which was that
it lacked a comprehensive set of libraries. Well now you can use any
part of CPAN in your OCaml code.
Comment 1 Richard W.M. Jones 2008-02-23 11:21:37 EST
The package is rpmlint-clean except for one odd warning against the -devel
package:

$ rpmlint ocaml-perl4caml-devel-0.9.4-1.fc9.i386.rpm
ocaml-perl4caml-devel.i386: W: binaryinfo-readelf-failed 

I dug into this and found that it is because a '.a' file inside
the package contains another '.a' file.  'readelf' doesn't know
how to handle this situation:

$ ar t /usr/lib/ocaml/perl/libperl4caml.a 
perl_c.o
DynaLoader.a

$ readelf -a /usr/lib/ocaml/perl/libperl4caml.a 
[...]
readelf: Error: Unable to read in 0x2020 bytes of section headers

File: /usr/lib/ocaml/perl/libperl4caml.a(DynaLoader.a)
readelf: Error: Not an ELF file - it has the wrong magic bytes at the start

However the library file links correctly, so it seems like its not
a warning we need to worry about.
Comment 2 Jason Tibbitts 2008-02-29 16:22:14 EST
That rpmlint complaint is indeed weird, but I agree with your assessment that
it's not problematic.

This is yet another package that doesn't specify any version of the LGPL.  How
did you determine that it's not LGPLv2+?  I thought that linking with ocaml
libraries might force the issue, but the base ocaml package in rawhide doesn't
even have a valid license tag so that's no help.

Does this package handle the perl modules it wraps not being installed at
builr or runtime?  It still seems to build the Net::Google stuff, for example,
even though that package isn't required at all.  And that begs the question of
whether those perl packages are actually needed at runtime.  The package
builds without them and I didn't see any differences in the resulting package.

I checked the build log for gcc calls and I noticed that the compiler isn't
being called with the proper set of flags.  It looks like the flags are
specified directly in the Makefile.  They should probably match up with
%optflags although I'm not sure what would happen if -g was passed since
debuginfo isn't being generated.

* source files match upstream:
   56f3f6e5cb02dfb9f319cdc1c761586d573c6ecc14639e186a9783d253934d3d  
   perl4caml-0.9.4.tar.gz
* package meets naming and versioning guidelines.
* specfile is properly named, is cleanly written and uses macros consistently.
* ocaml packaging guidelies are followed.
* 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 may be excessive.
* %clean is present.
* package builds in mock (rawhide, x86_64).
* package installs properly
* rpmlint has acceptable complaints.
* final provides and requires are sane:
  ocaml-perl4caml-0.9.4-1.fc9.x86_64.rpm
   dllperl4caml.so()(64bit)
   ocaml(Perl) = 62ffc8b090d3554adbdf29a2b91809b0
   ocaml(Pl_Data_Dumper) = 46141594dfbf6ad5d7f8fe499dbb5602
   ocaml(Pl_Date_Calc) = 81309d39376fa4c47fd03e919dd278df
   ocaml(Pl_Date_Format) = a08a10d6da6a544612bd0ffdb359f18a
   ocaml(Pl_Date_Parse) = 44f3f7ef90b613ae8400caa859bf403d
   ocaml(Pl_HTML_Element) = 5db46ddac9327df9be091e1aa5a55892
   ocaml(Pl_HTML_Form) = 8d3305d588ce5543dc6f0b5ee217c3e9
   ocaml(Pl_HTML_Parser) = df42b14d7519e0affaf2260777e063e6
   ocaml(Pl_HTML_TreeBuilder) = ca4eb08fe160b9e7baf34592ccf04ad8
   ocaml(Pl_HTTP_Cookies) = 14c83b6408189bbd38318b1cfb8fd0d8
   ocaml(Pl_HTTP_Headers) = 19b0ed2af45c31f51c023967b9f6acaf
   ocaml(Pl_HTTP_Message) = 3fb2d4309ab697c1fa0b2319e1af17c3
   ocaml(Pl_HTTP_Request) = 5e5dba683d5c2996df9c44fd2f3571fd
   ocaml(Pl_HTTP_Request_Common) = 528fe8dfa8822dcd758a0187fee7b975
   ocaml(Pl_HTTP_Response) = f92917d741a3502dcda657ff9a889610
   ocaml(Pl_LWP_UserAgent) = c85c04042060d5c093f00109a54290ba
   ocaml(Pl_Net_Google_Cache) = a0b7834c394b63bc91704beca3d3d122
   ocaml(Pl_Net_Google) = d420a90f979db3e91eb6ba827a903be7
   ocaml(Pl_Net_Google_Response) = b839208e102c02061f7268b0fa8da715
   ocaml(Pl_Net_Google_Search) = 55086cc7adb3bd1b5acf687f8a5405db
   ocaml(Pl_Net_Google_Spelling) = 24181dfa9009a3375340ca9631720cc8
   ocaml(Pl_Template) = 492b2c675a77fe96b3867b6465d7397f
   ocaml(Pl_URI) = 451cd0d14a52791c57df8b0e8da1cd18
   ocaml(Pl_WWW_Mechanize) = a180ccd19ff5bb9cd910199d2926ac30
   ocaml-perl4caml = 0.9.4-1.fc9
  =
   libperl.so()(64bit)
   libutil.so.1()(64bit)
   ocaml(Callback) = e5ca1fb5990fac2b7b17cbb1712cffe2
   ocaml(CamlinternalOO) = 6d0d5b328d6db88f403ca4393b4abd38
   ocaml(Int32) = 711321870c949bd3bbdd092d9bae92e4
   ocaml(List) = da1ce9168f0408ff26158af757456948
   ocaml(Nativeint) = e79cdc4d3575c2ed044955cb7ef49aca
   ocaml(Obj) = 5cfae708052c692ea39d23ed930fd64d
   ocaml(Pervasives) = 8ba3d1faa24d659525c9025f41fd0c57
   ocaml(String) = 2c162ab314b2f0a2cfd22d471b2e21ab
   ocaml(runtime) = 3.10.1

  ocaml-perl4caml-devel-0.9.4-1.fc9.x86_64.rpm
   perl(TestClass)
   ocaml-perl4caml-devel = 0.9.4-1.fc9
  =
   ocaml-perl4caml = 0.9.4-1.fc9

* %check is present and all tests pass:
   All tests succeeded.
* owns the directories it creates.
* doesn't own any directories it shouldn't.
* no duplicates in %files (except permitted COPYING.LIB file)
* file permissions are appropriate.
* no scriptlets present.
* code, not content.
* documentation is small, so no -doc subpackage is necessary.
   The actual documentation is ~80% of the -devel package, but it's not in the
   main package so I have no problem with it.
* %docs are not necessary for the proper functioning of the package.
Comment 3 Richard W.M. Jones 2008-03-01 08:25:09 EST
> This is yet another package that doesn't specify any version of the LGPL.  How
> did you determine that it's not LGPLv2+?  I thought that linking with ocaml
> libraries might force the issue, but the base ocaml package in rawhide doesn't
> even have a valid license tag so that's no help.

Disclaimer: I'm upstream maintainer of this package too.

The license is the famous LGPLv2+ with exceptions.  I've made a
new upstream package which adds proper license information to
the head of each file.
(http://merjis.com/developers/perl4caml/)

> Does this package handle the perl modules it wraps not being installed at
> builr or runtime?  It still seems to build the Net::Google stuff, for example,
> even though that package isn't required at all.  And that begs the question of
> whether those perl packages are actually needed at runtime.  The package
> builds without them and I didn't see any differences in the resulting package.

No it doesn't need the Perl package at build time.

At run time also it will work unless of course you actually try to use
the specific wrapped module, in which case you'll get a runtime error
from Perl when it tries to 'use Net::Google' (or whichever).  The
basic runtime functionality requires only libperl.so, for which there
is an automatically added requires.

----

Here's a new package:

Spec URL: http://www.annexia.org/tmp/ocaml/ocaml-perl4caml.spec
SRPM URL: http://www.annexia.org/tmp/ocaml/ocaml-perl4caml-0.9.5-1.fc9.src.rpm

* Sat Mar  1 2008 Richard W.M. Jones <rjones@redhat.com> - 0.9.5-1
- New upstream release 0.9.5.
- Clarify license is LGPLv2+ with exceptions
- Remove excessive BuildRequires - Perl modules not needed for building.
- Pass RPM C flags to the make.
- 'make test' fails where perl4caml is already installed.
Comment 4 Jason Tibbitts 2008-03-02 13:43:07 EST
rpmlint has grown complaints about the license:
  W: invalid-license LGPLv2+ with exceptions
but that's bogus.

This package seems fine to me now.  I guess you could just delete the block of
commended out dependencies, and you should probably take the rpath thing to the
committee because my understanding was always that the issue was an rpath
containing one of the standard directories (like /usr/lib64) that caused the
main issue.

APPROVED
Comment 5 Richard W.M. Jones 2008-03-03 08:53:04 EST
New Package CVS Request
=======================
Package Name: ocaml-perl4caml
Short Description: OCaml library for calling Perl libraries and code
Owners: rjones
Branches: F-8
InitialCC: rjones
Cvsextras Commits: yes
Comment 6 Kevin Fenzi 2008-03-03 15:05:42 EST
cvs done.

Note You need to log in before you can comment on or make changes to this bug.