~ubuntu-china-devs/ubuntu-chinese/langpack-o-matic

1 by martin at piware
state for breezy final
1
#!/usr/bin/env python
2
3
# this is part of langpack-o-matic, by Martin Pitt <martin.pitt@canonical.com>
4
#
5
# (C) 2005 Canonical Ltd.
6
# Author: Martin Pitt <martin.pitt@canonical.com>
7
#
8
# Updates a language-support-%PKGNAME% source package after the supplemental
9
# dependencies changed.
10
#
11
# After this script finishes successfully, the source package path will be
12
# written to "updated-packages".
13
#
14
# Usage: update-depends <language> <distro-release>
15
16
import sys, os, os.path, time
17
18
# change working directory to the directory of this script
19
os.chdir(os.path.dirname(sys.argv[0]))
20
21
sys.path.append('lib')
22
import macros, makepkg
23
24
if len(sys.argv) != 3:
25
    print >> sys.stderr, 'Usage:', sys.argv[0], '<language> <distro release>'
26
    sys.exit(-1)
27
28
locale = sys.argv[1]
29
release = sys.argv[2]
30
31
# verify release and create config file
32
basepath = '../' + release
33
if not os.path.isdir(basepath):
34
    raise OSError, 'Invalid distribution release, %s does not exist' % basepath
35
151 by Martin Pitt
update-support: add support for overriding version with $LP_TIMESTAMP env var
36
macr = macros.LangpackMacros(locale, '', release, os.getenv('LP_TIMESTAMP', time.strftime('%Y%m%d')))
152 by Martin Pitt
update-support: simplify code
37
38
metapkgs = {
39
    'SUPDEPS': ['skel-support', macr.subst_string(basepath+'/sources-support/language-support-%PKGNAME%')],
40
    'FNDEPS': ['skel-fonts', macr.subst_string(basepath+'/sources-support/language-support-fonts-%PKGNAME%')],
41
    'IMDEPS': ['skel-input', macr.subst_string(basepath+'/sources-support/language-support-input-%PKGNAME%')],
42
    'WADEPS': ['skel-writing', macr.subst_string(basepath+'/sources-support/language-support-writing-%PKGNAME%')],
43
    'TRDEPS': ['skel-translations', macr.subst_string(basepath+'/sources-support/language-support-translations-%PKGNAME%')],
44
    'EXDEPS': ['skel-extra', macr.subst_string(basepath+'/sources-support/language-support-extra-%PKGNAME%')]
45
}
46
47
for m, (skel_dir, pkg) in metapkgs.iteritems():
48
    if macr[m]:
141.1.3 by Arne Goetje
* added support depends for hy, tl, uz, za
49
        # get old support dependencies
50
        old_deps = None
51
        oldcontrol = os.path.join(pkg, 'debian', 'control')
52
        if os.path.exists(oldcontrol):
53
            for l in open(oldcontrol):
54
        	if l.startswith('Depends: '):
55
        	    old_deps = set([p.strip() for p in l[9:].split(',')])
56
153 by Martin Pitt
update-support: do not regenerate unchanged packages, and fix changelog generation
57
        new_deps = set([p.strip() for p in macr.subst_string('%%%s%%' % m).split(',')])
58
59
        if old_deps == new_deps:
60
            print 'not regenerating %s, no dependency changes' % pkg
61
            continue
62
152 by Martin Pitt
update-support: simplify code
63
        makepkg.make_pkg(skel_dir, pkg, macr)
141.1.3 by Arne Goetje
* added support depends for hy, tl, uz, za
64
65
        # Update changelog
66
        if old_deps:
67
            added = new_deps - old_deps
68
            removed = old_deps - new_deps
69
            if added:
70
        	assert (os.spawnlpe(os.P_WAIT, 'dch', 'dch', '-p', 
71
        	    '-c', os.path.join(pkg, 'debian', 'changelog'),
72
        	    'Added: ' + (', '.join (added)), 
73
        	    {'DEBEMAIL': macr.subst_string('%UPLOADER%')}) == 0)
74
            if removed:
75
        	assert (os.spawnlpe(os.P_WAIT, 'dch', 'dch', '-p', 
76
        	    '-c', os.path.join(pkg, 'debian', 'changelog'),
77
        	    'Removed: ' + (', '.join (removed)),
78
        	    {'DEBEMAIL': macr.subst_string('%UPLOADER%')}) == 0)
79