#!/usr/bin/perl # this script will run emerge with the given command line options plus # "--pretend". It will then grep all of the packages to be merged looking # for einfo, ewarn, and eerror lines to display. # Thanks to Peter.Ruskin@dsl.pipex.com for the ewarn and error suggestions. $portage = '/usr/portage'; $emerge = "emerge @ARGV --pretend"; open(EMERGE, "$emerge|") || die "unable to open $emerge\n"; while() { if(/\[[^\]]+\]\s+(\S+)\/(\S+)\-(\d\S*)\s/) { findInfo($1,$2,$3); } } close(EMERGE); exit 0; sub findInfo { local ($package,$name,$ver) = @_; local $pkgDir = "$portage/$package/$name"; local $ebuild = "$pkgDir/$name-$ver.ebuild"; print "$ebuild\n"; if(-T $ebuild) { open(EBUILD, "<$ebuild") || warn "unable to read $ebuild\n"; while() { if(/(einfo.*)$/) { print " $1\n"; } if(/(ewarn.*)$/) { print " $1\n"; } if(/(eerror.*)$/) { print " $1\n"; } } close(EBUILD); } print "\n"; }