From owner-freebsd-current Sat May 25 12:23:10 2002 Delivered-To: freebsd-current@freebsd.org Received: from evilpete.dyndns.org (12-232-26-46.client.attbi.com [12.232.26.46]) by hub.freebsd.org (Postfix) with ESMTP id 3FB0E37B414 for ; Sat, 25 May 2002 12:22:58 -0700 (PDT) Received: from overcee.wemm.org ([10.0.0.3]) by evilpete.dyndns.org (8.11.6/8.11.6) with ESMTP id g4PJMv149098 for ; Sat, 25 May 2002 12:22:57 -0700 (PDT) (envelope-from peter@wemm.org) Received: from wemm.org (localhost [127.0.0.1]) by overcee.wemm.org (Postfix) with ESMTP id A48273807; Sat, 25 May 2002 12:22:57 -0700 (PDT) (envelope-from peter@wemm.org) X-Mailer: exmh version 2.5 07/13/2001 with nmh-1.0.4 To: Dag-Erling Smorgrav Cc: current@FreeBSD.ORG Subject: Re: i386 tinderbox failure In-Reply-To: Date: Sat, 25 May 2002 12:22:57 -0700 From: Peter Wemm Message-Id: <20020525192257.A48273807@overcee.wemm.org> Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG Dag-Erling Smorgrav wrote: > Peter Wemm writes: > > Indeed it is installed. Note that you have exposed a fundamental bug > > in the perl wrapper. It only searches $PATH, and /usr/local/bin is not > > in $PATH for many system tools (eg: pkg_add -r). > > How about this: > > Index: perl.c > =================================================================== > RCS file: /home/ncvs/src/usr.bin/perl/perl.c,v > retrieving revision 1.2 > diff -u -u -r1.2 perl.c > --- perl.c 18 May 2002 05:33:28 -0000 1.2 > +++ perl.c 25 May 2002 12:52:43 -0000 > @@ -59,5 +59,6 @@ > if (errno != ENOENT) > err(1, "%s", path); > } > + execve("/usr/local/bin/perl", argv, environ); > errx(1, "Perl is not installed, try 'pkg_add -r perl'"); > } > > Of course, it won't work if Perl was installed with a non-standard > PREFIX. That would work, but IMHO this should be the first location we try since it is the "most likely" location for it. Another idea. Suppose we have /etc/ports.conf or /etc/pkg.conf which is a symlink to the base of the installed location of ports/packages? (like we do with /etc/malloc.conf being a symlink). We could exec /etc/ports.conf/bin/perl as a last resort too. It would look pretty freaky but would be faster than parsing a text config file. pkg_add could do a readlink("/etc/ports.conf") to set the default for pkg_add -p as well. Cheers, -Peter -- Peter Wemm - peter@wemm.org; peter@FreeBSD.org; peter@yahoo-inc.com "All of this is for nothing if we don't go to the stars" - JMS/B5 To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message