import sys
import shutil
import tarfile
-import urllib2
import hashlib
import argparse
import subprocess
+import ssl
sys.path.append(os.path.join(os.path.dirname(__file__), "..", "scripts"))
return None
def storeExtractedChecksum (self, checksum):
- writeFile(self.getExtractedChecksumFilePath(), checksum)
+ checksum_bytes = checksum.encode("utf-8")
+ writeFile(self.getExtractedChecksumFilePath(), checksum_bytes)
+
+ def connectToUrl (self, url):
+ result = None
+
+ if sys.version_info < (3, 0):
+ from urllib2 import urlopen
+ else:
+ from urllib.request import urlopen
+
+ if args.insecure:
+ print("Ignoring certificate checks")
+ ssl_context = ssl._create_unverified_context()
+ result = urlopen(url, context=ssl_context)
+ else:
+ result = urlopen(url)
+
+ return result
def fetchAndVerifyArchive (self):
- print "Fetching %s" % self.url
+ print("Fetching %s" % self.url)
- req = urllib2.urlopen(self.url)
+ req = self.connectToUrl(self.url)
data = req.read()
checksum = computeChecksum(data)
dstPath = os.path.join(EXTERNAL_DIR, self.baseDir, self.archiveDir, self.filename)
writeFile(dstPath, data)
def extract (self):
- print "Extracting %s to %s/%s" % (self.filename, self.baseDir, self.extractDir)
+ print("Extracting %s to %s/%s" % (self.filename, self.baseDir, self.extractDir))
srcPath = os.path.join(EXTERNAL_DIR, self.baseDir, self.archiveDir, self.filename)
tmpPath = os.path.join(EXTERNAL_DIR, ".extract-tmp-%s" % self.baseDir)
]
def parseArgs ():
+ versionsForInsecure = ((2,7,9), (3,4,3))
+ versionsForInsecureStr = ' or '.join(('.'.join(str(x) for x in v)) for v in versionsForInsecure)
+
parser = argparse.ArgumentParser(description = "Fetch external sources")
parser.add_argument('--clean', dest='clean', action='store_true', default=False,
help='Remove sources instead of fetching')
+ parser.add_argument('--insecure', dest='insecure', action='store_true', default=False,
+ help="Disable certificate check for external sources."
+ " Minimum python version required " + versionsForInsecureStr)
parser.add_argument('--protocol', dest='protocol', default=None, choices=['ssh', 'https'],
help="Select protocol to checkout git repositories.")
- return parser.parse_args()
+
+ args = parser.parse_args()
+
+ if args.insecure:
+ for versionItem in versionsForInsecure:
+ if (sys.version_info.major == versionItem[0]):
+ if sys.version_info < versionItem:
+ parser.error("For --insecure minimum required python version is " +
+ versionsForInsecureStr)
+ break;
+
+ return args
if __name__ == "__main__":
args = parseArgs()