Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 15 Jan 2009 23:30:48 -0800
From:      Garrett Cooper <yanefbsd@gmail.com>
To:        Andriy Gapon <avg@icyb.net.ua>
Cc:        matt donovan <kitchetech@gmail.com>, Wesley Shields <wxs@freebsd.org>, kde@freebsd.org, FreeBSD Ports <freebsd-ports@freebsd.org>
Subject:   Re: pkg_info confusion (and configure.kde3)
Message-ID:  <7d6fde3d0901152330p32c51b64i212c660c0aaeb04c@mail.gmail.com>
In-Reply-To: <496F5151.7040703@icyb.net.ua>
References:  <496F360E.1000508@icyb.net.ua> <28283d910901150529xfac5a13k6f81d199ee2f48d@mail.gmail.com> <496F3AB4.20202@icyb.net.ua> <20090115150602.GF50694@atarininja.org> <496F5151.7040703@icyb.net.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Jan 15, 2009 at 7:08 AM, Andriy Gapon <avg@icyb.net.ua> wrote:
> on 15/01/2009 17:06 Wesley Shields said the following:
>> On Thu, Jan 15, 2009 at 03:31:32PM +0200, Andriy Gapon wrote:
>>> on 15/01/2009 15:29 matt donovan said the following:
>>>>
>>>> On Thu, Jan 15, 2009 at 8:11 AM, Andriy Gapon <avg@icyb.net.ua
>>>> <mailto:avg@icyb.net.ua>> wrote:
>>>>
>>>>
>>>>     I am reading pkg_info(1), I see that pkg_info can be executed without
>>>>     any options/arguments, but the man page doesn't tell what happens in
>>>>     this case.
>>>>
>>>>     In practice I see that configure.kde3 executes pkg_info in the above
>>>>     fashion (after printing "Looking for installed modules.") and what I
>>>>     observe is that pkg_info is examining all package files found in
>>>>     /var/packages. This takes quite long, obviously:
>>>>
>>>>
>>>>        0 61827 28318   0   8  0  5992  2892 wait   S+J   p5    0:00.12
>>>>     /usr/sbin/pkg_info
>>>>        0 62162 61827   0   8  0  3492  1108 wait   S+J   p5    0:00.00 sh
>>>>     -c /usr/bin/tar -xp -j -f '/var/packages/All/curl-7.18.0.tbz' '+*'
>>>>
>>>>     I am not sure if this is default behavior of pkg_info or it is somehow
>>>>     affected by environment. I run portupgrade -p and also have PACKAGES set
>>>>     to /var/packages.
>>>>
>>>>     --
>>>>     Andriy Gapon
>>>>     _______________________________________________
>>>>     freebsd-ports@freebsd.org <mailto:freebsd-ports@freebsd.org> mailing
>>>>     list
>>>>     http://lists.freebsd.org/mailman/listinfo/freebsd-ports
>>>>     To unsubscribe, send any mail to
>>>>     "freebsd-ports-unsubscribe@freebsd.org
>>>>     <mailto:freebsd-ports-unsubscribe@freebsd.org>"
>>>>
>>>>
>>>> pkg_info run without args is the default way to run pkg_info it just
>>>> prints out all packages/ports installed
>>> Ok, but what did make it peek into the package files (as shown in ps axl
>>> output above)?
>>
>> The output looks like this:
>>
>> zsh-4.3.9_4         The Z shell
>>
>> The second field comes from the +COMMENT file that lives in
>> /var/db/pkg/foo.
>
> Thanks, but my question was:
>> sh -c /usr/bin/tar -xp -j -f '/var/packages/All/curl-7.18.0.tbz' '+*'
> why this command (and such for every package in /var/packages/All) was
> spawned by pkg_info?
> I.e. why pkg_info looks into package .tbz files instead of examining
> /var/db/pkg?

Looks like bad logic to me. Here's where the call is coming from (mind
you I'm referencing pkg_install from CURRENT's sources):

.../usr.sbin/pkg_install/info/perform.c:142           if
(unpack(fname, "'+*'")) {
.../usr.sbin/pkg_install/lib/file.c:354                      if
(vsystem("/usr/bin/tar -xp %s -f '%s' %s", comp, pkg, flist ? flist :
"")) {

Looking at the if-statement, it appears that the logic for the package
finding is in fact sort of convoluted -- we should first check and see
whether or not the package is installed, THEN if it's not installed we
find the tarball (either from a local filesystem or a remote host),
extract it, and grab the appropriate info.

Does that sound like what should happen?

Thanks,
-Garrett



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