portmaster 3.13.13 real endless loop "Waiting on fetch & checksum..."

Michael Ranner michael at ranner.eu
Sat Aug 11 13:35:50 UTC 2012

Ok, I have debugged the subshell:

I replaced the pm_make for "make -DBATCH checksum" with an pm_make2 

pm_make2   () { ( unset -v CUR_DEPS INSTALLED_LIST PM_DEPTH build_l 
             echo "XXX5" >/tmp/xxx5
             pwd >>/tmp/xxx5
             echo "/usr/bin/nice /usr/bin/make $PM_MAKE_ARGS $*" >>/tmp/xxx5
          /usr/bin/nice /usr/bin/make $PM_MAKE_ARGS $*; echo "XXX6" 
 >/tmp/xxx6 ); }
             echo "XXX1" >/tmp/xxx1
             (echo "XXX2" >/tmp/xxx2; pm_make2 -DBATCH checksum >> 
$fetchlog 2>&1 && echo "XXX3" >/tmp/xxx3 && {
                 echo "XXX4" >/tmp/xxx4
                 rm -f ${TMPDIR}/f-${PM_PARENT_PID}-*-${portdir#*/}.*; 
exit 0; }
                 allfiles=`pm_make -V ALLFILES`
                 pm_make delete-distfiles RESTRICTED_FILES="${allfiles}" \
                 >> $fetchlog 2>&1 &&
                     echo "===>>> RE-STARTING FETCH <<<===" >> $fetchlog
                 pm_make -DBATCH checksum >> $fetchlog 2>&1
                 rm -f ${TMPDIR}/f-${PM_PARENT_PID}-*-${portdir#*/}.* )&

It hangs on /usr/bin/nice /usr/bin/make $PM_MAKE_ARGS $*;

I will get no XXX6 output and there is no nice, make or fetch process.

There seems some weird problem with "-DBATCH" on my system. With the 
following modification (without -DBATCH) fetch will start to download 
but it will still not exit from pm_make2. There is no output for XXX6

pm_make2   () { ( unset -v CUR_DEPS INSTALLED_LIST PM_DEPTH build_l 
             echo "XXX5" >/tmp/xxx5
             pwd >>/tmp/xxx5
             echo "/usr/bin/nice /usr/bin/make $PM_MAKE_ARGS $*" >>/tmp/xxx5
          /usr/bin/make checksum >/tmp/xxx6 2>&1
          #/usr/bin/nice /usr/bin/make $PM_MAKE_ARGS $*; echo "XXX6" 
 >>/tmp/xxx6 ); }
          /usr/bin/nice /usr/bin/make checksum; echo "XXX6" >>/tmp/xxx6 ); }

But make -DBATCH checksum works from commandline:

[root at gatekeeper /usr/ports/archivers/unzip]# make -DBATCH checksum
===>  License Info-ZIP accepted by the user

Use INSTALL_AS_INFOUNZIP=yes to install Info Unzip as 

=> unzip60.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
=> Attempting to fetch 
unzip60.tar.gz                                100% of 1344 kB 125 kBps 
=> SHA256 Checksum OK for unzip60.tar.gz.

Any idea?

Am 11.08.12 11:21, schrieb Doug Barton:
> On 08/11/2012 01:24 AM, Michael Ranner wrote:
>> As I already told, "portmaster -F" is fetching to /usr/ports/distfiles
>> and appending to fetchlog in /tmp
> In your other message you indicate that the fetchlog in /tmp is empty.
> So I'm confused.
>> But "portmaster -i" does this not!
> By the time it gets to the 'make checksum' process there is nothing
> different about the code for -F or -i.
> Based on what you're describing it sounds like your fetch process is
> hanging, and/or not exiting properly.
> What portmaster does is launch a subshell in the background that has a
> mini-script to run 'make checksum'. That target will verify the files if
> they exist, or fetch them and then verify if they do not. Once that is
> done, the mini-script removes the fetchlog which acts as a sort of flag
> to signal portmaster that it's done.
> If the fetch part of the process is completing, but the actual 'make
> checksum' target is not, that's an OS or ports infrastructure bug. If
> the fetch is not completing it could be an OS bug, or it could be a
> stalled/slow remote site, a bad Internet connection, or any of a
> half-dozen other things.
> Either way, I seriously doubt the code in portmaster is at fault. That
> code hasn't changed in many years.
> The only other thing I can think of to try is to start a build for one
> of the ports you're having trouble with (after removing the distfiles of
> course) and just let it run. While it's running, check these things:
> 1. Does the distfile actually get downloaded?
> 2. Does the fetch complete? That is, does the full file get downloaded,
> which matches the size and checksum in the distinfo file?
> 3. If the fetching of the file completes, does 'ps axww' show that a
> fetch process for that file is still underway?
> 4. If the fetching of the file completes, can you run 'make checksum' in
> the port directory and get a positive result?
> 5. What happens if you just let the portmaster process run for a few hours?
> Doug

Mit freundlichen Grüßen

Ing. Michael Ranner

GSM:  +43 676 4155044
Mail: michael at ranner.eu
WWW:  http://www.azedo.at/

More information about the freebsd-ports mailing list