Has portmaster gone insane?

Doug Barton dougb at FreeBSD.org
Sat Oct 6 21:58:48 PDT 2007

On Fri, 5 Oct 2007, Lars Stokholm wrote:

> On 10/5/07, Scot Hetzel <swhetzel at gmail.com> wrote:
>> On 10/5/07, Lars Stokholm <lars.stokholm at gmail.com> wrote:
>>> Running 'portmaster --clean-distfiles-all' it began to delete *a lot*
>>> of files it shouldn't. I haven't had time to see how much is missing,
>>> but I guess is so much, that the entire installation is screwed.

I'm sincerely sorry that you've had this problem. I think Scot is right in 
that the code for --clean-distfiles* is pretty simple, and relies totally 
on a proper definition of DISTDIR.

I think I can see _what_ is happening, although I can't tell you why it's 
happening. Somehow the definition of DISTDIR on your system is empty, and 
so it's starting the find in / instead of /usr/ports/distfiles as it 
should. I'll add a check for empty DISTDIR and roll it into an update I'm 
working on at the moment.

>>> It choked on a filename of a weird charset, so it didn't get a chance 
>>> to delete everything.

I'm not sure I understand what you mean here, but I'm glad to hear that it 
didn't delete everything. Can you please try the attached patch and tell 
me if you get the error?

>> Portmaster uses the following to determine the value of DISTDIR.  What
>> does this show that DISTDIR is set to?
>> make BEFOREPORTMK=yes -f/usr/share/mk/bsd.port.mk -V DISTDIR
> I'll have a look tomorrow.

I'm very interested in the results here.



     This .signature sanitized for your protection
-------------- next part --------------
Index: portmaster.sh.in
RCS file: /usr/local/ncvs/ports/ports-mgmt/portmaster/files/portmaster.sh.in,v
retrieving revision 1.21
diff -u -r1.21 portmaster.sh.in
--- portmaster.sh.in	2 Oct 2007 04:49:46 -0000	1.21
+++ portmaster.sh.in	7 Oct 2007 04:55:52 -0000
@@ -922,6 +922,7 @@
 if [ -z "$distdir" ]; then
 	distdir=`make BEFOREPORTMK=yes -f/usr/share/mk/bsd.port.mk -V DISTDIR`
+	[ -n "$distdir" ] || fail 'ERROR: The value of DISTDIR cannot be null'
 	# In case it is a symlink
 	export distdir

More information about the freebsd-ports mailing list