Polish (Poland)English (United Kingdom)

What is Cookit?

Cookit is a standalone Tcl/Tk binary similar to Tclkit. Cookit is created using cookfs virtual filesystem and is designed to provide a Tclkit alternative that is more space efficient, does not require C++ and ultimately will not require tclvfs package.

Latest cookit version: 1.3.1 (released 2011-10-01) | download files


Jak zbudować ze źródeł działającą wersję cookita
Tcl/Tk - Cookit
Środa, 29 Wrzesień 2010 20:10
W niniejszym artykule opiszę krok po kroku proces budowania ze źródeł cookit'a.

Wymagania

  • Zanim przystapimy do budowania, musimy zainstalować interpreter Tcl'a (nie powinno być to dla nikogo zaskoczeniem jako że Cookit/Cookfs sÄ… Å›ciÅ›le zwiÄ…zane z tym jÄ™zykiem). PosÅ‚uży on nam do uruchomienia skryptu budujÄ…cego. 
  • Poniższe przykÅ‚ady opisane sÄ… przy uzyciu systemu MS Windows jednak nic nie stoi na przeszkodzie by użyć np linuxa (w tym przypadku musimy zadbać o zainstalowanie sprawnie dziaÅ‚ajÄ…cego kompilatora gcc oraz polecenia cvs).
  • Skrypt budujÄ…cy pobiera z internetu spora iloÅ›c danych - kody źródÅ‚owe oraz Å›rodowisko z kompilatorem (w przypadku Windowsa), potrzebne jest też w miarÄ™ szybkie łącze.

Budowanie

  1. ze strony http://sourceforge.net/projects/cookit/ pobieramy w pełni zautomatyzowane środowisko buildowe. W momencie pisania tego tekstu dostępna jest wersja cookit-buildsystem-1.0.zip. Pobrany plik nalezy rozpakować np do C:\cookit_bs\. Dla bardziej zaawansowanych istnieje również możliwość pobrania nanowszej wersji prosto z svn: svn co https://cookit.svn.sourceforge.net/svnroot/cookit cookit_bs
  2. W rozpakowanym katalogu najistotniejszym plikiem jest build.tcl. Skrypt ten potrafi wykonać różne akcje w zależności od przekazanych poleceń. Dodatkowo, w przypadku systemu Windows pobierze port kompilatora gcc w formie Msys/Mingw. Pierwszym poleceniem będzie pobranie źródeł Tcl'a, Tk, pakietu Tclvfs oraz cookfs'a:
    c:\cookit_bs>tclsh85 build.tcl -usemingw retrievesource tcl tk vfs cookfs
    Downloading win32 build tools; this will take a few minutes
     
    [ 1/ 4] Retrieve source code for cookfs
        [12:31:41] Retrieving
        [12:31:45] Success
     
    [ 2/ 4] Retrieve source code for tcl
        [12:31:45] Retrieving
        [12:38:49] Success
     
    [ 3/ 4] Retrieve source code for tk
        [12:38:49] Retrieving
        [12:42:08] Success
     
    [ 4/ 4] Retrieve source code for vfs
        [12:42:08] Retrieving
        [12:42:24] Success
     
     
    [12:42:24] Command completed successfully

    skrypt budujący nie wypisuje żadnych informacji na temat postępu samego pobierania, przez co może sprawiać wrażenie 'wiszącego' szczególnie w przypadku wolniejszego łącza.
    Warto przy okazji pamiętać że skrypt pobiera najnowszą wersję kodu Tcl 8.6, który w chwili pisania tego artykułu nie jest jeszcze oficjalnie opublikowany. Może zdarzyć się więc że pojawią się jakieś błędy kompilacji.
  3. W tym momencie możemy przystąpić do wydania komendy która spowoduje zbudowanie pliku cookit.exe, zawierającego m. in. interpreter Tcl. Plik wynikowy nie jest szczególnie duzy, jednak dla uzyskania maksymalnego efektu możemy dodatkowo uzyć darmowego programu kompresującego UPX - w tym celu to katalogu zawierającego skrypt budujący dogrywamy plik upx.exe (ewentualnei dbamy o to by był dostepny w ścieżce systemowej) - dodajemy do uruchomiena flagę -upx best. Cała komenda budująca wygląda nastepująco:
    c:\cookit_bs> tclsh85 build.tcl -usemingw -upx best build-cookit
     
    [ 1/ 7] Build tcl 8.6b1.2
        [13:39:29] Initializing
        [13:39:29] Configuring
        [13:40:26] Compiling
        [13:49:39] Installing
        [13:50:08] Finalizing
     
    [ 2/ 7] Build cookfs 1.0
        [13:50:08] Initializing
        [13:50:10] Configuring
        [13:51:17] Compiling
        [13:51:21] Installing
        [13:51:21] Finalizing
     
    [ 3/ 7] Build resources 1.0
        [13:51:21] Initializing
        [13:51:21] Configuring
        [13:51:21] Compiling
        [13:51:22] Installing
        [13:51:22] Finalizing
     
    [ 4/ 7] Build vfs 1.4.1
        [13:51:22] Initializing
        [13:51:22] Configuring
        [13:52:36] Compiling
        [13:52:38] Installing
        [13:52:46] Finalizing
     
    [ 5/ 7] Build cookit 1.0
        [13:52:46] Initializing
        [13:52:46] Configuring
        [13:52:46] Compiling
        [13:52:47] Installing
        [13:52:47] Finalizing
     
    [ 6/ 7] Link binary
        [13:52:47] Initializing
        [13:52:47] Linking
        [13:52:48] Stripping
        [13:52:49] Compressing
     
    [ 7/ 7] Add CookFS layer
        [13:52:57] Initializing
        [13:52:57] Adding temporary VFS
        [13:53:00] Re-compressing VFS
        [13:53:07] Finalizing
     
     
    [13:53:09] Command completed successfully
    Plik wynikowy cookit.exe znajdziemy w podkatalogu output/_win32_x86.
  4. Cookit zbudowany w poprzednim punkcie nie zawiera dodatku Tk, przez co nie będzie obsługiwał GUI. Chcąc zbudować Cookita zawierającego Tk, wydajemy nastepującą komendę:
    c:\cookit_bs>tclsh85 build.tcl -usemingw -upx best -binarysuffix ui -tk latest build-cookit
     
    [ 1/ 8] Build tcl 8.6b1.2
        [14:17:39] Initializing
        [14:17:39] Configuring
        [14:17:39] Compiling
        [14:20:11] Installing
        [14:20:39] Finalizing
     
    [ 2/ 8] Build tk 8.6b1.2
        [14:20:39] Initializing
        [14:20:39] Configuring
        [14:21:54] Compiling
        [14:25:49] Installing
        [14:25:59] Finalizing
     
    [ 3/ 8] Build cookfs 1.0
        [14:25:59] Initializing
        [14:25:59] Configuring
        [14:25:59] Compiling
        [14:26:00] Installing
        [14:26:00] Finalizing
     
    [ 4/ 8] Build resources 1.0
        [14:26:00] Initializing
        [14:26:00] Configuring
        [14:26:00] Compiling
        [14:26:01] Installing
        [14:26:01] Finalizing
     
    [ 5/ 8] Build vfs 1.4.1
        [14:26:01] Initializing
        [14:26:01] Configuring
        [14:26:01] Compiling
        [14:26:01] Installing
        [14:26:10] Finalizing
     
    [ 6/ 8] Build cookit 1.0
        [14:26:10] Initializing
        [14:26:10] Configuring
        [14:26:10] Compiling
        [14:26:11] Installing
        [14:26:11] Finalizing
     
    [ 7/ 8] Link binary
        [14:26:11] Initializing
        [14:26:11] Linking
        [14:26:14] Stripping
        [14:26:15] Compressing
     
    [ 8/ 8] Add CookFS layer
        [14:26:27] Initializing
        [14:26:28] Adding temporary VFS
        [14:26:31] Re-compressing VFS
        [14:26:43] Finalizing
     
     
    [14:26:44] Command completed successfully
    Użycie opcji -binarysufix ui spowoduje że wynikowy plik ma nazwę cookit-ui.exe.
  5. W tym momencie możemy cieszyć się gotowym do użycia Cookitem:
    c:\cookit_bs>dir _output\win32-x86
     
    2010-10-02  22:26         1 778 005 cookit-ui.exe
    2010-10-02  22:12         1 057 102 cookit.exe

     


    Aby upewnić się że został poprawnie zbudowany wystarczy go uruchomić - domyślnie powinno ukazać się okienko konsoli Tclowej:
    cookit_konsola
O tym do czego praktycznie wykorzystać tak zbudowaną binarkę dowiecie się z nastepnych artykułów :)
Poprawiony: Åšroda, 09 Marzec 2011 12:20
 
Tcl 8.5 Network Programming book
Learning Nagios 3.0 book