Problem packaging (ancient) matlab libraries

Tim T. tim.timmerman at gmail.com
Thu Oct 21 10:42:41 UTC 2010


Hi,

  newcomer to the list, so if I'm in the wrong place with this question,
please direct me to the right place.

The problem:

I'm trying to package an application that uses an old version (13.1) of the
matlab  runtime.

I've created a package, matlab-base, which provides the following

Provides: ../../bin/glnx86/libmex.so(libmex.INTERNAL)
../../bin/glnx86/libmx.so(libmx.INTERNAL)
../../extern/lib/glnx86/libmmfile.so(libmmfile.INTERNAL) libmex.so
libmmfile.so libmx.so
This package installs without problems.

A second package contains the application itself. When I attempt to install
that, I get the following error message
rpm -i
/cws/utt/linux-export/timt/root/RPMS/x86_64/timtmatlab-9.9.9-d.x86_64.rpm
error: Failed dependencies:
    libmmfile.so(libmmfile.INTERNAL) is needed by timtmatlab-9.9.9-d.x86_64
    libmx.so(libmx.INTERNAL) is needed by timtmatlab-9.9.9-d.x86_64

I also tried putting the application in the same package as the libraries,
but I get the same error.

I looked at the source code for find-provides and find-requires, and noticed
that for shared libraries, objdump -p is used to determine the provides.

For (e.g.) libmex.so , the output is:
objdump -p libmex.so

libmex.so:     file format elf32-i386

Program Header:
    LOAD off    0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**12
         filesz 0x000065b4 memsz 0x000065b4 flags r-x
    LOAD off    0x000065b4 vaddr 0x000075b4 paddr 0x000075b4 align 2**12
         filesz 0x00000628 memsz 0x000006b4 flags rw-
 DYNAMIC off    0x00006b24 vaddr 0x00007b24 paddr 0x00007b24 align 2**2
         filesz 0x000000b8 memsz 0x000000b8 flags rw-

Dynamic Section:
  NEEDED      libut.so
  NEEDED      libmx.so
  NEEDED      libc.so.6
  INIT        0x22cc
  FINI        0x6030
  HASH        0x94
  STRTAB      0x1158
  SYMTAB      0x598
  STRSZ       0xb80
  SYMENT      0x10
  PLTGOT      0x79d8
  PLTRELSZ    0x240
  PLTREL      0x11
  JMPREL      0x208c
  REL         0x1f3c
  RELSZ       0x150
  RELENT      0x8
  VERDEF      0x1ea4
  VERDEFNUM   0x2
  VERNEED     0x1edc
  VERNEEDNUM  0x3
  VERSYM      0x1d2c

Version definitions:
1 0x01 0x0db142af ../../bin/glnx86/libmex.so
2 0x00 0x0ab6926c libmex.INTERNAL

Version References:
  required from libut.so:
    0x0c16245c 0x00 05 libut.INTERNAL
  required from libmx.so:
    0x0c1ee45c 0x00 04 libmx.INTERNAL
  required from libc.so.6:
    0x0d696910 0x00 03 GLIBC_2.0

That explains the ../../bin/glnx86 in the provides part.

My question is:
- How can I package these files in such a way that the correct names are
resolved ?
- Failing that, is there anyway I can override the provides or requires part
of the rpm ?
- Does any body have any experience packaging a matlab runtime ?

Thanks,
  TimT.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rpm.org/pipermail/rpm-list/attachments/20101021/8f2b40f9/attachment.html>


More information about the Rpm-list mailing list