Skip to content

Conversation

@chrisnovakovic
Copy link
Contributor

There are problems associated with InterpreterOptions being a string, chiefly that it isn't safe to assume where individual Python interpreter command line arguments begin and end simply by splitting the string on space characters. This isn't so much of a concern while the value of InterpreterOptions is just appended to the main .pex shebang in please_pex, but it'll become more of a concern when we instead rely on a native-code .pex preamble to invoke the interpreter because we'll be passing arguments variadically to execvp(3).

Make InterpreterOptions a repeatable configuration option and pass each value to please_pex as a separate --interpreter_options command line option (which itself also becomes repeatable). This isn't a breaking change because the values passed via --interpreter_options are for now ultimately just being stringified via a space-delimited join and appended to the .pex shebang, but the distinction will become meaningful when we implement a native-code .pex preamble.

There are problems associated with `InterpreterOptions` being a string,
chiefly that it isn't safe to assume where individual Python interpreter
command line arguments begin and end simply by splitting the string on
space characters. This isn't so much of a concern while the value of
`InterpreterOptions` is just appended to the main .pex shebang in
please_pex, but it'll become more of a concern when we instead rely on a
native-code .pex preamble to invoke the interpreter because we'll be
passing arguments variadically to `execvp(3)`.

Make `InterpreterOptions` a repeatable configuration option and pass
each value to please_pex as a separate `--interpreter_options` command
line option (which itself also becomes repeatable). This isn't a
breaking change because the values passed via `--interpreter_options`
are for now ultimately just being stringified via a space-delimited join
and appended to the .pex shebang, but the distinction will become
meaningful when we implement a native-code .pex preamble.
@chrisnovakovic chrisnovakovic merged commit 77bb52d into please-build:master Oct 21, 2025
41 of 42 checks passed
@chrisnovakovic chrisnovakovic deleted the interpreter-options-list branch October 21, 2025 16:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants