Makefile.common

Z UMP

Narzędzie dla użytkowników systemów Unix i Linux służące do operowania na źródłach UMP.


Spis treści

Podstawowa funkcjonalność

Poniższy opis przytaczam za Tomaszem Surmaczem, jego autorem.

Do działania Makefile wymaga ustawienia 2 zmiennych środowiskowych:

  • CVS - katalog ze źródłami (czyli ten właśnie z Makefile.common)
  • DIR - jeden lub kilka umpów

np:

setenv DIR "UMP-Opole UMP-Katowice"
setenv CVS /home/user/ump

Po czym najlepiej zrobić sobie:

cd $CVS
mkdir tmp
cd tmp
ln -s ../Makefile.common Makefile

czyli utworzyć katalog roboczy "tmp" i tam pracować za pomocą:

make mont	- montuje źródła. Na końcu dokleja plik "attach", jeśli taki istnieje
make x		- generuje listę niestyków (zmontowanego wynik.mp)

- uruchomić mapedita, poprawiać

make demont	- rozmontowuje, każe uaktualnić źródła (copy&paste myszką)
make commit	- commituje poprawki

i tak w kółko, jak długo starcza chęci i materiału do poprawiania. Dodatkowo:

make clean	- czyści pliki tymczasowe (diffy z rozmontowywania, itp.)
make close	- generuje listę za bliskich węzłów
make dead	- generuje listę ślepych
make wpt	- generuje listę węzłów (odwrotnie niż "make x")
make update	- uaktualnia źródła edytowanego ump-a

Cele "x", "wpt", "close", "dead" generują listę punktów zawsze do pliku wynik-x.wpt, warto więc utworzyć plik "attach" z zawartością:

;@FILE,"Z:\home\USER\ump\tmp\wynik-x.wpt"

Plik attach jest automatycznie doklejany na końcu podczas montowania mapy i nie trzeba wtedy samemu za każdym razem wczytywać wynik-x.wpt po każdorazowym rozpoczęciu edycji. Często używanymi załącznikami są także pliki "new.plt", "old.plt" i chg.plt" generowane przez skrypt narzedzia/pltdiff, warto więc dopisać tam także:

;@FILE,"Z:\home\USER\ump\tmp\new.plt"
;@FILE,"Z:\home\USER\ump\tmp\old.plt"
;@FILE,"Z:\home\USER\ump\tmp\chg.plt"

a także swoje własne często używane załączniki (np. pliki ze śladami, itp.)

Analogicznie doklejany jest plik bm.tmp (jeśli istnieje), w którym znajdować się mogą bookmarki (feature najnowszych wersji ME++). Za pomocą bookmarków można na przykład oglądać niestyki i inne błędy routingu – żeby to zrobić należy zmontować mapę, wygenerować niestyki, z nich zrobić bookmarki, a następnie jeszcze raz zmontować mapę ze zrobionymi bookmarkami. Czyli:

make mont x bm
make mont

Cele można łączyć (tak jak w przykładzie powyżej), czyli np. wykonać:

make clean mont x	(wyczyści, zmontuje, wygeneruje niestyki)
# edycja mapeditem (w osobnym oknie)
make demont
# kopiowanie plików, ponowna edycja
make demont
# skopiowanie reszty plików
make clean mont close
# ponowna edycja (nie zapomnieć ponownie wczytać wynik.mp w mapedicie!)
make demont
# skopiowanie poprawek
make clean commit

Dostępne cele

Podstawowe operacje

 mont      - montowanie mapy
 mont-topo - montuje wersję topo mapy (do montowania włącza pliki *.topo.txt i *.topo.pnt)
 demont    - rozmontowanie mapy, wykonanie diffów, pliki różniące się
            względem oryginału tworzone są w katalogu bieżącym
 clean     - usuwa pozostałości po rozmontowanej mapie, pliki *.plt i wynik* zostawiane są w spokoju
 mrproper  - pełne czyszczenie katalogu roboczego, kasuje to co clean oraz pliki tymczasowe, wynik* i *.plt

Interakcja z CVS

 update    - aktualizacja źródeł
 commit    - wysłanie poprawek - wymaga uprawnień do zapisu w CVS
 wrzuta    - pakuje wszystkie *.diff do pliku wrzuta.tgz – jeśli nie masz
               uprawnień do zapisu w CVS, wygeneruj taki plik i wrzuć go do FlySpray

Sprawdzanie mapy (wymagany netgen)

 sprawdz   - sprawdzenie poprawności mapy
 dead      - wykryj ślepe końce, przy okazji oflagowuje węzły "dociągane"
 deadnm    - j.w., ale odfiltrowuje część węzłów skrajnych mapy
 x         - wykryj skrzyżowania bez węzłów
 close     - wykryj zbyt blisko położone węzły
 number    - szybkie wykrywanie podstawowych błędów numeracji (bez używania netgena)
 numbers   - pełne wykrywanie błędów numeracji
 bm        - generuje bookmarki z tego, co wcześniej zostało sprawdzone.
 bmextract - wyciąga bookmarki z pliku wynik.mp (poprawione po edycji mapy) i zapisuje ponownie w pliku bm.tmp
 bmex      - skrót do bmextract

bookmarki działają w połączeniu z innymi testami, przetwarzając plik wynikowy wynik-x.wpt na format bookmarków (plik tymczasowy bm.tmp, który zostanie użyty w kolejnym montowaniu mapy). Czyli sensowne jest np. zrobienie "make mont x bm; make mont", albo "make mont deadnm bm; make mont" itp. itd.

Jeśli chcemy zachować bookmarki pomiędzy kolejnymi uruchomieniami mapedita oraz montowaniem/demontowaniem mapy (na przykład wtedy, gdy za pomocą bookmarków weryfikujemy punkty POI i mamy rozgrzebaną do połowy robotę, ale wolimy ją skończyć kiedyś później), należy je po pierwsze wyekstrahować z pliku wynik.mp do bm.tmp (za pomocą "make bmex"), a być może także skopiować sobie ten plik w inne bezpieczne miejsce, żeby nie został nadpisany przy kolejnym uruchomieniu "make dead bm".

Testy związane z routingiem

Poniższe cele służą do wygenerowania informacji o routingu przydatnych np. do sprawdzenia ciągłości routingu w danym obszarze.

 test      - wygeneruj dane potrzebne do routingu
 test-j    - wygeneruj dane potrzebne do routingu - z włączoną opcją j netgena
 test-k    - wygeneruj dane potrzebne do routingu - z włączoną opcja k netgena
 test-jk   - wygeneruj dane potrzebne do routingu - z włączonymi opcjami j i k netgena
 class     - wygeneruj informacje o klasach routingu do osobnych plików (domyślnie bazuje na make test)

Inne

 visual    - na podstawie plików diff tworzy listę zmian dokonanych na mapie. Mapa musi być wcześniej rozmontowana!
 cum       - wykonuje kolejno clean, update, mont
 cd        - clean, demont
 help      - opis wszystkich zdefiniowanych funkcji

Zmienne środowiskowe

Wymagane do poprawnej pracy

 CVS       - położenie lokalnej kopii źródeł mapy (katalog główny)
 DIR       - UMP który chcemy montować

Opcjonalne

 MONTEXTRA   - dodatkowe opcje dla mont-demont-multi2.pl, np. --extra-types
 NETGENEXTRA - dodatkowe opcje dla netgen-a, np. -p6

Dodatkowe informacje

Opiekunem narzędzia jest Tomasz Surmacz, wspomagany przez Tomasza Babczyńskiego.