summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Ullmann <jokey@gentoo.org>2006-11-01 11:46:19 +0000
committerMarkus Ullmann <jokey@gentoo.org>2006-11-01 11:46:19 +0000
commitdde1c721065d7ea1d28f2001d56e54610672c656 (patch)
treedbf846cfa392cc031a9ab024982b2081f5652f2a /scripts
parentscripts are always needed (diff)
downloadjokey-dde1c721065d7ea1d28f2001d56e54610672c656.tar.gz
jokey-dde1c721065d7ea1d28f2001d56e54610672c656.tar.bz2
jokey-dde1c721065d7ea1d28f2001d56e54610672c656.zip
more scripts
svn path=/trunk/; revision=68
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/autotools-grepper.sh1
-rwxr-xr-xscripts/deprecated-vlibpcap-maintainers.sh107
-rwxr-xr-xscripts/deprecated-vlibpcap-scan.py31
-rwxr-xr-xscripts/herd-packages.sh1
-rwxr-xr-xscripts/sunrise-qa.sh248
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