{android,win32}/build.py: move class Project to build/project.py
This commit is contained in:
		| @@ -110,59 +110,7 @@ class AndroidNdkToolchain: | ||||
|         # default one on the build host | ||||
|         self.env['PKG_CONFIG_LIBDIR'] = os.path.join(install_prefix, 'lib/pkgconfig') | ||||
|  | ||||
| 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): | ||||
|         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 | ||||
| from build.project import Project | ||||
|  | ||||
| class AutotoolsProject(Project): | ||||
|     def __init__(self, url, md5, installed, configure_args=[], | ||||
|   | ||||
							
								
								
									
										60
									
								
								python/build/project.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								python/build/project.py
									
									
									
									
									
										Normal file
									
								
							| @@ -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 | ||||
|         self.env['PKG_CONFIG_LIBDIR'] = os.path.join(install_prefix, 'lib/pkgconfig') | ||||
|  | ||||
| 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): | ||||
|         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 | ||||
| from build.project import Project | ||||
|  | ||||
| class AutotoolsProject(Project): | ||||
|     def __init__(self, url, md5, installed, configure_args=[], | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Max Kellermann
					Max Kellermann