diff options
author | Markus Ullmann <jokey@gentoo.org> | 2006-11-01 11:46:19 +0000 |
---|---|---|
committer | Markus Ullmann <jokey@gentoo.org> | 2006-11-01 11:46:19 +0000 |
commit | dde1c721065d7ea1d28f2001d56e54610672c656 (patch) | |
tree | dbf846cfa392cc031a9ab024982b2081f5652f2a /scripts | |
parent | scripts are always needed (diff) | |
download | jokey-dde1c721065d7ea1d28f2001d56e54610672c656.tar.gz jokey-dde1c721065d7ea1d28f2001d56e54610672c656.tar.bz2 jokey-dde1c721065d7ea1d28f2001d56e54610672c656.zip |
more scripts
svn path=/trunk/; revision=68
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/autotools-grepper.sh | 1 | ||||
-rwxr-xr-x | scripts/deprecated-vlibpcap-maintainers.sh | 107 | ||||
-rwxr-xr-x | scripts/deprecated-vlibpcap-scan.py | 31 | ||||
-rwxr-xr-x | scripts/herd-packages.sh | 1 | ||||
-rwxr-xr-x | scripts/sunrise-qa.sh | 248 |
5 files changed, 388 insertions, 0 deletions
diff --git a/scripts/autotools-grepper.sh b/scripts/autotools-grepper.sh new file mode 100755 index 0000000..c19d125 --- /dev/null +++ b/scripts/autotools-grepper.sh @@ -0,0 +1 @@ +for each in `grep inherit -r . | grep autotools | grep "ebuild:" | sort | sed s/^..// | sed s/:[a-zA-Z0-9\ \-]*//`; do echo "Grepping in $each" && grep WANT_AUTO $each; done
\ No newline at end of file diff --git a/scripts/deprecated-vlibpcap-maintainers.sh b/scripts/deprecated-vlibpcap-maintainers.sh new file mode 100755 index 0000000..21c6c18 --- /dev/null +++ b/scripts/deprecated-vlibpcap-maintainers.sh @@ -0,0 +1,107 @@ +#!/bin/bash +PLIST=`cat deprecated-vlibpcap-20061202.txt` + +CVSDIR=${HOME}/cvs +# find either a cvs co of gentoo's portage module or the portage directory, and +# echo the result. +eportdir() +{ + # does fast cache magic. portageq in particular is really slow... this makes + # subsequent calls to eportdir() pretty much instantaneous, as opposed to + # taking several seconds. + if [[ -d ${HOME}/gentoo-x86 ]] ; then + eval "eportdir() { echo ${HOME}/gentoo-x86 ; }" + eportdir $* + elif [[ -d ${CVSDIR}/gentoo-x86 ]] ; then + eval "eportdir() { echo ${HOME}/cvs/gentoo-x86 ; }" + eportdir $* + else + eval "eportdir() { echo `portageq portdir` ; }" + eportdir $* + fi +} + +# find a given ebuild. based upon code by agriffis. does some fancy prediction, +# so it will find categories if necessary (eg efind sparc-dev-sources will find +# sys-kernel/sparc-dev-sources, and does partial name matching). prints the +# result in the form category/package . +efind() +{ + local efinddir cat pkg + efinddir=$(eportdir) + + case $1 in + *-*/*) + pkg=${1##*/} + cat=${1%/*} + ;; + + ?*) + pkg=${1} + cat=$(echo1 ${efinddir}/*-*/${pkg}/*.ebuild) + [[ -f $cat ]] || cat=$(echo1 ${efinddir}/*-*/${pkg}*/*.ebuild) + [[ -f $cat ]] || cat=$(echo1 ${efinddir}/*-*/*${pkg}/*.ebuild) + [[ -f $cat ]] || cat=$(echo1 ${efinddir}/*-*/*${pkg}*/*.ebuild) + [[ -f $cat ]] || return 1 + pkg=${cat%/*} + pkg=${pkg##*/} + cat=${cat#${efinddir}/} + cat=${cat%%/*} + ;; + esac + + echo ${cat}/${pkg} +} + +# guesses who is to blame for a given package. uses metadata.xml if it's +# available. if not, it will try to use cvs log to determine who commited the +# ebuilds (only if a cvs co is available, of course...) +ewho() +{ + local pc d metadata f + + pc=$(efind $*) + d=$(eportdir) + f=0 + + if [[ -z "$pc" ]] ; then + echo "nothing found for $*" + return 1 + fi + + echo -e "${pc}:" + metadata="${d}/${pc}/metadata.xml" + if [[ -f "${metadata}" ]] ; then + sed -ne 's,^.*<herd>\([^<]*\)</herd>.*, herd: \1,p' \ + "${metadata}" + sed -ne 's,^.*<email>\([^<]*\)@[^<]*</email>.*, dev: \1,p' \ + "${metadata}" + f=1 + + elif [[ -d ${d}/${pc}/CVS ]] ; then + if [[ ${RUNLEVEL} != "work" ]] ; then + pushd ${d}/${pc} > /dev/null + for e in *.ebuild ; do + echo -n "${e}: " + cvs log ${e} | sed -e '1,/^revision 1\.1$/d' | sed -e '2,$d' \ + -e "s-^.*author: --" -e 's-;.*--' + done + popd > /dev/null + f=1 + else + echo "Cannot access cvs.gentoo.org!" + fi + fi + + if [[ $f -eq 0 ]] ; then + echo "Nothing found, so blame ciaranm (who blames seemant)" + return 1 + fi + + return 0 +} + +for i in `echo ${PLIST}` + do + ewho ${i} +done diff --git a/scripts/deprecated-vlibpcap-scan.py b/scripts/deprecated-vlibpcap-scan.py new file mode 100755 index 0000000..b631355 --- /dev/null +++ b/scripts/deprecated-vlibpcap-scan.py @@ -0,0 +1,31 @@ +#!/usr/bin/python +print "Running deprecated-vlibpcap-scan.py..." + +def vlibpcap_deprecation_check(depstr): + if depstr.find("virtual/libpcap") == -1: + return False + return True + +import os,sys +os.putenv("PORTDIR_OVERLAY", '') +os.putenv("PORTAGE_CALLER", "repoman") +import portage +if __name__ == "__main__": + ptree = portage.db["/"]["porttree"] + pdb=ptree.dbapi + if len(sys.argv) > 1: + cp_list = sys.argv[1:] + else: + cp_list = pdb.cp_all() + for cp in cp_list: + cpv = ptree.dep_bestmatch(cp) + if cpv: + try: + d = ' '.join(pdb.aux_get(cpv, ["DEPEND", "RDEPEND", "PDEPEND"])) + except KeyError: + print "cpv %s sucks, kthnx" % cpv + continue + if vlibpcap_deprecation_check(d): + print cp + +print "Done with deprecated-vlibpcap-scan.py." diff --git a/scripts/herd-packages.sh b/scripts/herd-packages.sh new file mode 100755 index 0000000..08abfbe --- /dev/null +++ b/scripts/herd-packages.sh @@ -0,0 +1 @@ +find /usr/portage -iname '*.xml' -exec grep -l net-irc \{\} \; | sed "s:^\/usr\/portage\/::" | sed s:\/metadata.xml$:: | sed "s%^meta[a-zA-Z0-9\.\/\-]*%%" | sed "s%^[a-zA-Z0-9\-]*$%%" | sort | uniq diff --git a/scripts/sunrise-qa.sh b/scripts/sunrise-qa.sh new file mode 100755 index 0000000..99d76f3 --- /dev/null +++ b/scripts/sunrise-qa.sh @@ -0,0 +1,248 @@ +#!/bin/bash +# a script to filter and sort pcheck dumps + +CHECKDIR=/usr/portage/local/layman/sunrise + +make_dump() { + today="$(date +%Y%m%d)-qa-check" + [[ -d ${today} ]] || mkdir ${today} + cd ${today} + echo "*** Running pcheck on ${CHECKDIR} - will take a while..." + pcheck --disable=pkgcore_checks.unstable_only.UnstableOnlyReport -r /usr/portage ${CHECKDIR} &> dump + cp dump dump-unparsed + echo "Done!" + echo +} + +filter_keywords() { + local all_unstable="all unstable" + local stabled="stabled" + local no_change="no change" + local dropped="dropped" + local vcs_visible="vcs ebuild visible" + local stupid="mask instead" + local redundant="keywords are overshadowed" + + echo "*** Filtering keywords-related stuff..." + for kwd in "${all_unstable}" "${stabled}" "${no_change}" "${dropped}" "${vcs_visible}" "${stupid}" "${redundant}" ; do + grep "${kwd}" dump > keywords_"${kwd// /_}".log + echo -e "Filtering "${kwd}"...\t `grep -c "${kwd}" dump` match(es) found." + sed -i "/${kwd}/d" dump + done + echo "Done!" + echo +} + +filter_depends() { + local nonexistant="nonexistant" + local unsolvable="unsolvable" + local malformed="malformed" + + echo "*** Filtering depends-related stuff..." + for depends in "${nonexistant}" "${unsolvable}" "${malformed}" ; do + grep "${depends}" dump > depends_"${depends}".log + echo -e "depends "${depends}"...\t `grep -c "${depends}" dump` problem(s) found." + sed -i "/${depends}/d" dump + done + + echo "Doing further sorting..." + grep masked depends_${unsolvable}.log > depends_${unsolvable}_masked.log + sed -i "/masked/d" depends_${unsolvable}.log + grep ppc-macos depends_${unsolvable}.log > depends_${unsolvable}_ppc-macos.log + sed -i "/ppc-macos/d" depends_${unsolvable}.log + grep x86-fbsd depends_${unsolvable}.log > depends_${unsolvable}_x86-fbsd.log + sed -i "/x86-fbsd/d" depends_${unsolvable}.log + mv depends_${unsolvable}.log depends_${unsolvable}_other.log + + echo "Done!" + echo +} + +filter_eclasses() { + echo -e "*** Filtering deprecated eclasses... \t\t `grep -c "deprecated eclasses" dump` problem(s) found." + grep "deprecated eclasses" dump > deprecated_eclasses.log + sed -i "/deprecated eclasses/d" dump + echo "Done!" + echo +} + +filter_deprecated_flags() { + echo -e "*** Filtering deprecated flags... \t\t `grep -c "deprecated flags" dump` problem(s) found." + grep "deprecated flags" dump > deprecated_flags.log + sed -i "/deprecated flags/d" dump + echo "Done!" + echo +} + +filter_mirrors() { + echo -e "*** Filtering unknown mirrors... \t\t `grep -c "no known mirror tier" dump` problem(s) found." + grep "no known mirror tier" dump > unknown_mirror.log + sed -i "/no known mirror tier/d" dump + echo "Done!" + echo +} + + +filter_modularx() { + local unported="not ported" + local visibility_unported="visibility induced unported" + local potentially_remove="potentially remove" + + echo "*** Filtering modular X related stuff..." + for modularx in "${unported}" "${visibility_unported}" "${potentially_remove}" ; do + grep "${modularx}" dump > modular_x_"${modularx// /_}".log + echo -e "modular X "${modularx}"...\t `grep -c "${modularx}" dump` problem(s) found." + sed -i "/${modularx}/d" dump + done + echo "Done!" + echo +} + + +filter_description() { + local generic="eclass defined" + local too_long="over 250 chars" + local stupid="using the pkg name" + + echo "*** Filtering description-related stuff..." + for desc in "${generic}" "${too_long}" "${stupid}" ; do + grep "${desc}" dump > description_"${desc// /_}".log + echo -e "description "${desc}"...\t `grep -c "${desc}" dump` problem(s) found." + sed -i "/${desc}/d" dump + done + echo "Done!" + echo +} + +filter_metadata() { + local executable="executable" + + echo "*** Filtering metadata-related stuff..." + for meta in "${executable}" ; do + grep "${meta}" dump > metadata_"${meta}".log + echo -e "metadata "${meta}"...\t `grep -c "${meta}" dump` problem(s) found." + sed -i "/${meta}/d" dump + done + echo "Done!" + echo +} + + +filter_files() { + local too_big="exceeds 20k" + + echo "*** Filtering files-related stuff..." + for files in "${too_big}" ; do + grep "${files}" dump > files_"${files/ /_}".log + echo -e "filesdir "${files}"...\t `grep -c "${files}" dump` problem(s) found." + sed -i "/${files}/d" dump + done + echo "Done!" + echo +} + +filter_flags() { + local unstated="unstated flags" + local unknown="unknown flags" + local unused="unused flag" + + echo "*** Filtering use flags-related stuff..." + for flags in "${unstated}" "${unknown}" "${unused}" ; do + grep "${flags}" dump > "${flags/ /_}".log + echo -e ""${flags}"...\t `grep -c "${flags}" dump` problem(s) found." + sed -i "/${flags}/d" dump + done + echo "Done!" + echo +} + + +filter_restrict() { + local unknown="unknown" + local deprecated="deprecated" + + echo "*** Filtering restrict-related stuff..." + for restrict in "${unknown}" "${deprecated}" ; do + grep "${restrict}" dump > restrict_"${restrict}".log + echo -e "restrict "${restrict}"...\t `grep -c "${restrict}" dump` problem(s) found." + done + for restrict in "${unknown}" "${deprecated}" ; do + sed -i "/${restrict}/d" dump + done + echo "Done!" + echo +} + + +filter_vulnerable() { + echo -e "*** Filtering vulnerable ebuilds... \t\t `grep -c "vulnerable" dump` problem(s) found." + grep "vulnerable" dump > vulnerable.log + sed -i "/vulnerable/d" dump + echo "Done!" + echo +} + +filter_licenses() { + echo -e "*** Filtering unused licenses... \t\t `grep -c "unused license" dump` match(es) found." + grep "unused license" dump > unused_licenses.log + sed -i "/unused license/d" dump + echo "Done!" + echo +} + + +filter_digests() { + echo -e "*** Filtering digest overlaps... \t\t `grep -c "conflicts with" dump` problem(s) found." + grep "conflicts with" dump > digest_overlap.log + sed -i "/conflicts with/d" dump + echo "Done!" + echo +} + + +vdb_hardcoded() { + echo "*** Checking for hardcoded VDB stuff..." + local pdir="$(portageq envvar PORTDIR)" + find "${pdir}" -name '*.eclass' -o -name '*.ebuild' | xargs grep -H var/db/pkg | tee vdb_hardcoded.log >/dev/null 2>&1 +} + +filter_remaining() { + echo "*** Filtering remaining stuff" + local reversed="is reversed in" + grep "${reversed}" dump > profiles_reversed.log + sed -i "/${reversed}/d" dump + echo "*** The rest is unsorted..." + echo + mv dump remaining_unsorted.log +} + +cleanup() { + echo "*** Cleaning up empty logs..." + for log in `ls *.log` ; do + [[ -s "${log}" ]] || ( echo "Deleting empty log: ${log} ..." && rm -f "${log}" ) + done + echo + echo "*****************" + echo "*** ALL DONE! ***" + echo "*****************" +} + + +make_dump +filter_keywords +filter_depends +filter_eclasses +filter_deprecated_flags +filter_mirrors +filter_modularx +filter_description +filter_metadata +filter_files +filter_flags +filter_restrict +filter_vulnerable +filter_licenses +filter_digests +#vdb_hardcoded +filter_remaining +cleanup |