Date: Sat, 11 Aug 2012 15:35:32 +0200 From: Michael Ranner <michael@ranner.eu> To: Doug Barton <dougb@FreeBSD.org> Cc: ports@freebsd.org, HU Dong <itechbear@gmail.com> Subject: Re: portmaster 3.13.13 real endless loop "Waiting on fetch & checksum..." Message-ID: <50265FA4.6020405@ranner.eu> In-Reply-To: <50262406.2000302@FreeBSD.org> References: <50250E97.4000004@ranner.eu> <CAA96eVsYX1TaXkFg4tXV=KXhbc6wE8ZhhfWi8RUzEjKwGCEtfQ@mail.gmail.com> <502523D4.4050200@ranner.eu> <CAA96eVu8vs3cLRxUacW2Qu9K6iBdNbydBrhH4NUO1hqAWo7nfA@mail.gmail.com> <50258D15.8010606@FreeBSD.org> <CAA96eVuVdFGiiZZmryPN=eu0=mnT-VNsdG_j1UsPToNi48ZSfQ@mail.gmail.com> <5025B03A.5080707@FreeBSD.org> <50261211.3090502@ranner.eu> <5026133B.5000500@FreeBSD.org> <502616A8.5010200@ranner.eu> <50262406.2000302@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Ok, I have debugged the subshell: I replaced the pm_make for "make -DBATCH checksum" with an pm_make2 function: ... pm_make2 () { ( unset -v CUR_DEPS INSTALLED_LIST PM_DEPTH build_l PM_URB_LIST; 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 PM_URB_LIST; 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@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 /usr/local/bin/info-unzip => unzip60.tar.gz doesn't seem to exist in /usr/ports/distfiles/. => Attempting to fetch http://surfnet.dl.sourceforge.net/project/infozip/UnZip%206.x%20%28latest%29/UnZip%206.0/unzip60.tar.gz unzip60.tar.gz 100% of 1344 kB 125 kBps 00m00s => 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@ranner.eu WWW: http://www.azedo.at/
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?50265FA4.6020405>