MINI SHELL

Server : Apache/2.2.2 (Fedora)
System : Linux App1.pathumtani.go.th 2.6.20-1.2320.fc5smp #1 SMP Tue Jun 12 19:40:16 EDT 2007 i686
User : apache ( 48)
PHP Version : 5.2.9
Disable Function : NONE
Directory :  /proc/self/root/usr/lib/python2.4/site-packages/repomd/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //proc/self/root/usr/lib/python2.4/site-packages/repomd/test.py
#!/usr/bin/python -tt
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Library General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# Copyright 2003 Duke University

# classes for parsing the metadata files for the new metadata format


# used with python -i :)
import sys
import os
import time
import rpm
import packageSack
import packageObject
import repoMDObject
import mdUtils
import mdErrors


def process(current, total, name=None):
    sys.stdout.write('\r' + ' ' * 80)
    sys.stdout.write('\rNode %d of %d' % (current, total))
    sys.stdout.flush()

if len(sys.argv) < 4:
    print 'test.py: /path/to/repo /other/repo somepackagename'
    sys.exit(1)
   
print time.time()
repos = sys.argv[1:3]
pkgSack = packageSack.XMLPackageSack(packageObject.RpmXMLPackageObject)
numid = 0
for repo in repos:
    numid+=1
    basepath = repo
    repomdxmlfile = os.path.join(basepath, 'repodata/repomd.xml')
    repoid = repo

    try:
        repodata = repoMDObject.RepoMD(repoid, repomdxmlfile)
    except mdErrors.RepoMDError, e:
        print >> sys.stderr, e
        sys.exit(1)
    
    (pbase, phref) = repodata.primaryLocation()
    (fbase, fhref) = repodata.filelistsLocation()
    (obase, ohref) = repodata.otherLocation()
    
    
    processlist = [phref]
    for file in processlist:
        print time.time()
        print 'importing %s from %s' % (file, repoid)
        complete = basepath + '/' + file
        try:
            pkgSack.addFile(repoid, complete, process)
        except mdErrors.PackageSackError, e:
            print >> sys.stderr, e
            sys.exit(1)
            
    print ' '
    print time.time()

for pkg in pkgSack.searchNevra(sys.argv[3]):
    print pkg
    for reqtup in pkg.returnPrco('requires'):
        (reqn, reqf, (reqe,reqv,reqr)) = reqtup
        # rpmlib deps should be handled on their own
        if reqn[:6] == 'rpmlib':
            continue
        # kill self providers, too
        if pkg.checkPrco('provides', reqtup):
            continue
            
        # get a list of all pkgs that match the reqn
        providers = pkgSack.searchProvides(reqn)
        if len(providers) == 0:
            print 'unresolved: %s  %s %s:%s-%s' % (reqn, reqf, reqe, reqv, reqr)
            continue

        if len(providers) == 1:
            if reqf is None:
                print '%s: %s from %s' % (reqn, providers[0], providers[0].returnSimple('relativepath'))
                continue

            # only one entry but we need to match out it out
            if providers[0].checkPrco('provides', reqtup):
                print '%s: %s from %s' % (reqn, providers[0], providers[0].returnSimple('relativepath'))
                continue

        
        output = '%s:' % reqn
        for prov in providers:
            if reqf is not None:
                if prov.checkPrco('provides', reqtup):
                    output = output + '||' + prov.__str__()
                else:
                    print '%s does not provide %s %s %s %s %s' % (prov, reqn, reqf, reqe, reqv, reqr)                
            else:
                output = output + '||' + prov.__str__()
                
        print output
print time.time()


Anon7 - 2021