~vila/udd/735477-kill-harder

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/usr/bin/python

import datetime
import os
import sys

from launchpadlib.errors import HTTPError

sys.path.insert(0, os.path.dirname(__file__))
import icommon

lock = icommon.lock_list_packages()
if lock is None:
    print "Another instance of list_packages is already running."
    sys.exit(0)
try:
    lp = icommon.get_lp()
    debian = lp.distributions['ubuntu']
    ubuntu = lp.distributions['ubuntu']
    d_archive = debian.main_archive
    u_archive = ubuntu.main_archive
    current_u_series_name = ubuntu.current_series.name


    db = icommon.PackageDatabase(icommon.sqlite_package_file)

    last_update = db.last_update()
    if last_update is not None:
        last_update = last_update - datetime.timedelta(0, 86400)
        last_update = last_update.isoformat()

    for s in ubuntu.series:
        collection = icommon.lp_call(icommon.call_with_limited_size,
                u_archive.getPublishedSources,
                status="Published",
                distro_series=s, created_since_date=last_update)
        for publication in icommon.iterate_collection(collection):
            packages = {}
            if publication.source_package_name in packages:
                continue
            if (s.name == current_u_series_name and
                publication.component_name == "main"):
                packages[publication.source_package_name] = 1
            else:
                packages[publication.source_package_name] = 0
            db.update_packages(packages)
    for s in debian.series:
        collection = icommon.lp_call(icommon.call_with_limited_size,
                d_archive.getPublishedSources,
                status="Pending",
                distro_series=s, created_since_date=last_update)
        for publication in icommon.iterate_collection(collection):
            packages = {}
            if publication.source_package_name in packages:
                continue
            packages[publication.source_package_name] = 0
            db.update_packages(packages)

except HTTPError, e:
    sys.stderr.write(e.content + "\n")
    raise
except KeyboardInterrupt, e:
    sys.stderr.write("KeyboardInterrupt\n")
    sys.exit(1)
finally:
    lock.close()