I've been working on some updates to the check-deps script I maintain
to check that Solaris packages correctly specify their dependencies.

One of the checks it does is for ELF binaries, it looks for dependencies
on the packages containing the files listed as NEEDED by elfdump -d.

In previous versions, it would report errors on many kernel modules since
they list other modules as NEEDED but provide no RUNPATH for them, and they're
not found in the default RUNPATH of /lib:/usr/lib.

I've made some changes that seem to work, and report some actual missing
dependencies that sound plausible, but since I'm not familiar with the
kernel module loader rules & requirements, could use some input from those
who are.

My changes currently do:

 - If the ELF binary is delivered in /kernel, /usr/kernel or
   /platform/*/kernel, assume it's a kernel module, not a userspace
   binary.   For these modules, change the default RUNPATH from
   /lib:/usr/lib to /kernel:/usr/kernel:/platform/$ARCH/kernel

 - If the ELF binary is an 64-bit kernel module, instead of appending
   /amd64 or /sparcv9 to the RUNPATH and then appending the NEEDED value,
   add the /amd64 or /sparcv9 after the last slash in the combined
   RUNPATH+NEEDED string, since 64-bit kernel modules list NEEDED values
   such as "drv/ip" for /kernel/drv/amd64/ip

With those, these dependencies are found as actually missing in the
nv_110 x86 WOS images - do these look correctly detected?   Should
bugs be filed on these like the ones Install QA has been doing on
user space packages for a while?   (The ones for dependencies on
SUNWckr/SUNWcakr.* are probably not interesting, since you obviously
can't do anything without genunix, so I haven't included most of those
here, but some of the other driver module cross dependencies between
more optional packages seem more interesting.)

 *** /platform/i86pc/kernel/unix (SUNWcakr.i) requires /kernel/genunix
     which is found in SUNWckr, but that is not in listed in the depend
     file.
 *** /platform/i86pc/kernel/cpu/cpu_ms.AuthenticAMD (SUNWcakr.i) requires
     /kernel/misc/acpica which is found in SUNWckr, but that is not in
     listed in the depend file.

 *** /platform/i86pc/kernel/dacf/consconfig_dacf (SUNWcakr.i) requires
     /kernel/misc/usbser which is found in SUNWusbs, but that is not in
     listed in the depend file.
 *** /platform/i86pc/kernel/dacf/amd64/consconfig_dacf (SUNWcakr.i)
     requires /kernel/misc/amd64/usbser which is found in SUNWusbs, but
     that is not in listed in the depend file.
 *** /platform/i86xpv/kernel/dacf/consconfig_dacf (SUNWcakrx.i) requires
     /kernel/misc/usbser which is found in SUNWusbs, but that is not in
     listed in the depend file.
 *** /platform/i86xpv/kernel/dacf/amd64/consconfig_dacf (SUNWcakrx.i)
     requires /kernel/misc/amd64/usbser which is found in SUNWusbs, but
     that is not in listed in the depend file.

 *** /kernel/drv/ce (SUNWced) requires /kernel/misc/vlan which is found in
     SUNWvld, but that is not in listed in the depend file.
 *** /kernel/drv/amd64/ce (SUNWced) requires /kernel/misc/amd64/vlan which
     is found in SUNWvld, but that is not in listed in the depend file.

 *** /kernel/drv/dcpc (SUNWdtrp) requires /platform/i86pc/kernel/drv/cpc
     which is found in SUNWcpc.i, but that is not in listed in the depend
     file.
 *** /kernel/drv/amd64/dcpc (SUNWdtrp) requires
     /platform/i86pc/kernel/drv/amd64/cpc which is found in SUNWcpc.i, but
     that is not in listed in the depend file.

 *** /kernel/drv/fp (SUNWfctl) requires /kernel/drv/fcp which is found in
     SUNWfcp, but that is not in listed in the depend file.
 *** /kernel/drv/amd64/fp (SUNWfctl) requires /kernel/drv/amd64/fcp which
     is found in SUNWfcp, but that is not in listed in the depend file.

 *** /kernel/socketmod/socksdp (SUNWibsdp) requires /kernel/drv/sdpib which
     is found in SUNWibsdpib, but that is not in listed in the depend file.
 *** /kernel/socketmod/amd64/socksdp (SUNWibsdp) requires
     /kernel/drv/amd64/sdpib which is found in SUNWibsdpib, but that is not
     in listed in the depend file.

 *** /kernel/drv/iscsit (SUNWiscsitr) requires /kernel/drv/stmf which is
     found in SUNWstmf, but that is not in listed in the depend file.
 *** /kernel/drv/amd64/iscsit (SUNWiscsitr) requires /kernel/drv/amd64/stmf
     which is found in SUNWstmf, but that is not in listed in the depend
     file.

 *** /usr/kernel/drv/lx_systrace (SUNWlxu) requires /kernel/drv/dtrace
     which is found in SUNWdtrp, but that is not in listed in the depend
     file.
 *** /usr/kernel/drv/amd64/lx_systrace (SUNWlxu) requires
     /kernel/drv/amd64/dtrace which is found in SUNWdtrp, but that is not
     in listed in the depend file.

 *** /kernel/misc/nfssrv (SUNWnfsskr) requires /kernel/fs/nfs which is
     found in SUNWnfsckr, but that is not in listed in the depend file.
 *** /kernel/misc/nfssrv (SUNWnfsskr) requires /kernel/misc/klmmod which is
     found in SUNWnfsckr, but that is not in listed in the depend file.
 *** /kernel/misc/amd64/nfssrv (SUNWnfsskr) requires /kernel/fs/amd64/nfs
     which is found in SUNWnfsckr, but that is not in listed in the depend
     file.
 *** /kernel/misc/amd64/nfssrv (SUNWnfsskr) requires
     /kernel/misc/amd64/klmmod which is found in SUNWnfsckr, but that is
     not in listed in the depend file.

 *** /kernel/drv/rum (SUNWrum) requires /kernel/misc/usba which is found in
     SUNWusb, but that is not in listed in the depend file.
 *** /kernel/drv/amd64/rum (SUNWrum) requires /kernel/misc/amd64/usba which
     is found in SUNWusb, but that is not in listed in the depend file.

 *** /kernel/drv/usbsksp (SUNWuksp) requires /kernel/misc/usbs49_fw which
     is found in SUNWukspfw, but that is not in listed in the depend file.
 *** /kernel/drv/amd64/usbsksp (SUNWuksp) requires
     /kernel/misc/amd64/usbs49_fw which is found in SUNWukspfw, but that is
     not in listed in the depend file.

 *** /kernel/drv/ural (SUNWural) requires /kernel/misc/usba which is found
     in SUNWusb, but that is not in listed in the depend file.
 *** /kernel/drv/amd64/ural (SUNWural) requires /kernel/misc/amd64/usba
     which is found in SUNWusb, but that is not in listed in the depend
     file.

 *** /platform/i86hvm/kernel/drv/cmdk (SUNWxvmpv) requires
     /kernel/misc/strategy which is found in SUNWpsdcr, but that is not in
     listed in the depend file.
 *** /platform/i86hvm/kernel/drv/sd (SUNWxvmpv) requires
     /kernel/misc/strategy which is found in SUNWpsdcr, but that is not in
     listed in the depend file.
 *** /platform/i86hvm/kernel/drv/xpv (SUNWxvmpv) requires mach/pcplusmp
     which could not be found in any package.
 *** /platform/i86hvm/kernel/drv/amd64/cmdk (SUNWxvmpv) requires
     /kernel/misc/amd64/strategy which is found in SUNWpsdcr, but that is
     not in listed in the depend file.
 *** /platform/i86hvm/kernel/drv/amd64/sd (SUNWxvmpv) requires
     /kernel/misc/amd64/strategy which is found in SUNWpsdcr, but that is
     not in listed in the depend file.
 *** /platform/i86hvm/kernel/drv/amd64/xpv (SUNWxvmpv) requires pcplusmp
     which could not be found in any package.
 *** /platform/i86hvm/kernel/misc/hvm_cmdk (SUNWxvmpv) requires
     /kernel/misc/dadk which is found in SUNWpsdcr, but that is not in
     listed in the depend file.
 *** /platform/i86hvm/kernel/misc/hvm_cmdk (SUNWxvmpv) requires
     /kernel/misc/strategy which is found in SUNWpsdcr, but that is not in
     listed in the depend file.
 *** /platform/i86hvm/kernel/misc/amd64/hvm_cmdk (SUNWxvmpv) requires
     /kernel/misc/amd64/dadk which is found in SUNWpsdcr, but that is not
     in listed in the depend file.
 *** /platform/i86hvm/kernel/misc/amd64/hvm_cmdk (SUNWxvmpv) requires
     /kernel/misc/amd64/strategy which is found in SUNWpsdcr, but that is
     not in listed in the depend file.

 *** /kernel/drv/zyd (SUNWzyd) requires /kernel/misc/usba which is found in
     SUNWusb, but that is not in listed in the depend file.
 *** /kernel/drv/amd64/zyd (SUNWzyd) requires /kernel/misc/amd64/usba which
     is found in SUNWusb, but that is not in listed in the depend file.

-- 
        -Alan Coopersmith-           alan.coopersm...@sun.com
         Sun Microsystems, Inc. - X Window System Engineering

_______________________________________________
opensolaris-code mailing list
opensolaris-code@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code

Reply via email to