Edycja w systemie Linux

Z UMP

(Różnice między wersjami)
(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 link do pliku Makefile.common znajdującego się piętro wyżej:
+
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 do <i>Makefile</i> dodawać własne lokalne modyfikacje, zamiast linka stwórz w katalogu roboczym plik Makefile zawierający jedną linjkę: "<code>include ../Makefile.common</code>". Za tym wpisem możesz dodawać własne rzeczy (np. zmieniać parametry wywołania netgena itp.) nie "psując" głównego pliku Makefile.common.
+
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 &ndash; plik Makefile.common wymaga zdefiniowania dwóch zmiennych:
+
Kolejny krok to przygotowanie środowiska &ndash; plik "Makefile.common" wymaga zdefiniowania dwóch zmiennych:
* '''DIR''' &ndash; wskazującej, które fragmenty UMPa nas interesują
* '''DIR''' &ndash; wskazującej, które fragmenty UMPa nas interesują
* '''CVS''' &ndash; wskazującej, gdzie znajduje się katalog główny repozytorium
* '''CVS''' &ndash; wskazującej, gdzie znajduje się katalog główny repozytorium
-
Możemy utworzyć sobie plik (u mnie ''env.sh'') który pomoże pamiętać o zainicjawaniu zmiennych środowiskowych. Jego zawartość (lub dla osób nie używających pliku &ndash; polecenia do wykonania w bashu/sh):
+
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 &ndash; 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 ==
-
Zakładam, że znajdujemy się już w naszym katalogu roboczym, czyli UMP-src/tmp
+
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 &ndash; wklepujemy odpowiednie polecenia export lub setenv.
Lub alternatywnie &ndash; wklepujemy odpowiednie polecenia export lub setenv.
-
Sprzątamy po ostatniej edycji
+
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ę &ndash; MapEditem lub edytorem tekstowym, zależnie od tego co chcemy robić. Nazwy parametrów programu make ("celów" Makefile) można łączyć &ndash; make wykona je kolejno. Wszystkie powyższe czynności można więc wykonać pisząc:
I od tego momentu możemy rozpoczynać pracę &ndash; MapEditem lub edytorem tekstowym, zależnie od tego co chcemy robić. Nazwy parametrów programu make ("celów" Makefile) można łączyć &ndash; 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 na skróty):
+
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 &ndash; 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 &ndash; 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 preawa 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]]
+
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