307964d874
Support for GCC has been dropped from NDK r13. Let's switch everything to clang before they really remove GCC completely.
60 lines
1.8 KiB
Python
60 lines
1.8 KiB
Python
import os, shutil
|
|
import re
|
|
|
|
from build.download import download_and_verify
|
|
from build.tar import untar
|
|
|
|
class Project:
|
|
def __init__(self, url, md5, installed, name=None, version=None,
|
|
base=None,
|
|
use_cxx=False):
|
|
if base is None:
|
|
basename = os.path.basename(url)
|
|
m = re.match(r'^(.+)\.(tar(\.(gz|bz2|xz|lzma))?|zip)$', basename)
|
|
if not m: raise
|
|
self.base = m.group(1)
|
|
else:
|
|
self.base = base
|
|
|
|
if name is None or version is None:
|
|
m = re.match(r'^([-\w]+)-(\d[\d.]*[a-z]?)$', self.base)
|
|
if name is None: name = m.group(1)
|
|
if version is None: version = m.group(2)
|
|
|
|
self.name = name
|
|
self.version = version
|
|
|
|
self.url = url
|
|
self.md5 = md5
|
|
self.installed = installed
|
|
|
|
self.use_cxx = use_cxx
|
|
|
|
def download(self, toolchain):
|
|
return download_and_verify(self.url, self.md5, toolchain.tarball_path)
|
|
|
|
def is_installed(self, toolchain):
|
|
tarball = self.download(toolchain)
|
|
installed = os.path.join(toolchain.install_prefix, self.installed)
|
|
tarball_mtime = os.path.getmtime(tarball)
|
|
try:
|
|
return os.path.getmtime(installed) >= tarball_mtime
|
|
except FileNotFoundError:
|
|
return False
|
|
|
|
def unpack(self, toolchain, out_of_tree=True):
|
|
if out_of_tree:
|
|
parent_path = toolchain.src_path
|
|
else:
|
|
parent_path = toolchain.build_path
|
|
return untar(self.download(toolchain), parent_path, self.base)
|
|
|
|
def make_build_path(self, toolchain):
|
|
path = os.path.join(toolchain.build_path, self.base)
|
|
try:
|
|
shutil.rmtree(path)
|
|
except FileNotFoundError:
|
|
pass
|
|
os.makedirs(path, exist_ok=True)
|
|
return path
|