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