Skip to content

Commit 9239f83

Browse files
committed
Merge branch 'main' of github.com:eclipse-sumo/sumo into Netedit_dev
2 parents 9f41d8e + 510389d commit 9239f83

File tree

18 files changed

+332
-238
lines changed

18 files changed

+332
-238
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ if (GNU_COMPILER OR CLANG_COMPILER)
123123
endif ()
124124
if (GNU_COMPILER)
125125
# see https://stackoverflow.com/questions/23499909/adjust-variable-tracking-assignment-length
126-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --param=max-vartrack-size=1500000")
126+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --param=max-vartrack-size=5000000")
127127
endif ()
128128
if (PROFILING)
129129
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg")

build_config/package/sumo.spec

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,16 @@ BuildRequires: cmake3
3535
BuildRequires: cmake
3636
BuildRequires: java-devel
3737
%endif
38+
%if 0%{?fedora_version} > 36 || 0%{?suse_version} >= 1600
39+
BuildRequires: python3-build
40+
BuildRequires: python3-pip
3841
BuildRequires: python3-setuptools
42+
BuildRequires: python3-wheel
43+
%endif
3944
BuildRequires: python3-devel
45+
%if 0%{?fedora_version} || 0%{?suse_version}
46+
BuildRequires: python3-matplotlib
47+
%endif
4048
BuildRequires: swig
4149
BuildRequires: help2man
4250
BuildRequires: pkgconfig
@@ -84,6 +92,7 @@ Requires: libsumocpp = %{version}
8492
This package provides development libraries and headers needed to build
8593
software using libsumocpp.
8694

95+
%if 0%{?fedora_version} > 36 || 0%{?suse_version} >= 1600
8796
%package -n python3-libsumo
8897
Summary: libsumo Python3 module
8998
Requires: %{name} = %{version}-%{release}
@@ -92,6 +101,7 @@ Obsoletes: python3-%{name} < %{version}
92101

93102
%description -n python3-libsumo
94103
The libsumo python module provides support to connect to and remote control a running sumo simulation.
104+
%endif
95105

96106
%if 0%{?fedora_version} || 0%{?centos_version}
97107
%global debug_package %{nil}
@@ -139,10 +149,8 @@ install -d -m 755 %{buildroot}%{_datadir}/pixmaps
139149
install -p -m 644 build_config/package/org.eclipse.sumo.png %{buildroot}%{_datadir}/pixmaps
140150
install -p -m 644 build_config/package/org.eclipse.sumo.netedit.png %{buildroot}%{_datadir}/pixmaps
141151
install -p -m 644 build_config/package/org.eclipse.sumo.osmWebWizard.png %{buildroot}%{_datadir}/pixmaps
142-
%if 0%{?suse_version}
143152
install -d -m 755 %{buildroot}%{_datadir}/mime/application
144153
install -p -m 644 build_config/package/org.eclipse.sumo.xml %{buildroot}%{_datadir}/mime/application
145-
%endif
146154
%fdupes %{buildroot}%{_datadir}
147155

148156
%check
@@ -168,9 +176,7 @@ cd cmake-build
168176
%config %{_sysconfdir}/profile.d/%{name}.*sh
169177
%{_datadir}/applications/*.desktop
170178
%{_datadir}/pixmaps/*.png
171-
%if 0%{?suse_version}
172179
%{_datadir}/mime/application
173-
%endif
174180

175181
%files -n libsumocpp
176182
%license LICENSE
@@ -181,12 +187,14 @@ cd cmake-build
181187
%license LICENSE
182188
%{_includedir}/libsumo
183189

190+
%if 0%{?fedora_version} > 36 || 0%{?suse_version} >= 1600
184191
%files -n python3-libsumo
185192
%license LICENSE
186193
%{python3_sitelib}/sumolib*/
187194
%{python3_sitelib}/traci*/
188195
%{python3_sitelib}/simpla*/
189196
%{python3_sitearch}/libsumo*/
190197
%{python3_sitearch}/libtraci*/
198+
%endif
191199

192200
%changelog

docs/web/docs/ChangeLog.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,49 @@ title: ChangeLog
66

77
### Bugfixes
88

9+
- sumo
10+
- Fixed deadlock in roundabout #17330 (regression in 1.24.0)
11+
- Fixed inconsistent computation of attribute flow in edgeData output #17349
12+
- Fixed invalid braking when trying to avoid junction blockage #17318
13+
- Fixed incosistent lane-changing inside roundabout while on an internal lane #17336
14+
- Fixed emergency braking in roundabout #17306
15+
- Fixed invalid warning after train rerouting #17343
16+
17+
- netedit
18+
- No longer saving an invalid network when edges from prohibition elements are deleted #17331
19+
20+
- duarouter
21+
- Fixed crash when loading invalid routes with option **--skip-new-routes** and **--ignore-errors** #17348 (regression in 1.25.0)
22+
23+
- TraCI
24+
- function traci.vehicle.rerouteParkingArea now finds looped route from the current edge #17353
25+
26+
27+
- tools
28+
- osmGet.py: fixed missing road nodes when using option **--shapes** #17293 (regression in 1.20.0)
29+
- netdiff.py: fixed crash involving removed `<neigh>` attribute #17345
30+
31+
### Enhancements
32+
33+
- sumo
34+
- Routing with randomized weights (**--weights.random-factor**) is now stable with respect to network changes, vehicle composition and state loading. The random noise for each edge only depends on the random seed and vehicle id (also applies to duarouter). If thew new option **--weights.random-factor.dynamic** is set, the randomness in the simulation also varies over time. #17325
35+
- The new option **--output-suffix** can be used to modify the names of all output files (similar to **--output-prefix**). The suffix will be inserted right before the file name extension. #17338
36+
- edgeData output definitions now support attribute `aggregate="taz"` which will aggregated data within each loaded taz definition #11104
37+
38+
- TraCI
39+
- function traci.simulation.findRoute now supports optional attributes departPos, arrivalPos #17352
40+
41+
- tools
42+
- attributeCompare.py: Now supports special id-attribute @FILE #17334
43+
- [visum_convertXMLRoutes.py](Tools/Import/VISUM.md#visum_convertxmlroutespy): new tool for importing VISUM routes file #17347
44+
- generateRerouters.py: Added option **--closed-edges.inpu-file** for loading edges to close from a selection file #17359
45+
46+
47+
### Miscellaneous
48+
49+
- TraCI version is now 23
50+
51+
952
## Version 1.25.0 (13.11.2025)
1053

1154
### Bugfixes

src/microsim/MSBaseVehicle.cpp

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,11 @@ MSBaseVehicle::reroute(SUMOTime t, const std::string& info, SUMOAbstractRouter<M
394394
}
395395
// !!! need to adapt t here
396396
router.compute(source, sourcePos, stopEdge, stopEdgeInfo.pos, this, t, into, silent || priority >= 0);
397-
//std::cout << SIMTIME << " reroute veh=" << getID() << " source=" << source->getID() << " sourcePos=" << sourcePos << " target=" << stopEdgeInfo.edge->getID() << " targetPos=" << stopEdgeInfo.pos << " edges=" << toString(into) << "\n";
397+
#ifdef DEBUG_REROUTE
398+
if (DEBUG_COND) {
399+
std::cout << SIMTIME << " reroute veh=" << getID() << " source=" << source->getID() << " sourcePos=" << sourcePos << " target=" << stopEdgeInfo.edge->getID() << " targetPos=" << stopEdgeInfo.pos << " edges=" << toString(into) << "\n";
400+
}
401+
#endif
398402
if (into.size() > 0) {
399403
while (stopIt != myStops.end() && stopIt->pars.edge != stopEdge->getID()) {
400404
stopIt++;
@@ -456,16 +460,17 @@ MSBaseVehicle::reroute(SUMOTime t, const std::string& info, SUMOAbstractRouter<M
456460
}
457461
}
458462
if (hasSkipped) {
459-
MSStopOptimizer opti(this);
460-
edges = opti.optimizeSkipped(t, router, origSource, origSourcePos, stops, edges, maxDelay);
463+
MSStopOptimizer opti(this, router, t, maxDelay);
464+
edges = opti.optimizeSkipped(origSource, origSourcePos, stops, edges);
461465
for (auto stop : stops) {
462-
if (stop.skipped) {
466+
if (stop.skipped || stop.origEdge != nullptr) {
467+
const MSEdge* origEdge = stop.origEdge == nullptr ? stop.edge : stop.origEdge;
463468
if (stop.delay > 0) {
464-
WRITE_WARNING(TLF("Vehicle '%' skips stop on edge '%' with delay % at time %.", getID(), stop.edge->getID(), time2string(stop.delay), time2string(SIMSTEP)));
469+
WRITE_WARNING(TLF("Vehicle '%' skips stop on edge '%' with delay % at time %.", getID(), origEdge->getID(), time2string(stop.delay), time2string(SIMSTEP)));
465470
} else if (stop.backtracked) {
466-
WRITE_WARNING(TLF("Vehicle '%' skips stop on edge '%' with priority % at time %.", getID(), stop.edge->getID(), stop.priority, time2string(SIMSTEP)));
471+
WRITE_WARNING(TLF("Vehicle '%' skips stop on edge '%' with priority % at time %.", getID(), origEdge->getID(), stop.priority, time2string(SIMSTEP)));
467472
} else {
468-
WRITE_WARNING(TLF("Vehicle '%' skips unreachable stop on edge '%' with priority % at time %.", getID(), stop.edge->getID(), stop.priority, time2string(SIMSTEP)));
473+
WRITE_WARNING(TLF("Vehicle '%' skips unreachable stop on edge '%' with priority % at time %.", getID(), origEdge->getID(), stop.priority, time2string(SIMSTEP)));
469474
}
470475
}
471476
}
@@ -717,10 +722,11 @@ MSBaseVehicle::replaceRoute(ConstMSRoutePtr newRoute, const std::string& info, b
717722
}
718723
#endif
719724
if (iter->edge == edges.end() && iter->pars.priority >= 0) {
725+
const std::string oldEdge = iter->pars.edge;
720726
const std::string oldName = iter->getStoppingPlaceName().first;
721727
if (replaceWithAlternative(iter, searchStart, edges.end())) {
722-
WRITE_WARNINGF(TL("Vehicle '%' replaced stop % (named '%') and now stops at '%' instead; after rerouting (%) at time=%."),
723-
getID(), stopIndex, oldName, iter->getDescription(true), info, time2string(SIMSTEP));
728+
WRITE_WARNINGF(TL("Vehicle '%' replaced stop on edge '%' (named '%') and now stops at '%' instead; after rerouting (%) at time=%."),
729+
getID(), oldEdge, oldName, iter->getDescription(true), info, time2string(SIMSTEP));
724730
}
725731
}
726732
if (iter->edge == edges.end()) {

src/microsim/MSBaseVehicle.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1072,7 +1072,7 @@ class MSBaseVehicle : public SUMOVehicle {
10721072
/// @brief optional info about stopping place
10731073
std::pair<std::string, SumoXMLTag> nameTag;
10741074
/// @brief set when replacing stop with an alternative
1075-
std::string origEdge = "";
1075+
const MSEdge* origEdge = nullptr;
10761076

10771077
bool operator==(const StopEdgeInfo& o) const {
10781078
return edge == o.edge;

0 commit comments

Comments
 (0)