From owner-freebsd-ports@FreeBSD.ORG Sun Jun 17 06:33:24 2007 Return-Path: X-Original-To: ports@FreeBSD.org Delivered-To: freebsd-ports@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id D93E716A468 for ; Sun, 17 Jun 2007 06:33:24 +0000 (UTC) (envelope-from LoN_Kamikaze@gmx.de) Received: from mail.gmx.net (mail.gmx.net [213.165.64.20]) by mx1.freebsd.org (Postfix) with SMTP id 497E413C45D for ; Sun, 17 Jun 2007 06:33:24 +0000 (UTC) (envelope-from LoN_Kamikaze@gmx.de) Received: (qmail invoked by alias); 17 Jun 2007 06:33:23 -0000 Received: from nat-wh-1.rz.uni-karlsruhe.de (EHLO mobileKamikaze.norad) [129.13.72.169] by mail.gmx.net (mp055) with SMTP; 17 Jun 2007 08:33:23 +0200 X-Authenticated: #5465401 X-Provags-ID: V01U2FsdGVkX1/1bN5EbrP1HCXgRShmDpvTry/vFdpdOtFQS+i9ow 7nVerN3w8sphq+ Message-ID: <4674D5B2.4000104@gmx.de> Date: Sun, 17 Jun 2007 08:33:22 +0200 From: "[LoN]Kamikaze" User-Agent: Thunderbird 2.0.0.4 (X11/20070616) MIME-Version: 1.0 To: "M. Warner Losh" References: <20070616.213319.-1889956458.imp@bsdimp.com> <4674C9F6.60508@gmx.de> <4674CE41.7000103@gmx.de> <20070617.001516.-1615142562.imp@bsdimp.com> In-Reply-To: <20070617.001516.-1615142562.imp@bsdimp.com> X-Enigmail-Version: 0.95.1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Y-GMX-Trusted: 0 Cc: ports@FreeBSD.org Subject: Re: How to get a list of all kernel modules X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jun 2007 06:33:24 -0000 M. Warner Losh wrote: > In message: <4674CE41.7000103@gmx.de> > "[LoN]Kamikaze" 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.