On Thu, Mar 13, 2008 at 07:34:38PM -0500, Jason L Tibbitts III wrote:
Of course, we should still try to address the issue. Is there
actually a demonstrable problem here? What can go wrong without some
arch-specific dependencies on the main ocaml package? Can you have
just the 32-bit ocaml installed on a 64-bit machine and install a
64-bit module without rpm/yum complaining about dependency problems or
pulling in the 64-bit ocaml package? (No 64-bit machine I can afford
to screw with at the moment.)
I think I'm starting to understand the problem here. Take as an
example the ocaml-curses library.
The Rawhide repository[1] contains three packages related to this
library:
ocaml-curses-0.1-7.20020319.fc9.x86_64.rpm
ocaml-curses-devel-0.1-7.20020319.fc9.i386.rpm
ocaml-curses-devel-0.1-7.20020319.fc9.x86_64.rpm
The ocaml-curses-devel.i386 RPM is completely useless. The base OCaml
compiler would never even get so far as to look in its install
directory /usr/lib, because it is configured to always look in
/usr/lib64. There is no concept of the -m32/-m64 switch as in gcc.
It will always build only a single type of binary.
The way the dependencies are set up, the user could request
ocaml-curses-devel.i386 (they'd have to request it explicitly on
x86-64, presumably implicitly on ppc64??) and yum would install
ocaml-curses-devel.i386, ocaml-curses.x86_64 and ocaml.x86_64 [2].
This would not give them a working curses development environment.
For that they'd need ocaml-curses-devel.x86_64.
I don't understand how to exclude or remove those i386 packages from
being built and placed in the repository, but if you give me some clue
I can update the guidelines appropriately.
Rich.
[1]
http://download.fedora.redhat.com/pub/fedora/linux/development/x86_64/os/...
[2] Tested on a Rawhide machine:
# yum install ocaml-curses-devel.i386
development 100% |=========================| 2.4 kB 00:00
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package ocaml-curses-devel.i386 0:0.1-7.20020319.fc9 set to be updated
--> Processing Dependency: ocaml-curses = 0.1-7.20020319.fc9 for package:
ocaml-curses-devel
--> Running transaction check
---> Package ocaml-curses.x86_64 0:0.1-7.20020319.fc9 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
ocaml-curses-devel i386 0.1-7.20020319.fc9 development 39 k
Installing for dependencies:
ocaml-curses x86_64 0.1-7.20020319.fc9 development 56 k
Transaction Summary
=============================================================================
Install 2 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 95 k
Is this ok [y/N]: y
Downloading Packages:
(1/2): ocaml-curses-devel 100% |=========================| 39 kB 00:00
(2/2): ocaml-curses-0.1-7 100% |=========================| 56 kB 00:00
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: ocaml-curses ######################### [1/2]
error: failed to stat /home/rjones/.gvfs: Permission denied
Installing: ocaml-curses-devel ######################### [2/2]
Installed: ocaml-curses-devel.i386 0:0.1-7.20020319.fc9
Dependency Installed: ocaml-curses.x86_64 0:0.1-7.20020319.fc9
Complete!
# rpm -qa | grep ocaml-curses
ocaml-curses-devel-0.1-7.20020319.fc9.i386
ocaml-curses-0.1-7.20020319.fc9.x86_64
Note that the native code compiler can't find curses:
$ cat test.ml
open Curses ;; initscr ()
$ ocamlc -I +curses mlcurses.cma test.ml -o test
$ ocamlopt -I +curses mlcurses.cmxa test.ml -o test
Cannot find file mlcurses.cmxa <---- broken!
--
Richard Jones, Emerging Technologies, Red Hat
http://et.redhat.com/~rjones
virt-p2v converts physical machines to virtual machines. Boot with a
live CD or over the network (PXE) and turn machines into Xen guests.
http://et.redhat.com/~rjones/virt-p2v