Subject: Re: pkg_create -O bug fixes
To: David Young <dyoung@pobox.com>
From: Greg A. Woods <woods@weird.com>
List: tech-install
Date: 06/29/2003 13:15:49
[[ I believe this belongs in tech-pkg, not tech-install.  Redirect again
   if you feel otherwise. ]]

[ On Sunday, June 29, 2003 at 01:03:18 (-0500), David Young wrote: ]
> Subject: pkg_create -O bug fixes
>
> Seems to me that pkg_create -O (emit packing list only) should not have
> the side-effect of writing to the package-files database. Correct?

Actually that's one of its primary purposes, IIUC.  (and assuming you're
talking about $PKGDB_DIR/pkgdb.byfile.db)

'-O' should _also_ do everything that 'pkg_add' does except of course
copy any files around.

Note that "pkg_create -O" is used by the register-pkg target in
pkgsrc/mk/bsd.pkg.mk in a statement that opens with:

	if [ ! -d ${PKG_DBDIR}/${PKGNAME} ]; then

I.e. if the package is not already registered in PKG_DBDIR then this
code registers it there and part of this registration is to update the
package files database and it is expected that "pkg_create -O" will be
the command that does it.

This feature has been there since the inception of the pkgdb.  Here's
the comment from pkg_install/create/pl.c when this feature was added:

----------------------------
revision 1.10
date: 1999/01/19 17:01:59;  author: hubertf;  state: Exp;  lines: +44 -170
Add code for pkgdb.
----------------------------


Perhaps a separate and as-yet unimplemented "pkg_admin" sub-command
could be used to update the package files database, but that's not yet
possible and would have to be done and deployed before any functionality
is removed from pkg_create.

Finally note that the feature I think you're talking about is already
possible with the '-U' option:

     -U      Do not update the package file database with any file informa-
             tion.

Here's the comment from pkg_install/create/pl.c when this feature was
added: 

----------------------------
revision 1.20
date: 2001/05/18 13:21:38;  author: agc;  state: Exp;  lines: +7 -5
Add -U argument to pkg_create - by default, all files are added to the
pkgdb.byfile.db database. If -U is specified on command line to
pkg_create, don't add the PLIST entry to pkgdb.byfile.db.

Bump version number.
----------------------------


(I suppose PKG_DBDIR should probably be mentioned in pkg_create(1))


> Also, seems like pkg_create -O should refrain from interpreting the last
> '.' in the pkg-name argument as the beginning of a filename extension,
> e.g., etc-sysutil-rc-1.6U.0 yields '@name etc-sysutil-rc-1.6U.0', and
> etc-sysutil-rc-1.6U yields '@name etc-sysutil-rc-1'.

Well, such a package name is invalid in the first place, IIUC.

-- 
								Greg A. Woods

+1 416 218-0098;            <g.a.woods@ieee.org>;           <woods@robohack.ca>
Planix, Inc. <woods@planix.com>; VE3TCP; Secrets of the Weird <woods@weird.com>