diff options
Diffstat (limited to 'tsp/scripts/download_image.py')
-rwxr-xr-x | tsp/scripts/download_image.py | 160 |
1 files changed, 75 insertions, 85 deletions
diff --git a/tsp/scripts/download_image.py b/tsp/scripts/download_image.py index 895ea5c..33e3158 100755 --- a/tsp/scripts/download_image.py +++ b/tsp/scripts/download_image.py @@ -27,7 +27,7 @@ import urllib2 import argparse import logging -__version__ = "0.2.2" +__version__ = "1.0.0" __license__ = "APACHE-2.0" __author__ = "Aleksander Mistewicz" __author_email__ = "a.mistewicz@samsung.com" @@ -97,56 +97,70 @@ class ImageVersion(object): class ImageDownloader: - BASE_ARM_WAYLAND = "images/arm-wayland/" - BOOT_NAME = "common-boot-armv7l-odroidu3" - USR_NAME = "common-wayland-3parts-armv7l-odroidu3" - - def __init__(self, url, arch): - if not arch or "i586" in arch: - self.BASE_MINNOW_WAYLAND = "images/ia32-wayland/" - self.MINNOW_NAME = "common-wayland-efi-i586" - else: - self.BASE_MINNOW_WAYLAND = "images/x86_64-wayland/" - self.MINNOW_NAME = "common-wayland-efi-x86_64" + def __init__(self, url, target): self.url = url + self.target = target img_ver = ImageVersion(url) self.snap_nr = img_ver.get_snapshot() self.ver_nr = img_ver.get_version() self.is_prerelease = img_ver.is_prerelease() - - odroid_common_boot_prefix = self.url + self.BASE_ARM_WAYLAND + self.BOOT_NAME - self.odroid_boot_path = odroid_common_boot_prefix \ - + "/tizen-common_" + self.ver_nr + "_" + self.BOOT_NAME - self.odroid_boot_path_md5 = odroid_common_boot_prefix + "/MD5SUMS" - - odroid_common_usr_prefix = self.url + self.BASE_ARM_WAYLAND + self.USR_NAME - self.odroid_usr_path = odroid_common_usr_prefix \ - + "/tizen-common_" + self.ver_nr + "_" + self.USR_NAME - self.odroid_usr_path_md5 = odroid_common_usr_prefix + "/MD5SUMS" - self.odroid_snap_pkgs = "http://download.tizen.org/snapshots/tizen/common/tizen-common_" \ - + self.snap_nr + "/" + self.BASE_ARM_WAYLAND + self.USR_NAME \ - + "/tizen-common_" + self.snap_nr + "_" + self.USR_NAME + ".packages" - - minnow_common_minnow_prefix = self.url + self.BASE_MINNOW_WAYLAND + self.MINNOW_NAME - self.minnow_usr_path = minnow_common_minnow_prefix \ - + "/tizen-common_" + self.ver_nr + "_" + self.MINNOW_NAME - self.minnow_usr_path_md5 = minnow_common_minnow_prefix + "/MD5SUMS" - self.minnow_snap_pkgs = "http://download.tizen.org/snapshots/tizen/common/tizen-common_" \ - + self.snap_nr + "/" + self.BASE_MINNOW_WAYLAND + self.MINNOW_NAME \ - + "/tizen-common_" + self.snap_nr + "_" + self.MINNOW_NAME + ".packages" + self.diff_report_filename = "diff-" + self.target + ".report" logging.debug('snapshot number: %s', self.snap_nr) logging.debug('version number: %s', self.ver_nr) - logging.debug('odroid (boot path): %s', self.odroid_boot_path) - logging.debug('odroid (usr path): %s', self.odroid_usr_path) - logging.debug('minnow (usr path): %s', self.minnow_usr_path) - - def create_projectconf(self, filename, arch, target): - logging.debug("Create project.conf file for: %s %s", arch, target) - prjconf = [ "tizen-common_" + self.ver_nr, arch, target ] - with open(filename, 'w') as f: + + if "odroid" == self.target: + self.BASE_ARM_WAYLAND = "images/arm-wayland/" + self.BOOT_NAME = "common-boot-armv7l-odroidu3" + self.USR_NAME = "common-wayland-3parts-armv7l-odroidu3" + + odroid_common_boot_prefix = self.url + self.BASE_ARM_WAYLAND + self.BOOT_NAME + self.odroid_boot_path = odroid_common_boot_prefix \ + + "/tizen-common_" + self.ver_nr + "_" + self.BOOT_NAME + self.odroid_boot_path_md5 = odroid_common_boot_prefix + "/MD5SUMS" + + odroid_common_usr_prefix = self.url + self.BASE_ARM_WAYLAND + self.USR_NAME + self.odroid_usr_path = odroid_common_usr_prefix \ + + "/tizen-common_" + self.ver_nr + "_" + self.USR_NAME + self.odroid_usr_path_md5 = odroid_common_usr_prefix + "/MD5SUMS" + self.odroid_snap_pkgs = "http://download.tizen.org/snapshots/tizen/common/tizen-common_" \ + + self.snap_nr + "/" + self.BASE_ARM_WAYLAND + self.USR_NAME \ + + "/tizen-common_" + self.snap_nr + "_" + self.USR_NAME + ".packages" + logging.debug('odroid (boot path): %s', self.odroid_boot_path) + logging.debug('odroid (usr path): %s', self.odroid_usr_path) + elif "minnow" in self.target: + if target == "minnow32": + self.BASE_MINNOW_WAYLAND = "images/ia32-wayland/" + self.MINNOW_NAME = "common-wayland-efi-i586" + elif target == "minnow64": + self.BASE_MINNOW_WAYLAND = "images/x86_64-wayland/" + self.MINNOW_NAME = "common-wayland-efi-x86_64" + minnow_common_minnow_prefix = self.url + self.BASE_MINNOW_WAYLAND + self.MINNOW_NAME + self.minnow_usr_path = minnow_common_minnow_prefix \ + + "/tizen-common_" + self.ver_nr + "_" + self.MINNOW_NAME + self.minnow_usr_path_md5 = minnow_common_minnow_prefix + "/MD5SUMS" + self.minnow_snap_pkgs = "http://download.tizen.org/snapshots/tizen/common/tizen-common_" \ + + self.snap_nr + "/" + self.BASE_MINNOW_WAYLAND + self.MINNOW_NAME \ + + "/tizen-common_" + self.snap_nr + "_" + self.MINNOW_NAME + ".packages" + + logging.debug('minnow (usr path): %s', self.minnow_usr_path) + else: + logging.error("Unkonown target %s", self.target) + + def run(self): + if "odroid" == self.target: + self.odroid() + elif "minnow" in self.target: + self.minnow() + else: + logging.error("Unkonown target %s", self.target) + + def create_projectconf(self, arch, target_name): + logging.debug("Create project.conf file for: %s %s", arch, target_name) + prjconf = [ "tizen-common_" + self.ver_nr, arch, target_name ] + with open("project-" + self.target + ".conf", 'w') as f: f.write('\n'.join(prjconf) + '\n') def fetch_url(self, url): @@ -159,12 +173,12 @@ class ImageDownloader: f = target.fetch() return f - def check_diff(self, filename, snap_pkgs, pre_pkgs): + def check_diff(self, snap_pkgs, pre_pkgs): logging.debug("Checking diff") set_snap_pkgs = set(snap_pkgs.splitlines()) set_pre_pkgs = set(pre_pkgs.splitlines()) diff = set_pre_pkgs - set_snap_pkgs - with open(filename, 'w') as f: + with open(self.diff_report_filename, 'w') as f: ret = (len(diff) == 0) if ret: s = 'Images are identical' @@ -174,9 +188,9 @@ class ImageDownloader: f.write(s) return ret - def write_diff_for_snapshot(self, filename): + def write_diff_for_snapshot(self): logging.debug("Write diff for snapshot image") - with open(filename, 'w') as f: + with open(self.diff_report_filename, 'w') as f: f.write('Snapshot') def check_md5(self, url): @@ -204,29 +218,30 @@ class ImageDownloader: def odroid(self): logging.debug("Downloading images for: odroid") - self.create_projectconf("project-odroid.conf", "armv7l", "Odroid U3") - diff_report_filename="diff-odroid.report" + self.create_projectconf("armv7l", "Odroid U3") if not self.is_prerelease: - self.write_diff_for_snapshot(diff_report_filename) + self.write_diff_for_snapshot() else: - if self.check_diff(diff_report_filename, self.fetch_url(self.odroid_usr_path + ".packages"), \ + if self.check_diff(self.fetch_url(self.odroid_usr_path + ".packages"), \ self.fetch_url(self.odroid_snap_pkgs)): return - logging.debug("Downloading prerelease images...") + logging.debug("Downloading images...") self.get([self.odroid_boot_path + ".tar.gz"], self.odroid_boot_path_md5) self.get([self.odroid_usr_path + ".tar.gz"], self.odroid_usr_path_md5) def minnow(self): logging.debug("Downloading images for: minnowboard") - self.create_projectconf("project-minnow.conf", "i586/x86_64", "MinnowboardMax") - diff_report_filename="diff-minnow.report" + if self.target == "minnow32": + self.create_projectconf("i586", "MinnowboardMax") + else: + self.create_projectconf("x86_64", "MinnowboardMax") if not self.is_prerelease: - self.write_diff_for_snapshot(diff_report_filename) + self.write_diff_for_snapshot() else: - if self.check_diff(diff_report_filename, self.fetch_url(self.minnow_usr_path + ".packages"), \ + if self.check_diff(self.fetch_url(self.minnow_usr_path + ".packages"), \ self.fetch_url(self.minnow_snap_pkgs)): return - logging.debug("Downloading prerelease images...") + logging.debug("Downloading images...") self.get([self.minnow_usr_path + "-sda.raw.bz2", self.minnow_usr_path + "-sda.bmap"], \ self.minnow_usr_path_md5) @@ -241,25 +256,10 @@ def parse_arguments(): parser.add_argument("url", metavar='<url>', type=str, help='URL of prerelease or snapshot to download images from.') - parser.add_argument("-m", "--minnow", - action="store_true", default=False, dest="minnow", - help="Download images for minnowboard") - - parser.add_argument("--minnow32", - action="store_true", default=False, dest="minnow32", - help="Download images for minnowboard i586") - - parser.add_argument("--minnow64", - action="store_true", default=False, dest="minnow64", - help="Download images for minnowboard x86_64") - - parser.add_argument("-o", "--odroid", - action="store_true", default=False, dest="odroid", - help="Download images for odroid") - parser.add_argument("-a", "--arch", - action="store", dest="arch", - help="Choose architecture of minnowboard images") + parser.add_argument("-t", "--target", + action="store", dest="target", + help="Choose target device (odroid, minnow32, minnow64) to download images for") parser.add_argument("-l", "--log", action="store", dest="loglevel", @@ -277,18 +277,8 @@ def main(): raise ValueError('Invalid log level: %s' % args.loglevel) logging.basicConfig(format='%(asctime)s %(message)s',level=numeric_level) logging.debug("Begin") - if args.minnow64: - downloader = ImageDownloader(args.url, 'x86_64') - args.minnow = True - elif args.minnow32: - downloader = ImageDownloader(args.url, 'i586') - args.minnow = True - else: - downloader = ImageDownloader(args.url, args.arch) - if args.odroid: - downloader.odroid() - if args.minnow: - downloader.minnow() + downloader = ImageDownloader(args.url, args.target) + downloader.run() logging.debug("End") if __name__ == '__main__': |