Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
eclipse
GitHub Repository: eclipse/sumo
Path: blob/main/tests/complex/traci_cs/runner.py
169678 views
1
#!/usr/bin/env python
2
# Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3
# Copyright (C) 2019-2025 German Aerospace Center (DLR) and others.
4
# This program and the accompanying materials are made available under the
5
# terms of the Eclipse Public License 2.0 which is available at
6
# https://www.eclipse.org/legal/epl-2.0/
7
# This Source Code may also be made available under the following Secondary
8
# Licenses when the conditions for such availability set forth in the Eclipse
9
# Public License 2.0 are satisfied: GNU General Public License, version 2
10
# or later which is available at
11
# https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12
# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13
14
# @file runner.py
15
# @author Michael Behrisch
16
# @date 2019-05-01
17
18
from __future__ import absolute_import
19
from __future__ import print_function
20
21
22
import os
23
import shutil
24
import subprocess
25
import sys
26
import glob
27
if "SUMO_HOME" in os.environ:
28
sys.path.append(os.path.join(os.environ["SUMO_HOME"], "tools"))
29
from sumolib import checkBinary # noqa
30
31
# use latest version
32
useLibsumo = 'LIBSUMO_AS_TRACI' in os.environ
33
sources = os.path.join(os.environ['SUMO_HOME'], "bin",
34
"libsumocs-sources.zip" if useLibsumo else "libtracics-sources.zip")
35
assert os.path.exists(sources)
36
37
shutil.unpack_archive(sources, "data")
38
files = []
39
for f in sys.argv[1:]:
40
fname = "data/%s.cs" % f
41
if useLibsumo:
42
with open(fname, encoding="utf8") as fin:
43
filedata = fin.read()
44
with open(fname, 'w', encoding="utf8") as fob:
45
fob.write(filedata.replace('Libtraci', 'Libsumo'))
46
files.append(f + ".cs")
47
files += [f[5:].replace("\\", "/") for f in glob.glob("data/*/*.cs")]
48
os.environ["PATH"] += os.pathsep + os.path.join(os.environ['SUMO_HOME'], "bin")
49
if os.name == "nt":
50
with open("data/CMakeLists.txt", "w") as cmakelists:
51
print("""cmake_minimum_required(VERSION 3.8)
52
project(TraCITestCS LANGUAGES CSharp)
53
add_executable(TraCITestCS
54
%s)""" % "\n ".join(files), file=cmakelists)
55
subprocess.check_call(["cmake", "-B", "build", "data"])
56
subprocess.check_call(["cmake", "--build", "build", "--config", "Release"])
57
subprocess.check_call([os.path.join("build", "Release", "TraCITestCS.exe")])
58
else:
59
subprocess.check_call(["mcs"] + files, cwd="data")
60
os.environ["LD_LIBRARY_PATH"] = os.path.join(os.environ['SUMO_HOME'], "bin")
61
subprocess.check_call(["mono", os.path.join("data", "Program.exe")])
62
63