Files
android
doc
m4
python
build
autotools.py
boost.py
dirs.py
download.py
ffmpeg.py
libs.py
project.py
tar.py
zlib.py
scripts
src
systemd
test
win32
.gitignore
AUTHORS
COPYING
INSTALL
Makefile.am
NEWS
README.md
autogen.sh
configure.ac
mpd.svg
valgrind.suppressions
mpd/python/build/project.py
Max Kellermann 307964d874 android/build.py: always build with clang
Support for GCC has been dropped from NDK r13.  Let's switch
everything to clang before they really remove GCC completely.
2016-10-26 17:00:17 +02:00

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