mkgmap kompilieren schlägt fehl - Patches schuld?

Bug #657153 reported by luckyguess
12
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Radkarte
Fix Released
Medium
luckyguess

Bug Description

Ich versuche gerade mich etwas in das Thema einzuarbeiten um ein paar kleine (wie ich denke) Verbessrungen auszuprobieren, aber nachdem ich schon paar Klippen umschifft habe bleibe ich hier hängen:

make_mkgmap:
   [delete] Deleting directory /Users/johannes/Documents/Privat/Fahrrad/Radkarten/Radfahrer_Dev/build/mkgmap
     [copy] Copying 906 files to /Users/johannes/Documents/Privat/Fahrrad/Radkarten/Radfahrer_Dev/build/mkgmap
     [copy] Copied 110 empty directories to 3 empty directories under /Users/johannes/Documents/Privat/Fahrrad/Radkarten/Radfahrer_Dev/build/mkgmap
    [patch] patching file uk/me/parabola/mkgmap/osmstyle/actions/StartWithFilter.java
    [patch] patching file uk/me/parabola/mkgmap/osmstyle/actions/ValueBuilder.java
    [patch] Hunk #1 succeeded at 165 (offset 7 lines).
    [patch] patching file uk/me/parabola/mkgmap/osmstyle/StyledConverter.java
    [patch] Hunk #1 succeeded at 19 with fuzz 2.
    [patch] Hunk #2 succeeded at 52 (offset 1 line).
    [patch] Hunk #3 succeeded at 183 (offset 7 lines).
    [patch] Hunk #4 succeeded at 471 (offset 18 lines).
    [patch] Hunk #5 succeeded at 520 (offset 18 lines).
    [patch] patching file uk/me/parabola/mkgmap/reader/osm/OsmConverter.java
    [patch] patching file uk/me/parabola/mkgmap/reader/osm/xml/Osm5XmlHandler.java
    [patch] Hunk #1 FAILED at 623.
    [patch] 1 out of 1 hunk FAILED -- saving rejects to file uk/me/parabola/mkgmap/reader/osm/xml/Osm5XmlHandler.java.rej
    [patch] patching file uk/me/parabola/mkgmap/reader/osm/GType.java
    [patch] patching file uk/me/parabola/mkgmap/main/StyleTester.java
    [patch] Hunk #1 succeeded at 29 with fuzz 2.
    [patch] Hunk #2 succeeded at 276 (offset 2 lines).
    [patch] patching file uk/me/parabola/mkgmap/filters/DouglasPeuckerFilter.java
    [patch] patching file uk/me/parabola/mkgmap/build/MapBuilder.java
    [patch] Hunk #1 succeeded at 92 (offset 1 line).
    [patch] Hunk #2 succeeded at 890 with fuzz 2 (offset 4 lines).
    [patch] Hunk #3 succeeded at 929 with fuzz 2 (offset 5 lines).
    [patch] patching file uk/me/parabola/mkgmap/filters/SizeFilter.java
    [patch] Hunk #1 succeeded at 24 with fuzz 1.
    [patch] patching file uk/me/parabola/mkgmap/osmstyle/StyledConverter.java
    [patch] Hunk #1 succeeded at 121 (offset 5 lines).
    [patch] Hunk #2 succeeded at 175 (offset 7 lines).
    [patch] Hunk #3 succeeded at 300 with fuzz 1 (offset 15 lines).
    [patch] Hunk #4 succeeded at 328 (offset 23 lines).
    [patch] Hunk #5 succeeded at 872 (offset 182 lines).
    [patch] patching file uk/me/parabola/mkgmap/general/MapShape.java
    [patch] patching file uk/me/parabola/mkgmap/main/MapMaker.java
    [patch] Hunk #1 succeeded at 165 (offset 1 line).
    [patch] Hunk #2 succeeded at 175 (offset 1 line).
    [patch] Hunk #3 succeeded at 192 (offset 1 line).
    [patch] patching file uk/me/parabola/mkgmap/reader/osm/xml/Osm5XmlHandler.java
    [patch] Hunk #1 FAILED at 108.
    [patch] Hunk #2 FAILED at 134.
    [patch] Hunk #3 succeeded at 272 with fuzz 2 (offset -267 lines).
    [patch] 2 out of 3 hunks FAILED -- saving rejects to file uk/me/parabola/mkgmap/reader/osm/xml/Osm5XmlHandler.java.rej
    [patch] patching file uk/me/parabola/mkgmap/build/MapBuilder.java
    [patch] Hunk #1 succeeded at 407 (offset 3 lines).

prepare:
    [mkdir] Created dir: /Users/johannes/Documents/Privat/Fahrrad/Radkarten/Radfahrer_Dev/build/mkgmap/trunk/build/classes

compile:
    [javac] Compiling 345 source files to /Users/johannes/Documents/Privat/Fahrrad/Radkarten/Radfahrer_Dev/build/mkgmap/trunk/build/classes
    [javac] /Users/johannes/Documents/Privat/Fahrrad/Radkarten/Radfahrer_Dev/build/mkgmap/trunk/src/uk/me/parabola/mkgmap/reader/osm/xml/Osm5XmlHandler.java:276: cannot find symbol
    [javac] symbol : variable routePedestrianAreas
    [javac] location: class uk.me.parabola.mkgmap.reader.osm.xml.Osm5XmlHandler
    [javac] if(routePedestrianAreas && "pedestrian".equals(highway)) {
    [javac] ^
    [javac] /Users/johannes/Documents/Privat/Fahrrad/Radkarten/Radfahrer_Dev/build/mkgmap/trunk/src/uk/me/parabola/mkgmap/reader/osm/xml/Osm5XmlHandler.java:276: cannot find symbol
    [javac] symbol : variable highway
    [javac] location: class uk.me.parabola.mkgmap.reader.osm.xml.Osm5XmlHandler
    [javac] if(routePedestrianAreas && "pedestrian".equals(highway)) {
    [javac] ^
    [javac] /Users/johannes/Documents/Privat/Fahrrad/Radkarten/Radfahrer_Dev/build/mkgmap/trunk/src/uk/me/parabola/mkgmap/reader/osm/xml/Osm5XmlHandler.java:283: cannot find symbol
    [javac] symbol : variable CYCLEWAY_ID_OFFSET
    [javac] location: class uk.me.parabola.mkgmap.reader.osm.xml.Osm5XmlHandler
    [javac] long pedestrianId = currentWay.getId() + CYCLEWAY_ID_OFFSET;
    [javac] ^
    [javac] /Users/johannes/Documents/Privat/Fahrrad/Radkarten/Radfahrer_Dev/build/mkgmap/trunk/src/uk/me/parabola/mkgmap/reader/osm/xml/Osm5XmlHandler.java:283: operator + cannot be applied to long,CYCLEWAY_ID_OFFSET
    [javac] long pedestrianId = currentWay.getId() + CYCLEWAY_ID_OFFSET;
    [javac] ^
    [javac] /Users/johannes/Documents/Privat/Fahrrad/Radkarten/Radfahrer_Dev/build/mkgmap/trunk/src/uk/me/parabola/mkgmap/reader/osm/xml/Osm5XmlHandler.java:283: incompatible types
    [javac] found : <nulltype>
    [javac] required: long
    [javac] long pedestrianId = currentWay.getId() + CYCLEWAY_ID_OFFSET;
    [javac] ^
    [javac] /Users/johannes/Documents/Privat/Fahrrad/Radkarten/Radfahrer_Dev/build/mkgmap/trunk/src/uk/me/parabola/mkgmap/reader/osm/xml/Osm5XmlHandler.java:285: cannot find symbol
    [javac] symbol : variable wayMap
    [javac] location: class uk.me.parabola.mkgmap.reader.osm.xml.Osm5XmlHandler
    [javac] wayMap.put(pedestrianId, pedestrianWay);
    [javac] ^
    [javac] /Users/johannes/Documents/Privat/Fahrrad/Radkarten/Radfahrer_Dev/build/mkgmap/trunk/src/uk/me/parabola/mkgmap/reader/osm/xml/Osm5XmlHandler.java:286: cannot find symbol
    [javac] symbol : class List
    [javac] location: class uk.me.parabola.mkgmap.reader.osm.xml.Osm5XmlHandler
    [javac] List<Coord> points = currentWay.getPoints();
    [javac] ^
    [javac] /Users/johannes/Documents/Privat/Fahrrad/Radkarten/Radfahrer_Dev/build/mkgmap/trunk/src/uk/me/parabola/mkgmap/reader/osm/ElementSaver.java:223: convertRelation(uk.me.parabola.mkgmap.reader.osm.Relation,java.util.Map<java.lang.Long,uk.me.parabola.mkgmap.reader.osm.Way>) in uk.me.parabola.mkgmap.reader.osm.OsmConverter cannot be applied to (uk.me.parabola.mkgmap.reader.osm.Relation)
    [javac] converter.convertRelation(r);
    [javac] ^
    [javac] Note: /Users/johannes/Documents/Privat/Fahrrad/Radkarten/Radfahrer_Dev/build/mkgmap/trunk/src/uk/me/parabola/mkgmap/general/RoadNetwork.java uses or overrides a deprecated API.
    [javac] Note: Recompile with -Xlint:deprecation for details.
    [javac] Note: Some input files use unchecked or unsafe operations.
    [javac] Note: Recompile with -Xlint:unchecked for details.
    [javac] 8 errors

BUILD FAILED

Wenn ich das richtig nachvollziehe ist der Grund, dass beim einen Patch nicht alles klappt. Gibt es dafür eine Lösung/workaround?

Revision history for this message
luckyguess (luckyguess) wrote :

Nachtrag: Mit dem fertig kompilierten mkgmap aus dem zip http://osm.arndnet.de/20100919/radkarte-style.zip direkt in das Build-Verzeichnis kopiert läuft es.

Habe bereits kurz getestet, und (für mich) scheint die Option "unbefestigte Wege vermeiden" so bessere Resultate zu liefern (gute Radwege werden zum Routing verwendet)

=== modified file 'radkarte/lines.m4'
--- radkarte/lines.m4 2010-09-24 06:09:56 +0000
+++ radkarte/lines.m4 2010-10-09 09:38:43 +0000
@@ -99,7 +99,7 @@

 # Flag unpaved roads.
 highway=*
-& (surface=cobblestone | surface=compacted | surface=dirt |
+& (surface=cobblestone | ( surface=compacted & tracktype!=grade1 & tracktype!=grade2 & smoothness!=excellent & smoothness!=good & smoothness!=intermediate ) | surface=dirt |
    surface=earth | surface=grass | surface=grass_paver |
    surface=gravel | surface=grit | surface=ground | surface=mud |
    surface=pebblestone | surface=sand | surface=unpaved |
@@ -415,7 +415,8 @@
 MACRO_highway_2levels(highway=track & tracktype=grade3, GID_tracktype3, RCRS_tracktype3, RCRS_tracktype3)
 MACRO_highway_2levels(highway=track & tracktype=grade4, GID_tracktype4, RCRS_tracktype4, RCRS_tracktype4)
 MACRO_highway_2levels(highway=track & tracktype=grade5, GID_tracktype5, RCRS_tracktype5, RCRS_tracktype5)
-# All tracks without the tracktype set are mapped to track type 3
+# All tracks without the tracktype set are mapped to track type 3, except on a cycle route (guessing it's okay then)
+MACRO_highway_2levels(highway=track & (icn=yes | ncn=yes | rcn=yes | lcn=yes | tcn=yes), GID_tracktype2, RCRS_tracktype2, RCRS_tracktype2)
 MACRO_highway_2levels(highway=track, GID_tracktype3, RCRS_tracktype3, RCRS_tracktype3)

 # We don't like steps, so they get a very low speed rating. Also we route there only if there is a ramp.

Revision history for this message
Radfahrer (thannema) wrote :

Die Patches funktionieren nicht mehr richtig, da sich die gepatchten Stellen in mkgmap inzwischen geändert haben. Da ich z. Zt. keine regelmäßigen Updates erstelle, ziehe ich auch die Patches nicht nach. Eine Lösung wäre es, so weit in den Revisionen von mkgmap zurück zu gehen, bis die Patches wieder funktionieren. Ansonsten werde ich sie wieder in Ordnung bringen, wenn ich ein neues Update erstelle (wann immer das sein wird).

Changed in radkarte:
assignee: nobody → Radfahrer (thannema)
importance: Undecided → Medium
status: New → Confirmed
Revision history for this message
Radfahrer (thannema) wrote :

Die Änderungen in lines.m4 sehen gut aus. Vielen Dank! Ich habe sie übernommen. Sie kommen dann beim nächsten Update zur Anwendung.

Revision history for this message
luckyguess (luckyguess) wrote :

Gibt es eigentlich ne Dokumentation wozu die Patches benötigt werden?

Überlege gerade ob ich nicht regelmäßig die Karte bauen will (und dann auch öffentlich anzubieten), aber dafür wäre es ja praktisch die Infrastruktur auf der das Aufbau besser zu verstehen.

Revision history for this message
luckyguess (luckyguess) wrote :

So, den Fehlschlag in "" habe ich nun beheben können, das zurückgewiesene

***************
*** 623,629 ****

    long start = System.currentTimeMillis();
    for (Relation r : relationMap.values())
- converter.convertRelation(r);

    for (Node n : nodeMap.values())
     converter.convertNode(n);
--- 623,629 ----

    long start = System.currentTimeMillis();
    for (Relation r : relationMap.values())
+ converter.convertRelation(r, wayMap);

    for (Node n : nodeMap.values())
     converter.convertNode(n);

Ist nun in der ElementSaver.java zu finden.

Bei der cg-route-pedestrian-areas-v2.patch könnte ich allerdings noch etwas Hilfe benötigen

Revision history for this message
Radfahrer (thannema) wrote :

Die cg-route-pedestrian-areas-v2.patch kommt von der Mailingliste mkgmap-dev. Da es nur darum geht, Fußgängerzonen routbar zu machen, kann man den auch weglassen (wenn dann nicht ein anderer Patch fehlschlägt).

Hier eine Übersicht, was die Patches machen:
- cg-route-pedestrian-areas-v2: Macht Fußgängerzonen routbar (sprich: routet entlang der Ecken eines Areas mit highway=pedestrian und area=yes). Verzichtbar.
- decrease_douglas_peucker_error: Ändert die Art und Weise, wie die Wege vereinfacht werden. Im Prinzip verzichtbar, aber dann sehen die Karten in den höheren Vergrößerungsstufen schlechter aus.
- drop_small_polygons: Lässt Polygone wegfallen, die kleiner als eine Mindestgröße werden. Ist verzichtbar, allerdings werden dann die Karten größer, da viele 1-Pixel Polygone bestehen bleiben.
- generate_ways_from_relations: Erweitert mkgmap um die Möglichkeit, aus relationen Wege zu erstellen. Ist wichtig, da sonst keine Radrouten angezeigt werden (und darum geht es bei einer Fahrradkarte ja).
- gmapi-builder: Erweitert den gmapi-builder um die Möglichkeit, auch Indexe zu konvertieren. Ist nur nötig, wenn man Karten für MacOS X erstellen will.
- modify_add_pois_to_areas: Ändert die Art und Weise, wie aus areas POIs erzeugt werden. Dies ist wichtig für die Benennung von POIs, falls dieser Patch fehlt, bekommen aus areas erzeugte POIs den "falschen" Namen.
- nsis_script: Ändert das von mkgmap erzeugte NSIS Skript. Ist nötig wenn man mit NSIS einen Installer für Windows generieren will.
- reduce_unnecessary_poi_infos: Verhindert dass POI Infos geschrieben werden, die auf den GPS Geräten sowieso nicht angezeigt werden. Ist verzichtbar, die Karte wird dann evtl. etwas größer als nötig.
- start-with: Fügt einen weiteren Modifier bei der Behandlung von Variablen hinzu. Ist wichtig, da ohne diesen Patch die Namen nicht richtig generiert werden.

Ich hoffe das hilft. Leider habe ich im Augenblick nicht genug Zeit, um mich selber um die Patches zu kümmern.

Revision history for this message
luckyguess (luckyguess) wrote :

Ja, danke, das hilft mir schon sehr, bis auf den "cg-route-pedestrian-areas-v2" habe ich alles zum laufen gebracht.
Habe zwar noch das kosmetische Problem das wenn ich das Meer rendern lasse Norddeutschland "absäuft", aber nun weiss ich, das ich den cg-route-pedestrian-areas-v2 Patch erstmal ignorieren kann, und mich drum kümmern kann den Rest nach & nach besser zu verstehen und (für mich) zu optimieren.

Falls es interessiert ich dokumentieren die Änderungen unter http://www.formann.de/tag/radkarte/ - und biete die jeweils aktuelle Karte für OS-X und die Geräte an. (Automatisch jede Woche aktualisiert, und manuell bei Experimenten)

Revision history for this message
Carsten Bruch (mail-carsten-bruch) wrote :

Ich habe einen Vorschlag für cg-route-pedestrian-areas-v2.patch. Zumindest baut damit wieder
bzr branch lp:~luckyguess/radkarte/main
zusammen mit dem ursprünglichen build.xml, das den pedestrian patch verwendet,
sofern man auch noch generate_ways_from_relations.patch anpasst. Weiter getestet habe ich die Änderung noch nicht.

Revision history for this message
luckyguess (luckyguess) wrote :

Hast dub den richtigen patch angehängt, der sieht mir sehr identisch zum alten aus.

Revision history for this message
Carsten Bruch (mail-carsten-bruch) wrote :

Werde die richtige Datei so schnell wie möglich anhängen. Sitze gerade nicht vor meinem Linux Rechner.

Revision history for this message
Carsten Bruch (mail-carsten-bruch) wrote :

Neuer Versuch. Hoffentlich diesmal aus dem richtigen Verzeichnis.

Revision history for this message
luckyguess (luckyguess) wrote :

Der Patch funktioniert, aber die Kommandozeoilenoption funktioniert nicht.
Habe neulich noch gelesen den könnte man auch im style-File emulieren, was ja einfacher wäre.

Revision history for this message
Carsten Bruch (mail-carsten-bruch) wrote :

Funktioniert denn einer der anderen Kommandozeilenoptionen?

luckyguess (luckyguess)
Changed in radkarte:
status: Confirmed → Fix Committed
luckyguess (luckyguess)
Changed in radkarte:
assignee: Radfahrer (thannema) → luckyguess (luckyguess)
Revision history for this message
luckyguess (luckyguess) wrote :

Im aktuellen Branch funktionierend.

Changed in radkarte:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.