5 Commits

Author SHA1 Message Date
Ralph Lange
0e93b70855 Windows: set CHOCO=NO to not use chocolatey
- needed when using the MSYS2 shell
2024-07-22 13:57:39 +02:00
Minijackson
fe29811d26 add --add-env argument for appending to generic environment variables 2024-04-30 16:38:14 +09:00
Ralph Lange
dead44c3cb Merge pull request #92 from Insomnia1437/master
Some checks failed
ci-scripts build/test / cross linux-aarch64 / / default (push) Successful in 2m57s
ci-scripts build/test / cross linux-arm@arm-linux-gnueabihf / / default (push) Successful in 2m56s
ci-scripts build/test / cross linux-arm@arm-linux-gnueabi / / default (push) Successful in 3m22s
ci-scripts build/test / cross RTEMS-pc386-qemu@4.9 / / default (push) Successful in 3m32s
ci-scripts build/test / cross linux-ppc64 / / default (push) Successful in 3m31s
ci-scripts build/test / cross RTEMS-pc386-qemu@4.10 / / default (push) Successful in 3m55s
ci-scripts build/test / cross linux-ppc / / default (push) Successful in 4m5s
ci-scripts build/test / cross windows-x64-mingw / / default (push) Successful in 4m31s
ci-scripts build/test / cross win32-x86-mingw / / default (push) Successful in 4m44s
ci-scripts build/test / cross RTEMS-pc686-qemu@5 / / default (push) Successful in 5m54s
ci-scripts build/test / Unit tests on macos-11 (push) Has been cancelled
ci-scripts build/test / Unit tests on macos-12 (push) Has been cancelled
ci-scripts build/test / Unit tests on ubuntu-20.04 (push) Has been cancelled
ci-scripts build/test / Unit tests on ubuntu-22.04 (push) Has been cancelled
ci-scripts build/test / Unit tests on windows-2019 (push) Has been cancelled
ci-scripts build/test / Unit tests on windows-2022 (push) Has been cancelled
ci-scripts build/test / clang / debug / ubuntu-20.04 (push) Has been cancelled
ci-scripts build/test / clang / debug / ubuntu-22.04 (push) Has been cancelled
ci-scripts build/test / clang / default / ubuntu-20.04 (push) Has been cancelled
ci-scripts build/test / clang / default / ubuntu-22.04 (push) Has been cancelled
ci-scripts build/test / clang / static / ubuntu-20.04 (push) Has been cancelled
ci-scripts build/test / clang / static / ubuntu-22.04 (push) Has been cancelled
ci-scripts build/test / clang / static-debug / ubuntu-20.04 (push) Has been cancelled
ci-scripts build/test / clang / static-debug / ubuntu-22.04 (push) Has been cancelled
ci-scripts build/test / gcc / debug / ubuntu-20.04 (push) Has been cancelled
ci-scripts build/test / gcc / debug / ubuntu-22.04 (push) Has been cancelled
ci-scripts build/test / gcc / default / ubuntu-20.04 (push) Has been cancelled
ci-scripts build/test / gcc / default / ubuntu-22.04 (push) Has been cancelled
ci-scripts build/test / gcc / static / ubuntu-20.04 (push) Has been cancelled
ci-scripts build/test / gcc / static / ubuntu-22.04 (push) Has been cancelled
ci-scripts build/test / gcc / static-debug / ubuntu-20.04 (push) Has been cancelled
ci-scripts build/test / gcc / static-debug / ubuntu-22.04 (push) Has been cancelled
ci-scripts build/test / clang / debug / macos-11 (push) Has been cancelled
ci-scripts build/test / clang / debug / macos-12 (push) Has been cancelled
ci-scripts build/test / clang / default / macos-11 (push) Has been cancelled
ci-scripts build/test / clang / default / macos-12 (push) Has been cancelled
ci-scripts build/test / gcc / debug / windows-2019 (push) Has been cancelled
ci-scripts build/test / gcc / debug / windows-2022 (push) Has been cancelled
ci-scripts build/test / gcc / default / windows-2019 (push) Has been cancelled
ci-scripts build/test / gcc / default / windows-2022 (push) Has been cancelled
ci-scripts build/test / gcc / static / windows-2019 (push) Has been cancelled
ci-scripts build/test / gcc / static / windows-2022 (push) Has been cancelled
ci-scripts build/test / gcc / static-debug / windows-2019 (push) Has been cancelled
ci-scripts build/test / gcc / static-debug / windows-2022 (push) Has been cancelled
ci-scripts build/test / vs2019 / debug / windows-2019 (push) Has been cancelled
ci-scripts build/test / vs2019 / default / windows-2019 (push) Has been cancelled
ci-scripts build/test / vs2019 / static / windows-2019 (push) Has been cancelled
ci-scripts build/test / vs2019 / static-debug / windows-2019 (push) Has been cancelled
ci-scripts build/test / vs2022 / debug / windows-2022 (push) Has been cancelled
ci-scripts build/test / vs2022 / default / windows-2022 (push) Has been cancelled
ci-scripts build/test / vs2022 / static / windows-2022 (push) Has been cancelled
ci-scripts build/test / vs2022 / static-debug / windows-2022 (push) Has been cancelled
fix GHA example error and warning
2024-03-10 14:45:55 +01:00
DW
ca8fde2eaf fix GHA example error and warning 2024-03-10 11:50:21 +01:00
Michael Davidsaver
130e88b709 set TOP before processing --add-path
fix regression in dffe32c23e
2023-11-05 18:57:59 -08:00
3 changed files with 38 additions and 16 deletions

View File

@@ -702,7 +702,7 @@ class TestAppveyorDetectContext(unittest.TestCase):
class TestSetupForBuild(unittest.TestCase):
args = Namespace(paths=[])
args = Namespace(extra_env_vars=[])
if ci_os == 'windows':
choco_installs = ['make']
if ci_service != 'appveyor':
@@ -721,7 +721,7 @@ class TestSetupForBuild(unittest.TestCase):
def test_AddPathsOption(self):
os.environ['FOOBAR'] = 'BAR'
args = Namespace(paths=['/my/{FOOBAR}/dir', '/my/foobar'])
args = Namespace(extra_env_vars=['PATH=/my/{FOOBAR}/dir', 'PATH=/my/foobar'])
cue.setup_for_build(args)
self.assertTrue(re.search('/my/BAR/dir', os.environ['PATH']), 'Expanded path not in PATH')
self.assertTrue(re.search('/foobar', os.environ['PATH']), 'Plain path not in PATH')
@@ -887,7 +887,7 @@ LINE2=NO''')
@unittest.skipIf(ci_os != 'linux', 'CrossCompatibilityHandling tests only apply to linux')
class TestCrossCompatibilityHandling(unittest.TestCase):
args = Namespace(paths=[])
args = Namespace(extra_env_vars=[])
def setUp(self):
cue.clear_lists()

45
cue.py
View File

@@ -136,7 +136,10 @@ def detect_context():
ci['cachedir'] = os.environ['CACHEDIR']
if 'CHOCO' in os.environ:
ci['choco'].extend(os.environ['CHOCO'].split())
if os.environ['CHOCO'] == 'NO':
ci['choco'] = []
else:
ci['choco'].extend(os.environ['CHOCO'].split())
if 'APT' in os.environ:
ci['apt'].extend(os.environ['APT'].split())
@@ -764,16 +767,37 @@ def setup_for_build(args):
if re.match('^test-results:', line):
has_test_results = True
addpaths = []
for path in args.paths:
# apparently %CD% is handled automagically, so use getcwd() instead
os.environ['TOP'] = os.getcwd()
os.environ['MAKE'] = 'make'
os.environ['EPICS_BASE'] = places['EPICS_BASE']
changed_vars = set()
for extra_env_var in args.extra_env_vars:
try:
addpaths.append(path.format(**os.environ))
key_value = extra_env_var.split('=')
key = key_value[0]
value = key_value[1]
expanded_value = value.format(**os.environ)
# Update the environment right now so later variables have access
if key in os.environ:
old_value = [os.environ[key]]
else:
old_value = []
os.environ[key] = os.pathsep.join(old_value + [expanded_value])
changed_vars.add(key)
except KeyError:
print('Environment')
[print(' ', K, '=', repr(V)) for K, V in os.environ.items()]
raise
os.environ['PATH'] = os.pathsep.join([os.environ['PATH']] + addpaths)
for key in changed_vars:
print("{0}{2} = {3}{1}".format(ANSI_CYAN, ANSI_RESET, key, os.environ[key]))
# os.environ completely updated at this point
logger.debug('Final PATH')
for loc in os.environ['PATH'].split(os.pathsep):
@@ -784,9 +808,6 @@ def setup_for_build(args):
is_make3 = True
logger.debug('Check if make is a 3.x series: %s', is_make3)
# apparently %CD% is handled automagically
os.environ['TOP'] = os.getcwd()
# Add EXTRA make arguments
for tag in ['EXTRA', 'EXTRA1', 'EXTRA2', 'EXTRA3', 'EXTRA4', 'EXTRA5']:
val = os.environ.get(tag, "")
@@ -1352,8 +1373,6 @@ def test_results(args):
def doExec(args):
'exec user command with vcvars'
setup_for_build(args)
os.environ['MAKE'] = 'make'
os.environ['EPICS_BASE'] = places['EPICS_BASE']
fold_start('exec.command', 'Execute command {}'.format(args.cmd))
sp.check_call(' '.join(args.cmd), shell=True)
fold_end('exec.command', 'Execute command {}'.format(args.cmd))
@@ -1423,8 +1442,10 @@ def getargs():
p = ArgumentParser()
p.add_argument('--no-vcvars', dest='vcvars', default=True, action='store_false',
help='Assume vcvarsall.bat has already been run')
p.add_argument('--add-path', dest='paths', default=[], action='append',
help='Append directory to $PATH or %%PATH%%. Expands {ENVVAR}')
p.add_argument('--add-path', dest='extra_env_vars', type=lambda x: "PATH={}".format(x), default=[], action='append',
help='Append directory to $PATH or %%PATH%%. Expands {ENVVAR}. Equivalent to: "--add-env PATH=<PATHS>"')
p.add_argument('--add-env', dest='extra_env_vars', default=[], action='append',
help='Append directory to the specified $ENVVAR or %%ENVVAR%%. Expands {OTHER_ENVVAR}. Example: "--add-env \'LD_LIBRARY_PATH={EPICS_BASE}/lib/{EPICS_HOST_ARCH}\'"')
p.add_argument('-T', '--timeout', type=timespec, metavar='DLY',
help='Terminate make after delay. DLY interpreted as second, or may be qualified with "S", "M", or "H". (default no timeout)')
subp = p.add_subparsers()

View File

@@ -31,6 +31,7 @@ jobs:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-18.04
cmp: gcc
configuration: default
@@ -68,7 +69,7 @@ jobs:
name: "3.15 Ub-20 clang-10"
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
submodules: true
- name: Prepare and compile dependencies