dev environment: allow printing only env without starting a shell

allow for workflows that don't want the gst scripts to start shells,
this can be awkward for higher-level scripts setting up shells
themselves.

this is especially useful in combination with eval, and mimics the sort
of thing you can do with ssh-agent -s.
This commit is contained in:
Charlie Turner 2020-01-06 13:22:54 +00:00
parent 7aaa11aa77
commit c57dca5220
2 changed files with 22 additions and 1 deletions

View file

@ -314,6 +314,16 @@ You can get into the development environment the usual way:
ninja -C $BUILDDIR/ devenv
```
Alternatively, if you'd rather not start a shell in your workflow, you
can mutate the current environment into a suitable state like so:
```
gst-env.py --only-environment
```
This will print output suitable for an sh-compatible `eval` function,
just like `ssh-agent -s`.
After setting up [binfmt] to use wine for windows binaries,
you can run GStreamer tools under wine by running:

View file

@ -7,6 +7,7 @@ import os
import platform
import re
import site
import shlex
import shutil
import subprocess
import sys
@ -371,6 +372,10 @@ if __name__ == "__main__":
parser.add_argument("--winepath",
default='',
help="Exra path to set to WINEPATH.")
parser.add_argument("--only-environment",
action='store_true',
default=False,
help="Do not start a shell, only print required environment.")
options, args = parser.parse_known_args()
if not os.path.exists(options.builddir):
@ -440,6 +445,12 @@ if __name__ == "__main__":
tmprc.flush()
env['ZDOTDIR'] = tmpdir.name
try:
exit(subprocess.call(args, close_fds=False, env=env))
if options.only_environment:
for name, value in env.items():
print('{}={}'.format(name, shlex.quote(value)))
print('export {}'.format(name))
else:
exit(subprocess.call(args, close_fds=False, env=env))
except subprocess.CalledProcessError as e:
exit(e.returncode)