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- [email protected]
Sun Microsystems, Inc. - X Window System Engineering
_______________________________________________
opensolaris-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code