* Add missing arg-flags to split-cmdline
* Add parameter arguments scraped from --help menus to split-cmdline
* Break apart line in comment to fix lint error
When printing an argument that contains ';', add back
the quotes that are normally stripped.
I regularly waste half a day building Swift only to find that I built
the wrong thing because everything after the semicolon is dropped from
the build script when it contains arguments like this:
'--llvm-install-components=libclang;libclang-headers'
Ideally, split-cmdline would just preserve the original quotes. But
this quick fix solves the problem in the cases that I care about.
The `__future__` we relied on is now, where the 3 specific things are
all included [since Python 3.0](https://docs.python.org/3/library/__future__.html):
* absolute_import
* print_function
* unicode_literals
* division
These import statements are no-ops and are no longer necessary.
Add a general heuristic that options ending in -path expect an argument.
Remove such options from the explicit is_arg_param list and sort it to simplify maintenance.
Recognize -target-sdk-version.
The utils/dev-scripts/at-to-filelist, utils/dev-scripts/split-cmdline and utils/build-parser-lib scripts needed to be reformatted with the black tool to agree with the linter.
Check whether the value in the "before" column is zero (specifically,
whether the file size in that column is greater than zero since
filesizes are non-negative) before dividing the value in the "after"
column by it.
This used matplotlib internally to plot the values. Now one can produce scurves
without leaving the command line.
I tried to get logarithmic scale to work, but I was unable to do so in a trivial
way. That is something for a different hacking session. I need to move on.
I am upstreaming this for two reasons:
1. Traditionally I have done this by hand in a spreadsheet program. I would
rather just have a program fix it up for me.
2. Multiple people have asked me about how to produce this sort of graph and I
would just like to document it via a script.
I hope it is useful to others. You use the script by invoking it as:
./csvcolumn_to_scurve <input_file> <before_column> <after_column> [output_file]
This script in combination with <(...) can be used to speed up creating
reproductions from command lines that use '@' files to define their inputs.
An example use case:
Consider a swiftc command line that uses the @ symbol.
swiftc @/foo/bar/baz.txt
When this is run, the @ command is expanded into a filelist in a temporary
file. This doesn't work with -### since -### outputs the command line with a
temporary file for the filelist, but uses a path to a temporary file that
doesn't exist, e.g.:
swift -frontend -filelist /tmp/tmp.filelist ...
To run this command, you use the at-to-filelist command as follows:
swift -frontend -filelist <(at-to-filelist /foo/bar/baz.txt)
Something useful that I use all the time that I would like to give to others. It
enables emacs compile-mode to be used like a standalone-ish application instead
of one application with many modes, one of which is compile-mode.
Useful to show the control flow graph of a disassembled function.
The control flow graph can the be viewed with the viewcfg utility:
(lldb) disassemble
<copy-paste output to file.s>
$ blockifyasm < file.s | viewcfg
For details see the comment in split-cmdline
I put this under a new directory utils/dev-script because we have so much stuff in utils already.
Other, similar scripts can then be added in dev-scripts as well.