zip
: read all non-zip data from --preamble_from
file
#22
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The
zip
command's--preamble_from
option, as used by Please's python-rules plugin, has strange semantics. The help text says it reads the first line from the given file and uses it as the preamble for the generated zip file, which is true unless the first line is#!/bin/sh
, in which case the second line will also be read. The second line of "main" pex files generated by python-rules contain anexec
command, allowing them to self-execute with more arguments than would otherwise be supported in a traditional shebang.Genericise the behaviour of
--preamble_from
so that it is useful for more than just files that begin with 1 or 2-line shell commands - assume the input is a zip file (a tacit assumption until now), and read all non-zip data from the start of the file and use it as the preamble for the generated zip file.Because python-rules' pex files are either pure zip files or zip files prepended with a 1 or 2-line shell command, this does not break backwards compatibility with python-rules.