-
Notifications
You must be signed in to change notification settings - Fork 175
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
DPDK: Fix source for tarball #3505
base: main
Are you sure you want to change the base?
Conversation
Fixing one bug uncovered a few others. Fixes the way the Tar tool handles fetching the filename of the tar file it downloads.
When running Wget.get(..., force_run=False) and Tar.extract it is useful to allow Tar to skip extracting existing files on the second pass. Allow the skip-old-files option, so Tar.extract will not overwrite existing files in the output directory. Note: it's important to not use this option if you are providing LISA with a default filename for your tarballs. This option could silently allow Tar.extract to not update the contents of a directory with the newer file contents. I don't see anyone using that schema now. My apologies to future devs who find this commit message while debugging that issue.
Note: testing in progress. |
2bed636
to
a0638eb
Compare
@@ -24,6 +24,10 @@ class Wget(Tool): | |||
def command(self) -> str: | |||
return "wget" | |||
|
|||
def _initialize(self, *args: Any, **kwargs: Any) -> None: | |||
self.__filename_result_cache: Dict[str, str] = dict() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- This variable should be used by subclasses, so one underscore is right.
- Call it like
_url_file_map
. It explains the variable names.
@@ -45,8 +49,26 @@ def get( | |||
force_run: bool = False, | |||
timeout: int = 600, | |||
) -> str: | |||
if not force_run: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The logic could be simpler.
cached_filename = self.__filename_result_cache.get(url, None)
if cached_filename:
if force_run:
del self.__filename_result_cache[url]
else:
return cached_filename
@@ -48,6 +49,21 @@ def extract( | |||
if strip_components: | |||
# optionally strip N top level components from a tar file | |||
tar_cmd += f" --strip-components={strip_components}" | |||
|
|||
if skip_old_files: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How about remove existing extracted files always, or always overwrites? The skip-old-files is hard to use with other tools right.
Fix the way the TarDownloader handles dowloading files and identifying their filenames. This required fixing a bug in the Tar tool where Linux would not infer the filename in the default case like the Windows version does. Previously, providing a directory and not a filename would result in the tool identifying an entire directory of files as the filename when the Wget tool fetches a cached result.
This PR fixes that issue by allowing the tool to infer the filename, this fixes the ability to use the Wget tool without force_run when using a default filename.