Subject: Re: making 'make replace' safer
To: Peter Schuller <>
From: Greg Troxel <>
List: tech-pkg
Date: 07/16/2006 16:46:33
Content-Transfer-Encoding: quoted-printable

  I gotta ask - are a lot of people annoyed by this? I mean from a
  user's perspective. Will many people refuse to use a tool because
  it's written in a language that they for some reason don't want to

I actually like lisp, although I prefer scheme, and tend to use guile.
But, I've seen lots of reports of people having trouble building clisp
over the years.

In my view, the basic issue is that a tool to manage packages should
not have any (runtime) dependencies beyond the base system.  Obviously
this is opinion and people differ here.

  I have to admit I am leaning towards possibly re-implementing
  pkgmanager in some other language, mostly due to get support for
  threads, better portability and better POSIX integration.

The pkg_rolling-replace code is in /bin/sh and awk.

  But then the question becomes what language people consider
  acceptable. If it's REALLY REALLY a huge sticking point I *might* be
  convinced to do it in C/C++, but I would *so much* prefer not
  to. The prime candidate at the moment would be Ruby, which seems
  fairly accepted over in the FreeBSD camp (what with portupgrade and

  Will many people have objections to that? Any opinions? Are there
  any (relevant to this situation) portability issues with Ruby that I
  am not aware of?

Ruby isn't part of the base system, so there's an issue there.  If
there's a small package that runs ruby, and it doesn't have 5 versions
like python, and isn't constantly changing, then it might be ok for some.

  If C is an absolute requirement for a tool to be generally accepted
  - would the use of boehm-gc kill off that advantage? Opinions?

boehm-gc means going beyond the base system, but if there's a binary
(esp if static) that can then be used, that's not so bad.  For
programs like we're talking about, the operations in question don't
really seem that hard that features like garbage collection seem
necessary.  sh/awk aren't even that bad - in the current test version
there are only 285 lines of code (non-comment non-blank).

I should point out that another difference with the rolling-replace
approach is that the pkgsrc code itself is modified to have make
replace do the unsafe marking, so that the metadata is accurate
always, rather than only when using a tool.  But, pkgmanager could
certainly use the same tags - that's an orthogonal issue.

        Greg Troxel <>

Content-Type: application/pgp-signature

Version: GnuPG v1.4.4 (NetBSD)