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 |