{android,win32}/build.py: move class Project to build/project.py
This commit is contained in:
parent
86486336ec
commit
7a08ce7ece
|
@ -110,59 +110,7 @@ class AndroidNdkToolchain:
|
||||||
# default one on the build host
|
# default one on the build host
|
||||||
self.env['PKG_CONFIG_LIBDIR'] = os.path.join(install_prefix, 'lib/pkgconfig')
|
self.env['PKG_CONFIG_LIBDIR'] = os.path.join(install_prefix, 'lib/pkgconfig')
|
||||||
|
|
||||||
from build.download import download_and_verify
|
from build.project import Project
|
||||||
from build.tar import untar
|
|
||||||
|
|
||||||
class Project:
|
|
||||||
def __init__(self, url, md5, installed, name=None, version=None,
|
|
||||||
base=None,
|
|
||||||
use_cxx=False, use_clang=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
|
|
||||||
self.use_clang = use_clang
|
|
||||||
|
|
||||||
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):
|
|
||||||
return untar(self.download(toolchain), toolchain.src_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
|
|
||||||
|
|
||||||
class AutotoolsProject(Project):
|
class AutotoolsProject(Project):
|
||||||
def __init__(self, url, md5, installed, configure_args=[],
|
def __init__(self, url, md5, installed, configure_args=[],
|
||||||
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
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, use_clang=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
|
||||||
|
self.use_clang = use_clang
|
||||||
|
|
||||||
|
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
|
|
@ -58,59 +58,7 @@ class CrossGccToolchain:
|
||||||
# default one on the build host
|
# default one on the build host
|
||||||
self.env['PKG_CONFIG_LIBDIR'] = os.path.join(install_prefix, 'lib/pkgconfig')
|
self.env['PKG_CONFIG_LIBDIR'] = os.path.join(install_prefix, 'lib/pkgconfig')
|
||||||
|
|
||||||
from build.download import download_and_verify
|
from build.project import Project
|
||||||
from build.tar import untar
|
|
||||||
|
|
||||||
class Project:
|
|
||||||
def __init__(self, url, md5, installed, name=None, version=None,
|
|
||||||
base=None):
|
|
||||||
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
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
class AutotoolsProject(Project):
|
class AutotoolsProject(Project):
|
||||||
def __init__(self, url, md5, installed, configure_args=[],
|
def __init__(self, url, md5, installed, configure_args=[],
|
||||||
|
|
Loading…
Reference in New Issue