You've already forked OpenUxAS-bootstrap
mirror of
https://github.com/AdaCore/OpenUxAS-bootstrap.git
synced 2026-02-12 13:07:23 -08:00
Make sure references to python in shebangs and in text specify python3 rather than simply python. This better supports convention of fresh machines.
94 lines
2.6 KiB
Python
94 lines
2.6 KiB
Python
#!/usr/bin/env python3
|
|
|
|
"""Anod environment printer."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from lib.anod.util import check_common_tools, create_anod_context, create_anod_sandbox
|
|
from lib.anod.paths import SPEC_DIR, SBX_DIR
|
|
|
|
from e3.main import Main
|
|
from e3.env import BaseEnv
|
|
|
|
import logging
|
|
import os
|
|
|
|
# Help users who can't remember to use eval.
|
|
BANNER = """
|
|
# ----------------------------------------------------------------------------
|
|
# If you are seeing this, then you forgot eval.
|
|
#
|
|
# You need to run anod printenv like this:
|
|
#
|
|
# eval "$( ./anod printenv %s )"
|
|
#
|
|
# Otherwise, no changes will be made to your environment.
|
|
# ----------------------------------------------------------------------------
|
|
"""
|
|
|
|
|
|
def do_printenv(m: Main, set_prog: bool = True) -> int:
|
|
"""Print the environment for the given spec."""
|
|
if set_prog:
|
|
m.argument_parser.prog = m.argument_parser.prog + " printenv"
|
|
m.argument_parser.add_argument(
|
|
"spec_name",
|
|
help="spec to build. This is "
|
|
"the basename of an .anod file (without the extension)",
|
|
)
|
|
m.argument_parser.add_argument("--qualifier", help="optional qualifier")
|
|
m.argument_parser.add_argument(
|
|
"--sandbox-dir",
|
|
help="directory in which build artifacts are stored",
|
|
default=SBX_DIR,
|
|
)
|
|
m.argument_parser.add_argument(
|
|
"--build-env",
|
|
help="print build environment",
|
|
action="store_true",
|
|
default=False,
|
|
)
|
|
m.parse_args()
|
|
|
|
# Disable logging messages except errors
|
|
logging.getLogger("").setLevel(logging.ERROR)
|
|
|
|
check_common_tools()
|
|
|
|
ac = create_anod_context(SPEC_DIR)
|
|
sbx = create_anod_sandbox(m.args.sandbox_dir, SPEC_DIR)
|
|
|
|
anod_instance = ac.add_anod_action(
|
|
name=m.args.spec_name,
|
|
primitive="build",
|
|
qualifier=m.args.qualifier,
|
|
sandbox=sbx,
|
|
upload=False,
|
|
env=BaseEnv.from_env(),
|
|
).anod_instance
|
|
|
|
saved_env = {k: v for k, v in os.environ.items()}
|
|
|
|
if m.args.build_env:
|
|
if hasattr(anod_instance, "build_setenv"):
|
|
anod_instance.build_setenv()
|
|
else:
|
|
if hasattr(anod_instance, "setenv"):
|
|
anod_instance.setenv()
|
|
|
|
for var, value in os.environ.items():
|
|
if var not in saved_env or saved_env[var] != os.environ[var]:
|
|
print('export %s="%s";' % (var, value))
|
|
|
|
if m.args.verbose >= 1:
|
|
print('printf "I set %s=\\"%s\\"\\n\\n";' % (var, value))
|
|
|
|
print(" ")
|
|
|
|
print(BANNER % m.args.spec_name)
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
exit(do_printenv(Main(), set_prog=False))
|