diff --git a/eng/pipelines/coreclr/templates/run-superpmi-diffs-job.yml b/eng/pipelines/coreclr/templates/run-superpmi-diffs-job.yml
index b987c25cb89a2..da61351842a58 100644
--- a/eng/pipelines/coreclr/templates/run-superpmi-diffs-job.yml
+++ b/eng/pipelines/coreclr/templates/run-superpmi-diffs-job.yml
@@ -11,7 +11,7 @@ parameters:
osSubgroup: '' # optional -- operating system subgroup
continueOnError: 'false' # optional -- determines whether to continue the build if the step errors
dependsOn: '' # optional -- dependencies of the job
- timeoutInMinutes: 120 # optional -- timeout for the job
+ timeoutInMinutes: 180 # optional -- timeout for the job
enableTelemetry: false # optional -- enable for telemetry
liveLibrariesBuildConfig: '' # optional -- live-live libraries configuration to use for the run
helixQueues: '' # required -- Helix queues
@@ -119,7 +119,7 @@ jobs:
helixType: 'build/tests/'
helixQueues: ${{ join(',', parameters.helixQueues) }}
creator: dotnet-bot
- WorkItemTimeout: 2:00 # 2 hours
+ WorkItemTimeout: 3:00 # 3 hours
WorkItemDirectory: '$(WorkItemDirectory)'
CorrelationPayloadDirectory: '$(CorrelationPayloadDirectory)'
helixProjectArguments: '$(Build.SourcesDirectory)/src/coreclr/scripts/superpmi-diffs.proj'
diff --git a/eng/pipelines/coreclr/templates/superpmi-diffs-job.yml b/eng/pipelines/coreclr/templates/superpmi-diffs-job.yml
index aace201eb9661..4380be02352b7 100644
--- a/eng/pipelines/coreclr/templates/superpmi-diffs-job.yml
+++ b/eng/pipelines/coreclr/templates/superpmi-diffs-job.yml
@@ -5,7 +5,7 @@ parameters:
osSubgroup: '' # optional -- operating system subgroup
condition: true
pool: ''
- timeoutInMinutes: 180 # build timeout
+ timeoutInMinutes: 240 # build timeout
variables: {}
helixQueues: ''
dependOnEvaluatePaths: false
diff --git a/src/coreclr/scripts/jitutil.py b/src/coreclr/scripts/jitutil.py
index 5a6b4ddc6c107..9ba23d15bb752 100644
--- a/src/coreclr/scripts/jitutil.py
+++ b/src/coreclr/scripts/jitutil.py
@@ -756,25 +756,23 @@ def download_files(paths, target_dir, verbose=True, fail_if_not_found=True, is_a
logging.info("Uncompress %s", download_path)
if item_path.lower().endswith(".zip"):
- with zipfile.ZipFile(download_path, "r") as file_handle:
- file_handle.extractall(temp_location)
+ with zipfile.ZipFile(download_path, "r") as zip:
+ zip.extractall(target_dir)
+ archive_names = zip.namelist()
else:
- with tarfile.open(download_path, "r") as file_handle:
- file_handle.extractall(temp_location)
-
- # Copy everything that was extracted to the target directory.
- copy_directory(temp_location, target_dir, verbose_copy=verbose,
- match_func=lambda path: not path.endswith(".zip") and not path.endswith(".tar.gz"))
-
- # The caller wants to know where all the files ended up, so compute that.
- for dirpath, _, files in os.walk(temp_location, topdown=True):
- for file_name in files:
- if not file_name.endswith(".zip") and not file_name.endswith(".tar.gz"):
- full_file_path = os.path.join(dirpath, file_name)
- target_path = full_file_path.replace(temp_location, target_dir)
- local_paths.append(target_path)
+ with tarfile.open(download_path, "r") as tar:
+ tar.extractall(target_dir)
+ archive_names = tar.getnames()
+
+ for archive_name in archive_names:
+ if archive_name.endswith("/"):
+ # Directory
+ continue
+
+ target_path = os.path.join(target_dir, archive_name.replace("/", os.path.sep))
+ local_paths.append(target_path)
else:
- # Not a zip file; download directory to target directory
+ # Not an archive
download_path = os.path.join(target_dir, item_name)
if is_item_url:
ok = download_one_url(item_path, download_path, fail_if_not_found=fail_if_not_found, is_azure_storage=is_azure_storage, display_progress=display_progress)
diff --git a/src/coreclr/scripts/superpmi-diffs.proj b/src/coreclr/scripts/superpmi-diffs.proj
index 8b7aae5803de8..1d7b5fd0597f3 100644
--- a/src/coreclr/scripts/superpmi-diffs.proj
+++ b/src/coreclr/scripts/superpmi-diffs.proj
@@ -57,7 +57,7 @@
$(Python) $(ProductDirectory)/superpmi_diffs.py -type $(SuperPmiDiffType) -base_jit_directory $(ProductDirectory)/base -diff_jit_directory $(ProductDirectory)/diff $(SuperPmiBaseJitOptionsArg) $(SuperPmiDiffJitOptionsArg) -log_directory $(SuperpmiLogsLocation)
- 2:00
+ 3:00