Subject: Re: Package Views Integration (finally!)
To: Johnny Lam <jlam@jgrind.org>
From: Todd Vierling <tv@pobox.com>
List: tech-pkg
Date: 08/21/2003 10:40:37
On Thu, 21 Aug 2003, Johnny Lam wrote:

: > How are those of us who would very much rather avoid having to deal with
: > a billion symlinks on our systems supposed to avoid this mess being
: > foisted upon us?
:
: We have an eye toward using hardlinks instead of softlinks to save on
: the inodes usage and to avoid the extra indirection, but that will be
: somewhere in the future.

What about the huge directory tree?  I hope this won't become the default on
a bunch of miscellany packages in the very near future, so we have time to
digest it and come up with alternative handling methods.  (Hardlinks still
doesn't cut it; in fact, that could make it even more annoying.)

I'll have to take a closer look at it.  I've used "depot" many times in the
past, and it had some major deficiencies wrt "etc" directories.  It left a
sour taste in my mouth.  In particular, absolute paths into the install tree
made it seriously difficult to put additional, optional config files into a
normal "etc" directory -- and made programs' dynamic updates of such files
even more painful.

That said, I can see some packages on my own systems that certainly would
benefit from pkgviews.  But in general, I'd rather not have a crapload of
extra package directories and symlink/hardlink farms sitting around for
*all* packages, when I maintain systems with literally hundreds of packages
installed from pkgsrc.

A suggestion to give us a fallback behavior:

* Once installed to the pkgviews directory and all necessary INSTALL script
  hooks are run, allow moving files into the shared directory wholesale
  rather than linking them.  This would simulate old-style package
  installation.

  This should be both a global and per-package switch, supported by pkg_add
  as well as bsd.pkg.mk, to indicate "this package is installed in-place".

* In case the binaries are using hardcoded pathnames to the pkgviews
  subdirectory, create a symlink where the pkgviews subdirectory would be in
  a normal pkgviews install, that simply points back to ${...BASE}.

* Add whatever logic is necessary to treat non-pkgviews files that reside
  directly in ${...BASE} as overriding any pkgviews file.  (I have not
  looked, but I'll assume this has already been done in order to provide
  coexistence between pkgviews and non-pkgviews installed packages.  Any
  existing logic will need a little extra kick to know that "in-place
  pkgviews packages" as defined here are basically the same as "legacy
  packages" in this respect.)

This alternative allows the whole thing to work with only *one* symlink
where the admin does not wish to use large link farms to achieve the current
pkgsrc install result.  If the above alternative is implemented, it could
even be set as the pkgsrc and pkg_add default behavor for a while, allowing
a more smooth transition path.

-- 
-- Todd Vierling <tv@pobox.com>