#!/usr/bin/env python
#
# Copyright 2014 Ettus Research LLC
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
#
"""
Populates the current directory with a valid set of binaries for the
current commit.
"""
import os
import re
import subprocess
import uhdimgs
def get_md5_and_zipfilename():
""" Return MD5 hash and ZIP filename from the host/CMakeLists.txt file. """
cmakef = open(uhdimgs.get_cmake_main_file(), 'r').read()
md5_regex = re.compile(r'UHD_IMAGES_MD5SUM\s*"(?P[0-9a-f]{32})', flags=re.MULTILINE)
md5 = md5_regex.search(cmakef).groups('md5')[0]
filename_regex = re.compile(r'UHD_IMAGES_DOWNLOAD_SRC\s*"(?P[^"]*\.zip)', flags=re.MULTILINE)
filename = filename_regex.search(cmakef).groups('filename')[0]
return (md5, filename)
def main():
" Go, go, go! "
# Switch to correct dir
img_root_dir = os.path.join(uhdimgs.get_images_dir(), 'images')
os.chdir(uhdimgs.get_images_dir())
# Read out the CMakeLists.txt file, get filename
print "== Reading MD5 and ZIP filename for current commit from {0}...".format(uhdimgs.get_cmake_main_file())
(md5, filename) = get_md5_and_zipfilename()
print "== Starting download..."
try:
downloader_cmd = [
'python',
'../host/utils/uhd_images_downloader.py.in',
'-i', img_root_dir,
'-f', filename,
'-c', md5
]
subprocess.check_call(downloader_cmd)
except (subprocess.CalledProcessError, OSError):
print "[ERROR] Failed to run downloader script."
exit(1)
print "== Done!"
if __name__ == "__main__":
main()