summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDarius Makovsky <traveltissues@protonmail.com>2020-01-08 12:40:43 +0000
committerJürg Billeter <j@bitron.ch>2020-02-05 16:42:10 +0100
commit78e0620fc9d9f1682794b5257b06481d977eb52c (patch)
treea4fe6fa847a31b5af162d2f8c571ac6198b58771
parent205786caf932f984f8194fb11193ca162b959783 (diff)
downloadbuildstream-78e0620fc9d9f1682794b5257b06481d977eb52c.tar.gz
storage: Use specified mtime in import_files
If the mtime is specified then try to copy files in file-to-file transfers and reset the mtimes to the parameter value.
-rw-r--r--src/buildstream/element.py3
-rw-r--r--src/buildstream/storage/_casbaseddirectory.py2
-rw-r--r--src/buildstream/storage/_filebaseddirectory.py7
-rw-r--r--src/buildstream/storage/directory.py7
4 files changed, 8 insertions, 11 deletions
diff --git a/src/buildstream/element.py b/src/buildstream/element.py
index fe7d36649..e329fd57a 100644
--- a/src/buildstream/element.py
+++ b/src/buildstream/element.py
@@ -75,6 +75,7 @@ Class Reference
import os
import re
import stat
+import time
import copy
from collections import OrderedDict
import contextlib
@@ -707,7 +708,7 @@ class Element(Plugin):
if update_mtimes:
copy_result = vstagedir.import_files(
- files_vdir, filter_callback=copy_filter, report_written=True, update_mtime=True
+ files_vdir, filter_callback=copy_filter, report_written=True, update_mtime=time.time()
)
result = result.combine(copy_result)
diff --git a/src/buildstream/storage/_casbaseddirectory.py b/src/buildstream/storage/_casbaseddirectory.py
index 46984041e..51b75ac19 100644
--- a/src/buildstream/storage/_casbaseddirectory.py
+++ b/src/buildstream/storage/_casbaseddirectory.py
@@ -341,7 +341,7 @@ class CasBasedDirectory(Directory):
result.files_written.append(relative_pathname)
def import_files(
- self, external_pathspec, *, filter_callback=None, report_written=True, update_mtime=False, can_link=False
+ self, external_pathspec, *, filter_callback=None, report_written=True, update_mtime=None, can_link=False
):
""" See superclass Directory for arguments """
diff --git a/src/buildstream/storage/_filebaseddirectory.py b/src/buildstream/storage/_filebaseddirectory.py
index 222b47979..c2ff06a66 100644
--- a/src/buildstream/storage/_filebaseddirectory.py
+++ b/src/buildstream/storage/_filebaseddirectory.py
@@ -30,7 +30,6 @@ See also: :ref:`sandboxing`.
import os
import shutil
import stat
-import time
from .directory import Directory, VirtualDirectoryError, _FileType
from .. import utils
@@ -79,7 +78,7 @@ class FileBasedDirectory(Directory):
return current_dir
def import_files(
- self, external_pathspec, *, filter_callback=None, report_written=True, update_mtime=False, can_link=False
+ self, external_pathspec, *, filter_callback=None, report_written=True, update_mtime=None, can_link=False
):
""" See superclass Directory for arguments """
@@ -117,10 +116,8 @@ class FileBasedDirectory(Directory):
)
if update_mtime:
- cur_time = time.time()
-
for f in import_result.files_written:
- os.utime(os.path.join(self.external_directory, f), times=(cur_time, cur_time))
+ os.utime(os.path.join(self.external_directory, f), times=(update_mtime, update_mtime))
return import_result
def import_single_file(self, external_pathspec):
diff --git a/src/buildstream/storage/directory.py b/src/buildstream/storage/directory.py
index 2d3dfd4da..771c11ae7 100644
--- a/src/buildstream/storage/directory.py
+++ b/src/buildstream/storage/directory.py
@@ -82,7 +82,7 @@ class Directory:
*,
filter_callback: Optional[Callable[[str], bool]] = None,
report_written: bool = True,
- update_mtime: bool = False,
+ update_mtime: Optional[float] = None,
can_link: bool = False
) -> FileListResult:
"""Imports some or all files from external_path into this directory.
@@ -98,12 +98,11 @@ class Directory:
written. Defaults to true. If false, only a list of
overwritten files is returned.
update_mtime: Update the access and modification time
- of each file copied to the current time.
+ of each file copied to the time specified in seconds.
can_link: Whether it's OK to create a hard link to the
original content, meaning the stored copy will change when the
original files change. Setting this doesn't guarantee hard
- links will be made. can_link will never be used if
- update_mtime is set.
+ links will be made.
Yields:
A report of files imported and overwritten.