Phil Dawson pushed to branch aevri/rm-exitstack at BuildStream / buildstream
Commits:
-
12719f0d
by Jürg Billeter at 2018-10-22T17:05:41Z
-
a7a28d14
by Jürg Billeter at 2018-10-22T17:05:41Z
-
be29e0f5
by Jürg Billeter at 2018-10-22T17:53:26Z
-
898db5af
by Angelos Evripiotis at 2018-10-23T08:37:47Z
4 changed files:
- buildstream/_artifactcache/artifactcache.py
- buildstream/_artifactcache/cascache.py
- buildstream/plugins/sources/deb.py
- buildstream/plugins/sources/tar.py
Changes:
| ... | ... | @@ -228,7 +228,7 @@ class ArtifactCache(): |
| 228 | 228 |
self._required_elements.update(elements)
|
| 229 | 229 |
|
| 230 | 230 |
# For the cache keys which were resolved so far, we bump
|
| 231 |
- # the atime of them.
|
|
| 231 |
+ # the mtime of them.
|
|
| 232 | 232 |
#
|
| 233 | 233 |
# This is just in case we have concurrent instances of
|
| 234 | 234 |
# BuildStream running with the same artifact cache, it will
|
| ... | ... | @@ -240,7 +240,7 @@ class ArtifactCache(): |
| 240 | 240 |
for key in (strong_key, weak_key):
|
| 241 | 241 |
if key:
|
| 242 | 242 |
try:
|
| 243 |
- self.update_atime(key)
|
|
| 243 |
+ self.update_mtime(element, key)
|
|
| 244 | 244 |
except ArtifactError:
|
| 245 | 245 |
pass
|
| 246 | 246 |
|
| ... | ... | @@ -391,15 +391,16 @@ class ArtifactCache(): |
| 391 | 391 |
def preflight(self):
|
| 392 | 392 |
pass
|
| 393 | 393 |
|
| 394 |
- # update_atime()
|
|
| 394 |
+ # update_mtime()
|
|
| 395 | 395 |
#
|
| 396 |
- # Update the atime of an artifact.
|
|
| 396 |
+ # Update the mtime of an artifact.
|
|
| 397 | 397 |
#
|
| 398 | 398 |
# Args:
|
| 399 |
+ # element (Element): The Element to update
|
|
| 399 | 400 |
# key (str): The key of the artifact.
|
| 400 | 401 |
#
|
| 401 |
- def update_atime(self, key):
|
|
| 402 |
- raise ImplError("Cache '{kind}' does not implement contains()"
|
|
| 402 |
+ def update_mtime(self, element, key):
|
|
| 403 |
+ raise ImplError("Cache '{kind}' does not implement update_mtime()"
|
|
| 403 | 404 |
.format(kind=type(self).__name__))
|
| 404 | 405 |
|
| 405 | 406 |
# initialize_remotes():
|
| ... | ... | @@ -538,8 +538,9 @@ class CASCache(ArtifactCache): |
| 538 | 538 |
except FileNotFoundError as e:
|
| 539 | 539 |
raise ArtifactError("Attempt to access unavailable artifact: {}".format(e)) from e
|
| 540 | 540 |
|
| 541 |
- def update_atime(self, ref):
|
|
| 541 |
+ def update_mtime(self, element, key):
|
|
| 542 | 542 |
try:
|
| 543 |
+ ref = self.get_artifact_fullname(element, key)
|
|
| 543 | 544 |
os.utime(self._refpath(ref))
|
| 544 | 545 |
except FileNotFoundError as e:
|
| 545 | 546 |
raise ArtifactError("Attempt to access unavailable artifact: {}".format(e)) from e
|
| ... | ... | @@ -50,7 +50,7 @@ deb - stage files from .deb packages |
| 50 | 50 |
"""
|
| 51 | 51 |
|
| 52 | 52 |
import tarfile
|
| 53 |
-from contextlib import contextmanager, ExitStack
|
|
| 53 |
+from contextlib import contextmanager
|
|
| 54 | 54 |
import arpy # pylint: disable=import-error
|
| 55 | 55 |
|
| 56 | 56 |
from .tar import TarSource
|
| ... | ... | @@ -69,8 +69,7 @@ class DebSource(TarSource): |
| 69 | 69 |
|
| 70 | 70 |
@contextmanager
|
| 71 | 71 |
def _get_tar(self):
|
| 72 |
- with ExitStack() as context:
|
|
| 73 |
- deb_file = context.enter_context(open(self._get_mirror_file(), 'rb'))
|
|
| 72 |
+ with open(self._get_mirror_file(), 'rb') as deb_file:
|
|
| 74 | 73 |
arpy_archive = arpy.Archive(fileobj=deb_file)
|
| 75 | 74 |
arpy_archive.read_all_headers()
|
| 76 | 75 |
data_tar_arpy = [v for k, v in arpy_archive.archived_files.items() if b"data.tar" in k][0]
|
| ... | ... | @@ -57,7 +57,7 @@ tar - stage files from tar archives |
| 57 | 57 |
|
| 58 | 58 |
import os
|
| 59 | 59 |
import tarfile
|
| 60 |
-from contextlib import contextmanager, ExitStack
|
|
| 60 |
+from contextlib import contextmanager
|
|
| 61 | 61 |
from tempfile import TemporaryFile
|
| 62 | 62 |
|
| 63 | 63 |
from buildstream import SourceError
|
| ... | ... | @@ -88,8 +88,7 @@ class TarSource(DownloadableFileSource): |
| 88 | 88 |
def _run_lzip(self):
|
| 89 | 89 |
assert self.host_lzip
|
| 90 | 90 |
with TemporaryFile() as lzip_stdout:
|
| 91 |
- with ExitStack() as context:
|
|
| 92 |
- lzip_file = context.enter_context(open(self._get_mirror_file(), 'r'))
|
|
| 91 |
+ with open(self._get_mirror_file(), 'r') as lzip_file:
|
|
| 93 | 92 |
self.call([self.host_lzip, '-d'],
|
| 94 | 93 |
stdin=lzip_file,
|
| 95 | 94 |
stdout=lzip_stdout)
|
