|
12 | 12 | import logging
|
13 | 13 |
|
14 | 14 | from mlc.main import Automation
|
| 15 | +from mlc.main import CacheAction |
15 | 16 | import mlc.utils as utils
|
16 | 17 | from utils import *
|
17 | 18 |
|
@@ -39,6 +40,8 @@ def __init__(self, action_object, automation_file):
|
39 | 40 | self.logger = self.action_object.logger
|
40 | 41 | self.logger.propagate = False
|
41 | 42 |
|
| 43 | + # Create CacheAction using the same parent as the Script |
| 44 | + self.cache_action = CacheAction(self.action_object.parent) |
42 | 45 | self.tmp_file_env = 'tmp-env'
|
43 | 46 | self.tmp_file_env_all = 'tmp-env-all'
|
44 | 47 | self.tmp_file_run = 'tmp-run'
|
@@ -351,7 +354,6 @@ def _run(self, i):
|
351 | 354 | skip_cache = i.get('skip_cache', False)
|
352 | 355 | force_cache = i.get('force_cache', False)
|
353 | 356 |
|
354 |
| - fake_run = i.get('fake_run', False) |
355 | 357 | fake_run = i.get(
|
356 | 358 | 'fake_run',
|
357 | 359 | False) if 'fake_run' in i else i.get(
|
@@ -670,7 +672,7 @@ def _run(self, i):
|
670 | 672 | search_cache = {'action': 'search',
|
671 | 673 | 'target_name': 'cache',
|
672 | 674 | 'tags': cache_tags_without_tmp_string}
|
673 |
| - rc = self.action_object.access(search_cache) |
| 675 | + rc = self.cache_action.access(search_cache) |
674 | 676 | if rc['return'] > 0:
|
675 | 677 | return rc
|
676 | 678 |
|
@@ -1383,19 +1385,18 @@ def _run(self, i):
|
1383 | 1385 | ' - Creating new "cache" script artifact in the MLC local repository ...')
|
1384 | 1386 | logger.debug(recursion_spaces +
|
1385 | 1387 | ' - Tags: {}'.format(','.join(tmp_tags)))
|
1386 |
| - |
1387 | 1388 | if version != '':
|
1388 | 1389 | cached_meta['version'] = version
|
1389 | 1390 |
|
1390 | 1391 | ii = {'action': 'update',
|
1391 |
| - 'automation': self.meta['deps']['cache'], |
| 1392 | + 'target': 'cache', |
1392 | 1393 | 'search_tags': tmp_tags,
|
1393 | 1394 | 'script_alias': meta['alias'],
|
1394 | 1395 | 'tags': ','.join(tmp_tags),
|
1395 | 1396 | 'meta': cached_meta,
|
1396 | 1397 | 'force': True}
|
1397 | 1398 |
|
1398 |
| - r = self.action_object.access(ii) |
| 1399 | + r = self.cache_action.access(ii) |
1399 | 1400 | if r['return'] > 0:
|
1400 | 1401 | return r
|
1401 | 1402 |
|
@@ -1495,8 +1496,9 @@ def _run(self, i):
|
1495 | 1496 | if r['return'] > 0:
|
1496 | 1497 | return r
|
1497 | 1498 |
|
1498 |
| - if 'version-' + version not in cached_tags: |
1499 |
| - cached_tags.append('version-' + version) |
| 1499 | + r = get_version_tag_from_version(version, cached_tags) |
| 1500 | + if r['return'] > 0: |
| 1501 | + return r |
1500 | 1502 |
|
1501 | 1503 | if default_version in versions:
|
1502 | 1504 | versions_meta = versions[default_version]
|
@@ -1828,10 +1830,13 @@ def _run(self, i):
|
1828 | 1830 |
|
1829 | 1831 | # If return version
|
1830 | 1832 | if cache:
|
1831 |
| - if r.get('version', '') != '': |
| 1833 | + version = r.get('version', '') |
| 1834 | + if version != '': |
1832 | 1835 | cached_tags = [
|
1833 | 1836 | x for x in cached_tags if not x.startswith('version-')]
|
1834 |
| - cached_tags.append('version-' + r['version']) |
| 1837 | + r = get_version_tag_from_version(version, cached_tags) |
| 1838 | + if r['return'] > 0: |
| 1839 | + return r |
1835 | 1840 |
|
1836 | 1841 | if len(r.get('add_extra_cache_tags', [])) > 0:
|
1837 | 1842 | for t in r['add_extra_cache_tags']:
|
@@ -1873,9 +1878,14 @@ def _run(self, i):
|
1873 | 1878 | if r.get('version', '') != '':
|
1874 | 1879 | version = r.get('version')
|
1875 | 1880 | if cache:
|
1876 |
| - cached_tags = [ |
1877 |
| - x for x in cached_tags if not x.startswith('version-')] |
1878 |
| - cached_tags.append('version-' + r['version']) |
| 1881 | + version = r.get('version', '') |
| 1882 | + if version != '': |
| 1883 | + cached_tags = [ |
| 1884 | + x for x in cached_tags if not x.startswith('version-')] |
| 1885 | + r = get_version_tag_from_version( |
| 1886 | + version, cached_tags) |
| 1887 | + if r['return'] > 0: |
| 1888 | + return r |
1879 | 1889 |
|
1880 | 1890 | if len(r.get('add_extra_cache_tags', [])) > 0 and cache:
|
1881 | 1891 | for t in r['add_extra_cache_tags']:
|
@@ -2034,14 +2044,14 @@ def _run(self, i):
|
2034 | 2044 | cached_meta['dependent_cached_path'] = dependent_cached_path
|
2035 | 2045 |
|
2036 | 2046 | ii = {'action': 'update',
|
2037 |
| - 'automation': self.meta['deps']['cache'], |
| 2047 | + 'target': 'cache', |
2038 | 2048 | 'uid': cached_uid,
|
2039 | 2049 | 'meta': cached_meta,
|
2040 | 2050 | 'script_alias': meta['alias'],
|
2041 | 2051 | 'replace_lists': True, # To replace tags
|
2042 | 2052 | 'tags': ','.join(cached_tags)}
|
2043 | 2053 |
|
2044 |
| - r = self.action_object.access(ii) |
| 2054 | + r = self.cache_action.access(ii) |
2045 | 2055 | if r['return'] > 0:
|
2046 | 2056 | return r
|
2047 | 2057 |
|
@@ -4757,7 +4767,20 @@ def clean_some_tmp_files(self, i):
|
4757 | 4767 | return {'return': 0}
|
4758 | 4768 |
|
4759 | 4769 |
|
| 4770 | +def get_version_tag_from_version(version, cached_tags): |
| 4771 | + tags_to_add = [] |
| 4772 | + if version != '': |
| 4773 | + if 'version-' + version not in cached_tags: |
| 4774 | + cached_tags.append('version-' + version) |
| 4775 | + if '-git-' in version: |
| 4776 | + version_without_git_commit = version.split("-git-")[0] |
| 4777 | + if 'version-' + version_without_git_commit not in cached_tags: |
| 4778 | + cached_tags.append('version-' + version_without_git_commit) |
| 4779 | + return {'return': 0} |
| 4780 | + |
4760 | 4781 | ##############################################################################
|
| 4782 | + |
| 4783 | + |
4761 | 4784 | def find_cached_script(i):
|
4762 | 4785 | """
|
4763 | 4786 | Internal automation function: find cached script
|
@@ -4867,11 +4890,12 @@ def find_cached_script(i):
|
4867 | 4890 | recursion_spaces +
|
4868 | 4891 | ' - Prepared variations: {}'.format(variation_tags_string))
|
4869 | 4892 |
|
4870 |
| - # Add version |
4871 |
| - if version != '': |
4872 |
| - if 'version-' + version not in cached_tags: |
4873 |
| - cached_tags.append('version-' + version) |
4874 |
| - explicit_cached_tags.append('version-' + version) |
| 4893 | + r = get_version_tag_from_version(version, cached_tags) |
| 4894 | + if r['return'] > 0: |
| 4895 | + return r |
| 4896 | + get_version_tag_from_version(version, explicit_cached_tags) |
| 4897 | + if r['return'] > 0: |
| 4898 | + return r |
4875 | 4899 |
|
4876 | 4900 | # Add extra cache tags (such as "virtual" for python)
|
4877 | 4901 | if len(extra_cache_tags) > 0:
|
@@ -4905,9 +4929,9 @@ def find_cached_script(i):
|
4905 | 4929 | recursion_spaces +
|
4906 | 4930 | ' - Searching for cached script outputs with the following tags: {}'.format(search_tags))
|
4907 | 4931 |
|
4908 |
| - r = self_obj.action_object.access({'action': 'search', |
4909 |
| - 'target_name': 'cache', |
4910 |
| - 'tags': search_tags}) |
| 4932 | + r = self_obj.cache_action.access({'action': 'search', |
| 4933 | + 'target_name': 'cache', |
| 4934 | + 'tags': search_tags}) |
4911 | 4935 | if r['return'] > 0:
|
4912 | 4936 | return r
|
4913 | 4937 |
|
@@ -4986,21 +5010,6 @@ def find_cached_script(i):
|
4986 | 5010 | if r['return'] > 0:
|
4987 | 5011 | return r
|
4988 | 5012 |
|
4989 |
| - # Check if pre-process and detect |
4990 |
| - # if 'preprocess' in dir(customize_code): |
4991 |
| - |
4992 |
| - # logger.debug(recursion_spaces + ' - Running preprocess ...') |
4993 |
| - |
4994 |
| - # ii = copy.deepcopy(customize_common_input) |
4995 |
| - # ii['env'] = env |
4996 |
| - # ii['meta'] = meta |
4997 |
| - # # may need to detect versions in multiple paths |
4998 |
| - # ii['run_script_input'] = run_script_input |
4999 |
| - |
5000 |
| - # r = customize_code.preprocess(ii) |
5001 |
| - # if r['return'] > 0: |
5002 |
| - # return r |
5003 |
| - |
5004 | 5013 | ii = {
|
5005 | 5014 | 'run_script_input': run_script_input,
|
5006 | 5015 | 'env': env,
|
|
0 commit comments