+++ /dev/null
-#!@PORTAGE_PYTHON@
-# Copyright 1999-2006 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id$
-
-# Very simple program to compare the md5sums of a package as listed
-# in VDB_PATH/category/package/CONTENTS with the md5sums of the
-# actual programs on the system (and makes sure that symlinks point to
-# the right files).
-
-import os.path, os, sys
-
-# for an explanation on this logic, see pym/_emerge/__init__.py
-import os
-import sys
-if os.environ.__contains__("PORTAGE_PYTHONPATH"):
- sys.path.insert(0, os.environ["PORTAGE_PYTHONPATH"])
-else:
- sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), "pym"))
-import portage
-
-def CONTENTScheck(path):
- try:
- contents = open(path, "r")
- except IOError, e:
- print "Unable to open %s: %s" % (path, e)
- sys.exit(1)
- lines = contents.readlines()
- for line in lines:
- items = line.split()
- # items is a list w/ size depending on the type of item listed in item[0]
- # if items[0] = 'dir' then items[1] is the path of a directory
- # if items[0] = 'obj' then items[1] is the path of a file,
- # items[2] is the file's md5sum,
- # items[3] is the file's size
- # if items[0] = 'sym' then items[1] is the path of a symbolic link,
- # items[2] is '->'
- # items[3] is the file the symlink should point to
- # items[4] is the symlink mtime
- if (items[0] == 'obj'):
- md5stored = items[2].lower()
- # fchksum.fmdft(file) returns the file's md5sum and the file's size
- md5real = portage.perform_checksum(items[1])[0].lower()
- if (md5stored != md5real):
- if md5real:
- print "%s has md5sum of %s instead of %s" % (items[1], md5real, md5stored)
- else:
- print "%s is missing!" % items[1]
- elif (items[0] == 'sym'):
- link = items[1]
- target = items[3]
- if (not os.path.islink(link)):
- print "%s is not a symbolic link" % link
- continue
- actualtarget = os.readlink(link)
- if (os.path.normpath(actualtarget) != os.path.normpath(target)):
- print "%s points to %s, not %s" % (link, actualtarget, target)
-
-
-if __name__ == '__main__':
- import sys
- if (len(sys.argv) != 2 or sys.argv[1] == "--help"):
- print "This program compares md5sums in the file VDB_PATH/category/package/CONTENTS"
- print "with the md5sums of the actual files on the filesystem"
- print "(and makes sure that symlinks point to the right files)."
- print "\nUsage: chkcontents path/to/CONTENTS"
- sys.exit(1)
- CONTENTScheck(sys.argv[1])
-
import logging
import optparse
import os
-import portage
+
+try:
+ import portage
+except ImportError:
+ from os import path as osp
+ sys.path.insert(0, osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), "pym"))
+ import portage
+
from _emerge.MetadataRegen import MetadataRegen
from portage.cache.cache_errors import CacheError, StatCollision
from portage.util import writemsg_level
+++ /dev/null
-#!@PORTAGE_BASH@
-# Copyright 1999-2006 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id$
-
-# note this works for both a.out and ELF executables
-# it also auto-generates requirment lines for shell scripts
-
-ulimit -c 0
-
-filelist=`sed "s/['\"]/\\\&/g"`
-exelist=`echo $filelist | $XARGS file | grep ":.*executable" | cut -d: -f1 `
-scriptlist=`echo $filelist | $XARGS file | @EGREP@ ":.* (commands|script) " | cut -d: -f1 `
-liblist=`echo $filelist | $XARGS file | grep ":.*shared object" | cut -d : -f1 `
-
-for f in $exelist; do
- if [ -x $f ]; then
- ldd $f | awk '/=>/ { print $1 }'
- fi
-done | sort -u | sed "s/['\"]/\\\&/g" | $XARGS -n 1 basename | grep -v 'libNoVersion.so' | sort -u
-
-for f in $liblist; do
- ldd $f | awk '/=>/ { print $1 }'
-done | sort -u | sed "s/['\"]/\\\&/g" | $XARGS -n 1 basename | grep -v 'libNoVersion.so' | sort -u
-
-for f in $scriptlist; do
- if [ -x $f ]; then
- head -1 $f | sed -e 's/^\#\![ ]*//' | cut -d" " -f1
- fi
-done | sort -u
-
-#for f in $liblist $exelist ; do
-# objdump -p $f | awk '
-# BEGIN { START=0; LIBNAME=""; }
-# /Version References:/ { START=1; }
-# /required from/ && (START==1) {
-# sub(/:/, "", $3);
-# LIBNAME=$3;
-# }
-# (START==1) && (LIBNAME!="") && ($4~/^GLIBC_*/) { print LIBNAME "(" $4 ")"; }
-# /^$/ { START=0; }
-# '
-#done | sort -u
-
+++ /dev/null
-#!@PORTAGE_BASH@
-# Copyright 1999-2006 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id$
-
-# Script to adjust the contents of the DB entries after a package move.
-# Fairly straight forward... ./movedbentry 'from/here' 'to/here' /over/here
-
-VAR=$1
-NEW=$2
-SPATH=$3
-
-grep -FrZl "${VAR}" "${SPATH}" |
-sed "s#${SPATH}[^\d000]\+/CONTENTS\d000##g" |
-$XARGS -0 sed -i -e "
-s#${VAR}\$#${NEW}#g;
-s#${VAR}\([[:space:]]\)#${NEW}\1#g;
-s#${VAR}\(-[^a-zA-Z]\)#${NEW}\1#g;
-s#${VAR}\([^a-zA-Z0-9-]\)#${NEW}\1#g
-"
+++ /dev/null
-#!@PORTAGE_PYTHON@ -O
-# Copyright 1999-2006 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id$
-
-import os,sys
-os.environ["FEATURES"]="mirror cvs"
-
-# for an explanation on this logic, see pym/_emerge/__init__.py
-import os
-import sys
-if os.environ.__contains__("PORTAGE_PYTHONPATH"):
- sys.path.insert(0, os.environ["PORTAGE_PYTHONPATH"])
-else:
- sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), "pym"))
-import portage
-
-import portage.util
-
-def cstrip(mystr,mychars):
- newstr = ""
- for x in mystr:
- if x not in mychars:
- newstr += x
- return newstr
-
-md5_list = {}
-bn_list = []
-col_list = []
-
-hugelist = []
-for mycp in portage.db["/"]["porttree"].dbapi.cp_all():
- hugelist += portage.db["/"]["porttree"].dbapi.cp_list(mycp)
-hugelist.sort()
-
-for mycpv in hugelist:
- pv = mycpv.split("/")[-1]
-
- newuri = portage.db["/"]["porttree"].dbapi.aux_get(mycpv,["SRC_URI"])[0]
- newuri = newuri.split()
-
- digestpath = portage.db["/"]["porttree"].dbapi.findname(mycpv)
- digestpath = os.path.dirname(digestpath)+"/files/digest-"+pv
- md5sums = portage.digestParseFile(digestpath)
-
- if md5sums == None:
- portage.writemsg("Missing digest: %s\n" % mycpv)
- md5sums = {}
-
- for x in md5sums.keys():
- if x[0] == '/':
- del md5sums[x]
-
- #portage.writemsg("\n\ndigestpath: %s\n" % digestpath)
- #portage.writemsg("md5sums: %s\n" % md5sums)
- #portage.writemsg("newuri: %s\n" % newuri)
-
- bn_list = []
- for x in newuri:
- if not x:
- continue
- if (x in [")","(",":","||"]) or (x[-1] == "?"):
- # ignore it. :)
- continue
- x = cstrip(x,"()|?")
- if not x:
- continue
-
- mybn = os.path.basename(x)
- if mybn not in bn_list:
- bn_list += [mybn]
- else:
- continue
-
- if mybn not in md5sums:
- portage.util.writemsg("Missing md5sum: %s in %s\n" % (mybn, mycpv))
- else:
- if mybn in md5_list:
- if (md5_list[mybn]["MD5"] != md5sums[mybn]["MD5"]) or \
- (md5_list[mybn]["size"] != md5sums[mybn]["size"]):
-
- # This associates the md5 with each file. [md5/size]
- md5joins = md5_list[mybn][2].split(",")
- md5joins = (" ["+md5_list[mybn][0]+"/"+md5_list[mybn][1]+"],").join(md5joins)
- md5joins += " ["+md5_list[mybn][0]+"/"+md5_list[mybn][1]+"]"
-
- portage.writemsg("Colliding md5: %s of %s [%s/%s] and %s\n" % (mybn,mycpv,md5sums[mybn][0],md5sums[mybn][1],md5joins))
- col_list += [mybn]
- else:
- md5_list[mybn][2] += ","+mycpv
- else:
- md5_list[mybn] = md5sums[mybn]+[mycpv]
- del md5sums[mybn]
-
- #portage.writemsg(str(bn_list)+"\n")
- for x in md5sums:
- if x not in bn_list:
- portage.writemsg("Extra md5sum: %s in %s\n" % (x, mycpv))
-
-
-print col_list
-print
-print str(len(md5_list))+" unique distfile md5s."
-print str(len(bn_list))+" unique distfile names."
+++ /dev/null
-#!@PORTAGE_BASH@
-# Copyright 1999-2006 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id$
-
-# pipe in the data.
-
-sort -u - > md5check.tmp
-grep '^Extra' md5check.tmp > md5check.tmp.extra
-grep '^Missing' md5check.tmp > md5check.tmp.missing
-grep '^Coll' md5check.tmp > md5check.tmp.colliding
-
-sed -i "
-s:^Col:\nCol:
-s:,:\n :g
-s: of :\n :g
-s: and :\n :g" md5check.tmp.colliding
-sed -i "s/^[^ ]\+ md5sum: \(.*\) in \(.*\)$/ \2: \1/g" md5check.tmp.missing
-sed -i "s/^[^ ]\+ md5sum: \(.*\) in \(.*\)$/ \2: \1/g" md5check.tmp.extra
-
-#echo "Colliding files:" > md5check.colliding
-#sort -u md5check.tmp.colliding >> md5check.colliding
-cp md5check.tmp.colliding md5check.colliding
-
-echo "Missing from digest:" > md5check.missing
-sort -u md5check.tmp.missing >> md5check.missing
-
-echo "Extra files in digest:" > md5check.extra
-sort -u md5check.tmp.extra >> md5check.extra
-
-rm md5check.tmp*
+++ /dev/null
-#!@PORTAGE_PYTHON@ -O
-
-import profile,time,sys,os
-sys.path = ["@PORTAGE_BASE@/bin","@PORTAGE_BASE@/pym"]+sys.path
-
-def clock():
- return time.time()
-profile.time.clock = clock
-
-profile.run("import emerge", os.getcwd()+"/prof")
-
-class StatsProcesser:
- def __init__(self, stats):
- self.output = []
- self.last = ""
- import sys
- sys.stdout = self
- stats.print_stats()
- sys.stdout = sys.__stdout__
- funcs = ["?"]
- for line in self.output:
- spline = line.split()
- if len(spline) == 6 and spline[0][0].isdigit():
- func = spline[5][spline[5].index("(")+1:-1]
- print line
- if func not in funcs:
- funcs.append(func)
- func = "\\(" + func + "\\)"
- stats.print_callers(func)
-
- def write(self, text):
- new = self.last + text
- new = new.split("\n")
- if len(new) > 1:
- self.output += new[:-1]
- self.last = new[-1]
-
-import pstats
-p = pstats.Stats("prof")
-dir(p)
-p.sort_stats("time")
-p.print_stats()
-
-sp = StatsProcesser(p)
+++ /dev/null
-#!@PORTAGE_PYTHON@
-# Copyright 1999-2006 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id$
-
-# for an explanation on this logic, see pym/_emerge/__init__.py
-import os
-import sys
-if os.environ.__contains__("PORTAGE_PYTHONPATH"):
- sys.path.insert(0, os.environ["PORTAGE_PYTHONPATH"])
-else:
- sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), "pym"))
-import portage
-from portage.versions import pkgsplit
-
-a=pkgsplit(sys.argv[1])
-if a:
- print a[0],a[1],a[2][1:]
- sys.exit(0)
-else:
- print '!!! Error: package name is invalid.'
- sys.exit(1)
from itertools import izip
# for an explanation on this logic, see pym/_emerge/__init__.py
-import os
-import sys
if os.environ.__contains__("PORTAGE_PYTHONPATH"):
sys.path.insert(0, os.environ["PORTAGE_PYTHONPATH"])
else:
sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), "pym"))
+import portage
def quickpkg_main(options, args, eout):
from portage import catsplit, dep_expand, flatten, isvalidatom, xpak
+++ /dev/null
-#!@PORTAGE_PYTHON@ -O
-# Copyright 1999-2006 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id$
-
-import sys, os
-if len(sys.argv)!=3:
- print "xpak: expecting three arguments."
- sys.exit(1)
-
-# for an explanation on this logic, see pym/_emerge/__init__.py
-import os
-import sys
-if os.environ.__contains__("PORTAGE_PYTHONPATH"):
- sys.path.insert(0, os.environ["PORTAGE_PYTHONPATH"])
-else:
- sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), "pym"))
-import portage.xpak
-
-portage.xpak.xpak(sys.argv[1],sys.argv[2])