~xnox/ubuntu-archive-scripts/exclude-community-maas

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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#!/usr/bin/python
import subprocess
import sys
import time

from launchpadlib.launchpad import Launchpad

SERIES = "groovy"
POCKET = "Proposed"
QUEUE = "Unapproved"
SEED_WHITELIST = ["ubuntu-desktop-next", "ubuntugnome", "edubuntu"]
PACKAGESET_WHITELIST = {"ubuntugnome", "edubuntu", "i386-excludes", "i386-whitelist"}
SEEDED_IN_UBUNTU = "/home/ubuntu-archive/ubuntu-dev-tools/seeded-in-ubuntu"
PACKAGE_WHITELIST = ["upstart-app-launch", "click", "click-apparmor",
                     "apparmor-easyprof-ubuntu", "ubuntuone-credentials"]

DEBUG = 0
if len(sys.argv) > 1 and sys.argv[1] == "debug":
    DEBUG = 1

# Connect to Launchpad
lp = Launchpad.login_with("auto-accept", "production", version="devel")
ubuntu = lp.distributions['ubuntu']

# Get the primary archive
archive = ubuntu.getArchive(name="primary")

# Get the series
series = ubuntu.getSeries(name_or_version=SERIES)


# Process the packages
for pkg in series.getPackageUploads(status=QUEUE, pocket=POCKET,
                                    archive=archive):

    # Whitelisted packages
    if pkg.package_name in PACKAGE_WHITELIST:
        if DEBUG:
            print("%s: Accepting due to whitelist: %s (%s)" %
                  (time.asctime(), pkg.package_name, pkg.package_version))
        pkg.acceptFromQueue()

    # Extract all the packagesets and skip if in any
    package_sets = set()
    for pkgset in lp.packagesets.setsIncludingSource(
            distroseries=series, sourcepackagename=pkg.package_name):
        package_sets.add(pkgset.name)

    package_sets -= PACKAGESET_WHITELIST
    if package_sets:
        if DEBUG:
            print("Skipping '%s' because it's in the following packagesets: %s" %
                  (pkg.package_name, ", ".join(package_sets)))
        continue

    # Extract all the seeds and skip if in any
    seed = subprocess.Popen([SEEDED_IN_UBUNTU, pkg.package_name],
                            universal_newlines=True, stdout=subprocess.PIPE,
                            stderr=subprocess.PIPE)
    if seed.wait() != 0 or seed.stderr.read():
        if DEBUG:
            print("Skipping '%s' due to Invalid output from seeded-in-ubuntu: %s" %
                  (pkg.package_name, seed.stderr.read().strip()))
        continue

    seeds = set()
    for line in seed.stdout:
        if not line.startswith("  "):
            continue

        line = line.strip()
        seed = line.split(":")[0]
        if seed in SEED_WHITELIST:
            continue
        seeds.add(seed)

    if seeds:
        if DEBUG:
            print("Skipping '%s' because it's seeded on: %s" %
                  (pkg.package_name, ", ".join(seeds)))
        continue

    print("%s: Accepting: %s (%s)" % (time.asctime(), pkg.package_name,
                                 pkg.package_version))
    pkg.acceptFromQueue()