A InfoWiki wikiből
(→D-Clean rendszer) |
(→D-Clean rendszer) |
||
4. sor: | 4. sor: | ||
* [http://aries.ektf.hu/~hz/DClean_v2_2-2009-04-19.zip v2.2.0 2009.04.29 frissítés] | * [http://aries.ektf.hu/~hz/DClean_v2_2-2009-04-19.zip v2.2.0 2009.04.29 frissítés] | ||
* [http://aries.ektf.hu/~hz/DClean_v2_2-2009-02-23.zip v2.1.0 2009.02.23 teljes] | * [http://aries.ektf.hu/~hz/DClean_v2_2-2009-02-23.zip v2.1.0 2009.02.23 teljes] | ||
+ | * [http://aries.ektf.hu/~hz/Clean2_2_Libraries.zip Clean v2.2 Libraries .o fájlokkal] | ||
Forráskód: | Forráskód: |
A lap 2009. május 6., 18:20-kori változata
Tartalomjegyzék |
D-Clean rendszer
Letölthető verziók:
Forráskód:
EWP Mérési Eredmények
2009.04.18 sikeres mérések az EKF géptermében. A mérési jegyzőkönyvek és a forráskódok elérhetőek a http://aries.ektf.hu/~hz/ewp_file_seq_and_distr_v1.zip file-ban.
Telepítés fejlesztői gépre
- A megadott zip file-t a C:\DClean alkönyvtárba kell kicsomagolni alkönyvtár
helyesen.
- ezen felül a fejlesztői gépre a Visual Studio 2005 fel kell telepítve legyen, mivel a Visual C fordítóját és szerkesztőjét is használja a rendszer.
A kicsomagolás után az ICE\bin alkönyvtárból az ICE32.DLL és ICEUTIL32.DLL, BZIP2.DLL file-okat célszerű átmásolni a C:\windows\system32 alkönyvtárba.
Szintén az ICE\bin alkönyvtárban lévő ICECS.DLL filet be kell regisztrálni a .NET keretrendszerbe (gacutil -i .\Ice-3.2.1\bin\icecs.dll) utasítással, ahol a gacutil.exe az adott .NET keretrendszerhez (vagy a Visual Studio-hoz) mellékelt segédprogram (nálam a C:\Program Files\Microsoft SKDs\Windows\v6.0A\bin, C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin könyvtárakban van gacutil.exe).
A telepítés végén a LocalSett.xml file-ban lévő alkönyvtár-hivatkozásokat ellenőrízni kell, és szükség esetén módosítani.
- CLEAN_ROOT -> mutasson a Clean könyvtárra (C:\DClean\Clean 2.2)
- CLEANLIB -> mutasson a Clean LIB könyvtárára ($CLEAN_ROOT$\Libraries), ez clean verziónként eltérő lehet!
- SkelRootDir -> mutasson a DClean skeleton könyvtárra (C:\DClean\skeletons\Skeletons)
- C#FORD -> mutasson a C# parancssori fordítóra (C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe)
- ICE -> mutasson az ICE alkönyvtárra (C:\DClean\ice-3.2.1)
- stb
Megj: a könyvtárnevekben szereplő $ID$ formájú nevek a megfelelő beállítást helyettesítik, tehát ha CLEAN_ROOT=C:\DClean\Clean 2.2, akkor a CLEANLIB=$CLEAN_ROOT$\Libraries miatt a CleanLib értéke C:\DClean\Clean 2.2\Libraries lesz.
Clean verzió
A Clean 2.2 be van csomagolva a zip-be. Feltételezem, hogy Clean telepítés amúgy is lehet a gépen, ennek ellenére a becsomagoltat javaslom használni (a Clear_Root ide mutasson) az alábbi okokból:
- a Clean 2.2 kódja hibát tartalmaz, mely ebben a csomagolt Clean-ben javításra került (a hiba a következő Clean release-ben valószínűleg publikusan is javítva lesz)
- a D-Clean rendszer nem fordít Clean library kódokat, csak hivatkozik az .o file-okra. A becsomagolt Clean 2.2-ben minden .o file le van generálva.
Ha mégis a saját Clean installációdat akarod használni, akkor:
- ellenőrízd, hogy a hiba nálad is javítva van-e (lásd lejjebb)
- fordítsd le az alábbi Clean programot a rendszereden (ez generálja a szükséges, hivatkozott .o file-okat)
A hiba patch:
John van Groningen wrote: There is an error in the initialisation of the finalizer list, which only seems to cause a minor problem when the Clean linker is used. However if the MS linker is used it causes a crash if this list is traversed after a garbage collection. Could you try this: - open the file _system.abc in Libraries\StdEnv\Clean System Files with an editor, move the file that begins with .desc _Select after the next line that begins with .desc _Nil (to swap them) - delete _system.o in the same directory, and let the CleanIDE generate _system.o by compiling a Clean program This will probably prevent the crash, but still cause the minor problem that also happens when the Clean linker is used.
És a lefordítandó kód:
module proba import StdEnv,Debug Start = debugAfter "kesz" dbgStr ([1..10]) dbgStr x = [x]
Telepítés futtató gépre
A futtató gépre csak az ICE és az AppEnv alkönyvtár szükséges. Az ICE DLL-jeit ott is be kell másolni a system32-be, illetve a gacutil-os regisztrációt ott is végre kell hajtani.
A futtató gépre e miatt kell a .NET Framework is. Valamint a Visual C library is, mert a futó kód erre hivatkozni fog manifest file-al:
<?xml version='1.0' encoding='UTF-8' standalone='yes'?> <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> <dependency> <dependentAssembly> <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50608.0' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' /> </dependentAssembly> </dependency> </assembly>
A futtató gépen el kell indítani az AppEnv/LocalComm.exe -t. Ez portot fog nyitni a gépen, várva a bejövő utasításokat. Ha ezt a portnyitást valamiféle Windows tűzfal megakadályozza, akkor nem fog futni a rendszer.
A LocalComm.exe többek között futtatási utasításokat is kaphat a futtató rendszertől, mely szerint töltsön át a lokális gépre .exe file-okat, és indítsa el (elosztott futtatás). Az általa letöltött .exe (és egyéb) file-okat a c:\App_Env alkönyvtárba helyezi el, ezért oda írási joga kell legyen. Ezt az alkönyvtár tartalmat időnként törölni is lehet.
Az indított programok is portot akarnak majd nyitni a gépen a kommunikációhoz. A windows tűzfal ezt is meg fogja akadályozni, így hiába sikerül az indítás, a project nem fog futni. Javaslom a windows tűzfal leállítását erre az időre (bekonfigurálni ez ideig nem sikerült).
Fordítás menete
A kódot egy .icl file-ba szoktuk megírni, mely tartalmazza a hagyományos Clean nyelvi függvényeket, és a D-Clean start kifejezést is.
module farmProba import StdEnv,StdOrdList DistrStart = DStop saveToFile DApply pickUpEvens DStart generator merger:: [[Int]]->[Int] merger [] = [] merger [x:xs] = x ++ merger xs pickUpEvensL::[[Int]]->[Int] pickUpEvensL [] = [] pickUpEvensL [x:xs] = pickUpEvens x ++ pickUpEvensL xs pickUpEvens::[Int]->[Int] pickUpEvens [] = [] pickUpEvens [n:xs] | isEven n = [n:pickUpEvens xs] | otherwise = pickUpEvens xs generator::[Int] generator = [ 1 .. 100000] saveToFile::[Int] *World -> *World saveToFile data w # (openok,f,w) = fopen "c:\\free_1.txt" FWriteText w | not openok = abort "Error during creating the file" # f = writeall data f # (closeok,w) = fclose f w | not closeok = abort "Error during closing the file" = w writeall :: [Int] !*File -> *File writeall [] f = fwrites "---------- EOF ---------" f writeall [a:b] f = writeall b (fwrites (IntToString a) f) IntToString a = " " +++ toString a +++ "\n"
A kódot a DCleanComp -nak kell parancssorban átadni:
DCleanComp proba.icl
Ez létrehoza egy GENERATED\WINDOWS_ICE alkönyvtárat, és ide helyezi el a generált forráskódokat, és egy Makefile-t. A tényleges kódfordítást Visual Studio parancssorból nmake paranccsal lehet elvégezni.
- a futtatáshoz el kell indítani az AppEnv alkönyvtárból a DRegCenterServer.exe, DCodeLibServer.exe, DAppStarterServer.exe programokat. Utána az nmake upload-al fel kell tölteni a generált .exe-ket a CodeLib szerverre. Az nmake start paranccsal lehet elindítani. Az nmake status paranccsal lehet a futó projectről információkat lekérni.
Cikkek
A projecthez kapcsolódó cikkeket publikációs lapról lehet letölteni, és elolvasni.