portmaster hangs waiting for grep

Peggy Wilkins enlil65 at gmail.com
Sun Oct 31 17:10:24 UTC 2010


I am doing my weekly run of portmaster to upgrade ports on my server:

FreeBSD quarto.lib.uchicago.edu 7.3-RELEASE-p3 FreeBSD 7.3-RELEASE-p3
#0: Sat Sep 25 15:46:29 CDT 2010
root at quarto.lib.uchicago.edu:/usr/obj/usr/src/sys/GENERIC  amd64

I updated my ports tree two days ago (Friday, Oct 29) via cron, if
that has any relevance...

Portmaster got its list of things to do, then after upgrading the
first item on its to-do list (mysql-client-5.0.90_2), it is hung up
here:

[snip]
===>   Compressing manual pages for mysql-client-5.0.90_2
===>   Running ldconfig
/sbin/ldconfig -m /usr/local/lib/mysql
===>   Installing ldconfig configuration file
===>   Registering installation for mysql-client-5.0.90_2

At this point, nothing happens.  Here's some details from ps showing
both the parent portmaster process and where the child is stuck:

USER   PID %CPU %MEM   VSZ   RSS  TT  STAT STARTED      TIME COMMAND
root 69546  0.0  0.1  7116  2120  p0  I+   11:04AM   0:00.34 /bin/sh
/usr/local/sbin/portmaster -bwDa -x virtuoso
root 77472  0.0  0.0  7116  2044  p0  I+   11:04AM   0:00.02 /bin/sh
/usr/local/sbin/portmaster -D -w -b mysql-client-5.0.90_1
root  9375  0.0  0.0  7936  1424  p0  I+   11:06AM   0:00.00 grep
^SIZE (mysql-5.0.90.tar.gz)

Looking at portmaster source code, it is hung up in this part:

        dist_list_temp=`pm_mktemp dist_list`
        echo '# Added by portmaster' > $dist_list_temp
        for file in $distfiles; do
                size=`grep "^SIZE (${ds}${file})" $distinfo`
                sha256=`grep "^SHA256 (${ds}${file})" $distinfo`
                md5=`grep "^MD5 (${ds}${file})" $distinfo`
                echo "DISTFILE:${ds}${file}:SIZE=${size##*
}:SHA256=${sha256##* }:MD5=${md5##* }" \
                    >> $dist_list_temp
                # Make sure any new distfiles get added to the list
                [ -z "$DONT_SCRUB_DISTFILES" -a ! "$$" -eq "$PM_PARENT_PID" ] &&
                        echo "${ds}$file" >> $DI_FILES
        done

Specifically, size=`grep "^SIZE (${ds}${file})" $distinfo`.  This
suggests that $distinfo isn't set, but it is supposed to be.

FYI my current $dist_list_temp has these contents:

-rw-------  1 root    wheel       22 Oct 31 11:06 f-69546-dist_list.No9h5tNN

% cat /tmp/f-69546-dist_list.No9h5tNN
# Added by portmaster


I am suspicious that this may be related to the recent change in
distinfo that I read about, where the MD5 checksums are being phased
out.

plw


More information about the freebsd-ports mailing list