~ubuntu-branches/debian/wheezy/agtl/wheezy

« back to all changes in this revision

Viewing changes to ipkg-utils-1.7/ipkg-show-deps

  • Committer: Bazaar Package Importer
  • Author(s): Heiko Stuebner
  • Date: 2011-01-22 13:55:12 UTC
  • mfrom: (1.1.5 upstream)
  • Revision ID: james.westby@ubuntu.com-20110122135512-1mik0vssgpnx2fgu
Tags: 0.8.0.3-1
New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/python
 
2
# $Id: ipkg-show-deps,v 1.2 2004/03/06 13:08:33 pb Exp $
 
3
 
 
4
import sys, os, posixpath
 
5
from glob import glob
 
6
import commands
 
7
import ipkg
 
8
import getopt
 
9
import string
 
10
import re
 
11
 
 
12
verbose = 0
 
13
 
 
14
def usage():
 
15
     sys.stderr.write("%s [-p Packages] package ...\n" % (sys.argv[0],))
 
16
     sys.exit(-1)
 
17
 
 
18
packages_filename = "Packages"
 
19
(opts, remaining_args) = getopt.getopt(sys.argv[1:], "hp:")
 
20
for (optkey, optval) in opts:
 
21
     if optkey == '-h': 
 
22
          usage()
 
23
     if optkey == '-p': 
 
24
          packages_filename = optval
 
25
 
 
26
if ( not remaining_args ):
 
27
     usage()
 
28
 
 
29
packages = ipkg.Packages()
 
30
packages.read_packages_file(packages_filename)
 
31
 
 
32
required = {}
 
33
provider_hash = {}
 
34
 
 
35
def split_list(str):
 
36
     r = []
 
37
     l = string.split(str, ",")
 
38
     for i in l:
 
39
          ll = string.split(i, "|")
 
40
          for ii in ll:
 
41
               ii = string.strip(ii)
 
42
               r.append(ii)
 
43
     return r
 
44
 
 
45
for i in packages.packages.keys():
 
46
     p = packages.packages[i]
 
47
     if not provider_hash.has_key(p.package):
 
48
          provider_hash[p.package] = []
 
49
     provider_hash[p.package].append(p)
 
50
     if p.provides:
 
51
          provides = string.split(p.provides, ",")
 
52
          for prov in provides:
 
53
               prov = string.strip(prov)
 
54
               if not provider_hash.has_key(prov):
 
55
                    provider_hash[prov] = []
 
56
               provider_hash[prov].append(p)
 
57
 
 
58
def find_package(name):
 
59
     if provider_hash.has_key(name):
 
60
          return provider_hash[name]
 
61
     return None
 
62
 
 
63
def recurse(pkg):
 
64
     required[pkg.package] = 1
 
65
     if pkg.depends:
 
66
          deps = split_list(pkg.depends)
 
67
          for dep in deps:
 
68
               dep = re.sub("\s*\(.*\)", "", dep)
 
69
               dep = re.sub("\*$", "", dep)
 
70
               newpkgs = find_package(dep)
 
71
               if newpkgs:
 
72
                    for newpkg in newpkgs:
 
73
                         if required.has_key(newpkg.package):
 
74
                              return
 
75
                    recurse(newpkgs[0])
 
76
               else:
 
77
                    sys.stderr.write("unsatisfied dependency of %s on '%s'\n" % (pkg.package, dep))
 
78
 
 
79
for root in remaining_args:
 
80
     pkgs = find_package(root)
 
81
     if not pkgs:
 
82
          sys.stderr.write("Can't find root package '%s'\n" % root)
 
83
          sys.exit(-1)
 
84
     for p in pkgs:
 
85
          recurse(p)
 
86
     
 
87
for pkg in required.keys():
 
88
     print pkg
 
89