Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 17 Jun 2007 08:42:32 +0200
From:      "[LoN]Kamikaze" <LoN_Kamikaze@gmx.de>
To:        "M. Warner Losh" <imp@bsdimp.com>
Cc:        ports@FreeBSD.org
Subject:   Re: How to get a list of all kernel modules
Message-ID:  <4674D7D8.7040302@gmx.de>
In-Reply-To: <4674D5B2.4000104@gmx.de>
References:  <20070616.213319.-1889956458.imp@bsdimp.com>	<4674C9F6.60508@gmx.de>	<4674CE41.7000103@gmx.de>	<20070617.001516.-1615142562.imp@bsdimp.com> <4674D5B2.4000104@gmx.de>

next in thread | previous in thread | raw e-mail | index | archive | help
[LoN]Kamikaze wrote:
> M. Warner Losh wrote:
>> In message: <4674CE41.7000103@gmx.de>
>>             "[LoN]Kamikaze" <LoN_Kamikaze@gmx.de> writes:
>> : [LoN]Kamikaze wrote:
>> : > M. Warner Losh wrote:
>> : >> Greetings,
>> : >>
>> : >> is there an easy way to get a list of all the ports that compile
>> : >> kernel modules?  I'd like to add them to my kernel build.  I did this
>> : >> once before, but I lost all information on how to do it when I lost my
>> : >> laptop's hard disk after the last bsdcan...
>> : >>
>> : >> Warner
>> : > 
>> : > # find /boot/ -type f -exec pkg_info -W \{} \;
>> : 
>> : Sorry about that, it takes very long. Better is:
>> : 
>> : # sh -c 'for mod in `pkg_info -qaL|grep -E "^/+boot"`; { pkg_info -W "$mod"; }
>>
>> This sounds great, except for one problem.  This will tell me all the
>> modules that I've installed that are from ports.  Since I've never
>> installed any from ports, this will not work for what I want.  I want
>> a list of all the ports in /usr/ports that install kernel modules.
>> I'd even settle for a list of all the ports in /usr/ports that only
>> install modules.
>>
>> Something like
>> 	egrep -l '\.ko$' /usr/ports/*/*/pkg-plist | sed -e s=/pkg-plist//
>> might do the trick, but that blows the command line limits out of the
>> water.  Replacing egrep with 'find' would need to be carefully
>> constructed to avoid false positives in any work directories I have
>> laying around.  I was hoping for something a little easier to do...
>>
>> Warner
> 
> I see I misunderstood, sorry about that. So how about that one:
> 
> # find /usr/ports/ -type f -name pkg-plist -exec grep -El
> '^@cwd[[:space:]]+/boot' \{} \; | sed -E 's|^/usr/ports/||1' | sed -E
> 's|/pkg-plist$||1'
> 
> It only works with ports that have a pkg-plist file, though.

It's all a bit tricky, now. This only returns a very small number of ports.
Changing '^@cwd[[:space:]]+/boot' to '^@cwd[[:space:]]+/' helps, but returns
lots of false positives, too:

archivers/dpkg
audio/mt-daapd
comms/hylafax
comms/smstools
databases/cyrus-imspd
databases/firebird-server
databases/firebird2-server
databases/sqlrelay
devel/linux-js
emulators/vmware-guestd6
emulators/snespp
emulators/its
emulators/vmware-guestd4
emulators/vmware-guestd5
games/freebsd-games
games/barrage
games/childsplay
games/lbreakout
games/wanderer
games/xpat2
german/staroffice5
mail/fetchmail
mail/dspam-devel
mail/dspam
mail/mimedefang
mail/py-spambayes
mail/zmailer
multimedia/linux-gspca-kmod
multimedia/linux-ov511-kmod
multimedia/pwcbsd
net-mgmt/cisco_conf
net-mgmt/ng_ipacct
net/acx100
net/asterisk-bristuff
net/asterisk12
net/ipvs
net/ipw-firmware-kmod
net/ipw-firmware
net/iwi-firmware-kmod
net/iwi-firmware
net/openldap23-server
net/openpbx.org
net/asterisk
net/ng_netflow
net/nvnet
net/openldap24-server
news/noffle
print/bjfilter360
print/bjfilter850
print/bjfilter850ug
print/bjfilter860
print/bjfilter870
print/bjfilters600
print/bjfilters630
print/bjfilters6300
print/bjfiltercom
russian/tac+ia
security/bioapi
security/cyrus-sasl
security/drweb
security/ipsec-tools
security/pam-pgsql
security/vncrypt
sysutils/apt
sysutils/devcpu
sysutils/fcron
sysutils/graphicboot
sysutils/heartbeat
sysutils/pmap
textproc/dixit
www/hinventory-client
www/interchange
www/linux-flashplugin9
www/middleman
www/wwwoffle
x11/nvidia-driver

I suppose these would have to be hand-checked.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4674D7D8.7040302>