1 import tarfile, os 2 import cfg 3 4 class Opk: 5 valid_control_fields = ["Package", "Version", "Depends", "Provides",\ 6 "Replaces", "Conflicts", "Suggests", "Recommends",\ 7 "Section", "Architecture", "Maintainer", "MD5Sum",\ 8 "Size", "InstalledSize", "Filename", "Source",\ 9 "Description", "OE", "Homepage", "Priority",\ 10 "Conffiles"] 11 12 def __init__(self, **control): 13 for k in control.keys(): 14 if k not in self.valid_control_fields: 15 raise Exception("Invalid control field: " 16 "{}".format(k)) 17 self.control = control 18 19 def write(self, tar_not_ar=False, data_files=None): 20 filename = "{Package}_{Version}_{Architecture}.opk"\ 21 .format(**self.control) 22 if os.path.exists(filename): 23 os.unlink(filename) 24 if os.path.exists("control"): 25 os.unlink("control") 26 if os.path.exists("control.tar.gz"): 27 os.unlink("control.tar.gz") 28 if os.path.exists("data.tar.gz"): 29 os.unlink("data.tar.gz") 30 31 f = open("control", "w") 32 for k in self.control.keys(): 33 f.write("{}: {}\n".format(k, self.control[k])) 34 f.close() 35 36 tar = tarfile.open("control.tar.gz", "w:gz") 37 tar.add("control") 38 tar.close() 39 40 tar = tarfile.open("data.tar.gz", "w:gz") 41 if data_files: 42 for df in data_files: 43 tar.add(df) 44 tar.close() 45 46 47 if tar_not_ar: 48 tar = tarfile.open(filename, "w:gz") 49 tar.add("control.tar.gz") 50 tar.add("data.tar.gz") 51 tar.close() 52 else: 53 os.system("ar q {} control.tar.gz data.tar.gz \ 54 2>/dev/null".format(filename)) 55 56 os.unlink("control") 57 os.unlink("control.tar.gz") 58 os.unlink("data.tar.gz") 59 60 class OpkGroup: 61 def __init__(self): 62 self.opk_list = [] 63 64 def add(self, **control): 65 self.opk_list.append(Opk(**control)) 66 67 def write_opk(self, tar_not_ar=False): 68 for o in self.opk_list: 69 o.write(tar_not_ar) 70 71 def write_list(self, filename="Packages"): 72 f = open(filename, "w") 73 for opk in self.opk_list: 74 for k in opk.control.keys(): 75 f.write("{}: {}\n".format(k, opk.control[k])) 76 f.write("Filename: {Package}_{Version}_{Architecture}" 77 ".opk\n".format(**opk.control)) 78 f.write("\n") 79 f.close() 80 81 82 def regress_init(): 83 """ 84 Initialisation and sanity checking. 85 """ 86 87 if not os.access(cfg.opkgcl, os.X_OK): 88 print("Cannot exec {}".format(cfg.opkgcl)) 89 exit(False) 90 91 os.chdir(cfg.opkdir) 92 93 os.system("rm -fr {}".format(cfg.offline_root)) 94 95 os.makedirs("{}/usr/lib/opkg".format(cfg.offline_root)) 96 os.makedirs("{}/etc/opkg".format(cfg.offline_root)) 97 98 f = open("{}/etc/opkg/opkg.conf".format(cfg.offline_root), "w") 99 f.write("arch all 1\n") 100 f.write("src test file:{}\n".format(cfg.opkdir)) 101 f.close()
This page was automatically generated by LXR 0.3.1. • OpenWrt