Netbeans fordítása Mercurial repoból Windowson

Elkövetek ilyen szörnyű dolgokat is. De jó dolog, mert testre tudom szabni, mi épüljön bele (tudom-tudom, ott az Update Center, róla később), ráadásul mindig a legfrissebb IDE-vel tudok dolgozni. Azt meg kell hagyni, a fiúk okosan dolgoznak a Mercurial repoval, tudják, hogy innen fordítanak egy páran. Ezzel együtt áll továbbra is, hogy produktív környezetbe nem ajánlott instabil fejlesztőkörnyezettel dolgozni (bár nekem a világon semmi bajom nem szokott lenni az 1-2-3 hetes frissítési periodusaim mellett).

Szóval, lássuk a hozzávalókat:

  • 2 tonna türelem
  • 1 db JDK 1.6 JRE-vel
  • 1 db JDK 1.5 JRE nélkül
  • 1 db Mercurial
  • 1 db Ant
  • Valami olyan szövegszerkesztő cucc, ami ismeri a Java .properties fájljait. Ha ilyen nincs, a notepad is jó lehet, bár én jobb szeretem, ha van szintaxiskiemelés a kezem alatt. Természetesen ez izlés kérdése. Nálam mindenesetre GVim van.

Gyorstalpaló:
A Windows 2000/XP/Vista parancssora alapvetően igyekszik hűen emulálni a DOS környezetet, ebben azonban nem konzekvens. Szerencsénkre, ennek illik örülni, hiszen a legtöbb eltérés hasznos a számunkra. Ezzel együtt el tudom képzelni, hogy az alant levő tippek egyike-másika nem fog menni DOS alatt. No, de ki akar DOS alatt Netbeans-t fordítani? :-D
Szóval, ami nekünk nagyon fontos, az a környezeti változók. Linux alatt exportálunk, Windows alatt csak beállítunk. Nézzük, ez a gyakorlatban mit jelent:


set PATH=%PATH%;F:\mercurial;F:\netbeans\bin

A path elemeket egymástól ';' választja el, az a %PATH% borzalomnak pedig shell környezetben a ${PATH} felel meg.

Biztos sokan rácsodálkoznak, miért írok a hozzávalók közt 2 JDK-t is, ráadásul olyan fura kommenttel, hogy JRE-vel meg anélkül. Nos, a válasz igen egyszerű lesz: a Netbeans - noha fut JRE 1.6-tal - fordításához 5-ös JDK kell. Viszont, mivel mi alapvetően az 1.6-os JDK-t szeretjük, és az 5-ös csak megtűrt személy, így a 6-os JDK fogja magát a böngészőinkbe beregisztrálni, és az 5-ös megmarad csendes szemlélőnek.

Előkészítés:
Két kanál kávét... őőő... igen. Szóval, először is töltsük le a hozzávalókat, a türelem nyilván nem az internetről fog származni, erről majd később. A JDK-k feltelepítésével sok gond nincs, arra kell nagyon odafigyelni, hogy ha nem akarunk kavarcot a JRE-k körül, a 5-ösnél a 'Public JRE' csomagot szépen lőjük ki a kiválasztó ablakban.
A Mercurial-nak csodaszép installere van, élvezzük, meg ne felejtsük el, hova települt. Ízlés kérdése, én nem használom amúgy, így nem engedtem meg neki, hogy automatán bemásszon a PATH-be, majd csak a Netbeans build parancssorába engedem meg lokálisan. Nálam mindenesetre a F:\mercurial a lakhelye, ha kell, így fogok hivatkozni rá.
Az Ant-tal különösebb gond nem szokott lenni, a linkelt zipet csak le kell tölteni valahova, ki kell csomagolni másvalahova, és a kicsomagolás helyét jól megjegyezni. Ha azonban nem akarunk szívni, akkor a kicsomagolást egy temp mappában csináljuk, és a végén a kicsomagolt mappából a bin,etc,lib mappákat másoljuk be a Netbeans végleges telepítési helyére (mondjuk F:\netbeans), és ezt adjuk meg a PATH-ban, mivel a Netbeans maga is intenzív hangyafüggésben szenved.
Készítsünk valahova egy build könyvtárat, ahol a Netbeans meg fog épülni. Mindenképp legyen a hely bőven ellátva üres területekkel, mert a Netbeans forrása sem kicsi, illetve a fordítás során is lesz helykitöltés.
Állítsuk be a PATH-et a fentebb megismert módon. Fontos: a JDK 5 ne legyen benne a PATH-ben, ővele majd később foglalkozunk. Csak a Mercurial és az Ant legyen benne (lehet benne bármi más is, csak azt nem fogjuk használni :-) )

Elkészítés:
Menjünk be a build könyvtárba majd adjunk ki egy ilyen parancsot:


hg clone http://hg.netbeans.org/main netbeans-hgsrc

(A netbeans-hgsrc amúgy bármi egyébre is cserélhető, sőt el is hagyható, ilyenkor a hg forrás egy main nevű könyvtárba töltődik le.)

Most felhasználunk 1 tonna türelmet, mert a mercurial nem kapkodja el a dolgát. Foglalkozzunk a családdal/barátokkal, vagy csináljunk valami közepesen hosszú ideig tartó dolgot.

Ha végzett lépjünk be a netbeans-hgsrc mappába. Ne nézzünk körül, hatalmas rendetlenség van itt, ami nekünk kell majd, az az nbbuild mappa. Ebbe azonban ne lépjünk bele, az aktív könyvtár mindig a netbeans-hgsrc legyen.
Nyissuk meg szerkesztésre a nbbuild\user.build.properties fájl (ha nincs ilyen még, csináljunk). Ebbe először is vegyük fel a JDK 5 lelőhelyét. Fontos: Ne a bin könyvtárat vegyük fel, hanem az azt tartalmazót.


nbjdk.home=c:\\Program Files\\Java\\jdk1.5.0_15\\

Nagyon-nagyon fontos megfigyelni az útvonal végén levő kettő backslash-t. Ha ők nincsenek ott, a későbbiekben nem fogja a build.xml megtalálni a JDK-t.
(Khmm...)
A következő beállítandó dolog, hogy mit szeretnénk. Ebben a nbbuild\cluster.properties tud nekünk segíteni, ahol megtalálhatjuk a különböző fordítási egységek ("clusterek") listáját és felépítését. Módosítani nem ajánlott ezt a fájlt, mert akkor a build.xml kiugrik a monitorból, és felfalhatja a macskánkat. Nekem például egy java, j2ee és ruby képes netbeans így állott elő:


nb.clusters.list=nb.cluster.nb,\
         nb.cluster.platform,\
         nb.cluster.ide,\
         nb.cluster.gsf,\
         nb.cluster.ruby,\
         nb.cluster.java,\
         nb.cluster.j2ee

Ebből az nb.clusters.list a lényeges, ez mondja meg, mely clusterek lesznek lefordítva. A függőségek többé-kevésbé kezelve vannak, de ha valami gáz van, akkor a build folyamat elsírja, hogy mely modult nem találta meg. Ekkor olyan clustert kell keresni, melyben az illető modul benne van, és azt kell a listába betenni. Oda kell figyelni, mert egyes clusterek més clustereket is tartalmaznak/lefordítanak, így ütközés lehet. Ha kicsit átolvasgatjuk a cluster.properties fájlt minden sokkal világosabb lesz.

Miután ezt ilyen szépen kitárgyaltuk, jöhet maga a fordítási parancs (ugye az ant benne van a PATH-be?):


ant -f nbbuild\build.xml build-nozip

Itt nyílik lehetőség a másik tonna türelem elhasználására, ugyanis ez bizony ismét eltart egy darabig. Keressünk valami közepesen hosszú elfoglaltságot most is.

Tálalás:

A fordítás végeztével (BUILD SUCCESSFUL) a lefordított Netbeans a nbbuild\netbeans mappában áll rendelkezésünkre. Ezt a mappát kell másolni a végleges telepítési helyre.

Takarítás
(Na ez az a rész, ami a szakácskönyvekből kimarad)
Hogy ne fogja a helyet, a másolás végeztével nyomjunk egy


ant -f nbbuild\build.xml clean

parancsot, így a lefordított cuccok nem maradnak a buildkönyvtárban. Sajnos nem lehet gyorsítani a fordítást azzal, hogy fenthagyjuk a lefordított class fájlokat, mivel bármilyen user.build.properties változás esetén a build rendszer helyből nyom egy ilyen clean-t. Forrás update esetén nem tudom...

Frissen tartás:
A kiszedett mercurial repo frissentartása roppant egyszerű: a netbeans-hgsrc (ugye még ismerős?) mappában kell kiadni ezt:


hg pull -u

Majd pedig elkészíteni az ételt őőő... szóval lefordítani a programot a recept khmm... leírás szerint.
Az Update Center használatával kapcsolatban annyit meg kell jegyezzek, hogy oda kell figyelni. Ha ugyanis olyan update van, mely az általunk fordított, nem pedig az utólag feltett pluginokat érinti, úgy érdemes inkább a forrást frissíteni és updatelni, mivel a későbbi frissítések során esetleg összeakadhatunk a saját magunk által fordított, illetőleg a Netbeans által a profilunkba telepített cuccokkal.

A fenti recept leírás Windows XP/Vista gépeken lett kipróbálva, mind elhunyt szalmonellamérgezésben, 2000-en működhet, az alatt bizonytalan. A fordításhoz minimum 1G RAM ajánlott, egy közepesen erős CPU mellett (P3 már elég).