Improve superpmi.py scripting (#42238)
authorBruce Forstall <brucefo@microsoft.com>
Fri, 18 Sep 2020 22:32:42 +0000 (15:32 -0700)
committerGitHub <noreply@github.com>
Fri, 18 Sep 2020 22:32:42 +0000 (15:32 -0700)
commit22d206cb1924ce610d904c6b7f59d5c39c0d3784
treed0a559738bfdb31c7d05e65605cb707ef772c9a5
parentbe4a89d8cd296fefab5512aa48ba195df5c61b72
Improve superpmi.py scripting (#42238)

* Improve superpmi.py scripting

1. Update Azure storage collections location to a new location
where we have appropriate permissions to manage the data.
2. Update the Azure storage upload/download implementation
to the current version of the Azure Python API.
3. Add JIT-EE interface GUID to path of Azure stored
collections. When downloading collections, use the appropriate
collection for your JIT-EE interface GUID. This is all done
by adding a "-printJITEEVersion" option to the SuperPMI
MCS tool. Thus, to determine the JIT-EE version, we assume
that MCS is built with the same version as the JIT (which
will be true in a normal build), and that MCS is available
and able to be run -- this typically requires a Core_Root
location be available. The user can specify the JIT-EE
version explicitly with the new `-jit_ee_version` argument.
4. Simplify the Azure storage format: there is no longer
a JSON mapping of name to MCH file. Instead, there is just
a directory full of files. By default, all files are downloaded
and used for replay/asmdiffs, by that can be filtered with
the new `-filter` argument.
5. The `-mch_files` (previously `-mch_file`) argument used
by `replay`, `asmdiffs`, and `upload`, now accepts a list
of directories and files, and for each directory all MCH
files included in that directory, recursively, are used.
6. Also upload MCT (TOC) files with the MCH files.
7. A `--force_download` argument is added to allow forcing
re-download of the Azure collections to the local cache.
8. PMI.dll is also looked for on the PATH before downloading
a cached version from Azure storage.
9. Some of the lesser-used arguments were renamed to simplify them.
10. Various bugs were fixed and code simplification/reorganization was done.
E.g., some of the commonality between replay and asmdiffs was
factored out.
11. More code documentation was added.
12. The superpmi.md documentation was re-written and simplified.

* Add support for download and caching of UNC paths on Windows

* Support downloading and caching explicitly specified HTTP addressed files
src/coreclr/scripts/superpmi.md
src/coreclr/scripts/superpmi.py
src/coreclr/src/ToolBox/superpmi/mcs/CMakeLists.txt
src/coreclr/src/ToolBox/superpmi/mcs/commandline.cpp
src/coreclr/src/ToolBox/superpmi/mcs/commandline.h
src/coreclr/src/ToolBox/superpmi/mcs/mcs.cpp
src/coreclr/src/ToolBox/superpmi/mcs/verbprintjiteeversion.cpp [new file with mode: 0644]
src/coreclr/src/ToolBox/superpmi/mcs/verbprintjiteeversion.h [new file with mode: 0644]
src/coreclr/src/ToolBox/superpmi/superpmi/parallelsuperpmi.cpp