Edycja w systemie Linux
Z UMP
(info dla walczących z vim-em ;)) |
d (literówki, drobne korekty) |
||
Linia 9: | Linia 9: | ||
* wine lub VirtualBox z systemem Windows – by uruchomić program MapEdit | * wine lub VirtualBox z systemem Windows – by uruchomić program MapEdit | ||
- | Większość narzędzi zapewne masz już zainstalowane domyślnie, gdyby się jednak okazało, że któregoś brak (np. w trakcie dokonywania jakiejś czynności), wystarczy dany program doinstalować z odpowiedniego pakietu. Poniżej lista kilku wraz z nazwami pakietów Ubuntu, w których się znajdują (np. w celu zainstalowania programu "dos2unix" wystarczy wpisać "sudo apt-get install tofrodos"): | + | Większość narzędzi zapewne masz już zainstalowane domyślnie, gdyby się jednak okazało, że któregoś brak (np. w trakcie dokonywania jakiejś czynności), wystarczy dany program doinstalować z odpowiedniego pakietu. Poniżej lista kilku, wraz z nazwami pakietów Ubuntu, w których się znajdują (np. w celu zainstalowania programu "dos2unix" wystarczy wpisać "sudo apt-get install tofrodos"): |
* dos2unix, unix2dos – tofrodos | * dos2unix, unix2dos – tofrodos | ||
Linia 22: | Linia 22: | ||
cd UMP-src | cd UMP-src | ||
cvs -z5 -d:pserver:guest@ump.waw.pl/home/cvsroot checkout . | cvs -z5 -d:pserver:guest@ump.waw.pl/home/cvsroot checkout . | ||
- | Jeśli masz założone konto do CVS-a, to oczywiście użyj danych tego konta zamiast konta "guest" i wpisz (wystarczy raz) "cvs login". Następną czynnością jest utworzenie katalogu roboczego, w którym na co dzień będziemy dokonywać edycji UMP-a i utworzenie w nim | + | Jeśli masz założone konto do CVS-a, to oczywiście użyj danych tego konta zamiast konta "guest" i wpisz (wystarczy raz) "cvs login". Następną czynnością jest utworzenie katalogu roboczego, w którym na co dzień będziemy dokonywać edycji UMP-a i utworzenie w nim linku do pliku Makefile.common znajdującego się piętro wyżej: |
mkdir tmp | mkdir tmp | ||
cd tmp | cd tmp | ||
ln -s ../Makefile.common Makefile | ln -s ../Makefile.common Makefile | ||
- | Jeśli planujesz | + | Jeśli planujesz w <i>Makefile</i> coś zmieniać, to zamiast linka stwórz w katalogu roboczym plik Makefile zawierający jedną linijkę: "<code>include ../Makefile.common</code>". Za tym wpisem możesz dodawać własne rzeczy (np. zmieniać parametry wywołania netgena itp. "nadpisując" domyślne parametry z <i>Makefile.common</i>) nie "psując" głównego pliku Makefile.common. |
- | Kolejny krok to przygotowanie środowiska – plik Makefile.common wymaga zdefiniowania dwóch zmiennych: | + | Kolejny krok to przygotowanie środowiska – plik "Makefile.common" wymaga zdefiniowania dwóch zmiennych: |
* '''DIR''' – wskazującej, które fragmenty UMPa nas interesują | * '''DIR''' – wskazującej, które fragmenty UMPa nas interesują | ||
* '''CVS''' – wskazującej, gdzie znajduje się katalog główny repozytorium | * '''CVS''' – wskazującej, gdzie znajduje się katalog główny repozytorium | ||
- | Możemy utworzyć sobie plik ( | + | Możemy utworzyć sobie plik (np. ''env.sh''), który pomoże pamiętać o zainicjawaniu zmiennych środowiskowych. Jego zawartość (lub dla osób nie używających pliku – polecenia do wykonania w bashu/sh): |
export DIR=UMP-Wroclaw | export DIR=UMP-Wroclaw | ||
export CVS=/home/user/UMP-src | export CVS=/home/user/UMP-src | ||
Linia 43: | Linia 43: | ||
== Przebieg sesji == | == Przebieg sesji == | ||
- | + | Załóżmy, że znajdujemy się już w naszym katalogu roboczym, czyli UMP-src/tmp | |
Zaczynamy od przygotowania środowiska, a więc wykonania w _bieżącym_ shellu pliku env.sh (a więc za pomocą komendy "." (kropka) shella sh/bash lub "source" w csh/tcsh): | Zaczynamy od przygotowania środowiska, a więc wykonania w _bieżącym_ shellu pliku env.sh (a więc za pomocą komendy "." (kropka) shella sh/bash lub "source" w csh/tcsh): | ||
. env.sh | . env.sh | ||
Lub alternatywnie – wklepujemy odpowiednie polecenia export lub setenv. | Lub alternatywnie – wklepujemy odpowiednie polecenia export lub setenv. | ||
- | + | Na wszelki wypadek sprzątamy po ostatniej edycji: | |
make clean | make clean | ||
Następnie należy uaktualnić źródła | Następnie należy uaktualnić źródła | ||
Linia 54: | Linia 54: | ||
'''Ważne:''' nie należy uaktualniać źródeł od momentu rozpoczęcia edycji do momentu odesłania poprawek na serwer! W bardzo prosty sposób prowadzi to do "znikania" zmian wprowadzonych przez innych mapperów. | '''Ważne:''' nie należy uaktualniać źródeł od momentu rozpoczęcia edycji do momentu odesłania poprawek na serwer! W bardzo prosty sposób prowadzi to do "znikania" zmian wprowadzonych przez innych mapperów. | ||
- | Mając aktualne źródła montujemy je: | + | Mając aktualne źródła montujemy je do pliku wynik.mp: |
make mont | make mont | ||
I od tego momentu możemy rozpoczynać pracę – MapEditem lub edytorem tekstowym, zależnie od tego co chcemy robić. Nazwy parametrów programu make ("celów" Makefile) można łączyć – make wykona je kolejno. Wszystkie powyższe czynności można więc wykonać pisząc: | I od tego momentu możemy rozpoczynać pracę – MapEditem lub edytorem tekstowym, zależnie od tego co chcemy robić. Nazwy parametrów programu make ("celów" Makefile) można łączyć – make wykona je kolejno. Wszystkie powyższe czynności można więc wykonać pisząc: | ||
Linia 67: | Linia 67: | ||
lub lepiej: | lub lepiej: | ||
make clean demont | make clean demont | ||
- | albo (to samo, tylko | + | albo (to samo, tylko krócej): |
make cd | make cd | ||
I w naszym katalogu roboczym pojawia się zestaw plików ze zmianami, a na ekranie – zestaw instrukcji powodujących skopiowanie odpowiednich plików z katalogu roboczego do katalogów źródłowych. Wystarczy te linie zaznaczyć myszką i wkleić do wykonania, ale zanim to zrobisz, sprawdź, czy wszystko jest w porządku (less *.diff). | I w naszym katalogu roboczym pojawia się zestaw plików ze zmianami, a na ekranie – zestaw instrukcji powodujących skopiowanie odpowiednich plików z katalogu roboczego do katalogów źródłowych. Wystarczy te linie zaznaczyć myszką i wkleić do wykonania, ale zanim to zrobisz, sprawdź, czy wszystko jest w porządku (less *.diff). | ||
Linia 75: | Linia 75: | ||
To wykona komendę "<code>cvs commit</code>" na zdefiniowanych katalogach źródłowych, otwierając edytor tekstowy w celu wpisania komentarza. Domyślnie w systemach uniksowych jest to vim, ale można to zmienić ustawiając zmienną środowiskową EDITOR. | To wykona komendę "<code>cvs commit</code>" na zdefiniowanych katalogach źródłowych, otwierając edytor tekstowy w celu wpisania komentarza. Domyślnie w systemach uniksowych jest to vim, ale można to zmienić ustawiając zmienną środowiskową EDITOR. | ||
- | Jeśli nie masz | + | Jeśli nie masz prawa zapisu do CVS-a (albo wolisz, żeby twoje poprawki ktoś najpierw obejrzał), możesz spakować pliki diff i wysłać poprzez system zgłaszania poprawek [[flyspray]] |
tar -zcvf wrzutka.tgz *.diff | tar -zcvf wrzutka.tgz *.diff | ||
Wersja z dnia 22:15, 15 cze 2010
Edycja UMP w systemie Linux
Narzędzia
Czego będziemy potrzebowali:
- Kompletnych źródeł UMP, a przynajmniej narzędzi, pliku Makefile.common oraz obszarów, które nas interesują
- MapEdit lub MapEdit++ – edytor map
- netgen – program przydatny do sprawdzania routingu
- cvs, perl, awk, make – podstawowe wyposażenie wielu dystrybucji Linuksa
- wine lub VirtualBox z systemem Windows – by uruchomić program MapEdit
Większość narzędzi zapewne masz już zainstalowane domyślnie, gdyby się jednak okazało, że któregoś brak (np. w trakcie dokonywania jakiejś czynności), wystarczy dany program doinstalować z odpowiedniego pakietu. Poniżej lista kilku, wraz z nazwami pakietów Ubuntu, w których się znajdują (np. w celu zainstalowania programu "dos2unix" wystarczy wpisać "sudo apt-get install tofrodos"):
- dos2unix, unix2dos – tofrodos
- patch – patch
- cvs – cvs
Przygotowania
Pierwszym krokiem jest ściągnięcie źródeł projektu do przygotowanego uprzednio katalogu. Tu dla przykładu jest to UMP-src
cd mkdir UMP-src cd UMP-src cvs -z5 -d:pserver:guest@ump.waw.pl/home/cvsroot checkout .
Jeśli masz założone konto do CVS-a, to oczywiście użyj danych tego konta zamiast konta "guest" i wpisz (wystarczy raz) "cvs login". Następną czynnością jest utworzenie katalogu roboczego, w którym na co dzień będziemy dokonywać edycji UMP-a i utworzenie w nim linku do pliku Makefile.common znajdującego się piętro wyżej:
mkdir tmp cd tmp ln -s ../Makefile.common Makefile
Jeśli planujesz w Makefile coś zmieniać, to zamiast linka stwórz w katalogu roboczym plik Makefile zawierający jedną linijkę: "include ../Makefile.common
". Za tym wpisem możesz dodawać własne rzeczy (np. zmieniać parametry wywołania netgena itp. "nadpisując" domyślne parametry z Makefile.common) nie "psując" głównego pliku Makefile.common.
Kolejny krok to przygotowanie środowiska – plik "Makefile.common" wymaga zdefiniowania dwóch zmiennych:
- DIR – wskazującej, które fragmenty UMPa nas interesują
- CVS – wskazującej, gdzie znajduje się katalog główny repozytorium
Możemy utworzyć sobie plik (np. env.sh), który pomoże pamiętać o zainicjawaniu zmiennych środowiskowych. Jego zawartość (lub dla osób nie używających pliku – polecenia do wykonania w bashu/sh):
export DIR=UMP-Wroclaw export CVS=/home/user/UMP-src
Użytkownicy csh/tcsh muszą tu odwołać się do swojego interpretera poleceń:
setenv DIR "UMP-Opole UMP-Katowice" setenv CVS /home/user/UMP-src
Jeśli chcemy montować więcej niż jeden kawałek mapy – w cudzysłowie umieszczamy listę montowanych elementów. Definicję zmiennej CVS można także umieścić w swoim standardowym pliku startowym, czyli .cshrc lub .bashrc – wtedy jedyną rzeczą konieczną za każdym razem będzie określenie edytowanego obszaru w zmiennej DIR.
W tej chwili jesteśmy gotowi do pracy :)
Przebieg sesji
Załóżmy, że znajdujemy się już w naszym katalogu roboczym, czyli UMP-src/tmp
Zaczynamy od przygotowania środowiska, a więc wykonania w _bieżącym_ shellu pliku env.sh (a więc za pomocą komendy "." (kropka) shella sh/bash lub "source" w csh/tcsh):
. env.sh
Lub alternatywnie – wklepujemy odpowiednie polecenia export lub setenv. Na wszelki wypadek sprzątamy po ostatniej edycji:
make clean
Następnie należy uaktualnić źródła
make update
Ważne: nie należy uaktualniać źródeł od momentu rozpoczęcia edycji do momentu odesłania poprawek na serwer! W bardzo prosty sposób prowadzi to do "znikania" zmian wprowadzonych przez innych mapperów.
Mając aktualne źródła montujemy je do pliku wynik.mp:
make mont
I od tego momentu możemy rozpoczynać pracę – MapEditem lub edytorem tekstowym, zależnie od tego co chcemy robić. Nazwy parametrów programu make ("celów" Makefile) można łączyć – make wykona je kolejno. Wszystkie powyższe czynności można więc wykonać pisząc:
make clean update mont
a że jest to często wykonywana sekwencja, istnieje dla niej specjalny skrót:
make cum
Przed uruchomieniem Mapedita można sobie wygenerować listy niestyków i innych błędów na mapie – polecam opis Makefile.common
Po zakończeniu edycji i nagraniu zmian w pliku wynik.mp wykonujemy
make demont
lub lepiej:
make clean demont
albo (to samo, tylko krócej):
make cd
I w naszym katalogu roboczym pojawia się zestaw plików ze zmianami, a na ekranie – zestaw instrukcji powodujących skopiowanie odpowiednich plików z katalogu roboczego do katalogów źródłowych. Wystarczy te linie zaznaczyć myszką i wkleić do wykonania, ale zanim to zrobisz, sprawdź, czy wszystko jest w porządku (less *.diff).
Jeśli masz prawo zapisu do repozytorium, możesz zrobić
make commit
To wykona komendę "cvs commit
" na zdefiniowanych katalogach źródłowych, otwierając edytor tekstowy w celu wpisania komentarza. Domyślnie w systemach uniksowych jest to vim, ale można to zmienić ustawiając zmienną środowiskową EDITOR.
Jeśli nie masz prawa zapisu do CVS-a (albo wolisz, żeby twoje poprawki ktoś najpierw obejrzał), możesz spakować pliki diff i wysłać poprzez system zgłaszania poprawek flyspray
tar -zcvf wrzutka.tgz *.diff
To samo osiągniesz pisząc "make wrzuta
", a o innych możliwościach pracy wspomaganej przez Makefile możesz się dowiedzieć pisząc
make help
albo czytając stronę Wiki opisującą Makefile.common
-- Wheart, TS