File: platforms.py

package info (click to toggle)
google-android-installers 1675172738
  • links: PTS, VCS
  • area: non-free
  • in suites: bookworm
  • size: 4,384 kB
  • sloc: xml: 12,099; sh: 1,118; makefile: 758; python: 722
file content (141 lines) | stat: -rw-r--r-- 6,356 bytes parent folder | download | duplicates (4)
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
import re, os.path, glob
import maintscript.platforms_install, maintscript.platforms_postinst, maintscript.platforms_postrm, maintscript.platforms_config, maintscript.platforms_templates, maintscript.platforms_dirs, maintscript.platforms_control, maintscript.platforms_lintianoverrides, maintscript.platforms_rules

def get(soup,pif):
    pkg_dir = os.path.join(glob.glob(os.path.expanduser(pif))[0], '')
    # Get platforms list
    platforms_list = soup.findAll('platform') 
    # Show results
    for platform in platforms_list:
        api_level = platform.find('api-level').string
        version =  platform.version.string
        archive = platform.archives.archive.url.string
        revision = re.search("_r[0-9]*",archive).group()[2:]
        sha1 =  platform.archives.archive.checksum.string
        binary = "google-android-platform-"+api_level+"-installer"
        install = pkg_dir+"debian/"+binary+".install"
        postinst = pkg_dir+"debian/"+binary+".postinst"
        postrm = pkg_dir+"debian/"+binary+".postrm"
        config = pkg_dir+"debian/"+binary+".config"
        templates = pkg_dir+"debian/"+binary+".templates"
        dirs = pkg_dir+"debian/"+binary+".dirs"
        overrides = pkg_dir+"debian/"+binary+".lintian-overrides"
        control = pkg_dir+"debian/control"
        rules = pkg_dir+"debian/rules"
        sha1sum = pkg_dir+"for-postinst/default/"+archive+".sha1"
        current_sha1sum = ""

        print(("\033[1;33m- "+platform.description.string+"\033[0m ("+version+")"))

        # Generate/Update <package>.install
        if os.path.isfile(install):
            f = open(install)
            current_sha1sum = re.search("(android|platform)-[0-9]*((.[0-9]*)*)?_r[0-9]*(-linux)?.zip.sha1",f.readlines()[1]).group()
            if current_sha1sum == archive+".sha1":
                print("\033[0;32mOK\033[0m "+binary+".install")
            else:
                print("\033[0;33mOUTDATED\033[0m "+binary+".install")
                f.seek(0)
                i = f.read()
                o = open(install,"w")
                o.write(i.replace(current_sha1sum, archive+".sha1"))
                print(":... \033[0;34mUPDATED\033[0m from "+current_sha1sum+" to "+archive+".sha1")
                o.close()
        else:
            print("\033[0;31mNOT EXIST\033[0m "+binary+".install")
            maintscript.platforms_install.generate(install,api_level,archive)       

        # Generate/Update <archive>.sha1
	current_sha1sum_file = pkg_dir+"for-postinst/default/"+current_sha1sum
        generate_sha1 = False
        if current_sha1sum != "":
            if os.path.isfile(current_sha1sum_file):
                f = open(current_sha1sum_file)
                current_sha1 = re.search(r'\b[0-9a-f]{5,40}\b',f.readlines()[0]).group()
                if current_sha1sum_file != sha1sum:
                    # Remove outdated sha1 file
                    try:
		        os.remove(current_sha1sum_file)
	            except OSError:
		        pass
                    # Generate new sha1 file
                    if os.path.isfile(sha1sum):
                        print("\033[0;32mOK\033[0m "+archive+".sha1")
                    else:
                        generate_sha1 = True
                elif current_sha1 != sha1:
                    generate_sha1 = True
            else:
                generate_sha1 = True
        else:
            generate_sha1 = True

        #Generate SHA1 if needed
        if generate_sha1 == True:
            i = open(pkg_dir+"for-postinst/default/"+archive+".sha1", "w+")
            i.write(sha1+"  "+archive)
            i.close()
            print ":... \033[0;34mGENERATED\033[0m "+archive+".sha1"

        # Generate/Update <package>.postinst
        if os.path.isfile(postinst):
            f = open(postinst)
            match = re.search("r[0-9]+",f.readlines()[7]).group()[1:]
            if int(match) == int(revision):
                print("\033[0;32mOK\033[0m "+binary+".postinst")
            else:
                print("\033[0;33mOUTDATED\033[0m "+binary+".postinst")
                f.seek(0)
                i = f.read()
                o = open(postinst,"w")
                o.write(i.replace(match, revision))
                print(":... \033[0;34mUPDATED\033[0m from revision "+match+" to "+revision)
                o.close()
        else:
            print("\033[0;31mNOT EXIST\033[0m "+binary+".postinst")
            maintscript.platforms_postinst.generate(postinst,api_level,archive)

        #Generate <package>.postrm
        if os.path.isfile(postrm):
           print("\033[0;32mOK\033[0m "+binary+".postrm")
        else:
           print("\033[0;31mNOT EXIST\033[0m "+binary+".postrm")
           maintscript.platforms_postrm.generate(postrm,api_level)

        #Generate <package>.config
        if os.path.isfile(config):
           print("\033[0;32mOK\033[0m "+binary+".config")
        else:
           print("\033[0;31mNOT EXIST\033[0m "+binary+".config")
           maintscript.platforms_config.generate(config,api_level)

        #Generate <package>.templates
        if os.path.isfile(templates):
           print("\033[0;32mOK\033[0m "+binary+".templates")
        else:
           print("\033[0;31mNOT EXIST\033[0m "+binary+".templates")
           maintscript.platforms_templates.generate(templates,api_level)

        #Generate <package>.dirs
        if os.path.isfile(dirs):
           print("\033[0;32mOK\033[0m "+binary+".dirs")
        else:
           print("\033[0;31mNOT EXIST\033[0m "+binary+".dirs")
           maintscript.platforms_dirs.generate(dirs,api_level)

        #Generate <package>.lintian-overrides
        if os.path.isfile(overrides):
           print("\033[0;32mOK\033[0m "+binary+".lintian-overrides")
        else:
           print("\033[0;31mNOT EXIST\033[0m "+binary+".lintian-overrides")
           maintscript.platforms_lintianoverrides.generate(overrides,api_level)

        #Add package to d/control
        if "platform-"+api_level+"-" in open(control).read():
           print("\033[0;32mOK\033[0m "+binary+" in d/control")
        else:
           print("\033[0;31mNOT EXIST\033[0m "+binary+" in d/control")
           maintscript.platforms_control.generate(control,api_level,archive)

        #Add package to d/rules
        maintscript.platforms_rules.generate(rules,api_level,revision)