portmaster: grep: Argument list too long
Kenyon Ralph
kenyon at kenyonralph.com
Mon Oct 19 03:43:54 UTC 2009
I'm trying to replace perl 5.8 with perl 5.10, so I did this (as in the
20090328 /usr/ports/UPDATING entry):
% sudo portmaster -v -t -D -o lang/perl5.10 lang/perl5.8
% sudo portmaster -v -D -R -m 'FORCE_PKG_REGISTER=yes' -r perl-threaded-5.10.1
(FORCE_PKG_REGISTER seems to be needed to keep libtool22 from erroring
and stopping the portmaster run.)
The second command goes OK for a while, but eventually I start getting
grep errors like those below, and ports like libtool22, libiconv, and
gettext are repeatedly reinstalled (with some other ports occasionally
reinstalled). Also, a couple times, portmaster died due to these 'grep
argument list too long' errors (hence my usage of -R).
...
===> Registering installation for libtool-2.2.6a_1
===> Cleaning for libtool-2.2.6a_1
/usr/local/sbin/portmaster: egrep: Argument list too long
===>>> Installation of devel/libtool22 (libtool-2.2.6a_1) succeeded
===>>> Returning to dependency check for converters/libiconv
===>>> Dependency check complete for converters/libiconv
perl-threaded-5.10.1 >> kde4-4.3.1 >> kdeutils-4.3.1_1 >> security/gnupg >> devel/gmake >> devel/gettext >> converters/libiconv
===> Cleaning for libiconv-1.13.1
...
===>>> Starting check for runtime dependencies
===>>> Gathering dependency list for devel/gettext from ports
===>>> Starting dependency check
===>>> Checking dependency: converters/libiconv
/usr/local/sbin/portmaster: grep: Argument list too long
===>>> Launching child to update converters/libiconv
perl-threaded-5.10.1 >> kde4-4.3.1 >> kdeutils-4.3.1_1 >> security/gnupg >> devel/gmake >> devel/gettext >> converters/libiconv
/usr/local/sbin/portmaster: grep: Argument list too long
===>>> Port directory: /usr/ports/converters/libiconv
===>>> Starting check for build dependencies
===>>> Gathering dependency list for converters/libiconv from ports
===>>> Starting dependency check
===>>> Checking dependency: devel/libtool22
/usr/local/sbin/portmaster: grep: Argument list too long
===>>> Launching child to update devel/libtool22
perl-threaded-5.10.1 >> kde4-4.3.1 >> kdeutils-4.3.1_1 >> security/gnupg >> devel/gmake >> devel/gettext >> converters/libiconv >> devel/libtool22
/usr/local/sbin/portmaster: grep: Argument list too long
===>>> Port directory: /usr/ports/devel/libtool22
===>>> Starting check for build dependencies
===>>> Gathering dependency list for devel/libtool22 from ports
===>>> No dependencies for devel/libtool22
===> Cleaning for libtool-2.2.6a_1
...
===> Registering installation for gettext-0.17_1
===> Cleaning for gettext-0.17_1
/usr/local/sbin/portmaster: egrep: Argument list too long
===>>> Installation of devel/gettext (gettext-0.17_1) succeeded
===>>> Returning to dependency check for devel/gmake
===>>> Dependency check complete for devel/gmake
perl-threaded-5.10.1 >> kde4-4.3.1 >> kdeutils-4.3.1_1 >> security/gnupg >> devel/gmake
===> Installing for gmake-3.81_3
...
===> Cleaning for pkg-config-0.23_1
/usr/local/sbin/portmaster: egrep: Argument list too long
===>>> No installed ports depend on pkg-config-0.23_1
===>>> Emptying +REQUIRED_BY file. Try portmaster -s
===>>> Installation of devel/pkg-config (pkg-config-0.23_1) succeeded
===>>> Returning to dependency check for dns/libidn
===>>> Checking dependency: lang/perl5.10
/usr/local/sbin/portmaster: grep: Argument list too long
===>>> Launching child to update lang/perl5.10
perl-threaded-5.10.1 >> kde4-4.3.1 >> kdeutils-4.3.1_1 >> security/gnupg >> ftp/curl >> dns/libidn >> lang/perl5.10
/usr/local/sbin/portmaster: grep: Argument list too long
===>>> Port directory: /usr/ports/lang/perl5.10
===>>> Starting check for build dependencies
===>>> Gathering dependency list for lang/perl5.10 from ports
===>>> Starting dependency check
===>>> Checking dependency: databases/gdbm
/usr/local/sbin/portmaster: grep: Argument list too long
===>>> Launching child to update databases/gdbm
perl-threaded-5.10.1 >> kde4-4.3.1 >> kdeutils-4.3.1_1 >> security/gnupg >> ftp/curl >> dns/libidn >> lang/perl5.10 >> databases/gdbm
/usr/local/sbin/portmaster: grep: Argument list too long
===>>> Port directory: /usr/ports/databases/gdbm
===>>> Starting check for build dependencies
===>>> Gathering dependency list for databases/gdbm from ports
===>>> Starting dependency check
===>>> Checking dependency: devel/gmake
/usr/local/sbin/portmaster: grep: Argument list too long
===>>> Launching child to update devel/gmake
perl-threaded-5.10.1 >> kde4-4.3.1 >> kdeutils-4.3.1_1 >> security/gnupg >> ftp/curl >> dns/libidn >> lang/perl5.10 >> databases/gdbm >> devel/gmake
/usr/local/sbin/portmaster: grep: Argument list too long
===>>> Port directory: /usr/ports/devel/gmake
===>>> Starting check for build dependencies
===>>> Gathering dependency list for devel/gmake from ports
===>>> Starting dependency check
===>>> Checking dependency: devel/gettext
/usr/local/sbin/portmaster: grep: Argument list too long
===>>> Launching child to update devel/gettext
perl-threaded-5.10.1 >> kde4-4.3.1 >> kdeutils-4.3.1_1 >> security/gnupg >> ftp/curl >> dns/libidn >> lang/perl5.10 >> databases/gdbm >> devel/gmake >> devel/gettext
/usr/local/sbin/portmaster: grep: Argument list too long
===>>> Port directory: /usr/ports/devel/gettext
===>>> Starting check for build dependencies
===>>> Gathering dependency list for devel/gettext from ports
===>>> Starting dependency check
===>>> Checking dependency: converters/libiconv
/usr/local/sbin/portmaster: grep: Argument list too long
===>>> Launching child to update converters/libiconv
perl-threaded-5.10.1 >> kde4-4.3.1 >> kdeutils-4.3.1_1 >> security/gnupg >> ftp/curl >> dns/libidn >> lang/perl5.10 >> databases/gdbm >> devel/gmake >> devel/gettext >> converters/libiconv
/usr/local/sbin/portmaster: grep: Argument list too long
===>>> Port directory: /usr/ports/converters/libiconv
===>>> Starting check for build dependencies
===>>> Gathering dependency list for converters/libiconv from ports
===>>> Starting dependency check
===>>> Checking dependency: devel/libtool22
/usr/local/sbin/portmaster: grep: Argument list too long
===>>> Launching child to update devel/libtool22
perl-threaded-5.10.1 >> kde4-4.3.1 >> kdeutils-4.3.1_1 >> security/gnupg >> ftp/curl >> dns/libidn >> lang/perl5.10 >> databases/gdbm >> devel/gmake >> devel/gettext >> converters/libiconv >> devel/libtool22
/usr/local/sbin/portmaster: grep: Argument list too long
===>>> Port directory: /usr/ports/devel/libtool22
===>>> Starting check for build dependencies
===>>> Gathering dependency list for devel/libtool22 from ports
===>>> No dependencies for devel/libtool22
===> Cleaning for libtool-2.2.6a_1
===> Extracting for libtool-2.2.6a_1
....
I don't think I have an excessive number of ports installed, but I do
have all of x11/gnome2 and x11/kde4:
% pkg_info | wc -l
845
% portmaster --version
===>>> FreeBSD version 2.12
% uname -a
FreeBSD gauss.kenyonralph.com 8.0-RC1 FreeBSD 8.0-RC1 #0 r197973: Sun Oct 11 18:48:41 PDT 2009 root at gauss.kenyonralph.com:/usr/obj/usr/src/sys/GAUSS amd64
I'm not sure exactly where the grep argument list too long errors are
coming from, but there's not that many calls to grep in portmaster:
% grep -n -E '.?grep' =portmaster
75: while ps -axo pid,ppid,command | grep -v egrep | egrep -q "(make -DBATCH checksum|/fetch |\[sh\])"; do
129: grep -q '%%%%%%%%%%%%' $DI_FILES || kill_bad_children
197: [ -n "$grep_deps" ] && pm_unlink $grep_deps
387: dir=`grep -l "@comment ORIGIN:${1}$" $pdb/*/+CONTENTS`
397: o=`grep '@comment ORIGIN:' $pdb/$1/+CONTENTS 2>/dev/null`
406: # Global: grep_deps
411: # egrep hates + in file names
418: # Always rely on the grep'ed dependencies instead of +REQUIRED_BY
419: grep_deps=`pm_mktemp grep-deps-${iport}`
420: egrep -l "DEPORIGIN:($origin|$ro_opd)$" $pdb/*/+CONTENTS |
421: cut -f 5 -d '/' | sort -u > $grep_deps
423: if [ ! -s "$grep_deps" ]; then
541: for l in `grep "^$sf|" $pd/MOVED`; do
619: grep '^MD5' $distinfo | while read disc1 f disc2; do
647: if grep -ql '^@pkgdep ' $pkg/+CONTENTS 2>/dev/null; then
653: if grep -ql '^@pkgdep ' $pkg/+CONTENTS 2>/dev/null; then
674: if ! grep -ql $f $DI_FILES; then
724: if [ -s "$grep_deps" ]; then
726: sort $pkg/+REQUIRED_BY | cmp -s $grep_deps - ||
735: pm_install_s $grep_deps $pkg/+REQUIRED_BY
738: [ -n "$grep_deps" ] && {
739: pm_unlink $grep_deps && unset grep_deps; }
871: if egrep -ql '^(FORBIDDEN|DEPRECATED|BROKEN|IGNORE)' Makefile; then
1001: local pkgrep
1007: pkgrep=`pm_make -f/usr/share/mk/bsd.port.mk -V PKGREPOSITORY`
1008: if [ ! "$packages" = "${pkgrep%/All}" ]; then
1062: # The grep is needed to allow for comments, etc.
1063: for file in `grep ^DISTFILE $dist_list`; do
1076: for file in `grep ^DISTFILE $dist_list`; do
1126: grep -ql ${ps}$file $DI_FILES && continue
1356: deplist=`grep -l DEPORIGIN:$origin$ $pdb/*/+CONTENTS`
1394: deplist=`grep -l DEPORIGIN:$origin$ $pdb/*/+CONTENTS`
1511: nf=`ps -ax | grep [f]etch | wc -l`
1614: grep -ql ^CONFLICTS Makefile &&
1692: for req_by in `grep -l DEPORIGIN:$portdir$ $pdb/*/+CONTENTS | \
1981: if grep -ql "DEPORIGIN:$ro_opd$" $pdb/*/+CONTENTS; then
2127: TESTINT=`grep -l ^IS_INTERACTIVE Makefile`
2264: grep -v ^$LOCALBASE_COMPAT > $ldconfig_out
2387: size=`grep "^SIZE (${ds}${file})" $distinfo`
2388: sha256=`grep "^SHA256 (${ds}${file})" $distinfo`
2389: md5=`grep "^MD5 (${ds}${file})" $distinfo`
2412:if [ -s "$grep_deps" ]; then
2421: grep -ql "DEPORIGIN:$ro_opd$" $dp_cont &&
2426: if grep -ql "DEPORIGIN:$portdir$" $dp_cont; then
2429: done < $grep_deps
2433: sort $pdb/$new_port/+REQUIRED_BY | cmp -s $grep_deps - ||
2442: pm_install_s $grep_deps $pdb/$new_port/+REQUIRED_BY
2445: pm_unlink $grep_deps && unset grep_deps do_update
I'm thinking some of the grep calls should be replaced with find -exec
or find | xargs types of calls? Or am I doing something crazy and wrong
here? Maybe it would just be better to delete all ports, and start from
scratch with perl5.10 installed at the start?
Also, this may be a separate issue, but looks like portmaster is going
into a circle (this can also be seen in the snippets above):
perl-threaded-5.10.1 >> kde4-4.3.1 >> kdeutils-4.3.1_1 >> security/gnupg >> ftp/curl >> dns/libidn >> lang/perl5.10
...
perl-threaded-5.10.1 >> kde4-4.3.1 >> kdeutils-4.3.1_1 >> security/gnupg >> ftp/curl >> dns/libidn >> lang/perl5.10 >> databases/gdbm >> devel/gmake >> devel/gettext >> converters/libiconv
(Meanwhile, an important user of perl, vim, still hasn't been rebuilt.)
Thanks,
Kenyon Ralph
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: Digital signature
Url : http://lists.freebsd.org/pipermail/freebsd-ports/attachments/20091019/253e67d2/attachment.pgp
More information about the freebsd-ports
mailing list